diff options
21 files changed, 735 insertions, 118 deletions
| diff --git a/Dockerfile b/Dockerfile index 578d009dc1..744ded8579 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,8 +21,9 @@ RUN apt-get clean  RUN rm -rf /var/lib/apt/lists/*  ENV keyboard=ergodox +ENV subproject=ez  ENV keymap=default  VOLUME /qmk  WORKDIR /qmk -CMD make clean ; make keyboard=${keyboard} keymap=${keymap}
\ No newline at end of file +CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap} @@ -32,7 +32,9 @@ ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE))  ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE))  ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))  STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) -TEST_DIR := $(ROOT_DIR)/.build/test +BUILD_DIR := $(ROOT_DIR)/.build +TEST_DIR := $(BUILD_DIR)/test +ERROR_FILE := $(BUILD_DIR)/error_occured  MAKEFILE_INCLUDED=yes @@ -460,8 +462,21 @@ endef  include $(ROOT_DIR)/message.mk -RUN_COMMAND = \ -$(COMMAND_$(SILENT_MODE)_$(COMMAND)) +# The empty line is important here, as it will force a new shell to be created for each command +# Otherwise the command line will become too long with a lot of keyboards and keymaps +define RUN_COMMAND ++error_occured=0;\ +$(COMMAND_$(SILENT_MODE)_$(COMMAND))\ +if [ $$error_occured -gt 0 ]; then echo $$error_occured > $(ERROR_FILE); fi; + + +endef +define RUN_TEST ++error_occured=0;\ +$($(TEST)_COMMAND))\ +if [ $$error_occured -gt 0 ]; then echo $$error_occured > $(ERROR_FILE); fi; + +endef  # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps  SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) @@ -481,17 +496,17 @@ $(SUBPROJECTS): %: %-allkm  			*) printf "$(MSG_SUBMODULE_DIRTY)";break;; \  		esac \  	done +	rm -f $(ERROR_FILE) > /dev/null 2>&1  	$(eval $(call PARSE_RULE,$@))  	$(eval $(call SET_SILENT_MODE))  	# Run all the commands in the same shell, notice the + at the first line  	# it has to be there to allow parallel execution of the submake  	# This always tries to compile everything, even if error occurs in the middle  	# But we return the error code at the end, to trigger travis failures -	+error_occured=0; \ -	$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \ -	if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\ -	$(foreach TEST,$(TESTS),$($(TEST)_COMMAND)) \ -	if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\ +	$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) +	if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; +	$(foreach TEST,$(TESTS),$(RUN_TEST))  +	if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;  # All should compile everything  .PHONY: all diff --git a/keyboards/atreus/keymaps/alphadox/config.h b/keyboards/atreus/keymaps/alphadox/config.h new file mode 100644 index 0000000000..df56849b08 --- /dev/null +++ b/keyboards/atreus/keymaps/alphadox/config.h @@ -0,0 +1,80 @@ +/* +Copyright 2012 Jun Wako <[email protected]> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ + +#define VENDOR_ID       0xFEED +#define PRODUCT_ID      0x6060 +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Arbitrary Definitions +#define PRODUCT         Planckeus +#define DESCRIPTION     q.m.k. keyboard firmware for Planckeus + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +#define MATRIX_ROW_PINS { D0, D1, D2, D3 } +#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, F7, B0, B1, B2, B3, B7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +//#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/atreus/keymaps/alphadox/keymap.c b/keyboards/atreus/keymaps/alphadox/keymap.c new file mode 100644 index 0000000000..b8ec0e032f --- /dev/null +++ b/keyboards/atreus/keymaps/alphadox/keymap.c @@ -0,0 +1,45 @@ +#include "atreus.h" + +#define BASE 0 +#define SYMB 1 +#define ETC 2 + +enum macro_id { +    TEENSY, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[BASE] = KEYMAP( +    KC_Q,          KC_W,    KC_D,     KC_F,           KC_K,                                              KC_J,             KC_U,            KC_R,     KC_L,     KC_SCLN, +    LT(ETC,KC_A),  KC_S,    KC_E,     KC_T,           KC_G,                                              KC_Y,             KC_N,            KC_I,     KC_O,     KC_H, +    SFT_T(KC_Z),   KC_X,    KC_C,     KC_V,           KC_B,                                              KC_P,             KC_M,            KC_COMM,  KC_DOT,   SFT_T(KC_SLSH), +    KC_GRV,        KC_DEL,  KC_LALT,  GUI_T(KC_TAB),  LT(SYMB,KC_BSPC),  CTL_T(KC_ESC),  SFT_T(KC_ENT),  LT(SYMB,KC_SPC),  GUI_T(KC_LEFT),  KC_DOWN,  KC_UP,    LCAG_T(KC_RGHT) +), + +[SYMB] = KEYMAP( +    KC_EXLM,  KC_AT,    KC_LCBR,  KC_RCBR,  KC_PIPE,                      KC_EQL,   KC_7,  KC_8,   KC_9,    KC_PLUS, +    KC_HASH,  KC_DLR,   KC_LPRN,  KC_RPRN,  KC_BSLS,                      KC_MINS,  KC_4,  KC_5,   KC_6,    KC_QUOT, +    KC_PERC,  KC_CIRC,  KC_LBRC,  KC_RBRC,  KC_ASTR,                      KC_UNDS,  KC_1,  KC_2,   KC_3,    KC_DQUO, +    KC_TILD,  KC_AMPR,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_0,  KC_NO,  KC_DOT,  KC_TRNS +), + +[ETC] = KEYMAP( +    RESET,         KC_NO,  KC_NO,    KC_NO,    KC_PGUP,                      KC_VOLU,  KC_F7,  KC_F8,  KC_F9,   KC_HOME, +    LT(ETC,KC_A),  KC_NO,  KC_NO,    KC_NO,    KC_PGDN,                      KC_VOLD,  KC_F4,  KC_F5,  KC_F6,   KC_END, +    KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_DEL,                       KC_MUTE,  KC_F1,  KC_F2,  KC_F3,   KC_INS, +    KC_TRNS,       KC_NO,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_NO,  KC_NO,  KC_NO,   KC_NO +), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { +  switch(id) { +    case TEENSY: +      break; +  } +  return MACRO_NONE; +}; diff --git a/keyboards/ergodox/keymaps/alphadox/Makefile b/keyboards/ergodox/keymaps/alphadox/Makefile new file mode 100644 index 0000000000..633499d00b --- /dev/null +++ b/keyboards/ergodox/keymaps/alphadox/Makefile @@ -0,0 +1,17 @@ +BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE  = no  # Mouse keys(+4700) +EXTRAKEY_ENABLE  = yes # Audio control and System control(+450) +CONSOLE_ENABLE   = no  # Console for debug(+400) +COMMAND_ENABLE   = no  # Commands for debug and configuration +NKRO_ENABLE      = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ # nkro-doesnt-work +BACKLIGHT_ENABLE = no  # Enable keyboard backlight functionality +MIDI_ENABLE      = no  # MIDI controls +AUDIO_ENABLE     = no  # Audio output on port C6 +UNICODE_ENABLE   = no  # Unicode +BLUETOOTH_ENABLE = no  # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE  = no  # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR +	include ../../../../Makefile +endif diff --git a/keyboards/ergodox/keymaps/alphadox/config.h b/keyboards/ergodox/keymaps/alphadox/config.h new file mode 100644 index 0000000000..deb218dc0d --- /dev/null +++ b/keyboards/ergodox/keymaps/alphadox/config.h @@ -0,0 +1,12 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#define FORCE_NKRO +#define PREVENT_STUCK_MODIFIERS + +#undef TAPPING_TERM +#undef IGNORE_MOD_TAP_INTERRUPT + +#endif diff --git a/keyboards/ergodox/keymaps/alphadox/keymap.c b/keyboards/ergodox/keymaps/alphadox/keymap.c new file mode 100644 index 0000000000..731e62c0cd --- /dev/null +++ b/keyboards/ergodox/keymaps/alphadox/keymap.c @@ -0,0 +1,107 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define ETC  2 // etc + +enum macro_id { +    TEENSY, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[BASE] = KEYMAP( +    KC_NO,          KC_NO,         KC_NO,   KC_NO,    KC_NO,          KC_NO,  KC_NO, +    KC_TAB,         KC_Q,          KC_W,    KC_D,     KC_F,           KC_K,   KC_PGUP, +    CTL_T(KC_ESC),  LT(ETC,KC_A),  KC_S,    KC_E,     KC_T,           KC_G, +    KC_LSFT,        KC_Z,          KC_X,    KC_C,     KC_V,           KC_B,   KC_PGDN, +    KC_GRV,         KC_DEL,        KC_DEL,  KC_LALT,  GUI_T(KC_TAB), +                                                                      KC_NO,  KC_NO, +                                                                              KC_NO, +                                           LT(SYMB,KC_BSPC),  CTL_T(KC_ESC),  KC_NO, + +    KC_NO,    KC_NO,  KC_NO,          KC_NO,    KC_NO,    KC_NO,    KC_NO, +    KC_VOLU,  KC_J,   KC_U,           KC_R,     KC_L,     KC_SCLN,  KC_BSLS, +              KC_Y,   KC_N,           KC_I,     KC_O,     KC_H,     KC_QUOT, +    KC_VOLD,  KC_P,   KC_M,           KC_COMM,  KC_DOT,   KC_SLSH,  KC_RSFT, +                      GUI_T(KC_TAB),  KC_LEFT,  KC_DOWN,  KC_UP,    LCAG_T(KC_RGHT), +    KC_NO,  KC_NO, +    KC_NO, +    KC_NO,  SFT_T(KC_ENT),  LT(SYMB,KC_SPC) +), + +[SYMB] = KEYMAP( +    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, +    KC_TRNS,  KC_EXLM,  KC_AT,    KC_LCBR,  KC_RCBR,  KC_PIPE,  KC_TRNS, +    KC_TRNS,  KC_HASH,  KC_DLR,   KC_LPRN,  KC_RPRN,  KC_BSLS, +    KC_TRNS,  KC_PERC,  KC_CIRC,  KC_LBRC,  KC_RBRC,  KC_ASTR,  KC_TRNS, +    KC_TILD,  KC_AMPR,  KC_AMPR,  KC_TRNS,  KC_TRNS, +                                                      KC_TRNS,  KC_TRNS, +                                                                KC_TRNS, +                                              KC_TRNS, KC_TRNS, KC_TRNS, + +    KC_NO,    KC_NO,    KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO, +    KC_TRNS,  KC_EQL,   KC_7,   KC_8,   KC_9,    KC_PLUS,  KC_NO, +              KC_MINS,  KC_4,   KC_5,   KC_6,    KC_QUOT,  KC_NO, +    KC_TRNS,  KC_UNDS,  KC_1,   KC_2,   KC_3,    KC_DQUO,  KC_TRNS, +                        KC_0,   KC_NO,  KC_DOT,  KC_TRNS,  KC_TRNS, +    KC_TRNS,  KC_TRNS, +    KC_TRNS, +    KC_TRNS,  KC_TRNS,  KC_TRNS +), + +[ETC] = KEYMAP( +    RESET,    KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_NO,    KC_NO, +    KC_TRNS,  KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_PGUP,  KC_TRNS, +    KC_TRNS,  LT(ETC,KC_A),  KC_NO,  KC_NO,    KC_NO,    KC_PGDN, +    KC_TRNS,  KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_DEL,   KC_TRNS, +    KC_TRNS,  KC_TRNS,       KC_NO,  KC_TRNS,  KC_TRNS, +                                                         KC_TRNS,  KC_TRNS, +                                                                   KC_TRNS, +                                                 KC_TRNS, KC_TRNS, KC_TRNS, + +    KC_NO,    KC_NO,    KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO, +    KC_TRNS,  KC_VOLU,  KC_F7,  KC_F8,  KC_F9,   KC_HOME,  KC_NO, +              KC_VOLD,  KC_F4,  KC_F5,  KC_F6,   KC_END,   KC_NO, +    KC_TRNS,  KC_MUTE,  KC_F1,  KC_F2,  KC_F3,   KC_INS,   KC_TRNS, +                        KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO, +    KC_TRNS,  KC_TRNS, +    KC_TRNS, +    KC_TRNS,  KC_TRNS,  KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { +  switch(id) { +    case TEENSY: +      break; +  } +  return MACRO_NONE; +}; + +void matrix_init_user(void) { +}; + +void matrix_scan_user(void) { +    uint8_t layer = biton32(layer_state); + +    ergodox_board_led_off(); +    ergodox_right_led_1_off(); +    ergodox_right_led_2_off(); +    ergodox_right_led_3_off(); +    switch (layer) { +        case 1: +            ergodox_right_led_1_on(); +            break; +        case 2: +            ergodox_right_led_2_on(); +            break; +        default: +            break; +    } +}; diff --git a/keyboards/hhkb/keymaps/dbroqua/keymap.c b/keyboards/hhkb/keymaps/dbroqua/keymap.c index 4e907acd87..2b6d3901a4 100644 --- a/keyboards/hhkb/keymaps/dbroqua/keymap.c +++ b/keyboards/hhkb/keymaps/dbroqua/keymap.c @@ -35,19 +35,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {       * |-----------------------------------------------------------------------------------------+       * | Caps   |     |     |     |     |     |     |     |PrtSc| Slck| Paus|  Up |     |        |       * |-----------------------------------------------------------------------------------------+ -     * |         | Vol-| Vol+| Mute|     |     |     |     | Home| PgUp| Left |Right|            | +     * |         | Vol-| Vol+| Mute|     |     | *   | /   | Home| PgUp| Left |Right|            |       * |-----------------------------------------------------------------------------------------+ -     * |           | Prev| Play| Next|     |     |     |     | End |PgDwn| Down|           |     | +     * |           | Prev| Play| Next|     |     | +   | -   | End |PgDwn| Down|           |     |       * +-----------------------------------------------------------------------------------------+ -     *         |     |        |                                   |       |     | +     *         |     |        |                                   | Stop  |     |       *         `----------------------------------------------------------------´       */      [FN] = KEYMAP(          KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \          KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_TRNS,          \ -        KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_TRNS,                    \ -        KC_TRNS,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \ -                        KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS +        KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_TRNS,                    \ +        KC_TRNS,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \ +                        KC_TRNS, KC_TRNS,           KC_TRNS,                KC_MSTP, KC_TRNS      ),      /* MOUSE Layer diff --git a/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c b/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c new file mode 100644 index 0000000000..5d7c7f38a3 --- /dev/null +++ b/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c @@ -0,0 +1,73 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "kc60.h" + +#define _QWERTY 0 +#define _FN 1 + +// Fillers to make layering more clear +#define ______ KC_TRNS +#define XXXXXXX KC_NO + +// Func macro definitions. +#define S_LED   FUNC(0) +#define S_LEDI  FUNC(1) +#define S_LEDD  FUNC(2) + +// Enable these functions using FUNC(n) macro. +const uint16_t PROGMEM fn_actions[] = { +    [0] = ACTION_BACKLIGHT_TOGGLE(), +	[1] = ACTION_BACKLIGHT_INCREASE(), +	[2] = ACTION_BACKLIGHT_DECREASE() + }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty + * ,-----------------------------------------------------------------------------------------. + * | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  | + * |-----------------------------------------------------------------------------------------+ + * | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |  Bksp  | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    | + * |-----------------------------------------------------------------------------------------+ + * | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  | RShift    | FN  | + * |-----------------------------------------------------------------------------------------+ + *         | LGUI  | LAlt  |               Space             | RAlt  | RGUI  | + *         `-----------------------------------------------------------------' + */ +  [0] = KEYMAP( /* Basic QWERTY */ +      KC_ESC,   KC_1,     KC_2,     KC_3,    KC_4,     KC_5,     KC_6,     KC_7,    KC_8,  KC_9,     KC_0,     KC_MINS,  KC_EQL,   KC_BSLS,  \ +      KC_TAB,   KC_Q,     KC_W,     KC_E,    KC_R,     KC_T,     KC_Y,     KC_U,    KC_I,  KC_O,     KC_P,     KC_LBRC,  KC_RBRC,  KC_BSPC,  \ +      KC_LCTL,  KC_A,     KC_S,     KC_D,    KC_F,     KC_G,     KC_H,     KC_J,    KC_K,  KC_L,     KC_SCLN,  KC_QUOT,  KC_NO,    KC_ENT,   \ +      KC_LSFT,  KC_NO,    KC_Z,     KC_X,    KC_C,     KC_V,     KC_B,     KC_N,    KC_M,  KC_COMM,  KC_DOT,   KC_SLSH,  MO(_FN),  KC_RSFT,  \ +      ______,  KC_LGUI,  KC_LALT,  KC_SPC,  KC_GRV,  KC_RALT,  KC_RGUI, ______, ______ \ +      ), + +/* Layer 1 + * ,-----------------------------------------------------------------------------------------. + * |     | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 | Ins | Del | + * |-----------------------------------------------------------------------------------------+ + * |        | Led | Led-| Led+|     |     |     |     | Psc | Slck| Paus| Up  |     |        | + * |-----------------------------------------------------------------------------------------+ + * |         | Vol-| Vol+| Mute|     |     | *   | /   | Home| PgUp| Left|Right|             | + * |-----------------------------------------------------------------------------------------+ + * |           | Prev| Play| Next|     |     | +   | -   | End  |PgDn| Down|           |     | + * |-----------------------------------------------------------------------------------------+ + *         |       |       |                                 | Stop  |       | + *         `-----------------------------------------------------------------' + */ +  [_FN] = KEYMAP( /* Layer 1 */ +      ______,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_F11, KC_F12, KC_INS,  \ +      ______,   S_LED, S_LEDI, S_LEDD, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______,  \ +      ______,   KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS,KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, ______, ______,   \ +      ______,   ______,  KC_MPRV,  KC_MPLY, KC_MNXT,______,______,KC_PPLS,KC_PMNS,KC_END, KC_PGDN, KC_DOWN, ______,______,  \ +      ______,   ______, ______,                 ______,         KC_DEL,         KC_MSTP, ______,    ______,    ______ \ +      ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +  // MACRODOWN only works in this function +  return MACRO_NONE; +}; diff --git a/keyboards/kc60/keymaps/dbroqua_hhkb/readme.md b/keyboards/kc60/keymaps/dbroqua_hhkb/readme.md new file mode 100644 index 0000000000..be99a3bc7e --- /dev/null +++ b/keyboards/kc60/keymaps/dbroqua_hhkb/readme.md @@ -0,0 +1,9 @@ +# Dbroqua HHKB like Layout + +Like the HHKB but with a KC60 PCB :D. + +# Programming Instructions: +Enter into programming mode and run the following command. +``` +$ sudo KEYMAP=dbroqua_hhkb make dfu +```
\ No newline at end of file diff --git a/keyboards/lets_split/readme.md b/keyboards/lets_split/readme.md index 73fdb0f789..6e296737a2 100644 --- a/keyboards/lets_split/readme.md +++ b/keyboards/lets_split/readme.md @@ -100,3 +100,16 @@ half to a computer by USB the keyboard will use QWERTY and Colemak when the  right half is connected. +Notes on Using Pro Micro 3.3V +----------------------------- + +Do update the `F_CPU` parameter in `rules.mk` to `8000000` which reflects +the frequency on the 3.3V board. + +Also, if the slave board is producing weird characters in certain columns, +update the following line in `matrix.c` to the following: + +``` +// _delay_us(30);  // without this wait read unstable value. +_delay_us(300);  // without this wait read unstable value. +``` diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index c89b485a41..4d0151710e 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -109,15 +109,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------+------+------+------+------+------+------|   * |      |  F11 |  F12 |  F13 |  F14 |  F15 |  F16 |  F17 |  F18 |  F19 |  F20 | Vol- |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |  F21 |  F22 |  F23 |  F24 |      |      | Lock |      |      |      |      | + * |      |  F21 |  F22 |  F23 |  F24 |      |      | Power|      |      |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------|   * |      |      |      |      | Prev | Mute | Play | Next |      |      |      |      |   * `-----------------------------------------------------------------------------------'   */  [_FUNC] = { -  {RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  S(LALT(KC_VOLU))}, -  {XXXXXXX, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  S(LALT(KC_VOLD))}, -  {_______, KC_F21,  KC_F22,  KC_F23,  KC_F24,  XXXXXXX, XXXXXXX, S(LCTL(KC_POWER)), XXXXXXX, XXXXXXX, XXXXXXX, _______}, +  {RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_VOLU}, +  {XXXXXXX, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_VOLD}, +  {_______, KC_F21,  KC_F22,  KC_F23,  KC_F24,  XXXXXXX, XXXXXXX, KC_POWER, XXXXXXX, XXXXXXX, XXXXXXX, _______},    {_______, _______, _______, _______, KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT, _______, _______, _______, _______}  } diff --git a/keyboards/planck/keymaps/priyadi/keymap.c b/keyboards/planck/keymaps/priyadi/keymap.c index dd8652d348..6e7f4e7355 100644 --- a/keyboards/planck/keymaps/priyadi/keymap.c +++ b/keyboards/planck/keymaps/priyadi/keymap.c @@ -5,24 +5,24 @@  #include "action_layer.h"  #ifdef AUDIO_ENABLE    #include "audio.h" +  #include "musical_notes.h"  #endif  #include "eeconfig.h"  #include "process_unicode.h" +#include "quantum.h"  extern keymap_config_t keymap_config; -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QWERTY 0 -#define _COLEMAK 1 -#define _WORKMAN 2 -#define _PUNC 9 -#define _NUM 10 -#define _FUNC 11 -#define _EMOJI 12 -#define _ADJUST 16 +enum layers { +  _QWERTY, +  _COLEMAK, +  _WORKMAN, +  _PUNC, +  _NUM, +  _FUNC, +  _EMOJI, +  _GUI, +};  enum planck_keycodes {    // layouts @@ -35,6 +35,7 @@ enum planck_keycodes {    NUM,    FUNC,    EMOJI, +  GUI,    // os switchers    LINUX, @@ -43,10 +44,12 @@ enum planck_keycodes {  };  // Fillers to make layering clearer +  #define _______ KC_TRNS  #define XXXXXXX KC_NO  // unicode map +  enum unicode_name {    GRIN, // grinning face 😊    TJOY, // tears of joy 😂 @@ -147,6 +150,18 @@ const uint32_t PROGMEM unicode_map[] = {    [SKULL] = 0x1F480,  }; + +// hybrid shift - = +// #undef KC_LSFT +// #define KC_LSFT MT(MOD_LSFT, KC_MINS) +// #undef KC_RSFT +// #define KC_RSFT MT(MOD_LSFT, KC_EQL) + + +// hybrid right-gui & scroll lock (mapped to Compose in OS) +#undef KC_RCTL +#define KC_RCTL MT(MOD_LCTL, KC_SLCK) +  // keymaps  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -189,11 +204,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {  /* Workman   * ,-----------------------------------------------------------------------------------. - * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp | + * | Tab  |   Q  |   D  |   R  |   W  |   B  |   J  |   F  |   U  |   P  |   ;  | Bksp |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |Enter | + * | Esc  |   A  |   S  |   H  |   T  |   G  |   Y  |   N  |   E  |   O  |   I  |Enter |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Shift | + * | Shift|   Z  |   X  |   M  |   C  |   V  |   K  |   K  |   ,  |   .  |   /  |Shift |   * |------+------+------+------+------+------+------+------+------+------+------+------|   * | Ctrl | GUI  | Alt  | Punc | Num  |    Space    | Func |Emoji |AltGr | GUI  | Ctrl |   * `-----------------------------------------------------------------------------------' @@ -207,56 +222,56 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {  /* Punc   * ,-----------------------------------------------------------------------------------. - * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp | + * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |   `  |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |   `  |      |      |      |      |      |   |  |   _  |   +  |   {  |   }  |  "   | + * |      |      |   \  |   -  |   =  |   <  |   >  |   (  |   )  |   '  |      |      |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |      |      |      |      |      |   \  |   -  |   =  |   [  |   ]  |  '   | + * |      |      |   |  |   _  |   +  |   {  |   }  |   [  |   ]  |   "  |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |             |      |      |   <  |   >  |      | + * |      |      |      |      |      |             |      |      |      |      |      |   * `-----------------------------------------------------------------------------------'   */  [_PUNC] = { -  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, -  {KC_GRV,  _______, _______, _______, _______, _______, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_DQUO}, -  {_______, _______, _______, _______, _______, _______, KC_BSLS, KC_MINS,  KC_EQL, KC_LBRC, KC_RBRC, KC_QUOT}, -  {_______, _______, _______, _______, _______,  KC_SPC,  KC_SPC, _______, _______, KC_LABK, KC_RABK, _______} +  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV }, +  {XXXXXXX, XXXXXXX, KC_BSLS, KC_MINS,  KC_EQL, KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_QUOT, XXXXXXX, XXXXXXX}, +  {XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_DQUO, XXXXXXX, XXXXXXX}, +  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}  },  /* Num   * ,-----------------------------------------------------------------------------------. - * |      |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | + * |  ^   |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc  |  @   |  A   |  B   |  C   |  [   |  ]   |   4  |   5  |   6  |   :  |Enter | + * | Esc  |  @   |  A   |  B   |  C   |  (   |  )   |   4  |   5  |   6  |   :  |Enter |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |      |  D   |  E   |  F   |  &   |  #   |   1  |   2  |   3  |      |      | + * |  &   |  #   |  D   |  E   |  F   |  [   |  ]   |   1  |   2  |   3  |   /  |  *   |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |  x   |      |      |             |   0  |   ,  |   .  |      |      | + * |      |      |      |  x   |      |             |   0  |   ,  |   .  |   +  |  -   |   * `-----------------------------------------------------------------------------------'   */  [_NUM] = { -  {_______,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC}, -  { KC_ESC,   KC_AT, S(KC_A), S(KC_B), S(KC_C), KC_LBRC, KC_RBRC,    KC_4,    KC_5,    KC_6, KC_COLN, KC_BSLS}, -  {_______, _______, S(KC_D), S(KC_E), S(KC_F), KC_AMPR, KC_HASH,    KC_1,    KC_2,    KC_3, _______, _______}, -  {_______, _______,    KC_X, _______, _______,  KC_SPC,  KC_SPC,    KC_0, KC_COMM,KC_KP_DOT,_______, _______} +  {KC_CIRC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC}, +  { KC_ESC,   KC_AT, S(KC_A), S(KC_B), S(KC_C), KC_LPRN, KC_RPRN,    KC_4,    KC_5,    KC_6, KC_COLN,  KC_ENT}, +  {KC_AMPR, KC_HASH, S(KC_D), S(KC_E), S(KC_F), KC_LBRC, KC_RBRC,    KC_1,    KC_2,    KC_3, KC_SLSH, KC_ASTR}, +  {_______, _______, _______,    KC_X, _______,  KC_SPC,  KC_SPC,    KC_0, KC_COMM,  KC_DOT, KC_PLUS, KC_MINS}  },  /* Func   * ,-----------------------------------------------------------------------------------. - * |      |  F1  |  F2  |  F3  |  F4  |      |      | PgUp |  Up  | PgDn | PgUp | Bksp | + * |      |  F1  |  F2  |  F3  |  F4  |      |      | PgUp |  Up  | PgDn | PgUp | Del  |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |  F5  |  F6  |  F7  |  F8  |      |      | Left | Down | Right| PgDn |      | + * |      |  F5  |  F6  |  F7  |  F8  |PrtSc |      | Left | Down | Right| PgDn | Ins  |   * |------+------+------+------+------+------|------+------+------+------+------+------|   * |      |  F9  |  F10 |  F11 |  F12 |      |      |      | Home |  End |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |             |      |      |      |      |Print | + * |      |      |      |      |      |             |      |      |      |      |      |   * `-----------------------------------------------------------------------------------'   */  [_FUNC] = { -  {_______,   KC_F1,   KC_F2,   KC_F3,   KC_F4, _______, _______, KC_PGUP,   KC_UP, KC_PGDN, KC_PGUP, KC_BSPC}, -  {_______,   KC_F5,   KC_F6,   KC_F7,   KC_F8, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______}, -  {_______,   KC_F9,  KC_F10,  KC_F11,  KC_F12, _______, _______, _______, KC_HOME,  KC_END, _______, _______}, -  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,KC_PSCREEN} +  {XXXXXXX,   KC_F1,   KC_F2,   KC_F3,   KC_F4, XXXXXXX, XXXXXXX, KC_PGUP,   KC_UP, KC_PGDN, KC_PGUP,  KC_DEL}, +  {XXXXXXX,   KC_F5,   KC_F6,   KC_F7,  KC_F8,KC_PSCREEN,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN,  KC_INS}, +  {_______,   KC_F9,  KC_F10,  KC_F11,  KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME,  KC_END, XXXXXXX, _______}, +  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}  },  /* Emoji @@ -274,27 +289,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {    {X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW)},    {X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART),  X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS)},    {X(THMDN),X(SLEEP), X(CLAP),  X(CRY),  X(VIC),X(BHART),  X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH)}, -  {  X(POO), X(EYES),X(HUNRD),X(TONGU),X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK)} +  {  X(POO), X(EYES),X(HUNRD), _______,X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK)}  }, -/* Adjust +/* GUI   * ,-----------------------------------------------------------------------------------. - * |      |      |Linux | Win  | OSX  |      |      |Qwerty|Colemk|Workmm|      |      | + * |      |  D1  |  D2  |  D3  |  D4  |  D5  |  D6  |  D7  |  D8  |  D9  |  D10 |      |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |      |      |      |      |      |      |      |      |      |      |      | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |      |      |      |      |      |      |      |      |      |      |      | + * |Linux |      | Vol- | Mute | Vol+ |      |      |  D-  |      |  D+  |      |Qwerty|   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |             |      |      |      |      |      | + * | Win  |      | Prev | Play | Next |      |      |      |      |      |      |Colmak| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | OSX  |      |      |      |      |  BL- |  BL+ |      |      |      |      |Workmn|   * `-----------------------------------------------------------------------------------'   */ -[_ADJUST] = { -  {_______, _______,   LINUX,     WIN,     OSX, _______, _______, QWERTY,  COLEMAK, WORKMAN, _______, _______}, -  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, -  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, -  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} -} - +[_GUI] = { +  {_______, LGUI(KC_1),LGUI(KC_2),LGUI(KC_3),LGUI(KC_4),LGUI(KC_5),LGUI(KC_6),LGUI(KC_7),LGUI(KC_8),LGUI(KC_9),LGUI(KC_0), _______}, +  {  LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,_______, QWERTY}, +  {    WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, COLEMAK}, +  {    OSX, _______, _______, _______, _______,  BL_DEC,  BL_INC, _______, _______, _______, _______, WORKMAN} +},  }; @@ -304,6 +318,10 @@ float tone_qwerty[][2]     = SONG(QWERTY_SOUND);  float tone_colemak[][2]    = SONG(COLEMAK_SOUND);  float tone_workman[][2]    = SONG(DVORAK_SOUND);  float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +float tone_linux[][2] = SONG(CAPS_LOCK_ON_SOUND); +float tone_windows[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND); +float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2));  #endif  void persistant_default_layer_set(uint16_t default_layer) { @@ -312,6 +330,9 @@ void persistant_default_layer_set(uint16_t default_layer) {  }  bool process_record_user(uint16_t keycode, keyrecord_t *record) { +  // faux clicky +  if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); +    switch (keycode) {      case QWERTY:        if (record->event.pressed) { @@ -343,20 +364,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {      case PUNC:        if (record->event.pressed) {          layer_on(_PUNC); -        update_tri_layer(_PUNC, _EMOJI, _ADJUST); +        update_tri_layer(_PUNC, _EMOJI, _GUI);        } else {          layer_off(_PUNC); -        update_tri_layer(_PUNC, _EMOJI, _ADJUST); +        update_tri_layer(_PUNC, _EMOJI, _GUI);        }        return false;        break;      case EMOJI:        if (record->event.pressed) {          layer_on(_EMOJI); -        update_tri_layer(_PUNC, _EMOJI, _ADJUST); +        update_tri_layer(_PUNC, _EMOJI, _GUI);        } else {          layer_off(_EMOJI); -        update_tri_layer(_PUNC, _EMOJI, _ADJUST); +        update_tri_layer(_PUNC, _EMOJI, _GUI);        }        return false;        break; @@ -378,14 +399,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {        break;      case LINUX:        set_unicode_input_mode(UC_LNX); +      #ifdef AUDIO_ENABLE +        PLAY_NOTE_ARRAY(tone_linux, false, 0); +      #endif        return false;        break;      case WIN: -      set_unicode_input_mode(UC_WIN); +      set_unicode_input_mode(UC_WINC); +      #ifdef AUDIO_ENABLE +        PLAY_NOTE_ARRAY(tone_windows, false, 0); +      #endif        return false;        break;      case OSX:        set_unicode_input_mode(UC_OSX); +      #ifdef AUDIO_ENABLE +        PLAY_NOTE_ARRAY(tone_osx, false, 0); +      #endif        return false;        break;    } diff --git a/keyboards/planck/keymaps/priyadi/readme.md b/keyboards/planck/keymaps/priyadi/readme.md index de2f25e537..99bdd9d9b6 100644 --- a/keyboards/planck/keymaps/priyadi/readme.md +++ b/keyboards/planck/keymaps/priyadi/readme.md @@ -1 +1,11 @@ -# Priyadi's Planck Layout
\ No newline at end of file +# Priyadi's Planck Layout + +Features: + +- Supports QWERTY, Colemak and Workman layouts. +- Cursor and nav cluster on home row. +- Hybrid number row and numpad, located on home row. +- Number layer supports hexadecimal input. +- Left and right side modifiers. +- Emoji layer. An entire layer filled with common emojis. +- Faux-clickey (poor man's replacement for Cherry blue switches)
\ No newline at end of file diff --git a/keyboards/preonic/keymaps/jacwib/config.h b/keyboards/preonic/keymaps/jacwib/config.h index 23e9e0ed28..b988831207 100644 --- a/keyboards/preonic/keymaps/jacwib/config.h +++ b/keyboards/preonic/keymaps/jacwib/config.h @@ -4,5 +4,6 @@  #include "../../config.h"  #define FORCE_NKRO 1 +#define PREVENT_STUCK_MODIFIERS  #endif diff --git a/keyboards/preonic/keymaps/jacwib/keymap.c b/keyboards/preonic/keymaps/jacwib/keymap.c index cf441bf309..72ccc86cd2 100644 --- a/keyboards/preonic/keymaps/jacwib/keymap.c +++ b/keyboards/preonic/keymaps/jacwib/keymap.c @@ -13,13 +13,18 @@  #define _QWERTY 0  #define _LOWER 3  #define _RAISE 4 +#define _MQWERTY 5 +#define _MLOWER 8 +#define _MRAISE 9  #define _ADJUST 16  enum preonic_keycodes {    QWERTY = SAFE_RANGE,    LOWER,    RAISE, -  BACKLIT +  MQWERTY, +  MLOWER, +  MRAISE  };  // Fillers to make layering more clear @@ -38,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------|------+------+------+------+------+------|   * | Shift|   <  |   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   .  |   ,  |  -   |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI  | Alt  |AltGr |Lower | Space| Enter|Raise | Left | Down |  Up  |Right | + * | Ctrl | Alt  | GUI  |AltGr |Lower | Space| Enter|Raise | Left | Down |  Up  |Right |   * `-----------------------------------------------------------------------------------'   */  [_QWERTY] = { @@ -46,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {    {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    NO_AM  },    {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    NO_AE,   NO_OSLH},    {KC_LSFT, NO_LESS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_DOT,  KC_COMM, NO_MINS}, -  {KC_LCTL, KC_LGUI, KC_LALT, NO_ALGR, LOWER,   KC_SPC,  KC_ENT,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} +  {KC_LCTL, KC_LALT, KC_LGUI, NO_ALGR, LOWER,   KC_SPC,  KC_ENT,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}  },  /* Lower @@ -59,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------|------+------+------+------+------+------|   * |      |   |  |      |      |      |      |      |      |VolDwn|      |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |      |Bspc  |      |      |      |      |      | + * |      |      |      |      |      |      |Bspc  |      |      |PgDn  |PgUp  |      |   * `-----------------------------------------------------------------------------------'   */  [_LOWER] = { @@ -67,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {    {_______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, NO_TILD},    {_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, LSFT(KC_BSLS)},    {_______, NO_PIPE, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______}, -  {_______, _______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______, _______, _______} +  {_______, _______, _______, _______, _______, _______, KC_BSPC, _______, _______, KC_PGDN, KC_PGUP, _______}  },  /* Raise @@ -76,11 +81,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------+------+------+------+------+------+------|   * |      |      |      |Mouse^|      |      |      |      |ScrlUp|      |      |  ^   |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |      |Mouse<|MouseV|Mouse>|      |      |MLC   |MMC   |MRC   |   '  |  "   | + * |      |      |Mouse<|MouseV|Mouse>|      |      |MLC   |MMC   |MRC   |   '  |  ¨   |   * |------+------+------+------+------+------|------+------+------+------+------+------|   * |      |   >  |      |      |      |      |      |      |ScrlDown| :  |  ;   |  _   |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |Bspc  |      |      |      |      |      |      | + * |      |      |      |      |      |Bspc  |      |      |      | PgDn | PgUp |      |   * `-----------------------------------------------------------------------------------'   */  [_RAISE] = { @@ -88,7 +93,70 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {    {_______, _______, _______, KC_MS_U, _______, _______, _______, _______, KC_WH_U, _______, _______, NO_CIRC},    {_______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, NO_APOS, NO_QUOT},    {_______, NO_GRTR, _______, _______, _______, _______, _______, _______, KC_WH_D, NO_COLN, NO_SCLN, NO_UNDS}, -  {_______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______, _______, _______, _______} +  {_______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______, KC_PGDN, KC_PGUP, _______} +}, + +/* Mac Qwerty + * ,-----------------------------------------------------------------------------------. + * |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   +  | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  Å   | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   Ö  |  Ä   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   <  |   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   .  |   ,  |  -   | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt  | GUI  |AltGr |Lower | Space| Enter|Raise | Left | Down |  Up  |Right | + * `-----------------------------------------------------------------------------------' + */ +[_MQWERTY] = { +  {KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    NO_PLUS, KC_BSPC}, +  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    NO_AM  }, +  {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    NO_AE,   NO_OSLH}, +  {KC_LSFT, NO_LESS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_DOT,  KC_COMM, NO_MINS}, +  {KC_LCTL, KC_LALT, KC_LGUI, NO_ALGR, MLOWER,  KC_SPC,  KC_ENT,  MRAISE,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} +}, + +/* Mac Lower + * ,-----------------------------------------------------------------------------------. + * |      |   @  |   £  |   $  |      |      |   {  |   [  |   ]  |   }  |   \  | Del  | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |VolUp |      |      |  ~   | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |      |      |      |      |      |      |      |LastS |PauseP|NextS |      |  *   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |   |  |      |      |      |      |      |      |VolDwn|      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |Bspc  |      |      |PgDn  |PgUp  |      | + * `-----------------------------------------------------------------------------------' + */ +[_MLOWER] = { +  {_______, NO_AT,   NO_PND,  NO_DLR,  _______, _______, LSFT(LALT(KC_8)), NO_LBRC, NO_RBRC, LSFT(LALT(KC_9)), LSFT(LALT(KC_7)), KC_DEL}, +  {_______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, NO_TILD}, +  {_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, LSFT(KC_BSLS)}, +  {_______, NO_LBRC, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______}, +  {_______, _______, _______, _______, _______, _______, KC_BSPC, _______, _______, KC_PGDN, KC_PGUP, _______} +}, + +/* Mac Raise + * ,-----------------------------------------------------------------------------------. + * |   !  |   "  |   #  |   ¤  |   %  |   &  |   /  |   (  |   )  |   =  |   ?  | Ins  | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |Mouse^|      |      |      |      |ScrlUp|      |      |  ^   | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |      |      |Mouse<|MouseV|Mouse>|      |      |MLC   |MMC   |MRC   |   '  |  ¨   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |   >  |      |      |      |      |      |      |ScrlDown| :  |  ;   |  _   | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |Bspc  |      |      |      | PgDn | PgUp |      | + * `-----------------------------------------------------------------------------------' + */ +[_MRAISE] = { +  {LSFT(KC_1),NO_QUO2,LSFT(KC_3), NO_BULT,LSFT(KC_5), NO_AMPR, NO_SLSH, NO_LPRN, NO_RPRN, NO_EQL,  NO_QUES, KC_INS}, +  {_______, _______, _______, KC_MS_U, _______, _______, _______, _______, KC_WH_U, _______, _______, NO_CIRC}, +  {_______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, NO_APOS, NO_QUOT}, +  {_______, NO_GRTR, _______, _______, _______, _______, _______, _______, KC_WH_D, NO_COLN, NO_SCLN, NO_UNDS}, +  {_______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______, KC_PGDN, KC_PGUP, _______}  },  /* Adjust (Lower + Raise) @@ -97,18 +165,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------+------+------+------+------+------+------|   * |      |      |      | Reset|      |      |      |      |      |      |      |      |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |      |      |      |      |      |      |      |      |      |      |Rsft  | + * |      |      |      |      |      |      |      |      |      |      |      |Rshift|   * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |MusOn |MusOff|      |      |      |      |      |      |      |      | Reset| + * |      |MusOn |MusOff|      |      |      |      |NrmMode|MacMode|    |      | Reset|   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |             |      |      |      |      |      | + * |      |      |      |      |      |      |      |      |      |      |      |      |   * `-----------------------------------------------------------------------------------'   */  [_ADJUST] = {    {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12},    {_______, _______, _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______},    {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT}, -  {_______, MU_ON,   MU_OFF,  _______, _______, _______, _______, _______, _______, _______, _______, RESET  }, +  {_______, MU_ON,   MU_OFF,  _______, _______, _______, _______, TO(0),   TO(5),   _______, _______, RESET  },    {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}  } @@ -117,14 +185,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {  #ifdef AUDIO_ENABLE  float tone_startup[][2] = { -  {NOTE_B5, 20}, -  {NOTE_B6, 8}, -  {NOTE_DS6, 20}, -  {NOTE_B6, 8} +  {NOTE_D5, 8}, +  {NOTE_E6, 8}, +  {NOTE_D6, 8}, +  {NOTE_E5, 8}  }; -float tone_qwerty[][2]     = SONG(QWERTY_SOUND); -  float tone_goodbye[][2] = SONG(GOODBYE_SOUND);  float music_scale[][2]     = SONG(MUSIC_SCALE_SOUND); @@ -139,9 +205,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {    switch (keycode) {          case QWERTY:            if (record->event.pressed) { -            #ifdef AUDIO_ENABLE -              PLAY_NOTE_ARRAY(tone_qwerty, false, 0); -            #endif              persistant_default_layer_set(1UL<<_QWERTY);            }            return false; @@ -166,14 +229,29 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {            }            return false;            break; -        case BACKLIT: +        case MQWERTY: +          if (record->event.pressed) { +            persistant_default_layer_set(1UL<<_MQWERTY); +          } +          return false; +          break; +        case MLOWER: +          if (record->event.pressed) { +            layer_on(_MLOWER); +            update_tri_layer(_MLOWER, _MRAISE, _ADJUST); +          } else { +            layer_off(_MLOWER); +            update_tri_layer(_MLOWER, _MRAISE, _ADJUST); +          } +          return false; +          break; +        case MRAISE:            if (record->event.pressed) { -            register_code(KC_RSFT); -            #ifdef BACKLIGHT_ENABLE -              backlight_step(); -            #endif +            layer_on(_MRAISE); +            update_tri_layer(_MLOWER, _MRAISE, _ADJUST);            } else { -            unregister_code(KC_RSFT); +            layer_off(_MRAISE); +            update_tri_layer(_MLOWER, _MRAISE, _ADJUST);            }            return false;            break; diff --git a/keyboards/preonic/keymaps/jacwib/readme.md b/keyboards/preonic/keymaps/jacwib/readme.md index 0660312353..8658d6cdd7 100644 --- a/keyboards/preonic/keymaps/jacwib/readme.md +++ b/keyboards/preonic/keymaps/jacwib/readme.md @@ -1,3 +1,15 @@  # Jacwib's preonic keymap.  Designed for use with a swedish language. + +Version 1.1: + +Added PgUp and PgDn keys. + +Also added "Mac mode". Unsure if it even works. Might however be able to test soon. + +Version 1.2: + +Changed around alt and super keys. + +Made "Mac mode" function, and tested it! (It works) diff --git a/quantum/keymap_extras/keymap_dvp.h b/quantum/keymap_extras/keymap_dvp.h new file mode 100644 index 0000000000..83f49a52b5 --- /dev/null +++ b/quantum/keymap_extras/keymap_dvp.h @@ -0,0 +1,82 @@ +#ifndef KEYMAP_DVP_H +#define KEYMAP_DVP_H + +#include "keymap.h" + +// Normal characters +#define DP_DLR	KC_GRV +#define DP_AMPR	KC_1 +#define DP_LBRC	KC_2 +#define DP_LCBR	KC_3 +#define DP_RCBR	KC_4 +#define DP_LPRN	KC_5 +#define DP_EQL	KC_6 +#define DP_ASTR	KC_7 +#define DP_RPRN	KC_8 +#define DP_PLUS	KC_9 +#define DP_RBRC	KC_0 +#define DP_EXLM	KC_MINS +#define DP_HASH	KC_EQL + +#define DP_SCLN	KC_Q +#define DP_COMM	KC_W +#define DP_DOT	KC_E +#define DP_P	KC_R +#define DP_Y	KC_T +#define DP_F	KC_Y +#define DP_G	KC_U +#define DP_C	KC_I +#define DP_R	KC_O +#define DP_L	KC_P +#define DP_SLSH	KC_LBRC +#define DP_AT	KC_RBRC +#define DP_BSLS	KC_BSLS + +#define DP_A	KC_A +#define DP_O	KC_S +#define DP_E	KC_D +#define DP_U	KC_F +#define DP_I	KC_G +#define DP_D	KC_H +#define DP_H	KC_J +#define DP_T	KC_K +#define DP_N	KC_L +#define DP_S	KC_SCLN +#define DP_MINS	KC_QUOT + +#define DP_QUOT	KC_Z +#define DP_Q	KC_X +#define DP_J	KC_C +#define DP_K	KC_V +#define DP_X	KC_B +#define DP_B	KC_N +#define DP_M	KC_M +#define DP_W	KC_COMM +#define DP_V	KC_DOT +#define DP_Z	KC_SLSH + +// Shifted characters +#define DP_TILD	LSFT(DP_DLR) +#define DP_PERC	LSFT(DP_AMPR) +#define DP_7	LSFT(DP_LBRC) +#define DP_5	LSFT(DP_LCBR) +#define DP_3	LSFT(DP_RCBR) +#define DP_1	LSFT(DP_LPRN) +#define DP_9	LSFT(DP_EQL) +#define DP_0	LSFT(DP_ASTR) +#define DP_2	LSFT(DP_RPRN) +#define DP_4	LSFT(DP_PLUS) +#define DP_6	LSFT(DP_RBRC) +#define DP_8	LSFT(DP_EXLM) +#define DP_GRV	LSFT(DP_HASH) + +#define DP_COLN	LSFT(DP_SCLN) +#define DP_LABK	LSFT(DP_COMM) +#define DP_RABK	LSFT(DP_DOT) +#define DP_QUES	LSFT(DP_SLSH) +#define DP_CIRC	LSFT(DP_AT) +#define DP_PIPE	LSFT(DP_BSLS) +#define DP_UNDS	LSFT(DP_MINS) +#define DP_DQUO	LSFT(DP_QUOT) + +#endif diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index 37dd471ffd..cd3a610b4d 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -42,6 +42,11 @@ void unicode_input_start (void) {      register_code(KC_PPLS);      unregister_code(KC_PPLS);      break; +  case UC_WINC: +    register_code(KC_RALT); +    unregister_code(KC_RALT); +    register_code(KC_U); +    unregister_code(KC_U);    }    wait_ms(UNICODE_TYPE_DELAY);  } @@ -83,22 +88,42 @@ __attribute__((weak))  const uint32_t PROGMEM unicode_map[] = {  }; -// 5 digit max because of linux limitation  void register_hex32(uint32_t hex) { -  for(int i = 4; i >= 0; i--) { +  uint8_t onzerostart = 1; +  for(int i = 7; i >= 0; i--) { +    if (i <= 3) { +      onzerostart = 0; +    }      uint8_t digit = ((hex >> (i*4)) & 0xF); -    register_code(hex_to_keycode(digit)); -    unregister_code(hex_to_keycode(digit)); +    if (digit == 0) { +      if (onzerostart == 0) { +        register_code(hex_to_keycode(digit)); +        unregister_code(hex_to_keycode(digit)); +      } +    } else { +      register_code(hex_to_keycode(digit)); +      unregister_code(hex_to_keycode(digit)); +      onzerostart = 0; +    }    }  } +__attribute__((weak)) +void unicode_map_input_error() {} +  bool process_unicode_map(uint16_t keycode, keyrecord_t *record) {    if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) {      const uint32_t* map = unicode_map;      uint16_t index = keycode & 0x7FF; -    unicode_input_start(); -    register_hex32(pgm_read_dword_far(&map[index])); -    unicode_input_finish(); +    uint32_t code = pgm_read_dword_far(&map[index]); +    if ((code > 0xFFFF && input_mode == UC_OSX) || (code > 0xFFFFF && input_mode == UC_LNX)) { +      // when character is out of range supported by the OS +      unicode_map_input_error(); +    } else { +      unicode_input_start(); +      register_hex32(code); +      unicode_input_finish(); +    }    }    return true;  } diff --git a/quantum/process_keycode/process_unicode.h b/quantum/process_keycode/process_unicode.h index a6c7e45845..065eeb5f6a 100644 --- a/quantum/process_keycode/process_unicode.h +++ b/quantum/process_keycode/process_unicode.h @@ -3,10 +3,11 @@  #include "quantum.h" -#define UC_OSX 0 -#define UC_LNX 1 -#define UC_WIN 2 -#define UC_BSD 3 +#define UC_OSX 0  // Mac OS X +#define UC_LNX 1  // Linux +#define UC_WIN 2  // Windows 'HexNumpad' +#define UC_BSD 3  // BSD (not implemented) +#define UC_WINC 4 // WinCompose https://github.com/samhocevar/wincompose  #ifndef UNICODE_TYPE_DELAY  #define UNICODE_TYPE_DELAY 10 @@ -326,8 +326,14 @@ This allows you to send unicode symbols via `UC(<unicode>)` in your keymap. Only  `UNICODEMAP_ENABLE`  This allows sending unicode symbols using `X(<unicode>)` in your keymap. Codes -up to 0xFFFFF are supported, including emojis. But you need to maintain a -separate mapping table in your keymap file. +up to 0xFFFFFFFF are supported, including emojis. You will need to maintain +a separate mapping table in your keymap file. + +Known limitations: +- Under Mac OS, only codes up to 0xFFFF are supported. +- Under Linux ibus, only codes up to 0xFFFFF are supported (but anything important is still under this limit for now). + +Characters out of range supported by the OS will be ignored.  `BLUETOOTH_ENABLE` @@ -900,7 +906,7 @@ In `quantum/keymap_extras/`, you'll see various language files - these work the  ## Unicode support -You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. +You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout, see [this article](http://www.poynton.com/notes/misc/mac-unicode-hex-input.html) to learn more) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile.  ## Backlight Breathing | 
