diff options
33 files changed, 1381 insertions, 436 deletions
| diff --git a/keyboards/atreus62/keymaps/mneme/README.md b/keyboards/atreus62/keymaps/mneme/README.md index 04ab070be6..7bb5da9fcb 100644 --- a/keyboards/atreus62/keymaps/mneme/README.md +++ b/keyboards/atreus62/keymaps/mneme/README.md @@ -1,6 +1,6 @@  <!-- -*- mode: markdown; fill-column: 8192 -*- --> -Mnemes Swedish Bonaza +Mnemes Swedish Bonanza  =======================  My Layout in process, most of the code is shamelessly stolen from [algernons][algernon] excellent layout @@ -33,6 +33,8 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym      - `LEAD s l` : `λ`.      - `LEAD s s` : `¯\_(ツ)_/¯`      - `LEAD s f` : `凸(ツ)凸` +    - `LEAD u l` : Set unicode input mode to linux. +    - `LEAD s w` : Set unicode input mode to windows.      - `LEAD a *` : Application switching based on position in start menu. Very specific to my computer. @@ -42,7 +44,7 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym  Basic navigation on the right hand and modifiers close  by for the left. The latter because I tend to use `ctrl+arrows` quite a lot. -  +  ## Sym layer   diff --git a/keyboards/atreus62/keymaps/mneme/config.h b/keyboards/atreus62/keymaps/mneme/config.h index 2c2a08c05e..73eb0fa33d 100644 --- a/keyboards/atreus62/keymaps/mneme/config.h +++ b/keyboards/atreus62/keymaps/mneme/config.h @@ -1,7 +1,7 @@  #define ONESHOT_TIMEOUT 3000  #define TAPPING_TERM 200  #define PREVENT_STUCK_MODIFIERS - +#define FORCE_NKRO  #define LEADER_TIMEOUT 1000  #include "../../config.h" diff --git a/keyboards/atreus62/keymaps/mneme/img/base.png b/keyboards/atreus62/keymaps/mneme/img/base.pngBinary files differ index 86907d5442..3e77a51836 100644 --- a/keyboards/atreus62/keymaps/mneme/img/base.png +++ b/keyboards/atreus62/keymaps/mneme/img/base.png diff --git a/keyboards/atreus62/keymaps/mneme/img/fun.png b/keyboards/atreus62/keymaps/mneme/img/fun.pngBinary files differ index ec5a478c64..961a197246 100644 --- a/keyboards/atreus62/keymaps/mneme/img/fun.png +++ b/keyboards/atreus62/keymaps/mneme/img/fun.png diff --git a/keyboards/atreus62/keymaps/mneme/img/sym.png b/keyboards/atreus62/keymaps/mneme/img/sym.pngBinary files differ index 11b5bd4b0f..5e2c803350 100644 --- a/keyboards/atreus62/keymaps/mneme/img/sym.png +++ b/keyboards/atreus62/keymaps/mneme/img/sym.png diff --git a/keyboards/atreus62/keymaps/mneme/keymap.c b/keyboards/atreus62/keymaps/mneme/keymap.c index 7c18799826..2627e024f9 100644 --- a/keyboards/atreus62/keymaps/mneme/keymap.c +++ b/keyboards/atreus62/keymaps/mneme/keymap.c @@ -7,43 +7,47 @@  /*   *WINDOWS SWEDISH   */ -#define KN_HALF	KC_GRV          // 1/2 -#define KN_PLUS	KC_MINS         // + -#define KN_ACUT	KC_EQL          // ´ -#define KN_AO	  KC_LBRC         // Å -#define KN_UMLA	KC_RBRC         // ¨ -#define KN_OE	  KC_SCLN         // Ö -#define KN_AE	  KC_QUOT         // Ä -#define	KN_QUOT	KC_NUHS         // ' -#define KN_LABK	KC_NUBS         // < -#define KN_MINS KC_SLSH         // - -#define KN_EXLM LSFT(KC_1)      // ! -#define KN_DQT  LSFT(KC_2)      // " -#define KN_AT   RALT(KC_2)      // @ -#define KN_HASH LSFT(KC_3)      // # -#define KN_DLR  RALT(KC_4)      // $ -#define KN_PERC LSFT(KC_5)      // % -#define KN_AMPR LSFT(KC_6)      // & -#define KN_SLSH LSFT(KC_7)      // / -#define KN_LPRN LSFT(KC_8)      // ( -#define KN_RPRN LSFT(KC_9)      // ) -#define KN_EQL  LSFT(KC_0)      // = -#define KN_UNDS LSFT(KN_MINS)   // _ -#define KN_QUES LSFT(KN_PLUS)   // ? -#define KN_GRAV LSFT(KN_ACUT)   // ` -#define KN_LCBR RALT(KC_7)      // { -#define KN_RCBR RALT(KC_0)      // } -#define KN_LBRC RALT(KC_8)      // [ -#define KN_RBRC RALT(KC_9)      // ] -#define KN_RABK LSFT(KN_LABK)   // < -#define KN_COLN LSFT(KC_DOT)    // : -#define KN_SCLN LSFT(KC_COMM)   // : -#define KN_PIPE RALT(KN_LABK)   // | -#define KN_QUES LSFT(KN_PLUS)   // ? -#define KN_CIRC LSFT(KN_UMLA)   // ^ -#define KN_ASTR LSFT(KN_QUOT)   // * -#define KN_TILD RALT(KN_UMLA)   // ~ -#define KN_BSLS RALT(KN_PLUS)   // + /* +  *WINDOWS SWEDISH +  */ + #define KN_HALF KC_GRV          // 1/2 + #define KN_PLUS KC_MINS         // + + #define KN_ACUT KC_EQL          // ´ + #define KN_AO	 KC_LBRC         // Å + #define KN_UMLA KC_RBRC         // ¨ + #define KN_OE	 KC_SCLN         // Ö + #define KN_AE	 KC_QUOT         // Ä + #define KN_QUOT KC_NUHS         // ' + #define KN_LABK KC_NUBS         // < + #define KN_MINS KC_SLSH         // - + #define KN_EXLM LSFT(KC_1)      // ! + #define KN_DQT  LSFT(KC_2)      // " + #define KN_AT   RALT(KC_2)      // @ + #define KN_HASH LSFT(KC_3)      // # + #define KN_EUR  LSFT(KC_4)      // € + #define KN_DLR  RALT(KC_4)      // $ + #define KN_PERC LSFT(KC_5)      // % + #define KN_AMPR LSFT(KC_6)      // & + #define KN_SLSH LSFT(KC_7)      // / + #define KN_LPRN LSFT(KC_8)      // ( + #define KN_RPRN LSFT(KC_9)      // ) + #define KN_EQL  LSFT(KC_0)      // = + #define KN_UNDS LSFT(KN_MINS)   // _ + #define KN_QUES LSFT(KN_PLUS)   // ? + #define KN_GRAV LSFT(KN_ACUT)   // ` + #define KN_LCBR RALT(KC_7)      // { + #define KN_RCBR RALT(KC_0)      // } + #define KN_LBRC RALT(KC_8)      // [ + #define KN_RBRC RALT(KC_9)      // ] + #define KN_RABK LSFT(KN_LABK)   // < + #define KN_COLN LSFT(KC_DOT)    // : + #define KN_SCLN LSFT(KC_COMM)   // : + #define KN_PIPE RALT(KN_LABK)   // | + #define KN_QUES LSFT(KN_PLUS)   // ? + #define KN_CIRC LSFT(KN_UMLA)   // ^ + #define KN_ASTR LSFT(KN_QUOT)   // * + #define KN_TILD RALT(KN_UMLA)   // ~ + #define KN_BSLS RALT(KN_PLUS)   //  #define OSM_LCTL OSM(MOD_LCTL)  #define OSM_LALT OSM(MOD_LALT) @@ -85,32 +89,26 @@ enum {    TD_EQ  }; -//Custom keycodes -enum { -  PLACEHOLDER = SAFE_RANGE -}; -  //State and timers  uint16_t kf_timers[12]; -  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {    [BASE] = { -   { M(KF_11) ,M(KF_1)  ,M(KF_2)  ,M(KF_3)  ,M(KF_4) ,M(KF_5)         ,KC_NO   ,M(KF_6)        ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_12) }, -   { KC_TAB   ,KC_Q     ,KC_W     ,KC_E     ,KC_R    ,KC_T            ,KC_NO   ,KC_Y           ,KC_U    ,KC_I    ,KC_O    ,KC_P     ,KN_AO }, -   { OSM_LCTL ,KC_A     ,KC_S     ,KC_D     ,KC_F    ,KC_G            ,KC_NO   ,KC_H           ,KC_J    ,KC_K    ,KC_L    ,KN_OE    ,KN_AE }, -   { OSM_LSFT ,KC_Z     ,KC_X     ,KC_C     ,KC_V    ,KC_B            ,KC_DELT ,KC_N           ,KC_M    ,KC_COMM ,KC_DOT  ,KN_MINS  ,OSM_LSFT }, -   { MO(NAV)  ,OSM_LCTL ,OSM_LALT ,KC_LGUI  ,KC_SPC  ,LT(SYM,KC_BSPC) ,KC_HYP  ,LT(SYM,KC_ENT) ,KC_SPC  ,KC_LEAD ,KC_LALT ,KC_LCTRL ,MO(NAV) } +   { M(KF_11) ,M(KF_1)  ,M(KF_2)  ,M(KF_3)  ,M(KF_4) ,M(KF_5)  ,KC_NO   ,M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_12) }, +   { KC_TAB   ,KC_Q     ,KC_W     ,KC_E     ,KC_R    ,KC_T     ,KC_NO   ,KC_Y    ,KC_U    ,KC_I    ,KC_O    ,KC_P     ,KN_AO }, +   { OSM_LCTL ,KC_A     ,KC_S     ,KC_D     ,KC_F    ,KC_G     ,KC_NO   ,KC_H    ,KC_J    ,KC_K    ,KC_L    ,KN_OE    ,KN_AE }, +   { OSM_LSFT ,KC_Z     ,KC_X     ,KC_C     ,KC_V    ,KC_B     ,KC_DELT ,KC_N    ,KC_M    ,KC_COMM ,KC_DOT  ,KN_MINS  ,OSM_LSFT }, +   { MO(NAV)  ,OSM_LCTL ,OSM_LALT ,KC_LGUI  ,MO(SYM) ,KC_BSPC  ,KC_ENT  ,KC_SPC  ,MO(SYM) ,KC_LEAD ,KC_LALT ,KC_LCTRL ,KC_HYP }   },    [NAV] = {     { KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS }, -   { KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_NO   ,KC_PGUP  ,KC_HOME  ,KC_UP    ,KC_END   ,KC_TRNS  ,KC_TRNS }, -   { KC_TRNS  ,KC_LSFT  ,KC_LCTL  ,KC_LALT  ,KC_L  ,KC_TRNS  ,KC_NO   ,KC_PGDN  ,KC_LEFT  ,KC_DOWN  ,KC_RIGHT ,KC_TRNS  ,KC_TRNS }, +   { KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_NO   ,KC_HOME  ,KC_PGDN  ,KC_PGUP  ,KC_END   ,KC_TRNS  ,KC_TRNS }, +   { KC_TRNS  ,KC_LSFT  ,KC_LCTL  ,KC_LALT  ,KC_L     ,KC_TRNS  ,KC_NO   ,KC_LEFT  ,KC_DOWN  ,KC_UP    ,KC_RIGHT ,KC_TRNS  ,KC_TRNS },     { KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS },     { KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_VOLD  ,KC_VOLU } @@ -119,8 +117,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     { KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,TD(TD_EQ) ,KC_NO   ,TD(TD_FUN) ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS },     { KC_TRNS  ,KN_LABK  ,KN_RABK  ,KN_LCBR  ,KN_RCBR  ,KN_PLUS   ,KC_NO   ,KN_AT      ,KN_DQT   ,KN_QUOT  ,KN_GRAV  ,KN_SLSH  ,KC_TRNS }, -   { KC_TRNS  ,KN_EXLM  ,KN_EQL   ,KN_LPRN  ,KN_RPRN  ,KN_MINS   ,KC_NO   ,KN_UNDS    ,KN_SCLN  ,KN_COLN  ,KN_AMPR  ,KN_PIPE  ,KC_TRNS }, -   { KC_TRNS  ,KN_DLR   ,KN_PERC  ,KN_LBRC  ,KN_RBRC  ,KN_ASTR   ,KC_TRNS ,KN_HASH    ,KC_COMM  ,KC_DOT   ,KN_QUES  ,KN_BSLS  ,KC_TRNS }, +   { KC_TRNS  ,KN_EXLM  ,KN_EQL   ,KN_LPRN  ,KN_RPRN  ,KN_MINS   ,KC_NO   ,KN_UNDS    ,KN_CIRC  ,KN_DLR   ,KN_AMPR  ,KN_PIPE  ,KC_TRNS }, +   { KC_TRNS  ,KN_EUR   ,KN_PERC  ,KN_LBRC  ,KN_RBRC  ,KN_ASTR   ,KC_TRNS ,KN_HASH    ,KN_SCLN  ,KN_COLN  ,KN_QUES  ,KN_BSLS  ,KC_TRNS },     { KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS   ,KC_TRNS ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS }    } @@ -302,6 +300,15 @@ void matrix_scan_user(void) {        register_code (KC_LGUI); TAP_ONCE (KC_7); unregister_code (KC_LGUI);      } +    SEQ_TWO_KEYS (KC_U, KC_L) { +      set_unicode_input_mode(UC_LNX); +    } + + +    SEQ_TWO_KEYS (KC_U, KC_W) { +      set_unicode_input_mode(UC_WINC); +    } +      SEQ_TWO_KEYS (KC_S, KC_S) {        // ¯\_(ツ)_/¯ diff --git a/keyboards/ergodox/keymaps/ab/readme.md b/keyboards/ergodox/keymaps/ab/readme.md index 62e08e1629..4ad80efe6f 100644 --- a/keyboards/ergodox/keymaps/ab/readme.md +++ b/keyboards/ergodox/keymaps/ab/readme.md @@ -8,7 +8,7 @@ Beginner's keymap emulates standard QWERTY keyboard for beginners. Once you get  * Easy on beginners. It has everything you need for your day to day usage.  #### Cons -* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ergodox_ez/keymaps/default/readme.md) +* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ergodox/keymaps/default/readme.md)  * While multiple layers are possible, beginner's keymap only uses one additional layer for mouse, function and volume keys.  #### Notes diff --git a/keyboards/gonnerd/Makefile b/keyboards/gonnerd/Makefile new file mode 100644 index 0000000000..57b2ef62e5 --- /dev/null +++ b/keyboards/gonnerd/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED +	include ../../Makefile +endif diff --git a/keyboards/gonnerd/config.h b/keyboards/gonnerd/config.h new file mode 100644 index 0000000000..cad8fe5861 --- /dev/null +++ b/keyboards/gonnerd/config.h @@ -0,0 +1,43 @@ +#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    GON +#define PRODUCT         NerD +#define DESCRIPTION     QMK port for the GON Nerd PCB + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 9 + +/* backlight */ +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 3 + +/* matrix pins */ +#define MATRIX_ROW_PINS { B4, E2, F4, F7, F1, F6, C6, F5, D7, C7 } +#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 magic key command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#endif diff --git a/keyboards/gonnerd/gonnerd.c b/keyboards/gonnerd/gonnerd.c new file mode 100644 index 0000000000..f25d3a85f2 --- /dev/null +++ b/keyboards/gonnerd/gonnerd.c @@ -0,0 +1 @@ +#include "gonnerd.h" diff --git a/keyboards/gonnerd/gonnerd.h b/keyboards/gonnerd/gonnerd.h new file mode 100644 index 0000000000..e5070328ed --- /dev/null +++ b/keyboards/gonnerd/gonnerd.h @@ -0,0 +1,42 @@ +#ifndef GONNERD_H +#define GONNERD_H + +#include "quantum.h" + +#define KEYMAP_TKL( \ +        K08,      K09, K18, K19, K28, K29, K38, K39, K48, K49, K58, K59, K68,    K69, K88, K89, \ +        K00, K01, K10, K11, K20, K21, K30, K31, K40, K41, K50, K51, K60, K61,    K80, K81, K84, \ +        K02, K03, K12, K13, K22, K23, K32, K33, K42, K43, K52, K53, K62, K63,    K82, K83, K85, \ +        K04, K14, K15, K24, K25, K34, K35, K44, K45, K54, K55, K64, K71, K65,                   \ +        K07, K79, K16, K17, K26, K27, K36, K37, K46, K47, K56, K57, K66, K67,         K86,      \ +        K06, K05, K78,                K70,                K72, K73, K74, K75,    K76, K77, K87  \ +) \ +{ \ +      {  K00, K10, K20, K30, K40, K50, K60, K70, K80 }, \ +      {  K01, K11, K21, K31, K41, K51, K61, K71, K81 }, \ +      {  K02, K12, K22, K32, K42, K52, K62, K72, K82 }, \ +      {  K03, K13, K23, K33, K43, K53, K63, K73, K83 }, \ +      {  K04, K14, K24, K34, K44, K54, K64, K74, K84 }, \ +      {  K05, K15, K25, K35, K45, K55, K65, K75, K85 }, \ +      {  K06, K16, K26, K36, K46, K56, K66, K76, K86 }, \ +      {  K07, K17, K27, K37, K47, K57, K67, K77, K87 }, \ +      {  K08, K18, K28, K38, K48, K58, K68, K78, K88 }, \ +      {  K09, K19, K29, K39, K49, K59, K69, K79, K89 } \ +} + +#define KEYMAP_60( \ +        K08, K01, K10, K11, K20, K21, K30, K31, K40, K41, K50, K51, K60, K61, \ +        K02, K03, K12, K13, K22, K23, K32, K33, K42, K43, K52, K53, K62, K63, \ +        K04, K14, K15, K24, K25, K34, K35, K44, K45, K54, K55, K64, K71, K65, \ +        K07, K79, K16, K17, K26, K27, K36, K37, K46, K47, K56, K57, K66, K67, \ +        K06, K05, K78,                K70,                K72, K73, K74, K75  \ +) KEYMAP_TKL( \ +        K08,          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,  KC_NO,    KC_NO, KC_NO, KC_NO,  \ +        KC_NO, K01,   K10,   K11,   K20,   K21,   K30,   K31,   K40,   K41,   K50,   K51,   K60,    K61,      KC_NO, KC_NO, KC_NO,  \ +        K02,   K03,   K12,   K13,   K22,   K23,   K32,   K33,   K42,   K43,   K52,   K53,   K62,    K63,      KC_NO, KC_NO, KC_NO,  \ +        K04,   K14,   K15,   K24,   K25,   K34,   K35,   K44,   K45,   K54,   K55,   K64,   K71,    K65,                            \ +        K07,   K79,   K16,   K17,   K26,   K27,   K36,   K37,   K46,   K47,   K56,   K57,   K66,    K67,             KC_NO,         \ +        K06,   K05,   K78,                        K70,                        K72,   K73,   K74,    K75,      KC_NO, KC_NO, KC_NO   \ +) + +#endif diff --git a/keyboards/gonnerd/keymaps/default/Makefile b/keyboards/gonnerd/keymaps/default/Makefile new file mode 100644 index 0000000000..772d7aee3b --- /dev/null +++ b/keyboards/gonnerd/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +#   change to "no" to disable the options, or define them in the Makefile in +#   the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes       # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes       # Audio control and System control(+450) +CONSOLE_ENABLE = no         # Console for debug(+400) +COMMAND_ENABLE = yes        # 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/gonnerd/keymaps/default/keymap.c b/keyboards/gonnerd/keymaps/default/keymap.c new file mode 100644 index 0000000000..a370059398 --- /dev/null +++ b/keyboards/gonnerd/keymaps/default/keymap.c @@ -0,0 +1,16 @@ +#include "gonnerd.h" + +// Keymap layers + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +  [0] = KEYMAP_60( /* Base */ +    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_BSPC,\ +    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_BSLS,\ +    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,KC_RSFT,KC_NO,  \ +    KC_LCTL,KC_LGUI,KC_LALT,                        KC_SPC,                         KC_RALT,KC_RGUI,MO(1),  KC_RCTL), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; diff --git a/keyboards/gonnerd/keymaps/mauin/Makefile b/keyboards/gonnerd/keymaps/mauin/Makefile new file mode 100644 index 0000000000..772d7aee3b --- /dev/null +++ b/keyboards/gonnerd/keymaps/mauin/Makefile @@ -0,0 +1,21 @@ +# Build Options +#   change to "no" to disable the options, or define them in the Makefile in +#   the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes       # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes       # Audio control and System control(+450) +CONSOLE_ENABLE = no         # Console for debug(+400) +COMMAND_ENABLE = yes        # 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/gonnerd/keymaps/mauin/keymap.c b/keyboards/gonnerd/keymaps/mauin/keymap.c new file mode 100644 index 0000000000..1a1d515a9d --- /dev/null +++ b/keyboards/gonnerd/keymaps/mauin/keymap.c @@ -0,0 +1,78 @@ +#include "gonnerd.h" + +// Keymap layers +#define BASE_LAYER 0 +#define FUNCTION_LAYER 1 +#define SYSTEM_LAYER 2 + +// Key aliases +#define __x__ KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +  /* Layer 0: Default Layer +   * ,-----------------------------------------------------------. +   * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  = |  BSp | +   * |-----------------------------------------------------------| +   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| +   * |-----------------------------------------------------------| +   * |Funct |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   | +   * |-----------------------------------------------------------| +   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|    Shift | +   * |-----------------------------------------------------------' +   * |  Ctl|Alt|Gui  |         Space         |Gui  |Alt| F2| Ctl | +   * `-----------------------------------------------------------' +   */ +  [BASE_LAYER] = KEYMAP_60( +      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_BSPC, \ +      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_BSLS, \ +      MO(1),    KC_A,     KC_S,     KC_D,    KC_F,     KC_G,     KC_H,     KC_J,    KC_K,    KC_L,     KC_SCLN,  KC_QUOT,  __x__,    KC_ENT, \ +      KC_LSFT,  __x__,    KC_Z,     KC_X,     KC_C,    KC_V,     KC_B,     KC_N,    KC_M,    KC_COMM,  KC_DOT,   KC_SLSH,  KC_RSFT,  __x__, \ +      KC_LCTL,  KC_LALT,  KC_LGUI,                     KC_SPC,                                         KC_RGUI,  KC_RALT,  MO(3),    KC_RCTL \ +  ), + +  /* Layer 1: Function Layer +   * ,-----------------------------------------------------------. +   * |   | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11| F12|  Del | +   * |-----------------------------------------------------------| +   * |     |Prv|Ply|Nxt|   |   |Pg^|Hme|Up |End|   |Br-|Br+|     | +   * |-----------------------------------------------------------| +   * |Hold  |Mte|Vl-|Vl+|   |   |Pgv|Lft|Dwn|Rgt|   |   |        | +   * |-----------------------------------------------------------| +   * |        |   |   |   |   |   |   |   |   |   |   |          | +   * |-----------------------------------------------------------' +   * |     |   |     |                       |     |   |   |     | +   * `-----------------------------------------------------------' +   */ +   [FUNCTION_LAYER] = KEYMAP_60( +       KC_GRV,  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_DEL, \ +       __x__,   KC_MPRV, KC_MPLY, KC_MNXT, __x__,   __x__,   KC_PGUP, KC_HOME, KC_UP,   KC_END,  __x__,   KC_SLCK, KC_PAUS, __x__, \ +       KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, __x__,   __x__,   KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, __x__,   __x__,   __x__,   __x__, \ +       KC_LSFT,  __x__,  __x__,   __x__,   __x__,   __x__,   __x__,   __x__,   __x__,   __x__,   __x__,   __x__,   __x__,   __x__, \ +       KC_LCTL, KC_LALT, KC_LGUI,                   KC_SPC,                                      __x__,   __x__,   __x__,   __x__ \ +   ), + +  /* Layer 2: System Layer +   * ,-----------------------------------------------------------. +   * |Reset|   |   |   |   |   |   |   |   |   |   |    |   |    | +   * |-----------------------------------------------------------| +   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     | +   * |-----------------------------------------------------------| +   * |      |   |   |   |   |   |   |   |   |   |   |   |        | +   * |-----------------------------------------------------------| +   * |        |   |   |   |   |   |   |   |   |   |   |          | +   * |-----------------------------------------------------------' +   * |     |   |     |                       |     |   |   |     | +   * `-----------------------------------------------------------' +   */ +  [SYSTEM_LAYER] = KEYMAP_60( +      RESET,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,   __x__, \ +      __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,   __x__, \ +      __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,   __x__, \ +      __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,  __x__,   __x__, \ +      __x__,  __x__,  __x__,                  __x__,                                  __x__,  __x__,  KC_TRNS, __x__ \ +  ), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; diff --git a/keyboards/gonnerd/keymaps/mauin/readme.md b/keyboards/gonnerd/keymaps/mauin/readme.md new file mode 100644 index 0000000000..63be7c3923 --- /dev/null +++ b/keyboards/gonnerd/keymaps/mauin/readme.md @@ -0,0 +1,5 @@ +# Mauin's keymap for the GON NerD + +This layout is based on a Pok3r style layout with a standard base layer. + +Function layers provide access to navigation and media keys. diff --git a/keyboards/gonnerd/readme.md b/keyboards/gonnerd/readme.md new file mode 100644 index 0000000000..1224ff6b0a --- /dev/null +++ b/keyboards/gonnerd/readme.md @@ -0,0 +1,34 @@ +GON NerD keyboard firmware +====================== + +## Changing Bootloader + +It's not possible to simply flash this firmware on the GON NerD keyboard as the original bootloader does not support DFU connections. + +It is possible to change the bootloader of the GON NerD with an ISP programmer. A guide on how to change the bootloader on your GON NerD can be found here: +[Converting NerD60 to TMK](https://deskthority.net/wiki/Converting_NerD60_to_TMK). After changing the bootloader you can flash your QMK keymap onto the keyboard. + +_After changing the bootloader on your GON NerD PCB you will not be able to go back to the original firmware and the official configuration software will +not work anymore. You will lose your warranty and official support from GON!_ + +## Building + +Download or clone the whole firmware and navigate to the keyboards/gonnerd folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make default`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + +``` +$ make [default|jack|<name>] +``` + +Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/gonnerd/rules.mk b/keyboards/gonnerd/rules.mk new file mode 100644 index 0000000000..c9b584d542 --- /dev/null +++ b/keyboards/gonnerd/rules.mk @@ -0,0 +1,66 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency. +#     This will define a symbol, F_CPU, in all source code files equal to the +#     processor frequency in Hz. You can then use this symbol in your source code to +#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done +#     automatically to create a 32-bit value in your source code. +# +#     This will be an integer division of F_USB below, as it is sourced by +#     F_USB after it has run through any CPU prescalers. Note that this value +#     does not *change* the processor frequency - it should merely be updated to +#     reflect the processor speed set externally so that the code can use accurate +#     software delays. +F_CPU = 8000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +#     This will define a symbol, F_USB, in all source code files equal to the +#     input clock frequency (before any prescaling is performed) in Hz. This value may +#     differ from F_CPU if prescaling is used on the latter, and is required as the +#     raw input clock is fed directly to the PLL sections of the AVR for high speed +#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +#     at the end, this will be done automatically to create a 32-bit value in your +#     source code. +# +#     If no clock division is performed on the input clock inside the AVR (via the +#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +#   Teensy halfKay   512 +#   Teensy++ halfKay 1024 +#   Atmel DFU loader 4096 +#   LUFA bootloader  4096 +#   USBaspLoader     2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +#   change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no       # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450) +CONSOLE_ENABLE ?= no         # Console for debug(+400) +COMMAND_ENABLE ?= yes        # Commands for debug and configuration +                             # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend +                             # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no            # USB Nkey Rollover +BACKLIGHT_ENABLE ?= yes      # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no            # MIDI controls +UNICODE_ENABLE ?= no         # Unicode +BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no           # Audio output on port C6 diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index 23fbfd0b9a..fd45c2bfe3 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -43,38 +43,107 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define MATRIX_ROW_PINS { D7, C6, D0, D1, F5, F4, F1, F0 }  #define UNUSED_PINS -/* COL2ROW or ROW2COL */ +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/  #define DIODE_DIRECTION COL2ROW -/* define if matrix has ghost */ +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */  //#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 +// #define LOCKING_SUPPORT_ENABLE  /* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE +// #define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO  /* key combination for command */  #define IS_COMMAND() ( \      keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) \  ) +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1          H +//#define MAGIC_KEY_HELP2          SLASH +//#define MAGIC_KEY_DEBUG          D +//#define MAGIC_KEY_DEBUG_MATRIX   X +//#define MAGIC_KEY_DEBUG_KBD      K +//#define MAGIC_KEY_DEBUG_MOUSE    M +//#define MAGIC_KEY_VERSION        V +//#define MAGIC_KEY_STATUS         S +//#define MAGIC_KEY_CONSOLE        C +//#define MAGIC_KEY_LAYER0_ALT1    ESC +//#define MAGIC_KEY_LAYER0_ALT2    GRAVE +//#define MAGIC_KEY_LAYER0         0 +//#define MAGIC_KEY_LAYER1         1 +//#define MAGIC_KEY_LAYER2         2 +//#define MAGIC_KEY_LAYER3         3 +//#define MAGIC_KEY_LAYER4         4 +//#define MAGIC_KEY_LAYER5         5 +//#define MAGIC_KEY_LAYER6         6 +//#define MAGIC_KEY_LAYER7         7 +//#define MAGIC_KEY_LAYER8         8 +//#define MAGIC_KEY_LAYER9         9 +//#define MAGIC_KEY_BOOTLOADER     PAUSE +//#define MAGIC_KEY_LOCK           CAPS +//#define MAGIC_KEY_EEPROM         E +//#define MAGIC_KEY_NKRO           N +//#define MAGIC_KEY_SLEEP_LED      Z +  /*   * Feature disable options   *  These options are also useful to firmware size reduction.   */  /* disable debug print */ -//#define NO_DEBUG +// #define NO_DEBUG  /* disable print */ -//#define NO_PRINT +// #define NO_PRINT  /* disable action features */  //#define NO_ACTION_LAYER diff --git a/keyboards/handwired/promethium/keymaps/priyadi/config.h b/keyboards/handwired/promethium/keymaps/priyadi/config.h index 8b78c0dc4f..53059ca7d4 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/config.h +++ b/keyboards/handwired/promethium/keymaps/priyadi/config.h @@ -14,4 +14,11 @@  #define RGB_DI_PIN B5  #define RGBSPS_NUM 57 +#define LAYOUT_DVORAK +#define LAYOUT_COLEMAK +#define LAYOUT_NORMAN +#define LAYOUT_WORKMAN + +#define DOUBLESPACE_LAYER_ENABLE +  #endif diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index 7ae269563f..1ad34612e3 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -3,40 +3,75 @@  #include "promethium.h"  #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"  #include "rgbsps.h"  #include "ps2_mouse.h"  #include "ps2.h" +#include "outputselect.h" +#include "led.h"  #define COUNT(x) (sizeof (x) / sizeof (*(x))) -// #define RGBLED_NUM 5 -// struct cRGB led[RGBLED_NUM]; +// Fillers to make layering clearer +#define _______ KC_TRNS +#define XXXXXXX KC_NO +#define G(x) LGUI(x) +#define KC_WWWB KC_WWW_BACK +#define KC_WWWF KC_WWW_FORWARD + +// hybrid right-alt & scroll lock (mapped to Compose in OS) +#undef KC_RALT +#define KC_RALT MT(MOD_RALT, KC_SLCK) + +bool capslock = false; +#ifdef DOUBLESPACE_LAYER_ENABLE +bool lspace_active = false; +bool rspace_active = false; +bool lspace_emitted = false; +bool rspace_emitted = false; +bool space_layer_entered = false; +#endif +// glow +enum glow_modes { +  GLOW_NONE, +  GLOW_MIN, +  GLOW_FULL +}; +uint8_t glow_mode = GLOW_MIN;  extern keymap_config_t keymap_config;  enum layers {    _QWERTY, +  _DVORAK,    _COLEMAK,    _WORKMAN, +  _NORMAN, +    _PUNC,    _NUM,    _FUNC, + +  _GREEKU, +  _GREEKL, +    _EMOJI,    _GUI, +  _SYS,  }; +// double-space layer +#define _SPACE _GUI +  enum planck_keycodes {    // layouts    QWERTY = SAFE_RANGE, +  DVORAK,    COLEMAK,    WORKMAN, +  NORMAN,    // layer switchers    PUNC, @@ -44,17 +79,19 @@ enum planck_keycodes {    FUNC,    EMOJI,    GUI, +  GREEK,    // os switchers    LINUX,    WIN,    OSX, -}; -// Fillers to make layering clearer - -#define _______ KC_TRNS -#define XXXXXXX KC_NO +  // others +  LSPACE, +  RSPACE, +  GLOW, +  AUDIO +};  // unicode map @@ -106,6 +143,59 @@ enum unicode_name {    SUN, // sun    MOON, // moon    SKULL, // skull + +  // greek letters +  UALPH, +  UBETA, +  UGAMM, +  UDELT, +  UEPSI, +  UZETA, +  UETA, +  UTHET, +  UIOTA, +  UKAPP, +  ULAMB, +  UMU, +  UNU, +  UXI, +  UOMIC, +  UPI, +  URHO, +  USIGM, +  UTAU, +  UUPSI, +  UPHI, +  UCHI, +  UPSI, +  UOMEG, + +  LALPH, +  LBETA, +  LGAMM, +  LDELT, +  LEPSI, +  LZETA, +  LETA, +  LTHET, +  LIOTA, +  LKAPP, +  LLAMB, +  LMU, +  LNU, +  LXI, +  LOMIC, +  LPI, +  LRHO, +  LSIGM, +  LTAU, +  LUPSI, +  LPHI, +  LCHI, +  LPSI, +  LOMEG, + +  FSIGM,  };  const uint32_t PROGMEM unicode_map[] = { @@ -156,19 +246,58 @@ const uint32_t PROGMEM unicode_map[] = {    [SUN] = 0x2600,    [MOON] = 0x1F314,    [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) +  // greek letters +  [UALPH] = 0x0391, +  [UBETA] = 0x0392, +  [UGAMM] = 0x0393, +  [UDELT] = 0x0394, +  [UEPSI] = 0x0395, +  [UZETA] = 0x0396, +  [UETA] = 0x0397, +  [UTHET] = 0x0398, +  [UIOTA] = 0x0399, +  [UKAPP] = 0x039A, +  [ULAMB] = 0x039B, +  [UMU] = 0x039C, +  [UNU] = 0x039D, +  [UXI] = 0x039E, +  [UOMIC] = 0x039F, +  [UPI] = 0x03A0, +  [URHO] = 0x03A1, +  [USIGM] = 0x03A3, +  [UTAU] = 0x03A4, +  [UUPSI] = 0x03A5, +  [UPHI] = 0x03A6, +  [UCHI] = 0x03A7, +  [UPSI] = 0x03A8, +  [UOMEG] = 0x03A9, +  [LALPH] = 0x03B1, +  [LBETA] = 0x03B2, +  [LGAMM] = 0x03B3, +  [LDELT] = 0x03B4, +  [LEPSI] = 0x03B5, +  [LZETA] = 0x03B6, +  [LETA] = 0x03B7, +  [LTHET] = 0x03B8, +  [LIOTA] = 0x03B9, +  [LKAPP] = 0x03BA, +  [LLAMB] = 0x03BB, +  [LMU] = 0x03BC, +  [LNU] = 0x03BD, +  [LXI] = 0x03BE, +  [LOMIC] = 0x03BF, +  [LPI] = 0x03C0, +  [LRHO] = 0x03C1, +  [LSIGM] = 0x03C3, +  [LTAU] = 0x03C4, +  [LUPSI] = 0x03C5, +  [LPHI] = 0x03C6, +  [LCHI] = 0x03C7, +  [LPSI] = 0x03C8, +  [LOMEG] = 0x03C9, +  [FSIGM] = 0x03C2, +};  // RGBSPS @@ -207,6 +336,17 @@ const uint8_t PROGMEM LED_ALNUM[] = {    LED_RSPC  }; +const uint8_t PROGMEM LED_HOMING[] = { +  LED_A, +  LED_S, +  LED_D, +  LED_F, +  LED_J, +  LED_K, +  LED_L, +  LED_SCLN +}; +  const uint8_t PROGMEM LED_MODS[] = {    LED_TAB,    LED_ESC, @@ -244,149 +384,105 @@ const uint8_t PROGMEM LED_TRACKPOINT[] = {    LED_TRACKPOINT3,  }; -void led_reset(void) { +void led_turnoff_keys(void) {    for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { -    rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 15, 6, 0); +    rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0);    } -    for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { -    rgbsps_set(pgm_read_byte(&LED_MODS[i]), 15, 0, 0); +    rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 0, 0);    } -    for(uint8_t i = 0; i < COUNT(LED_FN); i++) { -    rgbsps_set(pgm_read_byte(&LED_FN[i]), 15, 15, 15); +    rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 0);    }  } -void led_layer_normal(void) { -  rgbsps_set(LED_IND_FUNC, 0, 0, 0); -  rgbsps_set(LED_IND_NUM, 0, 0, 0); -  rgbsps_set(LED_IND_EMOJI, 0, 0, 0); - -  led_reset(); - -  rgbsps_send(); -} - -void led_layer_func(void) { -  rgbsps_set(LED_IND_FUNC, 0, 15, 0); -  rgbsps_set(LED_IND_NUM, 0, 0, 0); -  rgbsps_set(LED_IND_EMOJI, 0, 0, 0); - -  led_reset(); - -  for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { -    rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0); +void led_reset(void) { +  switch (glow_mode) { +    case GLOW_NONE: +      led_turnoff_keys(); +      break; +    case GLOW_MIN: +      led_turnoff_keys(); +      for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) { +        rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 8, 8, 8); +      } +      rgbsps_set(LED_F, 15, 0, 0); +      rgbsps_set(LED_J, 15, 0, 0); +      break; +    case GLOW_FULL: +      for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { +        rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 8, 8, 8); +      } +      for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { +        rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 15, 0); +      } +      for(uint8_t i = 0; i < COUNT(LED_FN); i++) { +        rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 15); +      } +      for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) { +        rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 15, 0, 0); +      } +      rgbsps_set(LED_F, 15, 15, 0); +      rgbsps_set(LED_J, 15, 15, 0); +      break;    } - -  rgbsps_set(LED_I, 15, 0, 15); -  rgbsps_set(LED_J, 15, 0, 15); -  rgbsps_set(LED_K, 15, 0, 15); -  rgbsps_set(LED_L, 15, 0, 15); - -  rgbsps_set(LED_U, 15, 0, 0); -  rgbsps_set(LED_O, 15, 0, 0); -  rgbsps_set(LED_COMM, 15, 0, 0); -  rgbsps_set(LED_DOT, 15, 0, 0); -  rgbsps_set(LED_SCLN, 15, 0, 0); -  rgbsps_set(LED_P, 15, 0, 0); - -  rgbsps_set(LED_Q, 0, 15, 0); -  rgbsps_set(LED_W, 0, 15, 0); -  rgbsps_set(LED_E, 0, 15, 0); -  rgbsps_set(LED_R, 0, 15, 0); -  rgbsps_set(LED_A, 0, 15, 0); -  rgbsps_set(LED_S, 0, 15, 0); -  rgbsps_set(LED_D, 0, 15, 0); -  rgbsps_set(LED_F, 0, 15, 0); -  rgbsps_set(LED_Z, 0, 15, 0); -  rgbsps_set(LED_X, 0, 15, 0); -  rgbsps_set(LED_C, 0, 15, 0); -  rgbsps_set(LED_V, 0, 15, 0); - -  rgbsps_send();  } -void led_layer_punc(void) { -  rgbsps_set(LED_IND_FUNC, 0, 15, 0); -  rgbsps_set(LED_IND_NUM, 0, 0, 15); -  rgbsps_set(LED_IND_EMOJI, 0, 0, 0); - -  led_reset(); - -  rgbsps_send(); -} +void led_set_layer_indicator(void) { +  static uint8_t oldlayer = 255; -void led_layer_num(void) {    rgbsps_set(LED_IND_FUNC, 0, 0, 0); -  rgbsps_set(LED_IND_NUM, 0, 0, 15); +  // rgbsps_set(LED_IND_NUM, 0, 0, 0);    rgbsps_set(LED_IND_EMOJI, 0, 0, 0);    led_reset(); -  for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { -    rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0); +  uint8_t layer = biton32(layer_state); +  if (oldlayer == layer) { +    return;    } -  rgbsps_set(LED_U, 0, 5, 15); -  rgbsps_set(LED_I, 0, 5, 15); -  rgbsps_set(LED_O, 0, 5, 15); -  rgbsps_set(LED_J, 0, 5, 15); -  rgbsps_set(LED_K, 0, 5, 15); -  rgbsps_set(LED_L, 0, 5, 15); -  rgbsps_set(LED_M, 0, 5, 15); -  rgbsps_set(LED_COMM, 0, 5, 15); -  rgbsps_set(LED_DOT, 0, 5, 15); -  rgbsps_set(LED_FUNC, 0, 5, 15); - -  rgbsps_set(LED_EMOJI, 0, 10, 15); -  rgbsps_set(LED_RALT, 0, 10, 15); - -  rgbsps_set(LED_Q, 0, 10, 15); -  rgbsps_set(LED_W, 0, 10, 15); -  rgbsps_set(LED_E, 0, 10, 15); -  rgbsps_set(LED_R, 0, 10, 15); -  rgbsps_set(LED_T, 0, 10, 15); -  rgbsps_set(LED_Y, 0, 10, 15); -  rgbsps_set(LED_P, 0, 10, 15); - -  rgbsps_set(LED_A, 0, 15, 15); -  rgbsps_set(LED_S, 0, 15, 15); -  rgbsps_set(LED_D, 0, 15, 15); -  rgbsps_set(LED_F, 0, 15, 15); -  rgbsps_set(LED_Z, 0, 15, 15); -  rgbsps_set(LED_X, 0, 15, 15); -  rgbsps_set(LED_C, 0, 15, 15); -  rgbsps_set(LED_V, 0, 15, 15); - -  rgbsps_send(); -} +  oldlayer = layer; -void led_layer_emoji(void) { -  for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { -    rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 15, 15, 0); -  } -  for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { -    rgbsps_set(pgm_read_byte(&LED_MODS[i]), 15, 15, 0); +  if (layer <= _NORMAN) { +    rgbsps_send(); +    return;    } -  for(uint8_t i = 0; i < COUNT(LED_FN); i++) { -    rgbsps_set(pgm_read_byte(&LED_FN[i]), 15, 15, 0); + +  switch(layer) { +    case _FUNC: +      rgbsps_set(LED_IND_FUNC, 15, 0, 0); +      break; +    // case _NUM: +    //   rgbsps_set(LED_IND_NUM, 0, 0, 15); +    //   break; +    case _EMOJI: +      rgbsps_set(LED_IND_EMOJI, 15, 15, 0); +      break; +    default: +      rgbsps_set(LED_IND_FUNC, 3, 3, 3); +      rgbsps_set(LED_IND_NUM, 3, 3, 3); +      rgbsps_set(LED_IND_EMOJI, 3, 3, 3);    } -  rgbsps_set(LED_IND_FUNC, 0, 0, 0); -  rgbsps_set(LED_IND_NUM, 0, 0, 0); -  rgbsps_set(LED_IND_EMOJI, 15, 15, 0); +  rgbsps_send(); +} -  rgbsps_set(LED_PUNC, 15, 15, 15); -  rgbsps_set(LED_EMOJI, 15, 15, 15); +void led_set_output_ble(void) { +  rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15); +  rgbsps_set(LED_IND_USB, 0, 0, 0); +  rgbsps_send(); +} +void led_set_output_usb(void) { +  rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0); +  rgbsps_set(LED_IND_USB, 15, 15, 15);    rgbsps_send();  } -void led_layer_gui(void) { -  rgbsps_set(LED_IND_FUNC, 15, 10, 15); -  rgbsps_set(LED_IND_NUM, 15, 10, 15); -  rgbsps_set(LED_IND_EMOJI, 15, 10, 15); +void led_set_output_none(void) { +  rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0); +  rgbsps_set(LED_IND_USB, 0, 0, 0);    rgbsps_send();  } @@ -398,13 +494,6 @@ void led_init(void) {    rgbsps_set(LED_TRACKPOINT1, 15, 0, 0);    rgbsps_set(LED_TRACKPOINT2, 0, 0, 15);    rgbsps_set(LED_TRACKPOINT3, 15, 0, 0); - -  // // hardcode indicator for now -  rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15); -  rgbsps_set(LED_IND_USB, 15, 15, 15); -  rgbsps_set(LED_IND_BATTERY, 0, 15, 0); - -  led_layer_normal();  } @@ -416,20 +505,40 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * ,-----------------------------------------------------------------------------------.   * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |Enter | + * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   '  |Enter |   * |------+------+------+------+------+------|------+------+------+------+------+------|   * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Shift |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI  | Alt  | Punc | Num  |    Space    | Func |Emoji |AltGr | GUI  | Ctrl | + * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl |   * `-----------------------------------------------------------------------------------'   */  [_QWERTY] = KEYMAP(    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC,    KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_QUOT, KC_ENT ,    KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, -  KC_LCTL, KC_LGUI, KC_LALT, PUNC,    NUM,     KC_SPC,  KC_SPC,  FUNC,    EMOJI,   KC_RALT, KC_RGUI, KC_RCTL +  KC_LCTL, KC_LALT, KC_LGUI, PUNC,    NUM,     LSPACE,  RSPACE,  FUNC,    GREEK,   KC_RGUI, KC_RALT, KC_RCTL  ), +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab  |   '  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |Enter | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   /  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl | + * `-----------------------------------------------------------------------------------' + */ +#ifdef LAYOUT_DVORAK +[_DVORAK] = KEYMAP( +  _______, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    _______, +  _______, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    _______, +  _______, KC_SLSH, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    _______, +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +#endif +  /* Colemak   * ,-----------------------------------------------------------------------------------.   * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp | @@ -438,15 +547,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------|------+------+------+------+------+------|   * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Shift |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI  | Alt  | Punc | Num  |    Space    | Func |Emoji |AltGr | GUI  | Ctrl | + * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl |   * `-----------------------------------------------------------------------------------'   */ + +#ifdef LAYOUT_COLEMAK  [_COLEMAK] = KEYMAP(    _______, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_QUOT, _______,    _______, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    _______,    _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  ), +#endif + +/* Norman + * ,-----------------------------------------------------------------------------------. + * | Tab  |   Q  |   W  |   D  |   F  |   K  |   J  |   U  |   R  |   L  |   ;  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   S  |   E  |   T  |   G  |   Y  |   N  |   I  |   O  |   H  |Enter | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  |   P  |   M  |   ,  |   .  |   /  |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl | + * `-----------------------------------------------------------------------------------' + */ + +#ifdef LAYOUT_NORMAN +[_NORMAN] = KEYMAP( +  _______, KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    KC_J,    KC_U,    KC_R,    KC_L,    KC_QUOT, _______, +  _______, KC_A,    KC_S,    KC_E,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,    _______, +  _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______, +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +#endif  /* Workman   * ,-----------------------------------------------------------------------------------. @@ -456,50 +589,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------|------+------+------+------+------+------|   * | Shift|   Z  |   X  |   M  |   C  |   V  |   K  |   K  |   ,  |   .  |   /  |Shift |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI  | Alt  | Punc | Num  |    Space    | Func |Emoji |AltGr | GUI  | Ctrl | + * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Greek | GUI  |AltGr | Ctrl |   * `-----------------------------------------------------------------------------------'   */ + +#ifdef LAYOUT_WORKMAN  [_WORKMAN] = KEYMAP(    _______, KC_Q,    KC_D,    KC_R,    KC_W,    KC_B,    KC_J,    KC_F,    KC_U,    KC_P,    KC_QUOT, _______,    _______, KC_A,    KC_S,    KC_H,    KC_T,    KC_G,    KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    _______,    _______, KC_Z,    KC_X,    KC_M,    KC_C,    KC_V,    KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLSH, _______,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  ), +#endif  /* Punc   * ,-----------------------------------------------------------------------------------.   * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |   `  |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |      |   \  |   -  |   =  |   <  |   >  |   (  |   )  |   '  |      |      | + * |      |   *  |   \  |   -  |   =  |   /  |      |   (  |   )  |   <  |   >  |      |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |      |   |  |   _  |   +  |   {  |   }  |   [  |   ]  |   "  |      |      | + * |   &  |   ^  |   |  |   _  |   +  |   ?  |      |   [  |   ]  |   {  |   }  |   :  |   * |------+------+------+------+------+------+------+------+------+------+------+------|   * |      |      |      |      |      |             |      |      |      |      |      |   * `-----------------------------------------------------------------------------------'   */  [_PUNC] = KEYMAP(    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, +  XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, XXXXXXX, +  KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_COLN,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  ),  /* Num   * ,-----------------------------------------------------------------------------------. - * |  ^   |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | + * |   ~  |   !  |   @  |   #  |   $  |   %  |   A  |   7  |   8  |   9  |   D  |   `  |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc  |  @   |  A   |  B   |  C   |  (   |  )   |   4  |   5  |   6  |   :  |Enter | + * |      |   *  |   \  |   -  |   =  |   /  |   B  |   4  |   5  |   6  |   E  |      |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * |  &   |  #   |  D   |  E   |  F   |  [   |  ]   |   1  |   2  |   3  |   /  |  *   | + * |   &  |   ^  |   |  |   _  |   +  |   ?  |   C  |   1  |   2  |   3  |   F  |  :   |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |  x   |      |             |   0  |   ,  |   .  |   +  |  -   | + * |      |      |      |      |      |      |   x  |   0  |   ,  |   .  |      |      |   * `-----------------------------------------------------------------------------------'   */  [_NUM] = KEYMAP( -  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 +  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, S(KC_A),    KC_7,    KC_8,    KC_9, S(KC_D), KC_GRV, +  XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS,  KC_EQL, KC_SLSH, S(KC_B),    KC_4,    KC_5,    KC_6, S(KC_E), _______, +  KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C),    KC_1,    KC_2,    KC_3, S(KC_F), KC_COLN, +  _______, _______, _______, _______, _______, _______, _______,    KC_0, KC_COMM,  KC_DOT, KC_X,    _______  ),  /* Func @@ -520,6 +656,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  ), +/* Uppercase Greek + * ,-----------------------------------------------------------------------------------. + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * `-----------------------------------------------------------------------------------' + */ +[_GREEKU] = KEYMAP( +  _______, _______, _______,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC),  X(UPI), _______, +  _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA),  X(UXI),X(UKAPP),X(ULAMB), _______, _______, +  _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA),  X(UNU),  X(UMU), _______, _______, _______, _______, +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Lowercase Greek + * ,-----------------------------------------------------------------------------------. + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * `-----------------------------------------------------------------------------------' + */ +[_GREEKL] = KEYMAP( +  _______, _______,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC),  X(LPI), _______, +  _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA),  X(LXI),X(LKAPP),X(LLAMB), _______, _______, +  _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA),  X(LNU),  X(LMU), _______, _______, _______, _______, +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +  /* Emoji   * ,-----------------------------------------------------------------------------------.   * |      |      |      |      |      |      |      |      |      |      |      |      | @@ -535,40 +707,46 @@ 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(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)  ),  /* GUI   * ,-----------------------------------------------------------------------------------.   * |      |  D1  |  D2  |  D3  |  D4  |  D5  |  D6  |  D7  |  D8  |  D9  |  D10 |      |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |Linux |      | Vol- | Mute | Vol+ |      |      |  D-  |      |  D+  |      |Qwerty| + * |      |      | Vol- | Mute | Vol+ |      |      | Prev |      | Next |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Win  |      | Prev | Play | Next |      |      |      |      |      |      |Colmak| + * |      |      | Prev | Play | Next |      |      |      |      |      |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * | OSX  |      |      |      |      |  BL- |  BL+ |      |      |      |      |Workmn| + * |      |      |      |      |      |      |      |      |      |      |      |      |   * `-----------------------------------------------------------------------------------'   */  [_GUI] = KEYMAP( -  _______, 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,KC_PAUS, QWERTY, -      WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, COLEMAK, -      OSX, _______, _______, _______, _______,  BL_DEC,  BL_INC, _______, _______, RGB_VAI, RGB_VAD, WORKMAN +  XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX, +  XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX, +  XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_SPC,  KC_SPC,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, +  XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX  ), -}; +/* Sys + * ,-----------------------------------------------------------------------------------. + * |      |Qwerty| Win  |      |Reset |      |      | USB  |      |      |      |      | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |      |Audio |      |Dvorak|      | Glow |      |      |WorkMn|Linux |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |Colmak|      | BLE  |Norman|MacOS |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * `-----------------------------------------------------------------------------------' + */ +[_SYS] = KEYMAP( +  XXXXXXX, QWERTY,  WIN,     XXXXXXX, RESET,   XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, +  XXXXXXX, AUDIO,   XXXXXXX, DVORAK,  XXXXXXX, GLOW,    XXXXXXX, XXXXXXX, WORKMAN, LINUX,   XXXXXXX, XXXXXXX, +  XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BLE, NORMAN,  OSX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, +  _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ +), -#ifdef AUDIO_ENABLE -float tone_startup[][2]    = SONG(STARTUP_SOUND); -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) {    eeconfig_update_default_layer(default_layer); @@ -576,24 +754,140 @@ void persistant_default_layer_set(uint16_t default_layer) {  }  bool process_record_user(uint16_t keycode, keyrecord_t *record) { -  #ifdef AUDIO_ENABLE -  // faux clicky -  if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); -  #endif +  bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT); +  bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT); + +#ifdef DOUBLESPACE_LAYER_ENABLE +  // double-space: send space immediately if any other key depressed before space is released +  if ((lspace_active ^ rspace_active) +      && keycode != LSPACE +      && keycode != RSPACE +      && record->event.pressed) +  { +    if (lspace_active) { +      if (!lspace_emitted) { +        register_code(KC_SPC); +        unregister_code(KC_SPC); +      } +      lspace_emitted = true; +    } +    if (rspace_active) { +      if (!rspace_emitted) { +        register_code(KC_SPC); +        unregister_code(KC_SPC); +      } +      rspace_emitted = true; +    } +  } +#endif    switch (keycode) { + +#ifdef DOUBLESPACE_LAYER_ENABLE +    // double-space enter space layer +    case LSPACE: +      if (record->event.pressed) { +        lspace_active = true; +        if (rspace_active) { +          layer_on(_SPACE); +          space_layer_entered = true; +        } +      } else { +        lspace_active = false; +        if (space_layer_entered) { +          layer_off(_SPACE); +          if (!rspace_active) { +            space_layer_entered = false; +          } +        } else { +          if (!lspace_emitted) { +            register_code(KC_SPC); +            unregister_code(KC_SPC); +          } +          lspace_emitted = false; +        } +      } +      return false; +      break; +    case RSPACE: +      if (record->event.pressed) { +        rspace_active = true; +        if (lspace_active) { +          layer_on(_SPACE); +          space_layer_entered = true; +        } +      } else { +        rspace_active = false; +        if (space_layer_entered) { +          layer_off(_SPACE); +          if (!lspace_active) { +            space_layer_entered = false; +          } +        } else { +          if (!rspace_emitted) { +            register_code(KC_SPC); +            unregister_code(KC_SPC); +          } +          rspace_emitted = false; +        } +      } +      return false; +      break; +#endif + +    // handle greek layer shift +    // handle both shift = capslock +    case KC_LSFT: +    case KC_RSFT: +      ; +      uint8_t layer = biton32(layer_state); +      if (layer == _GREEKU || layer == _GREEKL) { +        if (record->event.pressed) { +          layer_on(_GREEKU); +          layer_off(_GREEKL); +        } else { +          if (lshift ^ rshift) { // if only one shift was pressed +            layer_on(_GREEKL); +            layer_off(_GREEKU); +          } +        } +      } else { +        if (record->event.pressed) { +          if (lshift ^ rshift) { // if only one shift was pressed +            register_code(KC_CAPS); +            unregister_code(KC_CAPS); +          } +        } +      } +      return true; +      break; + +    // press both ctrls to activate SYS layer +    case KC_LCTL: +    case KC_RCTL: +      ; +      bool lctrl = keyboard_report->mods & MOD_BIT(KC_LCTL); +      bool rctrl = keyboard_report->mods & MOD_BIT(KC_RCTL); +      if (record->event.pressed) { +        if (lctrl ^ rctrl) { // if only one ctrl was pressed +          layer_on(_SYS); +        } +      } else { +        layer_off(_SYS); +      } +      return true; +      break; +      // QWERTZ style comma and dot: semicolon and colon when shifted      case KC_COMM:        if (record->event.pressed) { -        bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT); -        bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT); -        if (lshifted || rshifted) { -          if (lshifted) unregister_code(KC_LSFT); -          if (rshifted) unregister_code(KC_RSFT); +        if (lshift || rshift) { +          if (lshift) unregister_code(KC_LSFT); +          if (rshift) unregister_code(KC_RSFT);            register_code(KC_SCLN);            unregister_code(KC_SCLN); -          if (lshifted) register_code(KC_LSFT); -          if (rshifted) register_code(KC_RSFT); +          if (lshift) register_code(KC_LSFT); +          if (rshift) register_code(KC_RSFT);          } else {            register_code(KC_COMM);            unregister_code(KC_COMM); @@ -617,90 +911,88 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {      // layout switchers      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;        break; +#ifdef LAYOUT_DVORAK +    case DVORAK: +      if (record->event.pressed) { +        persistant_default_layer_set(1UL<<_DVORAK); +      } +      return false; +      break; +#endif +#ifdef LAYOUT_COLEMAK      case COLEMAK:        if (record->event.pressed) { -        #ifdef AUDIO_ENABLE -          PLAY_NOTE_ARRAY(tone_colemak, false, 0); -        #endif          persistant_default_layer_set(1UL<<_COLEMAK);        }        return false;        break; +#endif +#ifdef LAYOUT_WORKMAN      case WORKMAN:        if (record->event.pressed) { -        #ifdef AUDIO_ENABLE -          PLAY_NOTE_ARRAY(tone_workman, false, 0); -        #endif          persistant_default_layer_set(1UL<<_WORKMAN);        }        return false;        break; +#endif +#ifdef LAYOUT_NORMAN +    case NORMAN: +      if (record->event.pressed) { +        persistant_default_layer_set(1UL<<_NORMAN); +      } +      return false; +      break; +#endif      // layer switcher      case PUNC:        if (record->event.pressed) {          layer_on(_PUNC); -        update_tri_layer(_PUNC, _EMOJI, _GUI); -        if (IS_LAYER_ON(_GUI)) { -          led_layer_gui(); -        } else { -          led_layer_punc();; -        } +        update_tri_layer(_PUNC, _GREEKL, _EMOJI);        } else {          layer_off(_PUNC); -        update_tri_layer(_PUNC, _EMOJI, _GUI); -        if (IS_LAYER_ON(_EMOJI)) { -          led_layer_emoji(); -        } else { -          led_layer_normal();; -        } +        update_tri_layer(_PUNC, _GREEKL, _EMOJI);        }        return false;        break; -    case EMOJI: + +    case GREEK:        if (record->event.pressed) { -        layer_on(_EMOJI); -        update_tri_layer(_PUNC, _EMOJI, _GUI); -        if (IS_LAYER_ON(_GUI)) { -          led_layer_gui(); +        if (lshift || rshift) { +          layer_on(_GREEKU); +          layer_off(_GREEKL);          } else { -          led_layer_emoji();; +          layer_on(_GREEKL); +          layer_off(_GREEKU); +          update_tri_layer(_PUNC, _GREEKL, _EMOJI);          }        } else { -        layer_off(_EMOJI); -        update_tri_layer(_PUNC, _EMOJI, _GUI); -        if (IS_LAYER_ON(_PUNC)) { -          led_layer_punc(); -        } else { -          led_layer_normal();; -        } +        layer_off(_GREEKU); +        layer_off(_GREEKL); +        update_tri_layer(_PUNC, _GREEKL, _EMOJI);        }        return false;        break; +      case NUM:        if (record->event.pressed) { +        turn_off_capslock();          layer_on(_NUM); -        led_layer_num();        } else {          layer_off(_NUM); -        led_layer_normal();        }        return false;        break; +      case FUNC:        if (record->event.pressed) {          layer_on(_FUNC); -        led_layer_func();        } else {          layer_off(_FUNC); -        led_layer_normal();        }        return false;        break; @@ -708,86 +1000,115 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {      // OS switchers      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_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; + +    // glow mode changer +    case GLOW: +      if (record->event.pressed) { +        glow_mode++; +        if (glow_mode > GLOW_FULL) { +          glow_mode = GLOW_NONE; +        } +        led_reset(); +        rgbsps_send(); +      } +      return false; +      break; + +    // faux clicky toggle, TBD +    case AUDIO:        return false;        break;    }    return true;  } -void matrix_init_user(void) { -  #ifdef AUDIO_ENABLE -      startup_user(); -  #endif -  set_unicode_input_mode(UC_LNX); -  led_init(); +void set_output_user(uint8_t output) { +  switch(output) { +    case OUTPUT_USB: +      led_set_output_usb(); +      break; +    case OUTPUT_ADAFRUIT_BLE: +      led_set_output_ble(); +      break; +    default: +      led_set_output_none(); +  }  } -// void init_rgblight(void) { -//   for (uint8_t i = 0; i < RGBLED_NUM; i++) { -//     led[i].r = 255; -//     led[i].g = 85; -//     led[i].b = 0; -//   } -//   ws2812_setleds(led, RGBLED_NUM); -// } +void matrix_init_user(void) { +  _delay_ms(500); // give time for usb to initialize +  set_unicode_input_mode(UC_LNX); +  led_init(); -#ifdef AUDIO_ENABLE +  // auto detect output on init +  uint8_t output = auto_detect_output(); +  if (output == OUTPUT_USB) { +    set_output(OUTPUT_USB); +  } else { +    set_output(OUTPUT_ADAFRUIT_BLE); +  } +} -void startup_user() -{ -    _delay_ms(20); // gets rid of tick -    PLAY_NOTE_ARRAY(tone_startup, false, 0); +void matrix_scan_user(void) { +  led_set_layer_indicator();  } -void shutdown_user() -{ -    PLAY_NOTE_ARRAY(tone_goodbye, false, 0); -    _delay_ms(150); -    stop_all_notes(); +void battery_poll(uint8_t level) { +  rgbsps_sethsv(LED_IND_BATTERY, level * 120/255, 255, 15); +  rgbsps_send();  } -#endif +void led_set_user(uint8_t usb_led) { +  bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK); +  if (new_capslock ^ capslock) { // capslock state is different +    if (capslock = new_capslock) { +      rgbsps_set(LED_IND_NUM, 15, 0, 0); +    } else { +      rgbsps_set(LED_IND_NUM, 0, 0, 0); +    } +    rgbsps_send(); +  } +} +void turn_off_capslock() { +  if (capslock) { +    register_code(KC_CAPS); +    unregister_code(KC_CAPS); +  } +}  void ps2_mouse_init_user() {      uint8_t rcv;      // set TrackPoint sensitivity -    PS2_MOUSE_SEND(0xE2, "set trackpoint sensitivity: 0xE2"); -    PS2_MOUSE_SEND(0x81, "set trackpoint sensitivity: 0x81"); -    PS2_MOUSE_SEND(0x4A, "set trackpoint sensitivity: 0x4A"); -    PS2_MOUSE_SEND(0x49, "set trackpoint sensitivity: 0x59"); +    PS2_MOUSE_SEND(0xE2, "tpsens: 0xE2"); +    PS2_MOUSE_SEND(0x81, "tpsens: 0x81"); +    PS2_MOUSE_SEND(0x4A, "tpsens: 0x4A"); +    PS2_MOUSE_SEND(0x49, "tpsens: 0x59");      // set TrackPoint Negative Inertia factor -    PS2_MOUSE_SEND(0xE2, "set negative inertia factor: 0xE2"); -    PS2_MOUSE_SEND(0x81, "set negative inertia factor: 0x81"); -    PS2_MOUSE_SEND(0x4D, "set negative inertia factor: 0x4D"); -    PS2_MOUSE_SEND(0x06, "set negative inertia factor: 0x06"); +    PS2_MOUSE_SEND(0xE2, "tpnegin: 0xE2"); +    PS2_MOUSE_SEND(0x81, "tpnegin: 0x81"); +    PS2_MOUSE_SEND(0x4D, "tpnegin: 0x4D"); +    PS2_MOUSE_SEND(0x06, "tpnegin: 0x06");      // set TrackPoint speed      // (transfer function upper plateau speed) -    PS2_MOUSE_SEND(0xE2, "set trackpoint speed: 0xE2"); -    PS2_MOUSE_SEND(0x81, "set trackpoint speed: 0x81"); -    PS2_MOUSE_SEND(0x60, "set trackpoint speed: 0x60"); -    PS2_MOUSE_SEND(0x61, "set trackpoint speed: 0x61"); +    PS2_MOUSE_SEND(0xE2, "tpsp: 0xE2"); +    PS2_MOUSE_SEND(0x81, "tpsp: 0x81"); +    PS2_MOUSE_SEND(0x60, "tpsp: 0x60"); +    PS2_MOUSE_SEND(0x61, "tpsp: 0x61");      // inquire pts status      rcv = ps2_host_send(0xE2); diff --git a/keyboards/handwired/promethium/promethium.c b/keyboards/handwired/promethium/promethium.c index a0035cce1a..62e2281fac 100644 --- a/keyboards/handwired/promethium/promethium.c +++ b/keyboards/handwired/promethium/promethium.c @@ -1,6 +1,38 @@  #include "promethium.h" +#include "analog.h" +#include "timer.h" +#include "matrix.h" -void matrix_init_kb(void) { +// cubic fit {3.3, 0}, {3.5, 2.9}, {3.6, 5}, {3.7, 8.6}, {3.8, 36},  {3.9, 62}, {4.0, 73}, {4.05, 83}, {4.1, 89}, {4.15, 94}, {4.2, 100} + +uint8_t battery_level(void) { +    float voltage = analogRead(BATTERY_PIN) * 2 * 3.3 / 1024; +    if (voltage < MIN_VOLTAGE) return 0; +    if (voltage > MAX_VOLTAGE) return 255; +    return (voltage - MIN_VOLTAGE) / (MAX_VOLTAGE - MIN_VOLTAGE) * 255; +} + +__attribute__ ((weak)) +void battery_poll(uint8_t level) { +} +void matrix_init_kb(void) {  	matrix_init_user(); -}
\ No newline at end of file +} + +void matrix_scan_kb(void) { +    static uint16_t counter = BATTERY_POLL; +    counter++; + +    if (counter > BATTERY_POLL) { +        counter = 0; +        battery_poll(battery_level()); +    } + +    matrix_scan_user(); +} + +void led_set_kb(uint8_t usb_led) { +    led_set_user(usb_led); +} + diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h index 662eeab990..da37e5c560 100644 --- a/keyboards/handwired/promethium/promethium.h +++ b/keyboards/handwired/promethium/promethium.h @@ -4,6 +4,11 @@  #include "quantum.h"  #define PS2_INIT_DELAY 2000 +#define UNICODE_TYPE_DELAY 0 +#define BATTERY_PIN 9 +#define BATTERY_POLL 30000 +#define MAX_VOLTAGE 4.2 +#define MIN_VOLTAGE 3.2  #define KEYMAP( \      k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ @@ -22,6 +27,8 @@      {k47, k48, k49, k4a, k4b, k4c} \  } + +  enum led_sequence {    LED_IND_BLUETOOTH,    LED_IND_USB, @@ -98,4 +105,4 @@ enum led_sequence {  #endif - +void battery_poll(uint8_t level);
\ No newline at end of file diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c index ea922ec3fd..f30badd356 100644 --- a/keyboards/handwired/promethium/rgbsps.c +++ b/keyboards/handwired/promethium/rgbsps.c @@ -21,4 +21,53 @@ void rgbsps_turnoff(void) {  void rgbsps_send(void) {    ws2812_setleds(led, RGBSPS_NUM); -}
\ No newline at end of file +} + +void rgbsps_sethsv(uint8_t index, uint16_t hue, uint8_t sat, uint8_t val) { +  uint8_t r = 0, g = 0, b = 0, base, color; + +  if (sat == 0) { // Acromatic color (gray). Hue doesn't mind. +    r = val; +    g = val; +    b = val; +  } else { +    base = ((255 - sat) * val) >> 8; +    color = (val - base) * (hue % 60) / 60; + +    switch (hue / 60) { +      case 0: +        r = val; +        g = base + color; +        b = base; +        break; +      case 1: +        r = val - color; +        g = val; +        b = base; +        break; +      case 2: +        r = base; +        g = val; +        b = base + color; +        break; +      case 3: +        r = base; +        g = val - color; +        b = val; +        break; +      case 4: +        r = base + color; +        g = base; +        b = val; +        break; +      case 5: +        r = val; +        g = base; +        b = val - color; +        break; +    } +  } + +  rgbsps_set(index, r, g, b); +} + diff --git a/keyboards/handwired/promethium/rgbsps.h b/keyboards/handwired/promethium/rgbsps.h index 6da197f75d..72612a7a82 100644 --- a/keyboards/handwired/promethium/rgbsps.h +++ b/keyboards/handwired/promethium/rgbsps.h @@ -1,4 +1,5 @@  void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b);  void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b);  void rgbsps_turnoff(void); -void rgbsps_send(void);
\ No newline at end of file +void rgbsps_send(void); +void rgbsps_sethsv(uint8_t index, uint16_t hue, uint8_t sat, uint8_t val);
\ No newline at end of file diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index 465ef3359a..e75cf4dde4 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -72,4 +72,5 @@ API_SYSEX_ENABLE ?= no  SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend  SRC += $(QUANTUM_DIR)/light_ws2812.c -SRC += rgbsps.c
\ No newline at end of file +SRC += rgbsps.c +SRC += $(QUANTUM_DIR)/analog.c
\ No newline at end of file diff --git a/keyboards/planck/keymaps/bone2planck/Makefile b/keyboards/planck/keymaps/bone2planck/Makefile index cf2c31f0fb..39635192e5 100644 --- a/keyboards/planck/keymaps/bone2planck/Makefile +++ b/keyboards/planck/keymaps/bone2planck/Makefile @@ -1,20 +1,16 @@ -# Please remove if no longer applicable -$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) -$(warning Please disable some options in the Makefile to resolve) -  # Build Options -#   change to "no" to disable the options, or define them in the Makefile in  +#   change to "no" to disable the options, or define them in the Makefile in  #   the appropriate keymap folder that will get included automatically  #  BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes       # Mouse keys(+4700) +MOUSEKEY_ENABLE = no       # Mouse keys(+4700)  EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)  CONSOLE_ENABLE = no         # Console for debug(+400) -COMMAND_ENABLE = yes        # Commands for debug and configuration +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 = yes      # Enable keyboard backlight functionality +BACKLIGHT_ENABLE = no      # Enable keyboard backlight functionality  MIDI_ENABLE = no            # MIDI controls -AUDIO_ENABLE = yes           # Audio output on port C6 +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. diff --git a/keyboards/planck/keymaps/bone2planck/config.h b/keyboards/planck/keymaps/bone2planck/config.h index 60aff6db0d..3e9e692d3c 100644 --- a/keyboards/planck/keymaps/bone2planck/config.h +++ b/keyboards/planck/keymaps/bone2planck/config.h @@ -1,7 +1,8 @@  #ifndef CONFIG_USER_H  #define CONFIG_USER_H -#endif  #include "../../config.h" -#define PREVENT_STUCK_MODIFIERS
\ No newline at end of file +#define PREVENT_STUCK_MODIFIERS + +#endif
\ No newline at end of file diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 69d164b8c7..5f77acf91d 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -7,11 +7,12 @@  // for intellisense, has to be commented for building  /*  #include "..\..\..\..\quantum\keymap_extras\keymap_german.h" -#include "..\..\..\..\quantum\keymap_common.h"  #include "..\..\..\..\tmk_core\common\keycode.h"  */ +  #define _______ KC_TRNS +#define XXXXXXX KC_NO  /* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.  It has "üäöß" as it is optimized for a mix of German & English. @@ -23,11 +24,11 @@ Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Bone2 +/* Bone2 (adapted)  * ,-----------------------------------------------------------------------------------. -* | Q    |   J  |   D  |   U  |   A  |   X  |   P  |   H  |   L  |   M  |   W  |  ẞ   | +* | ß    |   J  |   D  |   U  |   A  |   X  |   P  |   H  |   L  |   M  |   W  |  Q   |  * |------+------+------+------+------+-------------+------+------+------+------+------| -* |M1/Tab|   C  |   T  |   I  |   E  |   O  |   B  |   N  |   R  |   S  |   G  |M1/Ent|  //hold for M1, tap for Tab/Enter +* |  M1  |   C  |   T  |   I  |   E  |   O  |   B  |   N  |   R  |   S  |   G  |M1/Ent|  //hold for M1, tap for Enter  * |------+------+------+------+------+------|------+------+------+------+------+------|  * | Shift|   F  |   V  |   Ü  |   Ä  |   Ö  |   Y  |   Z  |   ,  |   .  |   K  |Shift |  * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -35,20 +36,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {  * `-----------------------------------------------------------------------------------'  */  [0] = { -	{ DE_Q,         DE_J,    DE_D,    DE_U,  DE_A,  DE_X,   DE_P,   DE_H,  DE_L,    DE_M,    DE_W,    DE_SS        }, -	{ LT(1,KC_TAB), DE_C,    DE_T,    DE_I,  DE_E,  DE_O,   DE_B,   DE_N,  DE_R,    DE_S,    DE_G,    LT(1,KC_ENT) }, +	{ DE_SS,        DE_J,    DE_D,    DE_U,  DE_A,  DE_X,   DE_P,   DE_H,  DE_L,    DE_M,    DE_W,    DE_Q         }, +	//{ LT(1,KC_TAB), DE_C,    DE_T,    DE_I,  DE_E,  DE_O,   DE_B,   DE_N,  DE_R,    DE_S,    DE_G,    LT(1,KC_ENT) }, +	{ MO(1),        DE_C,    DE_T,    DE_I,  DE_E,  DE_O,   DE_B,   DE_N,  DE_R,    DE_S,    DE_G,    LT(1,KC_ENT) },  	{ KC_LSFT,      DE_F,    DE_V,    DE_UE, DE_AE, DE_OE,  DE_Y,   DE_Z,  DE_COMM, DE_DOT,  DE_K,    KC_LSFT      },  	{ KC_LCTL,      KC_RGUI, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4),   KC_RALT, KC_ESC,  KC_RCTL      }  },  /* M1 Special Characters -very ergonomic placement for coding +*  very ergonomic placement for coding  * ,-----------------------------------------------------------------------------------.  * | °    |   @  |   _  |   [  |   ]  |   ^  |   !  |   <  |   >  |   =  |   &  |  ´   |  * |------+------+------+------+------+-------------+------+------+------+------+------| -* |M1/Tab|   \  |   /  |   {  |   }  |   *  |   ?  |   (  |   )  |   -  |   :  |M1/Ent|  //hold for M1, tap for Tab/Enter +* |  M1  |   \  |   /  |   {  |   }  |   *  |   ?  |   (  |   )  |   -  |   :  |M1/Ent|  //hold for M1, tap for Enter  * |------+------+------+------+------+------|------+------+------+------+------+------| -* | Shift|   #  |   $  |   |  |   ~  |   €  |   +  |   %  |   "  |   '  |   ;  |Shift | +* | Shift|   #  |   ~  |   |  |   $  |   €  |   +  |   %  |   "  |   '  |   ;  |Shift |  * |------+------+------+------+------+------+------+------+------+------+------+------|  * | Ctrl | GUI  | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  | Alt  | Esc  | Ctrl |  * `-----------------------------------------------------------------------------------' @@ -56,56 +58,55 @@ very ergonomic placement for coding  [1] = {  	{ DE_RING, DE_AT,   DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, DE_ACUT },  	{ _______, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, _______ }, -	{ _______, DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, _______ }, +	{ _______, DE_HASH, DE_TILD, DE_PIPE, DE_DLR,  DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, _______ },  	{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }  }, -/* Navigation & Number Blocks -very easy to get used to & intuituve placement +/* M2 Navigation & Number Blocks +*  very easy to get used to & intuituve placement  * ,-----------------------------------------------------------------------------------.  * |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |   7  |   8  |   9  |      | Ins  |  * |------+------+------+------+------+-------------+------+------+------+------+------| -* |  Tab | Home |  Lft | Down | Right| End  |   .  |   4  |   5  |   6  |   ,  | Enter| +* |  Tab | Home |  Lft | Down | Right| End  |      |   4  |   5  |   6  |   .  | Enter|  * |------+------+------+------+------+------|------+------+------+------+------+------| -* | Shift|      |  Tab |      | Enter|      |   0  |   1  |   2  |   3  |   ;  |Shift | +* | Shift|      |  Tab |      | Enter|      |   0  |   1  |   2  |   3  |   ,  |Shift |  * |------+------+------+------+------+------+------+------+------+------+------+------|  * | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  | Alt  | Esc  | Ctrl |  * `-----------------------------------------------------------------------------------'  */  [2] = { -	{ KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO,   DE_7,    DE_8,  DE_9,    KC_NO,   KC_INS  }, -	{ KC_TAB,  KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  DE_DOT,  DE_4,    DE_5,  DE_6,    DE_COMM, KC_ENT  }, -	{ _______, KC_NO,   KC_TAB,  KC_NO,   KC_ENT,  KC_NO,   DE_0,    DE_1,    DE_2,  DE_3,    DE_SCLN, _______ }, +	{ XXXXXXX, KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, XXXXXXX, DE_7,    DE_8,  DE_9,    XXXXXXX, KC_INS  }, +	{ KC_TAB,  KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  XXXXXXX, DE_4,    DE_5,  DE_6,    DE_DOT,  KC_ENT  }, +	{ _______, XXXXXXX, KC_TAB,  XXXXXXX, KC_ENT,  XXXXXXX, DE_0,    DE_1,    DE_2,  DE_3,    DE_COMM, _______ },  	{ _______, _______, _______, MO(3),   _______, _______, _______, _______, MO(3), _______, _______, _______ }  }, -/* Flipped Navigation & Number Blocks for one handed use -accessed by sliding from M2 to M3 with thumb +/* M3 Switched Navigation & Number Blocks for one handed use +*  accessed by sliding from M2 to M3 with thumb  * ,-----------------------------------------------------------------------------------. -* | Ins  |      |  7   |  8   |  9   |      | PgUp | Bksp |  Up  |  DEL | PgDn |      | +* |  Ins |      |  7   |  8   |  9   |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |  * |------+------+------+------+------+-------------+------+------+------+------+------| -* |  Tab |  .   |  4   |  5   |  6   |   ,  | Home | Left | Down | Right| End  | Enter| +* |  Tab |      |  4   |  5   |  6   |   .  | Home | Left | Down | Right| End  | Enter|  * |------+------+------+------+------+------|------+------+------+------+------+------| -* | Shift|  0   |  1   |  2   |  3   |   ;  |      | Tab  |  Ins | Enter|      |Shift | +* | Shift|  0   |  1   |  2   |  3   |   ,  |      | Tab  |      | Enter|      |Shift |  * |------+------+------+------+------+------+------+------+------+------+------+------|  * | Ctrl | GUI  | Alt  |  M3  |      |    Space    |      |  M3  | Alt  | Esc  | Ctrl |  * `-----------------------------------------------------------------------------------'  */  [3] = { -	{ KC_INS,   KC_NO,   DE_7,    DE_8,    DE_9,  KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO   }, -	{ _______, DE_DOT,  DE_4,    DE_5,    DE_6,  DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  _______ }, -	{ _______, DE_0,    DE_1,    DE_2,    DE_3,  DE_SCLN, KC_NO,   KC_TAB,  KC_INS,  KC_ENT,  KC_NO,   _______ }, -	{ _______, _______, _______, _______, KC_NO, _______, _______, KC_NO,   _______, _______, _______, _______ } +	{ KC_INS,  XXXXXXX, DE_7,    DE_8,    DE_9,    XXXXXXX, KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, XXXXXXX }, +	{ _______, XXXXXXX, DE_4,    DE_5,    DE_6,    DE_DOT,  KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  _______ }, +	{ _______, DE_0,    DE_1,    DE_2,    DE_3,    DE_COMM, XXXXXXX, KC_TAB,  XXXXXXX, KC_ENT,  XXXXXXX, _______ }, +	{ _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX, _______, _______, _______, _______ }  }, -/* Function & Media Keys -slide from m4 to m5 to access flipped version +/* M4 Function & Media Keys  * ,-----------------------------------------------------------------------------------.  * |      |      | Print|Scroll|Pause |      |      |  F7  |  F8  |  F9  |  F12 |      |  * |------+------+------+------+------+-------------+------+------+------+------+------| -* |      |      | Mute | Vol- | Vol+ |      |   ³  |  F4  |  F5  |  F6  |  F11 |      | +* | Tab  |      | Mute | Vol- | Vol+ |      |   ³  |  F4  |  F5  |  F6  |  F11 | Enter|  * |------+------+------+------+------+------|------+------+------+------+------+------|  * | Shift|      | Prev | Play | Next |      |   ²  |  F1  |  F2  |  F3  |  F10 |Shift |  * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -113,18 +114,19 @@ slide from m4 to m5 to access flipped version  * `-----------------------------------------------------------------------------------'  */  [4] = { -	{ KC_NO,   KC_NO,   KC_PSCR, KC_SLCK, KC_PAUS, KC_NO,   KC_NO,   KC_F7, KC_F8,   KC_F9,   KC_F12,  KC_NO   }, -	{ KC_NO,   KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   DE_SQ3,  KC_F4, KC_F5,   KC_F6,   KC_F11,  KC_NO   }, -	{ _______, KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,   DE_SQ2,  KC_F1, KC_F2,   KC_F3,   KC_F10,  _______ }, +	{ XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, KC_F7, KC_F8,   KC_F9,   KC_F12,  XXXXXXX }, +	{ KC_TAB,  XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, DE_SQ3,  KC_F4, KC_F5,   KC_F6,   KC_F11,  KC_ENT  }, +	{ _______, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, DE_SQ2,  KC_F1, KC_F2,   KC_F3,   KC_F10,  _______ },  	{ _______, _______, _______, _______, MO(5),   _______, _______, MO(5), _______, _______, _______, _______ }  }, -/* flipped Function & Media Keys +/* M5 Switched Function & Media Keys| +*  accessed by sliding from M4 to M5 with thumb  * ,-----------------------------------------------------------------------------------.  * |      |      |  F7  |  F8  |  F9  |  F12 |      | Print|Scroll| Pause|      |      |  * |------+------+------+------+------+-------------+------+------+------+------+------| -* |      |  ³   |  F4  |  F5  |  F6  |  F11 |      | Mute | Vol- | Vol+ |      |      | +* | Tab  |  ³   |  F4  |  F5  |  F6  |  F11 |      | Mute | Vol- | Vol+ |      | Enter|  * |------+------+------+------+------+------|------+------+------+------+------+------|  * | Shift|  ²   |  F1  |  F2  |  F3  |  F10 |      | Prev | Play | Next |      |Shift |  * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -132,13 +134,14 @@ slide from m4 to m5 to access flipped version  * `-----------------------------------------------------------------------------------'  */  [5] = { -	{ KC_NO,   KC_NO,   KC_F7,   KC_F8, KC_F9,   KC_F12,  KC_NO,   KC_PSCR, KC_SLCK, KC_PAUS, KC_NO,   KC_NO   }, -	{ KC_NO,   DE_SQ3,  KC_F4,   KC_F5, KC_F6,   KC_F11,  KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   KC_NO   }, -	{ _______, DE_SQ2,  KC_F1,   KC_F2, KC_F3,   KC_F10,  KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,   _______ }, -	{ _______, _______, _______, KC_NO, _______, _______, _______, _______, KC_NO,   _______, _______, _______ } +	{ XXXXXXX, XXXXXXX, KC_F7,   KC_F8,   KC_F9,   KC_F12,  XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX }, +	{ _______, DE_SQ3,  KC_F4,   KC_F5,   KC_F6,   KC_F11,  XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, _______ }, +	{ _______, DE_SQ2,  KC_F1,   KC_F2,   KC_F3,   KC_F10,  XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, _______ }, +	{ _______, _______, _______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, _______, _______, _______ }  }  }; +  const uint16_t PROGMEM fn_actions[] = {  }; diff --git a/keyboards/planck/keymaps/bone2planck/readme.md b/keyboards/planck/keymaps/bone2planck/readme.md index 3c425efddb..be22eabdb9 100644 --- a/keyboards/planck/keymaps/bone2planck/readme.md +++ b/keyboards/planck/keymaps/bone2planck/readme.md @@ -1,8 +1,96 @@ -check keymap.c to the layers +Bone2Planck +===================================== -This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. +This layout tries to emulate the Bone2 variant of Neo2, and is intended to be used with a German QWERTZ softwarelayout.  It has "üäöß" as it is optimized for a mix of German & English. -My favourite features are the placement of the special characters often used for programming right on the home row -and the number & navigation block combo, so you never have to move your hands from their home position. +The special character layer and the navigation & number block layer are inspired by the Neo2 layers, +designed to keep the fingers near the home row. -Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone
\ No newline at end of file +Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone + +To build, run "make" from within the \bone2planck folder. + +## Bone2 (adapted) Base Layer +``` + ,-----------------------------------------------------------------------------------. + |  ß   |   J  |   D  |   U  |   A  |   X  |   P  |   H  |   L  |   M  |   W  |  Q   | + |------+------+------+------+------+-------------+------+------+------+------+------| + |  M1  |   C  |   T  |   I  |   E  |   O  |   B  |   N  |   R  |   S  |   G  |M1/Ent| hold: M1, tap: Enter + |------+------+------+------+------+------|------+------+------+------+------+------| + | Shift|   F  |   V  |   Ü  |   Ä  |   Ö  |   Y  |   Z  |   ,  |   .  |   K  |Shift | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Ctrl | GUI  | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  | Alt  | Esc  | Ctrl | + `-----------------------------------------------------------------------------------' +``` + +## M1 Special Characters +  very ergonomic placement for coding +``` + ,-----------------------------------------------------------------------------------. + |  °   |   @  |   _  |   [  |   ]  |   ^  |   !  |   <  |   >  |   =  |   &  |  ´   | + |------+------+------+------+------+-------------+------+------+------+------+------| + |  M1  |   \  |   /  |   {  |   }  |   *  |   ?  |   (  |   )  |   -  |   :  |M1/Ent| hold: M1, tap: Enter + |------+------+------+------+------+------|------+------+------+------+------+------| + | Shift|   #  |   ~  |   |  |   $  |   €  |   +  |   %  |   "  |   '  |   ;  |Shift | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Ctrl | GUI  | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  | Alt  | Esc  | Ctrl | + `-----------------------------------------------------------------------------------' +``` + +## M2 Navigation & Number Blocks +  very easy to get used to & intuituve placement +``` + ,-----------------------------------------------------------------------------------. + |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |   7  |   8  |   9  |      | Ins  | + |------+------+------+------+------+-------------+------+------+------+------+------| + |  Tab | Home |  Lft | Down | Right| End  |      |   4  |   5  |   6  |   .  | Enter| + |------+------+------+------+------+------|------+------+------+------+------+------| + | Shift|      |  Tab |      | Enter|      |   0  |   1  |   2  |   3  |   ,  |Shift | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Ctrl | GUI  | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  | Alt  | Esc  | Ctrl | + `-----------------------------------------------------------------------------------' +``` + +## M4 Function & Media Keys +``` + ,-----------------------------------------------------------------------------------. + |      |      | Print|Scroll|Pause |      |      |  F7  |  F8  |  F9  |  F12 |      | + |------+------+------+------+------+-------------+------+------+------+------+------| + |  Tab |      | Mute | Vol- | Vol+ |      |   ³  |  F4  |  F5  |  F6  |  F11 | Enter| + |------+------+------+------+------+------|------+------+------+------+------+------| + | Shift|      | Prev | Play | Next |      |   ²  |  F1  |  F2  |  F3  |  F10 |Shift | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Ctrl | GUI  | Alt  |  M4  |  M5  |    Space    |  M5  |  M4  | Alt  | Esc  | Ctrl | + `-----------------------------------------------------------------------------------' +``` + + +##Switched layers for one handed access: + +### M3 Switched Navigation & Number Blocks +  accessed by sliding from M2 to M3 with thumb +``` + ,-----------------------------------------------------------------------------------. + | Ins  |      |  7   |  8   |  9   |      | PgUp | Bksp |  Up  |  DEL | PgDn |      | + |------+------+------+------+------+-------------+------+------+------+------+------| + |  Tab |      |  4   |  5   |  6   |   .  | Home | Left | Down | Right| End  | Enter| + |------+------+------+------+------+------|------+------+------+------+------+------| + | Shift|  0   |  1   |  2   |  3   |   ,  |      | Tab  |      | Enter|      |Shift | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Ctrl | GUI  | Alt  |  M3  |      |    Space    |      |  M3  | Alt  | Esc  | Ctrl | + `-----------------------------------------------------------------------------------' +``` + +### M5 Switched Function & Media Keys +  accessed by sliding from M4 to M5 with thumb +``` + ,-----------------------------------------------------------------------------------. + |      |      |  F7  |  F8  |  F9  |  F12 |      | Print|Scroll| Pause|      |      | + |------+------+------+------+------+-------------+------+------+------+------+------| + |  Tab |  ³   |  F4  |  F5  |  F6  |  F11 |      | Mute | Vol- | Vol+ |      | Enter| + |------+------+------+------+------+------|------+------+------+------+------+------| + | Shift|  ²   |  F1  |  F2  |  F3  |  F10 |      | Prev | Play | Next |      |Shift | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Ctrl | GUI  | Alt  |      |  M5  |    Space    |  M5  |      | Alt  | Esc  | Ctrl | + `-----------------------------------------------------------------------------------' +```
\ No newline at end of file diff --git a/keyboards/readme.md b/keyboards/readme.md index d2f41ad7e9..5b7b28207c 100644 --- a/keyboards/readme.md +++ b/keyboards/readme.md @@ -39,6 +39,7 @@ These keyboards are part of the QMK repository, but their manufacturers are not  * [Bantam44](/keyboards/bantam44) — It is a 44-key 40% staggered keyboard.  * [Ergodox Infinity](/keyboards/ergodox) - Ergonomic Split Keyboard by Input Club.  * [GH60](/keyboards/gh60) — A 60% Geekhack community-driven project. +* [GON NerD](/keyboards/gonnerd) — Korean custom 60% PCB  * [Happy Hacking Keyboard](/keyboards/hhkb) — The Happy Hacking keyboard can be hacked with a custom controller to run QMK.  * [Infinity 60%](/keyboards/infinity60) - — Compact community keyboard by Input Club.  * [JD45](/keyboards/jd45) — Another Geekhack community project, designed by jdcarpe. diff --git a/quantum/quantum.c b/quantum/quantum.c index d3905decf2..45ea8cb73c 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -594,34 +594,45 @@ static const uint8_t backlight_pin = BACKLIGHT_PIN;  #  define COM1x1 COM1A1  #  define OCR1x  OCR1A  #else -#  error "Backlight pin not supported - use B5, B6, or B7" +#  define NO_BACKLIGHT_CLOCK +#endif + +#ifndef BACKLIGHT_ON_STATE +#define BACKLIGHT_ON_STATE 0  #endif  __attribute__ ((weak))  void backlight_init_ports(void)  { -  // Setup backlight pin as output and output low. +  // Setup backlight pin as output and output to on state.    // DDRx |= n    _SFR_IO8((backlight_pin >> 4) + 1) |= _BV(backlight_pin & 0xF); -  // PORTx &= ~n -  _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +  #if BACKLIGHT_ON_STATE == 0 +    // PORTx &= ~n +    _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +  #else +    // PORTx |= n +    _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); +  #endif -  // Use full 16-bit resolution. -  ICR1 = 0xFFFF; +  #ifndef NO_BACKLIGHT_CLOCK +    // Use full 16-bit resolution. +    ICR1 = 0xFFFF; -  // I could write a wall of text here to explain... but TL;DW -  // Go read the ATmega32u4 datasheet. -  // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on +    // I could write a wall of text here to explain... but TL;DW +    // Go read the ATmega32u4 datasheet. +    // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on -  // Pin PB7 = OCR1C (Timer 1, Channel C) -  // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 -  // (i.e. start high, go low when counter matches.) -  // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 -  // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 +    // Pin PB7 = OCR1C (Timer 1, Channel C) +    // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 +    // (i.e. start high, go low when counter matches.) +    // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 +    // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 -  TCCR1A = _BV(COM1x1) | _BV(WGM11); // = 0b00001010; -  TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; +    TCCR1A = _BV(COM1x1) | _BV(WGM11); // = 0b00001010; +    TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; +  #endif    backlight_init();    #ifdef BACKLIGHT_BREATHING @@ -633,24 +644,43 @@ __attribute__ ((weak))  void backlight_set(uint8_t level)  {    // Prevent backlight blink on lowest level -  // PORTx &= ~n -  _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +  #if BACKLIGHT_ON_STATE == 0 +    // PORTx &= ~n +    _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +  #else +    // PORTx |= n +    _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); +  #endif    if ( level == 0 ) { -    // Turn off PWM control on backlight pin, revert to output low. -    TCCR1A &= ~(_BV(COM1x1)); -    OCR1x = 0x0; -  } else if ( level == BACKLIGHT_LEVELS ) { -    // Turn on PWM control of backlight pin -    TCCR1A |= _BV(COM1x1); -    // Set the brightness -    OCR1x = 0xFFFF; -  } else { -    // Turn on PWM control of backlight pin -    TCCR1A |= _BV(COM1x1); -    // Set the brightness -    OCR1x = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); -  } +    #ifndef NO_BACKLIGHT_CLOCK +      // Turn off PWM control on backlight pin, revert to output low. +      TCCR1A &= ~(_BV(COM1x1)); +      OCR1x = 0x0; +    #else +      #if BACKLIGHT_ON_STATE == 0 +        // PORTx |= n +        _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); +      #else +        // PORTx &= ~n +        _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +      #endif +    #endif +  }  +  #ifndef NO_BACKLIGHT_CLOCK +    else if ( level == BACKLIGHT_LEVELS ) { +      // Turn on PWM control of backlight pin +      TCCR1A |= _BV(COM1x1); +      // Set the brightness +      OCR1x = 0xFFFF; +    }  +    else { +      // Turn on PWM control of backlight pin +      TCCR1A |= _BV(COM1x1); +      // Set the brightness +      OCR1x = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); +    } +  #endif    #ifdef BACKLIGHT_BREATHING      breathing_intensity_default(); diff --git a/util/travis_build.sh b/util/travis_build.sh index 2d43f3e5e9..6bafd1941f 100644 --- a/util/travis_build.sh +++ b/util/travis_build.sh @@ -11,7 +11,7 @@ if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then  		make all-keyboards AUTOGEN="true"  		: $((exit_code = $exit_code + $?))  	else -		MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)' | sort -u) +		MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)  		for KB in $MKB ; do  			echo "Making all keymaps for $KB"  			make "$KB" AUTOGEN=true | 
