aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml7
-rw-r--r--keyboards/atreus62/keymaps/mneme/README.md6
-rw-r--r--keyboards/atreus62/keymaps/mneme/config.h2
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/base.pngbin458762 -> 457157 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/fun.pngbin430634 -> 425368 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/sym.pngbin433342 -> 433218 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/keymap.c111
-rw-r--r--keyboards/gonnerd/Makefile3
-rw-r--r--keyboards/gonnerd/config.h43
-rw-r--r--keyboards/gonnerd/gonnerd.c1
-rw-r--r--keyboards/gonnerd/gonnerd.h42
-rw-r--r--keyboards/gonnerd/keymaps/default/Makefile21
-rw-r--r--keyboards/gonnerd/keymaps/default/keymap.c16
-rw-r--r--keyboards/gonnerd/keymaps/mauin/Makefile21
-rw-r--r--keyboards/gonnerd/keymaps/mauin/keymap.c78
-rw-r--r--keyboards/gonnerd/keymaps/mauin/readme.md5
-rw-r--r--keyboards/gonnerd/readme.md34
-rw-r--r--keyboards/gonnerd/rules.mk66
-rw-r--r--keyboards/handwired/promethium/config.h89
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/config.h7
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c875
-rw-r--r--keyboards/handwired/promethium/promethium.c36
-rw-r--r--keyboards/handwired/promethium/promethium.h9
-rw-r--r--keyboards/handwired/promethium/rgbsps.c51
-rw-r--r--keyboards/handwired/promethium/rgbsps.h3
-rw-r--r--keyboards/handwired/promethium/rules.mk3
-rw-r--r--keyboards/kinesis/keymaps/milestogo/keymap.c205
-rw-r--r--keyboards/kinesis/rules.mk4
-rw-r--r--keyboards/planck/keymaps/bone2planck/readme.md8
-rw-r--r--keyboards/readme.md1
-rw-r--r--quantum/keymap_common.c2
-rw-r--r--quantum/process_keycode/process_unicode.c2
-rw-r--r--quantum/quantum.c94
-rw-r--r--quantum/quantum_keycodes.h30
-rw-r--r--tmk_core/protocol/ps2_mouse.h5
-rw-r--r--util/travis_build.sh2
36 files changed, 1407 insertions, 475 deletions
diff --git a/.travis.yml b/.travis.yml
index 18ecde7e3..6c26e4112 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,3 +30,10 @@ addons:
30 - diffutils 30 - diffutils
31after_success: 31after_success:
32 bash util/travis_compiled_push.sh 32 bash util/travis_compiled_push.sh
33notifications:
34 webhooks:
35 urls:
36 - https://webhooks.gitter.im/e/cca31de3d44b9adb617b
37 on_success: change # options: [always|never|change] default: always
38 on_failure: always # options: [always|never|change] default: always
39 on_start: never # options: [always|never|change] default: always \ No newline at end of file
diff --git a/keyboards/atreus62/keymaps/mneme/README.md b/keyboards/atreus62/keymaps/mneme/README.md
index 04ab070be..7bb5da9fc 100644
--- a/keyboards/atreus62/keymaps/mneme/README.md
+++ b/keyboards/atreus62/keymaps/mneme/README.md
@@ -1,6 +1,6 @@
1<!-- -*- mode: markdown; fill-column: 8192 -*- --> 1<!-- -*- mode: markdown; fill-column: 8192 -*- -->
2 2
3Mnemes Swedish Bonaza 3Mnemes Swedish Bonanza
4======================= 4=======================
5 5
6My Layout in process, most of the code is shamelessly stolen from [algernons][algernon] excellent layout 6My 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
33 - `LEAD s l` : `λ`. 33 - `LEAD s l` : `λ`.
34 - `LEAD s s` : `¯\_(ツ)_/¯` 34 - `LEAD s s` : `¯\_(ツ)_/¯`
35 - `LEAD s f` : `凸(ツ)凸` 35 - `LEAD s f` : `凸(ツ)凸`
36 - `LEAD u l` : Set unicode input mode to linux.
37 - `LEAD s w` : Set unicode input mode to windows.
36 - `LEAD a *` : Application switching based on position in start menu. Very specific to my computer. 38 - `LEAD a *` : Application switching based on position in start menu. Very specific to my computer.
37 39
38 40
@@ -42,7 +44,7 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym
42 44
43Basic navigation on the right hand and modifiers close 45Basic navigation on the right hand and modifiers close
44by for the left. The latter because I tend to use `ctrl+arrows` quite a lot. 46by for the left. The latter because I tend to use `ctrl+arrows` quite a lot.
45 47
46## Sym layer 48## Sym layer
47 49
48![Sym layer](img/sym.png) 50![Sym layer](img/sym.png)
diff --git a/keyboards/atreus62/keymaps/mneme/config.h b/keyboards/atreus62/keymaps/mneme/config.h
index 2c2a08c05..73eb0fa33 100644
--- a/keyboards/atreus62/keymaps/mneme/config.h
+++ b/keyboards/atreus62/keymaps/mneme/config.h
@@ -1,7 +1,7 @@
1#define ONESHOT_TIMEOUT 3000 1#define ONESHOT_TIMEOUT 3000
2#define TAPPING_TERM 200 2#define TAPPING_TERM 200
3#define PREVENT_STUCK_MODIFIERS 3#define PREVENT_STUCK_MODIFIERS
4 4#define FORCE_NKRO
5#define LEADER_TIMEOUT 1000 5#define LEADER_TIMEOUT 1000
6 6
7#include "../../config.h" 7#include "../../config.h"
diff --git a/keyboards/atreus62/keymaps/mneme/img/base.png b/keyboards/atreus62/keymaps/mneme/img/base.png
index 86907d544..3e77a5183 100644
--- a/keyboards/atreus62/keymaps/mneme/img/base.png
+++ b/keyboards/atreus62/keymaps/mneme/img/base.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/img/fun.png b/keyboards/atreus62/keymaps/mneme/img/fun.png
index ec5a478c6..961a19724 100644
--- a/keyboards/atreus62/keymaps/mneme/img/fun.png
+++ b/keyboards/atreus62/keymaps/mneme/img/fun.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/img/sym.png b/keyboards/atreus62/keymaps/mneme/img/sym.png
index 11b5bd4b0..5e2c80335 100644
--- a/keyboards/atreus62/keymaps/mneme/img/sym.png
+++ b/keyboards/atreus62/keymaps/mneme/img/sym.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/keymap.c b/keyboards/atreus62/keymaps/mneme/keymap.c
index 7c1879982..2627e024f 100644
--- a/keyboards/atreus62/keymaps/mneme/keymap.c
+++ b/keyboards/atreus62/keymaps/mneme/keymap.c
@@ -7,43 +7,47 @@
7/* 7/*
8 *WINDOWS SWEDISH 8 *WINDOWS SWEDISH
9 */ 9 */
10#define KN_HALF KC_GRV // 1/2 10 /*
11#define KN_PLUS KC_MINS // + 11 *WINDOWS SWEDISH
12#define KN_ACUT KC_EQL // ´ 12 */
13#define KN_AO KC_LBRC // Å 13 #define KN_HALF KC_GRV // 1/2
14#define KN_UMLA KC_RBRC // ¨ 14 #define KN_PLUS KC_MINS // +
15#define KN_OE KC_SCLN // Ö 15 #define KN_ACUT KC_EQL // ´
16#define KN_AE KC_QUOT // Ä 16 #define KN_AO KC_LBRC // Å
17#define KN_QUOT KC_NUHS // ' 17 #define KN_UMLA KC_RBRC // ¨
18#define KN_LABK KC_NUBS // < 18 #define KN_OE KC_SCLN // Ö
19#define KN_MINS KC_SLSH // - 19 #define KN_AE KC_QUOT // Ä
20#define KN_EXLM LSFT(KC_1) // ! 20 #define KN_QUOT KC_NUHS // '
21#define KN_DQT LSFT(KC_2) // " 21 #define KN_LABK KC_NUBS // <
22#define KN_AT RALT(KC_2) // @ 22 #define KN_MINS KC_SLSH // -
23#define KN_HASH LSFT(KC_3) // # 23 #define KN_EXLM LSFT(KC_1) // !
24#define KN_DLR RALT(KC_4) // $ 24 #define KN_DQT LSFT(KC_2) // "
25#define KN_PERC LSFT(KC_5) // % 25 #define KN_AT RALT(KC_2) // @
26#define KN_AMPR LSFT(KC_6) // & 26 #define KN_HASH LSFT(KC_3) // #
27#define KN_SLSH LSFT(KC_7) // / 27 #define KN_EUR LSFT(KC_4) // €
28#define KN_LPRN LSFT(KC_8) // ( 28 #define KN_DLR RALT(KC_4) // $
29#define KN_RPRN LSFT(KC_9) // ) 29 #define KN_PERC LSFT(KC_5) // %
30#define KN_EQL LSFT(KC_0) // = 30 #define KN_AMPR LSFT(KC_6) // &
31#define KN_UNDS LSFT(KN_MINS) // _ 31 #define KN_SLSH LSFT(KC_7) // /
32#define KN_QUES LSFT(KN_PLUS) // ? 32 #define KN_LPRN LSFT(KC_8) // (
33#define KN_GRAV LSFT(KN_ACUT) // ` 33 #define KN_RPRN LSFT(KC_9) // )
34#define KN_LCBR RALT(KC_7) // { 34 #define KN_EQL LSFT(KC_0) // =
35#define KN_RCBR RALT(KC_0) // } 35 #define KN_UNDS LSFT(KN_MINS) // _
36#define KN_LBRC RALT(KC_8) // [ 36 #define KN_QUES LSFT(KN_PLUS) // ?
37#define KN_RBRC RALT(KC_9) // ] 37 #define KN_GRAV LSFT(KN_ACUT) // `
38#define KN_RABK LSFT(KN_LABK) // < 38 #define KN_LCBR RALT(KC_7) // {
39#define KN_COLN LSFT(KC_DOT) // : 39 #define KN_RCBR RALT(KC_0) // }
40#define KN_SCLN LSFT(KC_COMM) // : 40 #define KN_LBRC RALT(KC_8) // [
41#define KN_PIPE RALT(KN_LABK) // | 41 #define KN_RBRC RALT(KC_9) // ]
42#define KN_QUES LSFT(KN_PLUS) // ? 42 #define KN_RABK LSFT(KN_LABK) // <
43#define KN_CIRC LSFT(KN_UMLA) // ^ 43 #define KN_COLN LSFT(KC_DOT) // :
44#define KN_ASTR LSFT(KN_QUOT) // * 44 #define KN_SCLN LSFT(KC_COMM) // :
45#define KN_TILD RALT(KN_UMLA) // ~ 45 #define KN_PIPE RALT(KN_LABK) // |
46#define KN_BSLS RALT(KN_PLUS) // 46 #define KN_QUES LSFT(KN_PLUS) // ?
47 #define KN_CIRC LSFT(KN_UMLA) // ^
48 #define KN_ASTR LSFT(KN_QUOT) // *
49 #define KN_TILD RALT(KN_UMLA) // ~
50 #define KN_BSLS RALT(KN_PLUS) //
47 51
48#define OSM_LCTL OSM(MOD_LCTL) 52#define OSM_LCTL OSM(MOD_LCTL)
49#define OSM_LALT OSM(MOD_LALT) 53#define OSM_LALT OSM(MOD_LALT)
@@ -85,32 +89,26 @@ enum {
85 TD_EQ 89 TD_EQ
86}; 90};
87 91
88//Custom keycodes
89enum {
90 PLACEHOLDER = SAFE_RANGE
91};
92
93//State and timers 92//State and timers
94uint16_t kf_timers[12]; 93uint16_t kf_timers[12];
95 94
96 95
97
98const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 96const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
99 97
100 [BASE] = { 98 [BASE] = {
101 99
102 { 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) }, 100 { 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) },
103 { 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 }, 101 { 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 },
104 { 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 }, 102 { 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 },
105 { 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 }, 103 { 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 },
106 { 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) } 104 { 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 }
107 105
108 }, 106 },
109 [NAV] = { 107 [NAV] = {
110 108
111 { 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 }, 109 { 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 },
112 { 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 }, 110 { 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 },
113 { 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 }, 111 { 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 },
114 { 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 }, 112 { 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 },
115 { 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 } 113 { 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 }
116 114
@@ -119,8 +117,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
119 117
120 { 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 }, 118 { 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 },
121 { 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 }, 119 { 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 },
122 { 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 }, 120 { 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 },
123 { 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 }, 121 { 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 },
124 { 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 } 122 { 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 }
125 123
126 } 124 }
@@ -302,6 +300,15 @@ void matrix_scan_user(void) {
302 register_code (KC_LGUI); TAP_ONCE (KC_7); unregister_code (KC_LGUI); 300 register_code (KC_LGUI); TAP_ONCE (KC_7); unregister_code (KC_LGUI);
303 } 301 }
304 302
303 SEQ_TWO_KEYS (KC_U, KC_L) {
304 set_unicode_input_mode(UC_LNX);
305 }
306
307
308 SEQ_TWO_KEYS (KC_U, KC_W) {
309 set_unicode_input_mode(UC_WINC);
310 }
311
305 312
306 SEQ_TWO_KEYS (KC_S, KC_S) { 313 SEQ_TWO_KEYS (KC_S, KC_S) {
307 // ¯\_(ツ)_/¯ 314 // ¯\_(ツ)_/¯
diff --git a/keyboards/gonnerd/Makefile b/keyboards/gonnerd/Makefile
new file mode 100644
index 000000000..57b2ef62e
--- /dev/null
+++ b/keyboards/gonnerd/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../Makefile
3endif
diff --git a/keyboards/gonnerd/config.h b/keyboards/gonnerd/config.h
new file mode 100644
index 000000000..cad8fe586
--- /dev/null
+++ b/keyboards/gonnerd/config.h
@@ -0,0 +1,43 @@
1#ifndef CONFIG_H
2#define CONFIG_H
3
4#include "config_common.h"
5
6/* USB Device descriptor parameter */
7#define VENDOR_ID 0xFEED
8#define PRODUCT_ID 0x6060
9#define DEVICE_VER 0x0001
10#define MANUFACTURER GON
11#define PRODUCT NerD
12#define DESCRIPTION QMK port for the GON Nerd PCB
13
14/* key matrix size */
15#define MATRIX_ROWS 10
16#define MATRIX_COLS 9
17
18/* backlight */
19#define BACKLIGHT_PIN B7
20#define BACKLIGHT_LEVELS 3
21
22/* matrix pins */
23#define MATRIX_ROW_PINS { B4, E2, F4, F7, F1, F6, C6, F5, D7, C7 }
24#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5, D1 }
25#define UNUSED_PINS
26
27/* COL2ROW or ROW2COL */
28#define DIODE_DIRECTION COL2ROW
29
30/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
31#define DEBOUNCING_DELAY 5
32
33/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
34#define LOCKING_SUPPORT_ENABLE
35/* Locking resynchronize hack */
36#define LOCKING_RESYNC_ENABLE
37
38/* key combination for magic key command */
39#define IS_COMMAND() ( \
40 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
41)
42
43#endif
diff --git a/keyboards/gonnerd/gonnerd.c b/keyboards/gonnerd/gonnerd.c
new file mode 100644
index 000000000..f25d3a85f
--- /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 000000000..e5070328e
--- /dev/null
+++ b/keyboards/gonnerd/gonnerd.h
@@ -0,0 +1,42 @@
1#ifndef GONNERD_H
2#define GONNERD_H
3
4#include "quantum.h"
5
6#define KEYMAP_TKL( \
7 K08, K09, K18, K19, K28, K29, K38, K39, K48, K49, K58, K59, K68, K69, K88, K89, \
8 K00, K01, K10, K11, K20, K21, K30, K31, K40, K41, K50, K51, K60, K61, K80, K81, K84, \
9 K02, K03, K12, K13, K22, K23, K32, K33, K42, K43, K52, K53, K62, K63, K82, K83, K85, \
10 K04, K14, K15, K24, K25, K34, K35, K44, K45, K54, K55, K64, K71, K65, \
11 K07, K79, K16, K17, K26, K27, K36, K37, K46, K47, K56, K57, K66, K67, K86, \
12 K06, K05, K78, K70, K72, K73, K74, K75, K76, K77, K87 \
13) \
14{ \
15 { K00, K10, K20, K30, K40, K50, K60, K70, K80 }, \
16 { K01, K11, K21, K31, K41, K51, K61, K71, K81 }, \
17 { K02, K12, K22, K32, K42, K52, K62, K72, K82 }, \
18 { K03, K13, K23, K33, K43, K53, K63, K73, K83 }, \
19 { K04, K14, K24, K34, K44, K54, K64, K74, K84 }, \
20 { K05, K15, K25, K35, K45, K55, K65, K75, K85 }, \
21 { K06, K16, K26, K36, K46, K56, K66, K76, K86 }, \
22 { K07, K17, K27, K37, K47, K57, K67, K77, K87 }, \
23 { K08, K18, K28, K38, K48, K58, K68, K78, K88 }, \
24 { K09, K19, K29, K39, K49, K59, K69, K79, K89 } \
25}
26
27#define KEYMAP_60( \
28 K08, K01, K10, K11, K20, K21, K30, K31, K40, K41, K50, K51, K60, K61, \
29 K02, K03, K12, K13, K22, K23, K32, K33, K42, K43, K52, K53, K62, K63, \
30 K04, K14, K15, K24, K25, K34, K35, K44, K45, K54, K55, K64, K71, K65, \
31 K07, K79, K16, K17, K26, K27, K36, K37, K46, K47, K56, K57, K66, K67, \
32 K06, K05, K78, K70, K72, K73, K74, K75 \
33) KEYMAP_TKL( \
34 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, \
35 KC_NO, K01, K10, K11, K20, K21, K30, K31, K40, K41, K50, K51, K60, K61, KC_NO, KC_NO, KC_NO, \
36 K02, K03, K12, K13, K22, K23, K32, K33, K42, K43, K52, K53, K62, K63, KC_NO, KC_NO, KC_NO, \
37 K04, K14, K15, K24, K25, K34, K35, K44, K45, K54, K55, K64, K71, K65, \
38 K07, K79, K16, K17, K26, K27, K36, K37, K46, K47, K56, K57, K66, K67, KC_NO, \
39 K06, K05, K78, K70, K72, K73, K74, K75, KC_NO, KC_NO, KC_NO \
40)
41
42#endif
diff --git a/keyboards/gonnerd/keymaps/default/Makefile b/keyboards/gonnerd/keymaps/default/Makefile
new file mode 100644
index 000000000..772d7aee3
--- /dev/null
+++ b/keyboards/gonnerd/keymaps/default/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/gonnerd/keymaps/default/keymap.c b/keyboards/gonnerd/keymaps/default/keymap.c
new file mode 100644
index 000000000..a37005939
--- /dev/null
+++ b/keyboards/gonnerd/keymaps/default/keymap.c
@@ -0,0 +1,16 @@
1#include "gonnerd.h"
2
3// Keymap layers
4
5const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
6 [0] = KEYMAP_60( /* Base */
7 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,\
8 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,\
9 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, \
10 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, \
11 KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(1), KC_RCTL),
12};
13
14const uint16_t PROGMEM fn_actions[] = {
15
16};
diff --git a/keyboards/gonnerd/keymaps/mauin/Makefile b/keyboards/gonnerd/keymaps/mauin/Makefile
new file mode 100644
index 000000000..772d7aee3
--- /dev/null
+++ b/keyboards/gonnerd/keymaps/mauin/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/gonnerd/keymaps/mauin/keymap.c b/keyboards/gonnerd/keymaps/mauin/keymap.c
new file mode 100644
index 000000000..1a1d515a9
--- /dev/null
+++ b/keyboards/gonnerd/keymaps/mauin/keymap.c
@@ -0,0 +1,78 @@
1#include "gonnerd.h"
2
3// Keymap layers
4#define BASE_LAYER 0
5#define FUNCTION_LAYER 1
6#define SYSTEM_LAYER 2
7
8// Key aliases
9#define __x__ KC_NO
10
11const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
12 /* Layer 0: Default Layer
13 * ,-----------------------------------------------------------.
14 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| = | BSp |
15 * |-----------------------------------------------------------|
16 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
17 * |-----------------------------------------------------------|
18 * |Funct | A| S| D| F| G| H| J| K| L| ;| '|Enter |
19 * |-----------------------------------------------------------|
20 * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift |
21 * |-----------------------------------------------------------'
22 * | Ctl|Alt|Gui | Space |Gui |Alt| F2| Ctl |
23 * `-----------------------------------------------------------'
24 */
25 [BASE_LAYER] = KEYMAP_60(
26 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, \
27 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, \
28 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, \
29 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__, \
30 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(3), KC_RCTL \
31 ),
32
33 /* Layer 1: Function Layer
34 * ,-----------------------------------------------------------.
35 * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11| F12| Del |
36 * |-----------------------------------------------------------|
37 * | |Prv|Ply|Nxt| | |Pg^|Hme|Up |End| |Br-|Br+| |
38 * |-----------------------------------------------------------|
39 * |Hold |Mte|Vl-|Vl+| | |Pgv|Lft|Dwn|Rgt| | | |
40 * |-----------------------------------------------------------|
41 * | | | | | | | | | | | | |
42 * |-----------------------------------------------------------'
43 * | | | | | | | | |
44 * `-----------------------------------------------------------'
45 */
46 [FUNCTION_LAYER] = KEYMAP_60(
47 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, \
48 __x__, KC_MPRV, KC_MPLY, KC_MNXT, __x__, __x__, KC_PGUP, KC_HOME, KC_UP, KC_END, __x__, KC_SLCK, KC_PAUS, __x__, \
49 KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, __x__, __x__, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, __x__, __x__, __x__, __x__, \
50 KC_LSFT, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
51 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, __x__, __x__, __x__, __x__ \
52 ),
53
54 /* Layer 2: System Layer
55 * ,-----------------------------------------------------------.
56 * |Reset| | | | | | | | | | | | | |
57 * |-----------------------------------------------------------|
58 * | | | | | | | | | | | | | | |
59 * |-----------------------------------------------------------|
60 * | | | | | | | | | | | | | |
61 * |-----------------------------------------------------------|
62 * | | | | | | | | | | | | |
63 * |-----------------------------------------------------------'
64 * | | | | | | | | |
65 * `-----------------------------------------------------------'
66 */
67 [SYSTEM_LAYER] = KEYMAP_60(
68 RESET, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
69 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
70 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
71 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
72 __x__, __x__, __x__, __x__, __x__, __x__, KC_TRNS, __x__ \
73 ),
74};
75
76const uint16_t PROGMEM fn_actions[] = {
77
78};
diff --git a/keyboards/gonnerd/keymaps/mauin/readme.md b/keyboards/gonnerd/keymaps/mauin/readme.md
new file mode 100644
index 000000000..63be7c392
--- /dev/null
+++ b/keyboards/gonnerd/keymaps/mauin/readme.md
@@ -0,0 +1,5 @@
1# Mauin's keymap for the GON NerD
2
3This layout is based on a Pok3r style layout with a standard base layer.
4
5Function 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 000000000..1224ff6b0
--- /dev/null
+++ b/keyboards/gonnerd/readme.md
@@ -0,0 +1,34 @@
1GON NerD keyboard firmware
2======================
3
4## Changing Bootloader
5
6It's not possible to simply flash this firmware on the GON NerD keyboard as the original bootloader does not support DFU connections.
7
8It 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:
9[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.
10
11_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
12not work anymore. You will lose your warranty and official support from GON!_
13
14## Building
15
16Download 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.
17
18Depending on which keymap you would like to use, you will have to compile slightly differently.
19
20### Default
21
22To build with the default keymap, simply run `make default`.
23
24### Other Keymaps
25
26Several 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.
27
28To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
29
30```
31$ make [default|jack|<name>]
32```
33
34Keymaps 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 000000000..c9b584d54
--- /dev/null
+++ b/keyboards/gonnerd/rules.mk
@@ -0,0 +1,66 @@
1# MCU name
2MCU = atmega32u4
3
4# Processor frequency.
5# This will define a symbol, F_CPU, in all source code files equal to the
6# processor frequency in Hz. You can then use this symbol in your source code to
7# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
8# automatically to create a 32-bit value in your source code.
9#
10# This will be an integer division of F_USB below, as it is sourced by
11# F_USB after it has run through any CPU prescalers. Note that this value
12# does not *change* the processor frequency - it should merely be updated to
13# reflect the processor speed set externally so that the code can use accurate
14# software delays.
15F_CPU = 8000000
16
17
18#
19# LUFA specific
20#
21# Target architecture (see library "Board Types" documentation).
22ARCH = AVR8
23
24# Input clock frequency.
25# This will define a symbol, F_USB, in all source code files equal to the
26# input clock frequency (before any prescaling is performed) in Hz. This value may
27# differ from F_CPU if prescaling is used on the latter, and is required as the
28# raw input clock is fed directly to the PLL sections of the AVR for high speed
29# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
30# at the end, this will be done automatically to create a 32-bit value in your
31# source code.
32#
33# If no clock division is performed on the input clock inside the AVR (via the
34# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
35F_USB = $(F_CPU)
36
37# Interrupt driven control endpoint task(+60)
38OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
39
40
41# Boot Section Size in *bytes*
42# Teensy halfKay 512
43# Teensy++ halfKay 1024
44# Atmel DFU loader 4096
45# LUFA bootloader 4096
46# USBaspLoader 2048
47OPT_DEFS += -DBOOTLOADER_SIZE=4096
48
49
50# Build Options
51# change yes to no to disable
52#
53BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
54MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
55EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
56CONSOLE_ENABLE ?= no # Console for debug(+400)
57COMMAND_ENABLE ?= yes # Commands for debug and configuration
58 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
59SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
60 # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
61NKRO_ENABLE ?= no # USB Nkey Rollover
62BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality on B7 by default
63MIDI_ENABLE ?= no # MIDI controls
64UNICODE_ENABLE ?= no # Unicode
65BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
66AUDIO_ENABLE ?= no # Audio output on port C6
diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h
index 23fbfd0b9..fd45c2bfe 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/>.
43#define MATRIX_ROW_PINS { D7, C6, D0, D1, F5, F4, F1, F0 } 43#define MATRIX_ROW_PINS { D7, C6, D0, D1, F5, F4, F1, F0 }
44#define UNUSED_PINS 44#define UNUSED_PINS
45 45
46/* COL2ROW or ROW2COL */ 46/*
47 * Keyboard Matrix Assignments
48 *
49 * Change this to how you wired your keyboard
50 * COLS: AVR pins used for columns, left to right
51 * ROWS: AVR pins used for rows, top to bottom
52 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
53 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
54 *
55*/
47#define DIODE_DIRECTION COL2ROW 56#define DIODE_DIRECTION COL2ROW
48 57
49/* define if matrix has ghost */ 58// #define BACKLIGHT_PIN B7
59// #define BACKLIGHT_BREATHING
60// #define BACKLIGHT_LEVELS 3
61
62/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
63#define DEBOUNCING_DELAY 5
64
65/* define if matrix has ghost (lacks anti-ghosting diodes) */
50//#define MATRIX_HAS_GHOST 66//#define MATRIX_HAS_GHOST
51 67
52/* number of backlight levels */ 68/* number of backlight levels */
53#define BACKLIGHT_LEVELS 3
54
55/* Set 0 if debouncing isn't needed */
56#define DEBOUNCING_DELAY 5
57 69
58/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 70/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
59#define LOCKING_SUPPORT_ENABLE 71// #define LOCKING_SUPPORT_ENABLE
60/* Locking resynchronize hack */ 72/* Locking resynchronize hack */
61#define LOCKING_RESYNC_ENABLE 73// #define LOCKING_RESYNC_ENABLE
74
75/*
76 * Force NKRO
77 *
78 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
79 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
80 * makefile for this to work.)
81 *
82 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
83 * until the next keyboard reset.
84 *
85 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
86 * fully operational during normal computer usage.
87 *
88 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
89 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
90 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
91 * power-up.
92 *
93 */
94//#define FORCE_NKRO
62 95
63/* key combination for command */ 96/* key combination for command */
64#define IS_COMMAND() ( \ 97#define IS_COMMAND() ( \
65 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) \ 98 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) \
66) 99)
67 100
101/* control how magic key switches layers */
102//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
103//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
104//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
105
106/* override magic key keymap */
107//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
108//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
109//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
110//#define MAGIC_KEY_HELP1 H
111//#define MAGIC_KEY_HELP2 SLASH
112//#define MAGIC_KEY_DEBUG D
113//#define MAGIC_KEY_DEBUG_MATRIX X
114//#define MAGIC_KEY_DEBUG_KBD K
115//#define MAGIC_KEY_DEBUG_MOUSE M
116//#define MAGIC_KEY_VERSION V
117//#define MAGIC_KEY_STATUS S
118//#define MAGIC_KEY_CONSOLE C
119//#define MAGIC_KEY_LAYER0_ALT1 ESC
120//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
121//#define MAGIC_KEY_LAYER0 0
122//#define MAGIC_KEY_LAYER1 1
123//#define MAGIC_KEY_LAYER2 2
124//#define MAGIC_KEY_LAYER3 3
125//#define MAGIC_KEY_LAYER4 4
126//#define MAGIC_KEY_LAYER5 5
127//#define MAGIC_KEY_LAYER6 6
128//#define MAGIC_KEY_LAYER7 7
129//#define MAGIC_KEY_LAYER8 8
130//#define MAGIC_KEY_LAYER9 9
131//#define MAGIC_KEY_BOOTLOADER PAUSE
132//#define MAGIC_KEY_LOCK CAPS
133//#define MAGIC_KEY_EEPROM E
134//#define MAGIC_KEY_NKRO N
135//#define MAGIC_KEY_SLEEP_LED Z
136
68/* 137/*
69 * Feature disable options 138 * Feature disable options
70 * These options are also useful to firmware size reduction. 139 * These options are also useful to firmware size reduction.
71 */ 140 */
72 141
73/* disable debug print */ 142/* disable debug print */
74//#define NO_DEBUG 143// #define NO_DEBUG
75 144
76/* disable print */ 145/* disable print */
77//#define NO_PRINT 146// #define NO_PRINT
78 147
79/* disable action features */ 148/* disable action features */
80//#define NO_ACTION_LAYER 149//#define NO_ACTION_LAYER
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/config.h b/keyboards/handwired/promethium/keymaps/priyadi/config.h
index 8b78c0dc4..53059ca7d 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/config.h
+++ b/keyboards/handwired/promethium/keymaps/priyadi/config.h
@@ -14,4 +14,11 @@
14#define RGB_DI_PIN B5 14#define RGB_DI_PIN B5
15#define RGBSPS_NUM 57 15#define RGBSPS_NUM 57
16 16
17#define LAYOUT_DVORAK
18#define LAYOUT_COLEMAK
19#define LAYOUT_NORMAN
20#define LAYOUT_WORKMAN
21
22#define DOUBLESPACE_LAYER_ENABLE
23
17#endif 24#endif
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 7ae269563..1ad34612e 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -3,40 +3,75 @@
3 3
4#include "promethium.h" 4#include "promethium.h"
5#include "action_layer.h" 5#include "action_layer.h"
6#ifdef AUDIO_ENABLE
7 #include "audio.h"
8 #include "musical_notes.h"
9#endif
10#include "eeconfig.h" 6#include "eeconfig.h"
11#include "process_unicode.h" 7#include "process_unicode.h"
12#include "quantum.h" 8#include "quantum.h"
13#include "rgbsps.h" 9#include "rgbsps.h"
14#include "ps2_mouse.h" 10#include "ps2_mouse.h"
15#include "ps2.h" 11#include "ps2.h"
12#include "outputselect.h"
13#include "led.h"
16#define COUNT(x) (sizeof (x) / sizeof (*(x))) 14#define COUNT(x) (sizeof (x) / sizeof (*(x)))
17 15
18// #define RGBLED_NUM 5 16// Fillers to make layering clearer
19// struct cRGB led[RGBLED_NUM]; 17#define _______ KC_TRNS
18#define XXXXXXX KC_NO
19#define G(x) LGUI(x)
20#define KC_WWWB KC_WWW_BACK
21#define KC_WWWF KC_WWW_FORWARD
22
23// hybrid right-alt & scroll lock (mapped to Compose in OS)
24#undef KC_RALT
25#define KC_RALT MT(MOD_RALT, KC_SLCK)
26
27bool capslock = false;
28#ifdef DOUBLESPACE_LAYER_ENABLE
29bool lspace_active = false;
30bool rspace_active = false;
31bool lspace_emitted = false;
32bool rspace_emitted = false;
33bool space_layer_entered = false;
34#endif
20 35
36// glow
37enum glow_modes {
38 GLOW_NONE,
39 GLOW_MIN,
40 GLOW_FULL
41};
42uint8_t glow_mode = GLOW_MIN;
21 43
22extern keymap_config_t keymap_config; 44extern keymap_config_t keymap_config;
23 45
24enum layers { 46enum layers {
25 _QWERTY, 47 _QWERTY,
48 _DVORAK,
26 _COLEMAK, 49 _COLEMAK,
27 _WORKMAN, 50 _WORKMAN,
51 _NORMAN,
52
28 _PUNC, 53 _PUNC,
29 _NUM, 54 _NUM,
30 _FUNC, 55 _FUNC,
56
57 _GREEKU,
58 _GREEKL,
59
31 _EMOJI, 60 _EMOJI,
32 _GUI, 61 _GUI,
62 _SYS,
33}; 63};
34 64
65// double-space layer
66#define _SPACE _GUI
67
35enum planck_keycodes { 68enum planck_keycodes {
36 // layouts 69 // layouts
37 QWERTY = SAFE_RANGE, 70 QWERTY = SAFE_RANGE,
71 DVORAK,
38 COLEMAK, 72 COLEMAK,
39 WORKMAN, 73 WORKMAN,
74 NORMAN,
40 75
41 // layer switchers 76 // layer switchers
42 PUNC, 77 PUNC,
@@ -44,17 +79,19 @@ enum planck_keycodes {
44 FUNC, 79 FUNC,
45 EMOJI, 80 EMOJI,
46 GUI, 81 GUI,
82 GREEK,
47 83
48 // os switchers 84 // os switchers
49 LINUX, 85 LINUX,
50 WIN, 86 WIN,
51 OSX, 87 OSX,
52};
53 88
54// Fillers to make layering clearer 89 // others
55 90 LSPACE,
56#define _______ KC_TRNS 91 RSPACE,
57#define XXXXXXX KC_NO 92 GLOW,
93 AUDIO
94};
58 95
59// unicode map 96// unicode map
60 97
@@ -106,6 +143,59 @@ enum unicode_name {
106 SUN, // sun 143 SUN, // sun
107 MOON, // moon 144 MOON, // moon
108 SKULL, // skull 145 SKULL, // skull
146
147 // greek letters
148 UALPH,
149 UBETA,
150 UGAMM,
151 UDELT,
152 UEPSI,
153 UZETA,
154 UETA,
155 UTHET,
156 UIOTA,
157 UKAPP,
158 ULAMB,
159 UMU,
160 UNU,
161 UXI,
162 UOMIC,
163 UPI,
164 URHO,
165 USIGM,
166 UTAU,
167 UUPSI,
168 UPHI,
169 UCHI,
170 UPSI,
171 UOMEG,
172
173 LALPH,
174 LBETA,
175 LGAMM,
176 LDELT,
177 LEPSI,
178 LZETA,
179 LETA,
180 LTHET,
181 LIOTA,
182 LKAPP,
183 LLAMB,
184 LMU,
185 LNU,
186 LXI,
187 LOMIC,
188 LPI,
189 LRHO,
190 LSIGM,
191 LTAU,
192 LUPSI,
193 LPHI,
194 LCHI,
195 LPSI,
196 LOMEG,
197
198 FSIGM,
109}; 199};
110 200
111const uint32_t PROGMEM unicode_map[] = { 201const uint32_t PROGMEM unicode_map[] = {
@@ -156,19 +246,58 @@ const uint32_t PROGMEM unicode_map[] = {
156 [SUN] = 0x2600, 246 [SUN] = 0x2600,
157 [MOON] = 0x1F314, 247 [MOON] = 0x1F314,
158 [SKULL] = 0x1F480, 248 [SKULL] = 0x1F480,
159};
160
161 249
162// hybrid shift - = 250 // greek letters
163// #undef KC_LSFT 251 [UALPH] = 0x0391,
164// #define KC_LSFT MT(MOD_LSFT, KC_MINS) 252 [UBETA] = 0x0392,
165// #undef KC_RSFT 253 [UGAMM] = 0x0393,
166// #define KC_RSFT MT(MOD_LSFT, KC_EQL) 254 [UDELT] = 0x0394,
167 255 [UEPSI] = 0x0395,
168 256 [UZETA] = 0x0396,
169// hybrid right-gui & scroll lock (mapped to Compose in OS) 257 [UETA] = 0x0397,
170#undef KC_RCTL 258 [UTHET] = 0x0398,
171#define KC_RCTL MT(MOD_LCTL, KC_SLCK) 259 [UIOTA] = 0x0399,
260 [UKAPP] = 0x039A,
261 [ULAMB] = 0x039B,
262 [UMU] = 0x039C,
263 [UNU] = 0x039D,
264 [UXI] = 0x039E,
265 [UOMIC] = 0x039F,
266 [UPI] = 0x03A0,
267 [URHO] = 0x03A1,
268 [USIGM] = 0x03A3,
269 [UTAU] = 0x03A4,
270 [UUPSI] = 0x03A5,
271 [UPHI] = 0x03A6,
272 [UCHI] = 0x03A7,
273 [UPSI] = 0x03A8,
274 [UOMEG] = 0x03A9,
275 [LALPH] = 0x03B1,
276 [LBETA] = 0x03B2,
277 [LGAMM] = 0x03B3,
278 [LDELT] = 0x03B4,
279 [LEPSI] = 0x03B5,
280 [LZETA] = 0x03B6,
281 [LETA] = 0x03B7,
282 [LTHET] = 0x03B8,
283 [LIOTA] = 0x03B9,
284 [LKAPP] = 0x03BA,
285 [LLAMB] = 0x03BB,
286 [LMU] = 0x03BC,
287 [LNU] = 0x03BD,
288 [LXI] = 0x03BE,
289 [LOMIC] = 0x03BF,
290 [LPI] = 0x03C0,
291 [LRHO] = 0x03C1,
292 [LSIGM] = 0x03C3,
293 [LTAU] = 0x03C4,
294 [LUPSI] = 0x03C5,
295 [LPHI] = 0x03C6,
296 [LCHI] = 0x03C7,
297 [LPSI] = 0x03C8,
298 [LOMEG] = 0x03C9,
299 [FSIGM] = 0x03C2,
300};
172 301
173// RGBSPS 302// RGBSPS
174 303
@@ -207,6 +336,17 @@ const uint8_t PROGMEM LED_ALNUM[] = {
207 LED_RSPC 336 LED_RSPC
208}; 337};
209 338
339const uint8_t PROGMEM LED_HOMING[] = {
340 LED_A,
341 LED_S,
342 LED_D,
343 LED_F,
344 LED_J,
345 LED_K,
346 LED_L,
347 LED_SCLN
348};
349
210const uint8_t PROGMEM LED_MODS[] = { 350const uint8_t PROGMEM LED_MODS[] = {
211 LED_TAB, 351 LED_TAB,
212 LED_ESC, 352 LED_ESC,
@@ -244,149 +384,105 @@ const uint8_t PROGMEM LED_TRACKPOINT[] = {
244 LED_TRACKPOINT3, 384 LED_TRACKPOINT3,
245}; 385};
246 386
247void led_reset(void) { 387void led_turnoff_keys(void) {
248 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { 388 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
249 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 15, 6, 0); 389 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0);
250 } 390 }
251
252 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { 391 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
253 rgbsps_set(pgm_read_byte(&LED_MODS[i]), 15, 0, 0); 392 rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 0, 0);
254 } 393 }
255
256 for(uint8_t i = 0; i < COUNT(LED_FN); i++) { 394 for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
257 rgbsps_set(pgm_read_byte(&LED_FN[i]), 15, 15, 15); 395 rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 0);
258 } 396 }
259} 397}
260 398
261void led_layer_normal(void) { 399void led_reset(void) {
262 rgbsps_set(LED_IND_FUNC, 0, 0, 0); 400 switch (glow_mode) {
263 rgbsps_set(LED_IND_NUM, 0, 0, 0); 401 case GLOW_NONE:
264 rgbsps_set(LED_IND_EMOJI, 0, 0, 0); 402 led_turnoff_keys();
265 403 break;
266 led_reset(); 404 case GLOW_MIN:
267 405 led_turnoff_keys();
268 rgbsps_send(); 406 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
269} 407 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 8, 8, 8);
270 408 }
271void led_layer_func(void) { 409 rgbsps_set(LED_F, 15, 0, 0);
272 rgbsps_set(LED_IND_FUNC, 0, 15, 0); 410 rgbsps_set(LED_J, 15, 0, 0);
273 rgbsps_set(LED_IND_NUM, 0, 0, 0); 411 break;
274 rgbsps_set(LED_IND_EMOJI, 0, 0, 0); 412 case GLOW_FULL:
275 413 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
276 led_reset(); 414 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 8, 8, 8);
277 415 }
278 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { 416 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
279 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0); 417 rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 15, 0);
418 }
419 for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
420 rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 15);
421 }
422 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
423 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 15, 0, 0);
424 }
425 rgbsps_set(LED_F, 15, 15, 0);
426 rgbsps_set(LED_J, 15, 15, 0);
427 break;
280 } 428 }
281
282 rgbsps_set(LED_I, 15, 0, 15);
283 rgbsps_set(LED_J, 15, 0, 15);
284 rgbsps_set(LED_K, 15, 0, 15);
285 rgbsps_set(LED_L, 15, 0, 15);
286
287 rgbsps_set(LED_U, 15, 0, 0);
288 rgbsps_set(LED_O, 15, 0, 0);
289 rgbsps_set(LED_COMM, 15, 0, 0);
290 rgbsps_set(LED_DOT, 15, 0, 0);
291 rgbsps_set(LED_SCLN, 15, 0, 0);
292 rgbsps_set(LED_P, 15, 0, 0);
293
294 rgbsps_set(LED_Q, 0, 15, 0);
295 rgbsps_set(LED_W, 0, 15, 0);
296 rgbsps_set(LED_E, 0, 15, 0);
297 rgbsps_set(LED_R, 0, 15, 0);
298 rgbsps_set(LED_A, 0, 15, 0);
299 rgbsps_set(LED_S, 0, 15, 0);
300 rgbsps_set(LED_D, 0, 15, 0);
301 rgbsps_set(LED_F, 0, 15, 0);
302 rgbsps_set(LED_Z, 0, 15, 0);
303 rgbsps_set(LED_X, 0, 15, 0);
304 rgbsps_set(LED_C, 0, 15, 0);
305 rgbsps_set(LED_V, 0, 15, 0);
306
307 rgbsps_send();
308} 429}
309 430
310void led_layer_punc(void) { 431void led_set_layer_indicator(void) {
311 rgbsps_set(LED_IND_FUNC, 0, 15, 0); 432 static uint8_t oldlayer = 255;
312 rgbsps_set(LED_IND_NUM, 0, 0, 15);
313 rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
314
315 led_reset();
316
317 rgbsps_send();
318}
319 433
320void led_layer_num(void) {
321 rgbsps_set(LED_IND_FUNC, 0, 0, 0); 434 rgbsps_set(LED_IND_FUNC, 0, 0, 0);
322 rgbsps_set(LED_IND_NUM, 0, 0, 15); 435 // rgbsps_set(LED_IND_NUM, 0, 0, 0);
323 rgbsps_set(LED_IND_EMOJI, 0, 0, 0); 436 rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
324 437
325 led_reset(); 438 led_reset();
326 439
327 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { 440 uint8_t layer = biton32(layer_state);
328 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0); 441 if (oldlayer == layer) {
442 return;
329 } 443 }
330 444
331 rgbsps_set(LED_U, 0, 5, 15); 445 oldlayer = layer;
332 rgbsps_set(LED_I, 0, 5, 15);
333 rgbsps_set(LED_O, 0, 5, 15);
334 rgbsps_set(LED_J, 0, 5, 15);
335 rgbsps_set(LED_K, 0, 5, 15);
336 rgbsps_set(LED_L, 0, 5, 15);
337 rgbsps_set(LED_M, 0, 5, 15);
338 rgbsps_set(LED_COMM, 0, 5, 15);
339 rgbsps_set(LED_DOT, 0, 5, 15);
340 rgbsps_set(LED_FUNC, 0, 5, 15);
341
342 rgbsps_set(LED_EMOJI, 0, 10, 15);
343 rgbsps_set(LED_RALT, 0, 10, 15);
344
345 rgbsps_set(LED_Q, 0, 10, 15);
346 rgbsps_set(LED_W, 0, 10, 15);
347 rgbsps_set(LED_E, 0, 10, 15);
348 rgbsps_set(LED_R, 0, 10, 15);
349 rgbsps_set(LED_T, 0, 10, 15);
350 rgbsps_set(LED_Y, 0, 10, 15);
351 rgbsps_set(LED_P, 0, 10, 15);
352
353 rgbsps_set(LED_A, 0, 15, 15);
354 rgbsps_set(LED_S, 0, 15, 15);
355 rgbsps_set(LED_D, 0, 15, 15);
356 rgbsps_set(LED_F, 0, 15, 15);
357 rgbsps_set(LED_Z, 0, 15, 15);
358 rgbsps_set(LED_X, 0, 15, 15);
359 rgbsps_set(LED_C, 0, 15, 15);
360 rgbsps_set(LED_V, 0, 15, 15);
361
362 rgbsps_send();
363}
364 446
365void led_layer_emoji(void) { 447 if (layer <= _NORMAN) {
366 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { 448 rgbsps_send();
367 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 15, 15, 0); 449 return;
368 }
369 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
370 rgbsps_set(pgm_read_byte(&LED_MODS[i]), 15, 15, 0);
371 } 450 }
372 for(uint8_t i = 0; i < COUNT(LED_FN); i++) { 451
373 rgbsps_set(pgm_read_byte(&LED_FN[i]), 15, 15, 0); 452 switch(layer) {
453 case _FUNC:
454 rgbsps_set(LED_IND_FUNC, 15, 0, 0);
455 break;
456 // case _NUM:
457 // rgbsps_set(LED_IND_NUM, 0, 0, 15);
458 // break;
459 case _EMOJI:
460 rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
461 break;
462 default:
463 rgbsps_set(LED_IND_FUNC, 3, 3, 3);
464 rgbsps_set(LED_IND_NUM, 3, 3, 3);
465 rgbsps_set(LED_IND_EMOJI, 3, 3, 3);
374 } 466 }
375 467
376 rgbsps_set(LED_IND_FUNC, 0, 0, 0); 468 rgbsps_send();
377 rgbsps_set(LED_IND_NUM, 0, 0, 0); 469}
378 rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
379 470
380 rgbsps_set(LED_PUNC, 15, 15, 15); 471void led_set_output_ble(void) {
381 rgbsps_set(LED_EMOJI, 15, 15, 15); 472 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15);
473 rgbsps_set(LED_IND_USB, 0, 0, 0);
474 rgbsps_send();
475}
382 476
477void led_set_output_usb(void) {
478 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0);
479 rgbsps_set(LED_IND_USB, 15, 15, 15);
383 rgbsps_send(); 480 rgbsps_send();
384} 481}
385 482
386void led_layer_gui(void) { 483void led_set_output_none(void) {
387 rgbsps_set(LED_IND_FUNC, 15, 10, 15); 484 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0);
388 rgbsps_set(LED_IND_NUM, 15, 10, 15); 485 rgbsps_set(LED_IND_USB, 0, 0, 0);
389 rgbsps_set(LED_IND_EMOJI, 15, 10, 15);
390 rgbsps_send(); 486 rgbsps_send();
391} 487}
392 488
@@ -398,13 +494,6 @@ void led_init(void) {
398 rgbsps_set(LED_TRACKPOINT1, 15, 0, 0); 494 rgbsps_set(LED_TRACKPOINT1, 15, 0, 0);
399 rgbsps_set(LED_TRACKPOINT2, 0, 0, 15); 495 rgbsps_set(LED_TRACKPOINT2, 0, 0, 15);
400 rgbsps_set(LED_TRACKPOINT3, 15, 0, 0); 496 rgbsps_set(LED_TRACKPOINT3, 15, 0, 0);
401
402 // // hardcode indicator for now
403 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15);
404 rgbsps_set(LED_IND_USB, 15, 15, 15);
405 rgbsps_set(LED_IND_BATTERY, 0, 15, 0);
406
407 led_layer_normal();
408} 497}
409 498
410 499
@@ -416,20 +505,40 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
416 * ,-----------------------------------------------------------------------------------. 505 * ,-----------------------------------------------------------------------------------.
417 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | 506 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
418 * |------+------+------+------+------+-------------+------+------+------+------+------| 507 * |------+------+------+------+------+-------------+------+------+------+------+------|
419 * | Esc | A | S | D | F | G | H | J | K | L | ; |Enter | 508 * | Esc | A | S | D | F | G | H | J | K | L | ' |Enter |
420 * |------+------+------+------+------+------|------+------+------+------+------+------| 509 * |------+------+------+------+------+------|------+------+------+------+------+------|
421 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift | 510 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
422 * |------+------+------+------+------+------+------+------+------+------+------+------| 511 * |------+------+------+------+------+------+------+------+------+------+------+------|
423 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl | 512 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
424 * `-----------------------------------------------------------------------------------' 513 * `-----------------------------------------------------------------------------------'
425 */ 514 */
426[_QWERTY] = KEYMAP( 515[_QWERTY] = KEYMAP(
427 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 516 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
428 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT , 517 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT ,
429 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, 518 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
430 KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL 519 KC_LCTL, KC_LALT, KC_LGUI, PUNC, NUM, LSPACE, RSPACE, FUNC, GREEK, KC_RGUI, KC_RALT, KC_RCTL
431), 520),
432 521
522/* Dvorak
523 * ,-----------------------------------------------------------------------------------.
524 * | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
525 * |------+------+------+------+------+-------------+------+------+------+------+------|
526 * | Esc | A | O | E | U | I | D | H | T | N | S |Enter |
527 * |------+------+------+------+------+------|------+------+------+------+------+------|
528 * | Shift| / | Q | J | K | X | B | M | W | V | Z |Shift |
529 * |------+------+------+------+------+------+------+------+------+------+------+------|
530 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
531 * `-----------------------------------------------------------------------------------'
532 */
533#ifdef LAYOUT_DVORAK
534[_DVORAK] = KEYMAP(
535 _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______,
536 _______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______,
537 _______, KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______,
538 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
539),
540#endif
541
433/* Colemak 542/* Colemak
434 * ,-----------------------------------------------------------------------------------. 543 * ,-----------------------------------------------------------------------------------.
435 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | 544 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
@@ -438,15 +547,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
438 * |------+------+------+------+------+------|------+------+------+------+------+------| 547 * |------+------+------+------+------+------|------+------+------+------+------+------|
439 * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | 548 * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
440 * |------+------+------+------+------+------+------+------+------+------+------+------| 549 * |------+------+------+------+------+------+------+------+------+------+------+------|
441 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl | 550 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
442 * `-----------------------------------------------------------------------------------' 551 * `-----------------------------------------------------------------------------------'
443 */ 552 */
553
554#ifdef LAYOUT_COLEMAK
444[_COLEMAK] = KEYMAP( 555[_COLEMAK] = KEYMAP(
445 _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______, 556 _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______,
446 _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______, 557 _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______,
447 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, 558 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
448 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 559 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
449), 560),
561#endif
562
563/* Norman
564 * ,-----------------------------------------------------------------------------------.
565 * | Tab | Q | W | D | F | K | J | U | R | L | ; | Bksp |
566 * |------+------+------+------+------+-------------+------+------+------+------+------|
567 * | Esc | A | S | E | T | G | Y | N | I | O | H |Enter |
568 * |------+------+------+------+------+------|------+------+------+------+------+------|
569 * | Shift| Z | X | C | V | B | P | M | , | . | / |Shift |
570 * |------+------+------+------+------+------+------+------+------+------+------+------|
571 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
572 * `-----------------------------------------------------------------------------------'
573 */
574
575#ifdef LAYOUT_NORMAN
576[_NORMAN] = KEYMAP(
577 _______, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_QUOT, _______,
578 _______, KC_A, KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H, _______,
579 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
580 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
581),
582#endif
450 583
451/* Workman 584/* Workman
452 * ,-----------------------------------------------------------------------------------. 585 * ,-----------------------------------------------------------------------------------.
@@ -456,50 +589,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
456 * |------+------+------+------+------+------|------+------+------+------+------+------| 589 * |------+------+------+------+------+------|------+------+------+------+------+------|
457 * | Shift| Z | X | M | C | V | K | K | , | . | / |Shift | 590 * | Shift| Z | X | M | C | V | K | K | , | . | / |Shift |
458 * |------+------+------+------+------+------+------+------+------+------+------+------| 591 * |------+------+------+------+------+------+------+------+------+------+------+------|
459 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl | 592 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
460 * `-----------------------------------------------------------------------------------' 593 * `-----------------------------------------------------------------------------------'
461 */ 594 */
595
596#ifdef LAYOUT_WORKMAN
462[_WORKMAN] = KEYMAP( 597[_WORKMAN] = KEYMAP(
463 _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______, 598 _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______,
464 _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______, 599 _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______,
465 _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______, 600 _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______,
466 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 601 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
467), 602),
603#endif
468 604
469/* Punc 605/* Punc
470 * ,-----------------------------------------------------------------------------------. 606 * ,-----------------------------------------------------------------------------------.
471 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` | 607 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` |
472 * |------+------+------+------+------+-------------+------+------+------+------+------| 608 * |------+------+------+------+------+-------------+------+------+------+------+------|
473 * | | | \ | - | = | < | > | ( | ) | ' | | | 609 * | | * | \ | - | = | / | | ( | ) | < | > | |
474 * |------+------+------+------+------+------|------+------+------+------+------+------| 610 * |------+------+------+------+------+------|------+------+------+------+------+------|
475 * | | | | | _ | + | { | } | [ | ] | " | | | 611 * | & | ^ | | | _ | + | ? | | [ | ] | { | } | : |
476 * |------+------+------+------+------+------+------+------+------+------+------+------| 612 * |------+------+------+------+------+------+------+------+------+------+------+------|
477 * | | | | | | | | | | | | 613 * | | | | | | | | | | | |
478 * `-----------------------------------------------------------------------------------' 614 * `-----------------------------------------------------------------------------------'
479 */ 615 */
480[_PUNC] = KEYMAP( 616[_PUNC] = KEYMAP(
481 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV , 617 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV ,
482 XXXXXXX, XXXXXXX, KC_BSLS, KC_MINS, KC_EQL, KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_QUOT, XXXXXXX, XXXXXXX, 618 XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, XXXXXXX,
483 XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_DQUO, XXXXXXX, XXXXXXX, 619 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_COLN,
484 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 620 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
485), 621),
486 622
487/* Num 623/* Num
488 * ,-----------------------------------------------------------------------------------. 624 * ,-----------------------------------------------------------------------------------.
489 * | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | 625 * | ~ | ! | @ | # | $ | % | A | 7 | 8 | 9 | D | ` |
490 * |------+------+------+------+------+-------------+------+------+------+------+------| 626 * |------+------+------+------+------+-------------+------+------+------+------+------|
491 * | Esc | @ | A | B | C | ( | ) | 4 | 5 | 6 | : |Enter | 627 * | | * | \ | - | = | / | B | 4 | 5 | 6 | E | |
492 * |------+------+------+------+------+------|------+------+------+------+------+------| 628 * |------+------+------+------+------+------|------+------+------+------+------+------|
493 * | & | # | D | E | F | [ | ] | 1 | 2 | 3 | / | * | 629 * | & | ^ | | | _ | + | ? | C | 1 | 2 | 3 | F | : |
494 * |------+------+------+------+------+------+------+------+------+------+------+------| 630 * |------+------+------+------+------+------+------+------+------+------+------+------|
495 * | | | | x | | | 0 | , | . | + | - | 631 * | | | | | | | x | 0 | , | . | | |
496 * `-----------------------------------------------------------------------------------' 632 * `-----------------------------------------------------------------------------------'
497 */ 633 */
498[_NUM] = KEYMAP( 634[_NUM] = KEYMAP(
499 KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, 635 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,
500 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, 636 XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
501 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, 637 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,
502 _______, _______, _______, KC_X, _______, KC_SPC, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_MINS 638 _______, _______, _______, _______, _______, _______, _______, KC_0, KC_COMM, KC_DOT, KC_X, _______
503), 639),
504 640
505/* Func 641/* Func
@@ -520,6 +656,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
520 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 656 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
521), 657),
522 658
659/* Uppercase Greek
660 * ,-----------------------------------------------------------------------------------.
661 * | | | | | | | | | | | | |
662 * |------+------+------+------+------+-------------+------+------+------+------+------|
663 * | | | | | | | | | | | | |
664 * |------+------+------+------+------+------+------+------+------+------+------+------|
665 * | | | | | | | | | | | | |
666 * |------+------+------+------+------+------+------+------+------+------+------+------|
667 * | | | | | | | | | | | | |
668 * `-----------------------------------------------------------------------------------'
669 */
670[_GREEKU] = KEYMAP(
671 _______, _______, _______,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______,
672 _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), _______, _______,
673 _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), _______, _______, _______, _______,
674 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
675),
676
677/* Lowercase Greek
678 * ,-----------------------------------------------------------------------------------.
679 * | | | | | | | | | | | | |
680 * |------+------+------+------+------+-------------+------+------+------+------+------|
681 * | | | | | | | | | | | | |
682 * |------+------+------+------+------+------+------+------+------+------+------+------|
683 * | | | | | | | | | | | | |
684 * |------+------+------+------+------+------+------+------+------+------+------+------|
685 * | | | | | | | | | | | | |
686 * `-----------------------------------------------------------------------------------'
687 */
688[_GREEKL] = KEYMAP(
689 _______, _______,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______,
690 _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), _______, _______,
691 _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), _______, _______, _______, _______,
692 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
693),
694
523/* Emoji 695/* Emoji
524 * ,-----------------------------------------------------------------------------------. 696 * ,-----------------------------------------------------------------------------------.
525 * | | | | | | | | | | | | | 697 * | | | | | | | | | | | | |
@@ -535,40 +707,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
535 X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW), 707 X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW),
536 X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS), 708 X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS),
537 X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH), 709 X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH),
538 X(POO), X(EYES),X(HUNRD), _______,X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK) 710 X(POO), X(EYES), _______,X(HUNRD), X(SKULL),X(HORNS), X(HALO), X(FEAR),X(YUMMY),_______,X(DISAP),X(NOEVK)
539), 711),
540 712
541/* GUI 713/* GUI
542 * ,-----------------------------------------------------------------------------------. 714 * ,-----------------------------------------------------------------------------------.
543 * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | | 715 * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | |
544 * |------+------+------+------+------+-------------+------+------+------+------+------| 716 * |------+------+------+------+------+-------------+------+------+------+------+------|
545 * |Linux | | Vol- | Mute | Vol+ | | | D- | | D+ | |Qwerty| 717 * | | | Vol- | Mute | Vol+ | | | Prev | | Next | | |
546 * |------+------+------+------+------+------+------+------+------+------+------+------| 718 * |------+------+------+------+------+------+------+------+------+------+------+------|
547 * | Win | | Prev | Play | Next | | | | | | |Colmak| 719 * | | | Prev | Play | Next | | | | | | | |
548 * |------+------+------+------+------+------+------+------+------+------+------+------| 720 * |------+------+------+------+------+------+------+------+------+------+------+------|
549 * | OSX | | | | | BL- | BL+ | | | | |Workmn| 721 * | | | | | | | | | | | | |
550 * `-----------------------------------------------------------------------------------' 722 * `-----------------------------------------------------------------------------------'
551 */ 723 */
552[_GUI] = KEYMAP( 724[_GUI] = KEYMAP(
553 _______, 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), _______, 725 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,
554 LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,KC_PAUS, QWERTY, 726 XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
555 WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, COLEMAK, 727 XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_SPC, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
556 OSX, _______, _______, _______, _______, BL_DEC, BL_INC, _______, _______, RGB_VAI, RGB_VAD, WORKMAN 728 XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
557), 729),
558 730
559}; 731/* Sys
732 * ,-----------------------------------------------------------------------------------.
733 * | |Qwerty| Win | |Reset | | | USB | | | | |
734 * |------+------+------+------+------+-------------+------+------+------+------+------|
735 * | |Audio | |Dvorak| | Glow | | |WorkMn|Linux | | |
736 * |------+------+------+------+------+------+------+------+------+------+------+------|
737 * | | | |Colmak| | BLE |Norman|MacOS | | | | |
738 * |------+------+------+------+------+------+------+------+------+------+------+------|
739 * | | | | | | | | | | | | |
740 * `-----------------------------------------------------------------------------------'
741 */
742[_SYS] = KEYMAP(
743 XXXXXXX, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
744 XXXXXXX, AUDIO, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX,
745 XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BLE, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
746 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
747),
560 748
561#ifdef AUDIO_ENABLE 749};
562float tone_startup[][2] = SONG(STARTUP_SOUND);
563float tone_qwerty[][2] = SONG(QWERTY_SOUND);
564float tone_colemak[][2] = SONG(COLEMAK_SOUND);
565float tone_workman[][2] = SONG(DVORAK_SOUND);
566float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
567float tone_linux[][2] = SONG(CAPS_LOCK_ON_SOUND);
568float tone_windows[][2] = SONG(SCROLL_LOCK_ON_SOUND);
569float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND);
570float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2));
571#endif
572 750
573void persistant_default_layer_set(uint16_t default_layer) { 751void persistant_default_layer_set(uint16_t default_layer) {
574 eeconfig_update_default_layer(default_layer); 752 eeconfig_update_default_layer(default_layer);
@@ -576,24 +754,140 @@ void persistant_default_layer_set(uint16_t default_layer) {
576} 754}
577 755
578bool process_record_user(uint16_t keycode, keyrecord_t *record) { 756bool process_record_user(uint16_t keycode, keyrecord_t *record) {
579 #ifdef AUDIO_ENABLE 757 bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT);
580 // faux clicky 758 bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT);
581 if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); 759
582 #endif 760#ifdef DOUBLESPACE_LAYER_ENABLE
761 // double-space: send space immediately if any other key depressed before space is released
762 if ((lspace_active ^ rspace_active)
763 && keycode != LSPACE
764 && keycode != RSPACE
765 && record->event.pressed)
766 {
767 if (lspace_active) {
768 if (!lspace_emitted) {
769 register_code(KC_SPC);
770 unregister_code(KC_SPC);
771 }
772 lspace_emitted = true;
773 }
774 if (rspace_active) {
775 if (!rspace_emitted) {
776 register_code(KC_SPC);
777 unregister_code(KC_SPC);
778 }
779 rspace_emitted = true;
780 }
781 }
782#endif
583 783
584 switch (keycode) { 784 switch (keycode) {
785
786#ifdef DOUBLESPACE_LAYER_ENABLE
787 // double-space enter space layer
788 case LSPACE:
789 if (record->event.pressed) {
790 lspace_active = true;
791 if (rspace_active) {
792 layer_on(_SPACE);
793 space_layer_entered = true;
794 }
795 } else {
796 lspace_active = false;
797 if (space_layer_entered) {
798 layer_off(_SPACE);
799 if (!rspace_active) {
800 space_layer_entered = false;
801 }
802 } else {
803 if (!lspace_emitted) {
804 register_code(KC_SPC);
805 unregister_code(KC_SPC);
806 }
807 lspace_emitted = false;
808 }
809 }
810 return false;
811 break;
812 case RSPACE:
813 if (record->event.pressed) {
814 rspace_active = true;
815 if (lspace_active) {
816 layer_on(_SPACE);
817 space_layer_entered = true;
818 }
819 } else {
820 rspace_active = false;
821 if (space_layer_entered) {
822 layer_off(_SPACE);
823 if (!lspace_active) {
824 space_layer_entered = false;
825 }
826 } else {
827 if (!rspace_emitted) {
828 register_code(KC_SPC);
829 unregister_code(KC_SPC);
830 }
831 rspace_emitted = false;
832 }
833 }
834 return false;
835 break;
836#endif
837
838 // handle greek layer shift
839 // handle both shift = capslock
840 case KC_LSFT:
841 case KC_RSFT:
842 ;
843 uint8_t layer = biton32(layer_state);
844 if (layer == _GREEKU || layer == _GREEKL) {
845 if (record->event.pressed) {
846 layer_on(_GREEKU);
847 layer_off(_GREEKL);
848 } else {
849 if (lshift ^ rshift) { // if only one shift was pressed
850 layer_on(_GREEKL);
851 layer_off(_GREEKU);
852 }
853 }
854 } else {
855 if (record->event.pressed) {
856 if (lshift ^ rshift) { // if only one shift was pressed
857 register_code(KC_CAPS);
858 unregister_code(KC_CAPS);
859 }
860 }
861 }
862 return true;
863 break;
864
865 // press both ctrls to activate SYS layer
866 case KC_LCTL:
867 case KC_RCTL:
868 ;
869 bool lctrl = keyboard_report->mods & MOD_BIT(KC_LCTL);
870 bool rctrl = keyboard_report->mods & MOD_BIT(KC_RCTL);
871 if (record->event.pressed) {
872 if (lctrl ^ rctrl) { // if only one ctrl was pressed
873 layer_on(_SYS);
874 }
875 } else {
876 layer_off(_SYS);
877 }
878 return true;
879 break;
880
585 // QWERTZ style comma and dot: semicolon and colon when shifted 881 // QWERTZ style comma and dot: semicolon and colon when shifted
586 case KC_COMM: 882 case KC_COMM:
587 if (record->event.pressed) { 883 if (record->event.pressed) {
588 bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT); 884 if (lshift || rshift) {
589 bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT); 885 if (lshift) unregister_code(KC_LSFT);
590 if (lshifted || rshifted) { 886 if (rshift) unregister_code(KC_RSFT);
591 if (lshifted) unregister_code(KC_LSFT);
592 if (rshifted) unregister_code(KC_RSFT);
593 register_code(KC_SCLN); 887 register_code(KC_SCLN);
594 unregister_code(KC_SCLN); 888 unregister_code(KC_SCLN);
595 if (lshifted) register_code(KC_LSFT); 889 if (lshift) register_code(KC_LSFT);
596 if (rshifted) register_code(KC_RSFT); 890 if (rshift) register_code(KC_RSFT);
597 } else { 891 } else {
598 register_code(KC_COMM); 892 register_code(KC_COMM);
599 unregister_code(KC_COMM); 893 unregister_code(KC_COMM);
@@ -617,90 +911,88 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
617 // layout switchers 911 // layout switchers
618 case QWERTY: 912 case QWERTY:
619 if (record->event.pressed) { 913 if (record->event.pressed) {
620 #ifdef AUDIO_ENABLE
621 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
622 #endif
623 persistant_default_layer_set(1UL<<_QWERTY); 914 persistant_default_layer_set(1UL<<_QWERTY);
624 } 915 }
625 return false; 916 return false;
626 break; 917 break;
918#ifdef LAYOUT_DVORAK
919 case DVORAK:
920 if (record->event.pressed) {
921 persistant_default_layer_set(1UL<<_DVORAK);
922 }
923 return false;
924 break;
925#endif
926#ifdef LAYOUT_COLEMAK
627 case COLEMAK: 927 case COLEMAK:
628 if (record->event.pressed) { 928 if (record->event.pressed) {
629 #ifdef AUDIO_ENABLE
630 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
631 #endif
632 persistant_default_layer_set(1UL<<_COLEMAK); 929 persistant_default_layer_set(1UL<<_COLEMAK);
633 } 930 }
634 return false; 931 return false;
635 break; 932 break;
933#endif
934#ifdef LAYOUT_WORKMAN
636 case WORKMAN: 935 case WORKMAN:
637 if (record->event.pressed) { 936 if (record->event.pressed) {
638 #ifdef AUDIO_ENABLE
639 PLAY_NOTE_ARRAY(tone_workman, false, 0);
640 #endif
641 persistant_default_layer_set(1UL<<_WORKMAN); 937 persistant_default_layer_set(1UL<<_WORKMAN);
642 } 938 }
643 return false; 939 return false;
644 break; 940 break;
941#endif
942#ifdef LAYOUT_NORMAN
943 case NORMAN:
944 if (record->event.pressed) {
945 persistant_default_layer_set(1UL<<_NORMAN);
946 }
947 return false;
948 break;
949#endif
645 950
646 // layer switcher 951 // layer switcher
647 case PUNC: 952 case PUNC:
648 if (record->event.pressed) { 953 if (record->event.pressed) {
649 layer_on(_PUNC); 954 layer_on(_PUNC);
650 update_tri_layer(_PUNC, _EMOJI, _GUI); 955 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
651 if (IS_LAYER_ON(_GUI)) {
652 led_layer_gui();
653 } else {
654 led_layer_punc();;
655 }
656 } else { 956 } else {
657 layer_off(_PUNC); 957 layer_off(_PUNC);
658 update_tri_layer(_PUNC, _EMOJI, _GUI); 958 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
659 if (IS_LAYER_ON(_EMOJI)) {
660 led_layer_emoji();
661 } else {
662 led_layer_normal();;
663 }
664 } 959 }
665 return false; 960 return false;
666 break; 961 break;
667 case EMOJI: 962
963 case GREEK:
668 if (record->event.pressed) { 964 if (record->event.pressed) {
669 layer_on(_EMOJI); 965 if (lshift || rshift) {
670 update_tri_layer(_PUNC, _EMOJI, _GUI); 966 layer_on(_GREEKU);
671 if (IS_LAYER_ON(_GUI)) { 967 layer_off(_GREEKL);
672 led_layer_gui();
673 } else { 968 } else {
674 led_layer_emoji();; 969 layer_on(_GREEKL);
970 layer_off(_GREEKU);
971 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
675 } 972 }
676 } else { 973 } else {
677 layer_off(_EMOJI); 974 layer_off(_GREEKU);
678 update_tri_layer(_PUNC, _EMOJI, _GUI); 975 layer_off(_GREEKL);
679 if (IS_LAYER_ON(_PUNC)) { 976 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
680 led_layer_punc();
681 } else {
682 led_layer_normal();;
683 }
684 } 977 }
685 return false; 978 return false;
686 break; 979 break;
980
687 case NUM: 981 case NUM:
688 if (record->event.pressed) { 982 if (record->event.pressed) {
983 turn_off_capslock();
689 layer_on(_NUM); 984 layer_on(_NUM);
690 led_layer_num();
691 } else { 985 } else {
692 layer_off(_NUM); 986 layer_off(_NUM);
693 led_layer_normal();
694 } 987 }
695 return false; 988 return false;
696 break; 989 break;
990
697 case FUNC: 991 case FUNC:
698 if (record->event.pressed) { 992 if (record->event.pressed) {
699 layer_on(_FUNC); 993 layer_on(_FUNC);
700 led_layer_func();
701 } else { 994 } else {
702 layer_off(_FUNC); 995 layer_off(_FUNC);
703 led_layer_normal();
704 } 996 }
705 return false; 997 return false;
706 break; 998 break;
@@ -708,86 +1000,115 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
708 // OS switchers 1000 // OS switchers
709 case LINUX: 1001 case LINUX:
710 set_unicode_input_mode(UC_LNX); 1002 set_unicode_input_mode(UC_LNX);
711 #ifdef AUDIO_ENABLE
712 PLAY_NOTE_ARRAY(tone_linux, false, 0);
713 #endif
714 return false; 1003 return false;
715 break; 1004 break;
716 case WIN: 1005 case WIN:
717 set_unicode_input_mode(UC_WINC); 1006 set_unicode_input_mode(UC_WINC);
718 #ifdef AUDIO_ENABLE
719 PLAY_NOTE_ARRAY(tone_windows, false, 0);
720 #endif
721 return false; 1007 return false;
722 break; 1008 break;
723 case OSX: 1009 case OSX:
724 set_unicode_input_mode(UC_OSX); 1010 set_unicode_input_mode(UC_OSX);
725 #ifdef AUDIO_ENABLE 1011 return false;
726 PLAY_NOTE_ARRAY(tone_osx, false, 0); 1012 break;
727 #endif 1013
1014 // glow mode changer
1015 case GLOW:
1016 if (record->event.pressed) {
1017 glow_mode++;
1018 if (glow_mode > GLOW_FULL) {
1019 glow_mode = GLOW_NONE;
1020 }
1021 led_reset();
1022 rgbsps_send();
1023 }
1024 return false;
1025 break;
1026
1027 // faux clicky toggle, TBD
1028 case AUDIO:
728 return false; 1029 return false;
729 break; 1030 break;
730 } 1031 }
731 return true; 1032 return true;
732} 1033}
733 1034
734void matrix_init_user(void) { 1035void set_output_user(uint8_t output) {
735 #ifdef AUDIO_ENABLE 1036 switch(output) {
736 startup_user(); 1037 case OUTPUT_USB:
737 #endif 1038 led_set_output_usb();
738 set_unicode_input_mode(UC_LNX); 1039 break;
739 led_init(); 1040 case OUTPUT_ADAFRUIT_BLE:
1041 led_set_output_ble();
1042 break;
1043 default:
1044 led_set_output_none();
1045 }
740} 1046}
741 1047
742// void init_rgblight(void) { 1048void matrix_init_user(void) {
743// for (uint8_t i = 0; i < RGBLED_NUM; i++) { 1049 _delay_ms(500); // give time for usb to initialize
744// led[i].r = 255;
745// led[i].g = 85;
746// led[i].b = 0;
747// }
748// ws2812_setleds(led, RGBLED_NUM);
749// }
750 1050
1051 set_unicode_input_mode(UC_LNX);
1052 led_init();
751 1053
752#ifdef AUDIO_ENABLE 1054 // auto detect output on init
1055 uint8_t output = auto_detect_output();
1056 if (output == OUTPUT_USB) {
1057 set_output(OUTPUT_USB);
1058 } else {
1059 set_output(OUTPUT_ADAFRUIT_BLE);
1060 }
1061}
753 1062
754void startup_user() 1063void matrix_scan_user(void) {
755{ 1064 led_set_layer_indicator();
756 _delay_ms(20); // gets rid of tick
757 PLAY_NOTE_ARRAY(tone_startup, false, 0);
758} 1065}
759 1066
760void shutdown_user() 1067void battery_poll(uint8_t level) {
761{ 1068 rgbsps_sethsv(LED_IND_BATTERY, level * 120/255, 255, 15);
762 PLAY_NOTE_ARRAY(tone_goodbye, false, 0); 1069 rgbsps_send();
763 _delay_ms(150);
764 stop_all_notes();
765} 1070}
766 1071
767#endif 1072void led_set_user(uint8_t usb_led) {
1073 bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK);
1074 if (new_capslock ^ capslock) { // capslock state is different
1075 if (capslock = new_capslock) {
1076 rgbsps_set(LED_IND_NUM, 15, 0, 0);
1077 } else {
1078 rgbsps_set(LED_IND_NUM, 0, 0, 0);
1079 }
1080 rgbsps_send();
1081 }
1082}
768 1083
1084void turn_off_capslock() {
1085 if (capslock) {
1086 register_code(KC_CAPS);
1087 unregister_code(KC_CAPS);
1088 }
1089}
769 1090
770void ps2_mouse_init_user() { 1091void ps2_mouse_init_user() {
771 uint8_t rcv; 1092 uint8_t rcv;
772 1093
773 // set TrackPoint sensitivity 1094 // set TrackPoint sensitivity
774 PS2_MOUSE_SEND(0xE2, "set trackpoint sensitivity: 0xE2"); 1095 PS2_MOUSE_SEND(0xE2, "tpsens: 0xE2");
775 PS2_MOUSE_SEND(0x81, "set trackpoint sensitivity: 0x81"); 1096 PS2_MOUSE_SEND(0x81, "tpsens: 0x81");
776 PS2_MOUSE_SEND(0x4A, "set trackpoint sensitivity: 0x4A"); 1097 PS2_MOUSE_SEND(0x4A, "tpsens: 0x4A");
777 PS2_MOUSE_SEND(0x49, "set trackpoint sensitivity: 0x59"); 1098 PS2_MOUSE_SEND(0x49, "tpsens: 0x59");
778 1099
779 // set TrackPoint Negative Inertia factor 1100 // set TrackPoint Negative Inertia factor
780 PS2_MOUSE_SEND(0xE2, "set negative inertia factor: 0xE2"); 1101 PS2_MOUSE_SEND(0xE2, "tpnegin: 0xE2");
781 PS2_MOUSE_SEND(0x81, "set negative inertia factor: 0x81"); 1102 PS2_MOUSE_SEND(0x81, "tpnegin: 0x81");
782 PS2_MOUSE_SEND(0x4D, "set negative inertia factor: 0x4D"); 1103 PS2_MOUSE_SEND(0x4D, "tpnegin: 0x4D");
783 PS2_MOUSE_SEND(0x06, "set negative inertia factor: 0x06"); 1104 PS2_MOUSE_SEND(0x06, "tpnegin: 0x06");
784 1105
785 // set TrackPoint speed 1106 // set TrackPoint speed
786 // (transfer function upper plateau speed) 1107 // (transfer function upper plateau speed)
787 PS2_MOUSE_SEND(0xE2, "set trackpoint speed: 0xE2"); 1108 PS2_MOUSE_SEND(0xE2, "tpsp: 0xE2");
788 PS2_MOUSE_SEND(0x81, "set trackpoint speed: 0x81"); 1109 PS2_MOUSE_SEND(0x81, "tpsp: 0x81");
789 PS2_MOUSE_SEND(0x60, "set trackpoint speed: 0x60"); 1110 PS2_MOUSE_SEND(0x60, "tpsp: 0x60");
790 PS2_MOUSE_SEND(0x61, "set trackpoint speed: 0x61"); 1111 PS2_MOUSE_SEND(0x61, "tpsp: 0x61");
791 1112
792 // inquire pts status 1113 // inquire pts status
793 rcv = ps2_host_send(0xE2); 1114 rcv = ps2_host_send(0xE2);
diff --git a/keyboards/handwired/promethium/promethium.c b/keyboards/handwired/promethium/promethium.c
index a0035cce1..62e2281fa 100644
--- a/keyboards/handwired/promethium/promethium.c
+++ b/keyboards/handwired/promethium/promethium.c
@@ -1,6 +1,38 @@
1#include "promethium.h" 1#include "promethium.h"
2#include "analog.h"
3#include "timer.h"
4#include "matrix.h"
2 5
3void matrix_init_kb(void) { 6// 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}
7
8uint8_t battery_level(void) {
9 float voltage = analogRead(BATTERY_PIN) * 2 * 3.3 / 1024;
10 if (voltage < MIN_VOLTAGE) return 0;
11 if (voltage > MAX_VOLTAGE) return 255;
12 return (voltage - MIN_VOLTAGE) / (MAX_VOLTAGE - MIN_VOLTAGE) * 255;
13}
14
15__attribute__ ((weak))
16void battery_poll(uint8_t level) {
17}
4 18
19void matrix_init_kb(void) {
5 matrix_init_user(); 20 matrix_init_user();
6} \ No newline at end of file 21}
22
23void matrix_scan_kb(void) {
24 static uint16_t counter = BATTERY_POLL;
25 counter++;
26
27 if (counter > BATTERY_POLL) {
28 counter = 0;
29 battery_poll(battery_level());
30 }
31
32 matrix_scan_user();
33}
34
35void led_set_kb(uint8_t usb_led) {
36 led_set_user(usb_led);
37}
38
diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h
index 662eeab99..da37e5c56 100644
--- a/keyboards/handwired/promethium/promethium.h
+++ b/keyboards/handwired/promethium/promethium.h
@@ -4,6 +4,11 @@
4#include "quantum.h" 4#include "quantum.h"
5 5
6#define PS2_INIT_DELAY 2000 6#define PS2_INIT_DELAY 2000
7#define UNICODE_TYPE_DELAY 0
8#define BATTERY_PIN 9
9#define BATTERY_POLL 30000
10#define MAX_VOLTAGE 4.2
11#define MIN_VOLTAGE 3.2
7 12
8#define KEYMAP( \ 13#define KEYMAP( \
9 k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ 14 k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
@@ -22,6 +27,8 @@
22 {k47, k48, k49, k4a, k4b, k4c} \ 27 {k47, k48, k49, k4a, k4b, k4c} \
23} 28}
24 29
30
31
25enum led_sequence { 32enum led_sequence {
26 LED_IND_BLUETOOTH, 33 LED_IND_BLUETOOTH,
27 LED_IND_USB, 34 LED_IND_USB,
@@ -98,4 +105,4 @@ enum led_sequence {
98 105
99#endif 106#endif
100 107
101 108void 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 ea922ec3f..f30badd35 100644
--- a/keyboards/handwired/promethium/rgbsps.c
+++ b/keyboards/handwired/promethium/rgbsps.c
@@ -21,4 +21,53 @@ void rgbsps_turnoff(void) {
21 21
22void rgbsps_send(void) { 22void rgbsps_send(void) {
23 ws2812_setleds(led, RGBSPS_NUM); 23 ws2812_setleds(led, RGBSPS_NUM);
24} \ No newline at end of file 24}
25
26void rgbsps_sethsv(uint8_t index, uint16_t hue, uint8_t sat, uint8_t val) {
27 uint8_t r = 0, g = 0, b = 0, base, color;
28
29 if (sat == 0) { // Acromatic color (gray). Hue doesn't mind.
30 r = val;
31 g = val;
32 b = val;
33 } else {
34 base = ((255 - sat) * val) >> 8;
35 color = (val - base) * (hue % 60) / 60;
36
37 switch (hue / 60) {
38 case 0:
39 r = val;
40 g = base + color;
41 b = base;
42 break;
43 case 1:
44 r = val - color;
45 g = val;
46 b = base;
47 break;
48 case 2:
49 r = base;
50 g = val;
51 b = base + color;
52 break;
53 case 3:
54 r = base;
55 g = val - color;
56 b = val;
57 break;
58 case 4:
59 r = base + color;
60 g = base;
61 b = val;
62 break;
63 case 5:
64 r = val;
65 g = base;
66 b = val - color;
67 break;
68 }
69 }
70
71 rgbsps_set(index, r, g, b);
72}
73
diff --git a/keyboards/handwired/promethium/rgbsps.h b/keyboards/handwired/promethium/rgbsps.h
index 6da197f75..72612a7a8 100644
--- a/keyboards/handwired/promethium/rgbsps.h
+++ b/keyboards/handwired/promethium/rgbsps.h
@@ -1,4 +1,5 @@
1void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b); 1void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b);
2void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b); 2void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b);
3void rgbsps_turnoff(void); 3void rgbsps_turnoff(void);
4void rgbsps_send(void); \ No newline at end of file 4void rgbsps_send(void);
5void 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 465ef3359..e75cf4dde 100644
--- a/keyboards/handwired/promethium/rules.mk
+++ b/keyboards/handwired/promethium/rules.mk
@@ -72,4 +72,5 @@ API_SYSEX_ENABLE ?= no
72SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend 72SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
73 73
74SRC += $(QUANTUM_DIR)/light_ws2812.c 74SRC += $(QUANTUM_DIR)/light_ws2812.c
75SRC += rgbsps.c \ No newline at end of file 75SRC += rgbsps.c
76SRC += $(QUANTUM_DIR)/analog.c \ No newline at end of file
diff --git a/keyboards/kinesis/keymaps/milestogo/keymap.c b/keyboards/kinesis/keymaps/milestogo/keymap.c
index c2635eefe..bf1f9c591 100644
--- a/keyboards/kinesis/keymaps/milestogo/keymap.c
+++ b/keyboards/kinesis/keymaps/milestogo/keymap.c
@@ -6,8 +6,11 @@
6#define _SYMB 1// Symbol layer 6#define _SYMB 1// Symbol layer
7#define _MOUSE 2// 7#define _MOUSE 2//
8#define _TRANS 3// 8#define _TRANS 3//
9#define _SYMB2 4// old symbol level, more ergodox like
9 10
10 11// Fillers to make layering more clear
12#define _______ KC_TRNS
13#define XXXXXXX KC_NO
11 14
12/* Macros */ 15/* Macros */
13enum { 16enum {
@@ -20,44 +23,44 @@ enum {
20}; 23};
21 24
22 25
23// Why so many gui keys, why not just map all the OS X stuff to buttons? Good question. 26// Train out of using uncomfortable esc and GUI keys.
24/**************************************************************************************************** 27/****************************************************************************************************
25* 28*
26* Keymap: Default Layer in Qwerty 29* Keymap: Default Layer in Qwerty
27* 30*
28* ,-------------------------------------------------------------------------------------------------------------------. 31* ,-------------------------------------------------------------------------------------------------------------------.
29* | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT | 32* | no | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT |
30* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| 33* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
31* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ | 34* | `~ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
32* |--------+------+------+------+------+------| +------+------+------+------+------+--------| 35* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
33* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | 36* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| |
34* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 37* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
35* |MouseFN0| A | S | D | F | G | | H | J | K | L | ;: | '" | 38* |MouseFN0| A | S | D | F | G | | H | J | K | L | ;: | '" |
36* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 39* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
37* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift | 40* | Shift | Z | X | C | V | B | | N | M | ,< | .> | /? | Shift |
38* `--------+------+------+------+------+------- `------+------+------+------+------+--------' 41* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
39* | ~` | ESC |GUI/L |L1/RT | | L1/UP|GUI/DN| [{ | ]} | 42* | ~` | ESC |GUI/L |L1/RT | | L1/UP|GUI/DN| [{ | ]} |
40* `---------------------------' `---------------------------' 43* `---------------------------' `---------------------------'
41* ,-------------. ,-------------. 44* ,-------------. ,-------------.
42* | CTRL | GUI | | ALT | GUI | 45* | CTRL | ALT | | ALT | GUI |
43* ,------|------|------| |------+------+------. 46* ,------|------|------| |------+------+------.
44* | | | Home | | PgUp | | | 47* | | | Del | | PgUp | | |
45* | BkSp | Del |------| |------|Return| Space| 48* | BkSp | BkSp |------| |------|Return| Space|
46* | | | End | | PgDn | | | 49* | | | FN0 | | PgDn | | |
47* `--------------------' `--------------------' 50* `--------------------' `--------------------'
48*/ 51*/
49 52
50const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 53const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
51[_QWERTY] = KEYMAP( 54[_QWERTY] = KEYMAP(
52 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8, 55 XXXXXXX, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
53 KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , 56 KC_GRAVE, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
54 KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , 57 KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
55 KC_FN0 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , 58 KC_FN0 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
56 KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , 59 KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,
57 KC_GRAVE, KC_ESC, KC_FN4, KC_FN5, 60 KC_GRAVE, KC_ESC, KC_FN4, KC_FN5,
58 KC_LCTL,KC_LGUI, 61 KC_LCTL,KC_LALT,
59 KC_HOME, 62 KC_DEL,
60 KC_BSPC,KC_DEL ,KC_FN0 , 63 KC_BSPC, KC_DEL ,KC_FN0 ,
61 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET, 64 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET,
62 KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, 65 KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
63 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, 66 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
@@ -68,52 +71,102 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
68 KC_PGUP, 71 KC_PGUP,
69 KC_PGDN,KC_ENTER ,KC_SPC 72 KC_PGDN,KC_ENTER ,KC_SPC
70 ), 73 ),
74
75
76/* _SYMB level, more planck like. Much work to make sequences into multi-finger rolls. eg ([1,0]), !=0
77* Also sorted by frequency / strength of finger.
78*
79* ,-------------------------------------------------------------------------------------------------------------------.
80* | | | | | | | | | | | | | | | | |
81* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
82* | | | | | | | | | | | | | |
83* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
84* | | ^ | { | } | @ | % | | & | [ | ( | ) | _ | \ |
85* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
86* | | ! | # | 0 | = | ~ | | * | + | 1 | - | ] | ` |
87* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
88* | | 6 | 7 | 8 | 9 | pipe | | $ | 2 | 3 | 4 | 5 | |
89* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
90* | | : |GUI/L |L1/RT | | L1/UP|GUI/DN| \ | |
91* `---------------------------' `---------------------------'
92* ,-------------. ,-------------.
93* | CTRL | | | ALT | GUI |
94* ,------|------|------| |------+------+------.
95* | | | | | | | |
96* | Cut | Paste|------| |------| | |
97* | | |Reset | | | | |
98* `--------------------' `--------------------'
99*/
100
71 101
72/* _SYMBol level 102
103[_SYMB] = KEYMAP(
104 _______, _______, _______, _______, _______, _______, _______, _______, _______,
105 _______, _______, _______, _______, _______, _______,
106 _______, KC_CIRC, KC_LCBR, KC_RCBR, KC_AT, KC_PERC,
107 _______, KC_EXLM, KC_HASH, KC_0, KC_EQL, KC_TILD,
108 _______, KC_6, KC_7, KC_8, KC_9, KC_PIPE,
109 _______, KC_COLON, KC_FN4, KC_FN5,
110 _______, _______,
111 _______,
112 _______, _______, RESET,
113 _______, _______, _______, _______, _______, _______, _______, KC_FN0, KC_2,
114 _______, _______, _______, _______, _______, _______,
115 KC_AMPR, KC_LBRC, KC_LPRN, KC_RPRN, KC_UNDS, _______,
116 KC_ASTR, KC_PLUS, KC_1, KC_MINS, KC_RBRC, KC_GRV,
117 KC_DLR, KC_2, KC_3, KC_4, KC_5, XXXXXXX,
118 KC_FN6, KC_FN7, KC_BSLS, XXXXXXX,
119 _______, _______,
120 _______,
121 _______, _______, _______
122 ),
123
124
125/* _SYMB2ol level, more ergodox like
73* 126*
74* ,-------------------------------------------------------------------------------------------------------------------. 127* ,-------------------------------------------------------------------------------------------------------------------.
75* | | | | | | | | | | | | | | | | bOOT | 128* | | | | | | | | | | | | | | | | |
76* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| 129* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
77* | | | * | # | | | | | | | | | | 130* | | | * | # | | | | | | | | | |
78* |--------+------+------+------+------+------| +------+------+------+------+------+--------| 131* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
79* | | / | [ | ] | | | | | | | | | | 132* | | / | < | > | | | | | | + | * | | |
80* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 133* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
81* | | | { | } | | | | | | | | | | 134* | | | { | } | | | | | | = | - | | |
82* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 135* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
83* | | = | ( | ) | | | | | | | | | | 136* | | = | ( | ) | | | | | | | | | | |
84* `--------+------+------+------+------+------- `------+------+------+------+------+--------' 137* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
85* | | |GUI/L |L1/RT | | L1/UP|GUI/DN| { | } | 138* | | |GUI/L |L1/RT | | L1/UP|GUI/DN| { | } |
86* `---------------------------' `---------------------------' 139* `---------------------------' `---------------------------'
87* ,-------------. ,-------------. 140* ,-------------. ,-------------.
88* | CTRL | GUI | | ALT | GUI | 141* | CTRL | | | ALT | GUI |
89* ,------|------|------| |------+------+------. 142* ,------|------|------| |------+------+------.
90* | | | Home | | PgUp | | | 143* | | | | | | | |
91* | BkSp | Del |------| |------|Mouse1|Mouse2| 144* | BkSp | Del |------| |------|Mouse1|Mouse2|
92* | | | End | | PgDn |LClick|Rclick| 145* | | |Reset | | |LClick|Rclick|
93* `--------------------' `--------------------' 146* `--------------------' `--------------------'
94*/ 147*/
95 148
96 149
97 150
98[_SYMB] = KEYMAP( 151[_SYMB2] = KEYMAP(
99 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 152 _______, _______, _______, _______, _______, _______, _______, _______, _______,
100 KC_TRNS, KC_TRNS, KC_ASTR, KC_HASH, KC_TRNS, KC_TRNS, 153 _______, _______, KC_ASTR, KC_HASH, _______, _______,
101 KC_TRNS, KC_SLSH, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, 154 _______, KC_SLSH, RSFT(KC_COMM), RSFT(KC_DOT), _______, _______,
102 KC_TRNS, KC_TRNS, RSFT(KC_LBRC), RSFT(KC_RBRC), KC_TRNS, KC_TRNS, 155 _______, _______, RSFT(KC_LBRC), RSFT(KC_RBRC), _______, _______,
103 KC_TRNS, KC_EQL, RSFT(KC_9), RSFT(KC_0), KC_TRNS, KC_TRNS, 156 _______, KC_EQL, RSFT(KC_9), RSFT(KC_0), _______, _______,
104 KC_TRNS, KC_TRNS, KC_FN4, KC_FN5, 157 _______, _______, KC_FN4, KC_FN5,
105 KC_TRNS, KC_TRNS, 158 _______, _______,
106 KC_TRNS, 159 _______,
107 KC_TRNS, KC_TRNS, KC_TRNS, 160 _______, _______, RESET,
108 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN0, KC_2, 161 _______, _______, _______, _______, _______, _______, _______, KC_FN0, KC_2,
109 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 162 _______, _______, _______, KC_ASTR, _______, _______,
110 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 163 _______, _______, KC_PLUS, KC_MINS, _______, _______,
111 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 164 _______, _______, KC_EQL, KC_PIPE, _______, _______,
112 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 165 _______, _______, _______, _______, _______, _______,
113 KC_FN6, KC_FN7, KC_TRNS, KC_TRNS, 166 KC_FN6, KC_FN7, _______, _______,
114 KC_TRNS, KC_TRNS, 167 _______, _______,
115 KC_TRNS, 168 _______,
116 KC_TRNS, KC_TRNS, KC_TRNS 169 _______, _______, _______
117 ), 170 ),
118/* Keymap: Movement and function layer 171/* Keymap: Movement and function layer
119* 172*
@@ -122,11 +175,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
122* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| 175* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
123* | =+ | ! | @ | # | $ | % | | ^ | & | * | ( | ) |MS Fast | 176* | =+ | ! | @ | # | $ | % | | ^ | & | * | ( | ) |MS Fast |
124* |--------+------+------+------+------+------| +------+------+------+------+------+--------| 177* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
125* | Tab | | | Up | |PgUp | | MwU |MS_UL | MS_U |MS_UR | | Ms Norm| 178* | Tab | | | | |PgUp | | MwU |MS_UL | MS_U |MS_UR | | Ms Norm|
126* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 179* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
127* |MouseFN1| C^A | Left | Down |Right | C^E | | | MS_L |Mouse1| MS_R | |MS Slow | 180* |MouseFN1|GUI_V |GUI X |GUI C |GUI_V | | | | MS_L |Mouse1| MS_R | |MS Slow |
128* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 181* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
129* | | GuiZ | GUI X| GUI C| GUI_V|PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | | 182* | | | | | |PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | |
130* `--------+------+------+------+------+------- `------+------+------+------+------+--------' 183* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
131* | `~ | ESC | | | | | | { | } | 184* | `~ | ESC | | | | | | { | } |
132* `---------------------------' `---------------------------' 185* `---------------------------' `---------------------------'
@@ -141,24 +194,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
141 194
142 195
143[_MOUSE] = KEYMAP( 196[_MOUSE] = KEYMAP(
144 KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 197 KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______,
145 KC_TRNS, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC , 198 _______, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC ,
146 KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP, 199 _______, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP,
147 KC_FN1, LCTL(KC_A),KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E), 200 KC_FN1, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V), KC_NO,
148 KC_TRNS, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V),KC_PGDN, 201 _______, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGDN,
149 KC_TRNS, KC_TRNS, KC_NO, KC_NO, 202 _______, _______, KC_NO, KC_NO,
150 KC_TRNS, KC_TRNS, 203 _______, _______,
151 KC_TRNS, 204 _______,
152 KC_TRNS, KC_TRNS, KC_TRNS, 205 _______, _______, _______,
153 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN0,RESET, 206 _______, _______, _______, _______, _______, _______, _______, KC_FN0,RESET,
154 KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2, 207 KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2,
155 KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1, 208 KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1,
156 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0, 209 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0,
157 KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), RSFT(KC_LBRC), RSFT(KC_RBRC), 210 KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), RSFT(KC_LBRC), RSFT(KC_RBRC),
158 KC_LCBR, KC_RCBR, KC_NO, KC_NO, 211 KC_LCBR, KC_RCBR, KC_NO, KC_NO,
159 KC_TRNS, KC_TRNS, 212 _______, _______,
160 KC_TRNS, 213 _______,
161 KC_TRNS, KC_BTN1, KC_BTN2 214 _______, KC_BTN1, KC_BTN2
162 ), 215 ),
163 216
164 217
@@ -190,24 +243,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
190 243
191 244
192[_TRANS] = KEYMAP( 245[_TRANS] = KEYMAP(
193 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 246 _______, _______, _______, _______, _______, _______, _______, _______, _______,
194 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 247 _______, _______, _______, _______, _______, _______,
195 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 248 _______, _______, _______, _______, _______, _______,
196 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 249 _______, _______, _______, _______, _______, _______,
197 KC_TRNS, KC_TRNS, KC_FN10, KC_FN11, KC_TRNS, KC_TRNS, 250 _______, _______, _______, _______, _______, _______,
198 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 251 _______, _______, _______, _______,
199 KC_TRNS, KC_TRNS, 252 _______, _______,
200 KC_TRNS, 253 _______,
201 KC_TRNS, KC_TRNS, KC_TRNS, 254 _______, _______, _______,
202 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN0, KC_2, 255 _______, _______, _______, _______, _______, _______, _______, KC_FN0, KC_2,
203 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 256 _______, _______, _______, _______, _______, _______,
204 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 257 _______, _______, _______, _______, _______, _______,
205 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 258 _______, _______, _______, _______, _______, _______,
206 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 259 _______, _______, _______, _______, _______, _______,
207 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 260 _______, _______, _______, _______,
208 KC_TRNS, KC_TRNS, 261 _______, _______,
209 KC_TRNS, 262 _______,
210 KC_TRNS, KC_TRNS, KC_TRNS 263 _______, _______, _______
211 ), 264 ),
212 265
213 266
diff --git a/keyboards/kinesis/rules.mk b/keyboards/kinesis/rules.mk
index a4a2b7d15..956a64bdd 100644
--- a/keyboards/kinesis/rules.mk
+++ b/keyboards/kinesis/rules.mk
@@ -46,11 +46,11 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
46 46
47# Boot Section Size in *bytes* 47# Boot Section Size in *bytes*
48# Teensy halfKay 512 48# Teensy halfKay 512
49# Teensy++ halfKay 1024 49# Teensy++ halfKay 2048
50# Atmel DFU loader 4096 50# Atmel DFU loader 4096
51# LUFA bootloader 4096 51# LUFA bootloader 4096
52# USBaspLoader 2048 52# USBaspLoader 2048
53OPT_DEFS += -DBOOTLOADER_SIZE=1024 53OPT_DEFS += -DBOOTLOADER_SIZE=2048
54 54
55 55
56# Build Options 56# Build Options
diff --git a/keyboards/planck/keymaps/bone2planck/readme.md b/keyboards/planck/keymaps/bone2planck/readme.md
index 0d053bb17..be22eabdb 100644
--- a/keyboards/planck/keymaps/bone2planck/readme.md
+++ b/keyboards/planck/keymaps/bone2planck/readme.md
@@ -15,7 +15,7 @@ To build, run "make" from within the \bone2planck folder.
15 ,-----------------------------------------------------------------------------------. 15 ,-----------------------------------------------------------------------------------.
16 | ß | J | D | U | A | X | P | H | L | M | W | Q | 16 | ß | J | D | U | A | X | P | H | L | M | W | Q |
17 |------+------+------+------+------+-------------+------+------+------+------+------| 17 |------+------+------+------+------+-------------+------+------+------+------+------|
18 | M1 | C | T | I | E | O | B | N | R | S | G |M1/Ent| hold for M1, tap for Enter 18 | M1 | C | T | I | E | O | B | N | R | S | G |M1/Ent| hold: M1, tap: Enter
19 |------+------+------+------+------+------|------+------+------+------+------+------| 19 |------+------+------+------+------+------|------+------+------+------+------+------|
20 | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | 20 | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift |
21 |------+------+------+------+------+------+------+------+------+------+------+------| 21 |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -29,7 +29,7 @@ To build, run "make" from within the \bone2planck folder.
29 ,-----------------------------------------------------------------------------------. 29 ,-----------------------------------------------------------------------------------.
30 | ° | @ | _ | [ | ] | ^ | ! | < | > | = | & | ´ | 30 | ° | @ | _ | [ | ] | ^ | ! | < | > | = | & | ´ |
31 |------+------+------+------+------+-------------+------+------+------+------+------| 31 |------+------+------+------+------+-------------+------+------+------+------+------|
32 | M1 | \ | / | { | } | * | ? | ( | ) | - | : |M1/Ent| hold for M1, tap for Enter 32 | M1 | \ | / | { | } | * | ? | ( | ) | - | : |M1/Ent| hold: M1, tap: Enter
33 |------+------+------+------+------+------|------+------+------+------+------+------| 33 |------+------+------+------+------+------|------+------+------+------+------+------|
34 | Shift| # | ~ | | | $ | € | + | % | " | ' | ; |Shift | 34 | Shift| # | ~ | | | $ | € | + | % | " | ' | ; |Shift |
35 |------+------+------+------+------+------+------+------+------+------+------+------| 35 |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -56,7 +56,7 @@ To build, run "make" from within the \bone2planck folder.
56 ,-----------------------------------------------------------------------------------. 56 ,-----------------------------------------------------------------------------------.
57 | | | Print|Scroll|Pause | | | F7 | F8 | F9 | F12 | | 57 | | | Print|Scroll|Pause | | | F7 | F8 | F9 | F12 | |
58 |------+------+------+------+------+-------------+------+------+------+------+------| 58 |------+------+------+------+------+-------------+------+------+------+------+------|
59 | | | Mute | Vol- | Vol+ | | ³ | F4 | F5 | F6 | F11 | | 59 | Tab | | Mute | Vol- | Vol+ | | ³ | F4 | F5 | F6 | F11 | Enter|
60 |------+------+------+------+------+------|------+------+------+------+------+------| 60 |------+------+------+------+------+------|------+------+------+------+------+------|
61 | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | 61 | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift |
62 |------+------+------+------+------+------+------+------+------+------+------+------| 62 |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -87,7 +87,7 @@ To build, run "make" from within the \bone2planck folder.
87 ,-----------------------------------------------------------------------------------. 87 ,-----------------------------------------------------------------------------------.
88 | | | F7 | F8 | F9 | F12 | | Print|Scroll| Pause| | | 88 | | | F7 | F8 | F9 | F12 | | Print|Scroll| Pause| | |
89 |------+------+------+------+------+-------------+------+------+------+------+------| 89 |------+------+------+------+------+-------------+------+------+------+------+------|
90 | | ³ | F4 | F5 | F6 | F11 | | Mute | Vol- | Vol+ | | | 90 | Tab | ³ | F4 | F5 | F6 | F11 | | Mute | Vol- | Vol+ | | Enter|
91 |------+------+------+------+------+------|------+------+------+------+------+------| 91 |------+------+------+------+------+------|------+------+------+------+------+------|
92 | Shift| ² | F1 | F2 | F3 | F10 | | Prev | Play | Next | |Shift | 92 | Shift| ² | F1 | F2 | F3 | F10 | | Prev | Play | Next | |Shift |
93 |------+------+------+------+------+------+------+------+------+------+------+------| 93 |------+------+------+------+------+------+------+------+------+------+------+------|
diff --git a/keyboards/readme.md b/keyboards/readme.md
index d2f41ad7e..5b7b28207 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
39* [Bantam44](/keyboards/bantam44) &mdash; It is a 44-key 40% staggered keyboard. 39* [Bantam44](/keyboards/bantam44) &mdash; It is a 44-key 40% staggered keyboard.
40* [Ergodox Infinity](/keyboards/ergodox) - Ergonomic Split Keyboard by Input Club. 40* [Ergodox Infinity](/keyboards/ergodox) - Ergonomic Split Keyboard by Input Club.
41* [GH60](/keyboards/gh60) &mdash; A 60% Geekhack community-driven project. 41* [GH60](/keyboards/gh60) &mdash; A 60% Geekhack community-driven project.
42* [GON NerD](/keyboards/gonnerd) &mdash; Korean custom 60% PCB
42* [Happy Hacking Keyboard](/keyboards/hhkb) &mdash; The Happy Hacking keyboard can be hacked with a custom controller to run QMK. 43* [Happy Hacking Keyboard](/keyboards/hhkb) &mdash; The Happy Hacking keyboard can be hacked with a custom controller to run QMK.
43* [Infinity 60%](/keyboards/infinity60) - &mdash; Compact community keyboard by Input Club. 44* [Infinity 60%](/keyboards/infinity60) - &mdash; Compact community keyboard by Input Club.
44* [JD45](/keyboards/jd45) &mdash; Another Geekhack community project, designed by jdcarpe. 45* [JD45](/keyboards/jd45) &mdash; Another Geekhack community project, designed by jdcarpe.
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index 5190f24e8..54b872d49 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -120,7 +120,7 @@ action_t action_for_key(uint8_t layer, keypos_t key)
120 action.code = ACTION_MODS_ONESHOT(mod); 120 action.code = ACTION_MODS_ONESHOT(mod);
121 break; 121 break;
122 case QK_MOD_TAP ... QK_MOD_TAP_MAX: 122 case QK_MOD_TAP ... QK_MOD_TAP_MAX:
123 action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); 123 action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0x1F, keycode & 0xFF);
124 break; 124 break;
125 #ifdef BACKLIGHT_ENABLE 125 #ifdef BACKLIGHT_ENABLE
126 case BL_0 ... BL_15: 126 case BL_0 ... BL_15:
diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c
index 9995ba9bd..9d01a592d 100644
--- a/quantum/process_keycode/process_unicode.c
+++ b/quantum/process_keycode/process_unicode.c
@@ -139,7 +139,7 @@ void unicode_map_input_error() {}
139bool process_unicode_map(uint16_t keycode, keyrecord_t *record) { 139bool process_unicode_map(uint16_t keycode, keyrecord_t *record) {
140 if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) { 140 if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) {
141 const uint32_t* map = unicode_map; 141 const uint32_t* map = unicode_map;
142 uint16_t index = keycode & 0x7FF; 142 uint16_t index = keycode - QK_UNICODE_MAP;
143 uint32_t code = pgm_read_dword_far(&map[index]); 143 uint32_t code = pgm_read_dword_far(&map[index]);
144 if (code > 0xFFFF && code <= 0x10ffff && input_mode == UC_OSX) { 144 if (code > 0xFFFF && code <= 0x10ffff && input_mode == UC_OSX) {
145 // Convert to UTF-16 surrogate pair 145 // Convert to UTF-16 surrogate pair
diff --git a/quantum/quantum.c b/quantum/quantum.c
index d3905decf..45ea8cb73 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -594,34 +594,45 @@ static const uint8_t backlight_pin = BACKLIGHT_PIN;
594# define COM1x1 COM1A1 594# define COM1x1 COM1A1
595# define OCR1x OCR1A 595# define OCR1x OCR1A
596#else 596#else
597# error "Backlight pin not supported - use B5, B6, or B7" 597# define NO_BACKLIGHT_CLOCK
598#endif
599
600#ifndef BACKLIGHT_ON_STATE
601#define BACKLIGHT_ON_STATE 0
598#endif 602#endif
599 603
600__attribute__ ((weak)) 604__attribute__ ((weak))
601void backlight_init_ports(void) 605void backlight_init_ports(void)
602{ 606{
603 607
604 // Setup backlight pin as output and output low. 608 // Setup backlight pin as output and output to on state.
605 // DDRx |= n 609 // DDRx |= n
606 _SFR_IO8((backlight_pin >> 4) + 1) |= _BV(backlight_pin & 0xF); 610 _SFR_IO8((backlight_pin >> 4) + 1) |= _BV(backlight_pin & 0xF);
607 // PORTx &= ~n 611 #if BACKLIGHT_ON_STATE == 0
608 _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); 612 // PORTx &= ~n
613 _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF);
614 #else
615 // PORTx |= n
616 _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF);
617 #endif
609 618
610 // Use full 16-bit resolution. 619 #ifndef NO_BACKLIGHT_CLOCK
611 ICR1 = 0xFFFF; 620 // Use full 16-bit resolution.
621 ICR1 = 0xFFFF;
612 622
613 // I could write a wall of text here to explain... but TL;DW 623 // I could write a wall of text here to explain... but TL;DW
614 // Go read the ATmega32u4 datasheet. 624 // Go read the ATmega32u4 datasheet.
615 // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on 625 // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on
616 626
617 // Pin PB7 = OCR1C (Timer 1, Channel C) 627 // Pin PB7 = OCR1C (Timer 1, Channel C)
618 // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 628 // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0
619 // (i.e. start high, go low when counter matches.) 629 // (i.e. start high, go low when counter matches.)
620 // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 630 // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0
621 // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 631 // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1
622 632
623 TCCR1A = _BV(COM1x1) | _BV(WGM11); // = 0b00001010; 633 TCCR1A = _BV(COM1x1) | _BV(WGM11); // = 0b00001010;
624 TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; 634 TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001;
635 #endif
625 636
626 backlight_init(); 637 backlight_init();
627 #ifdef BACKLIGHT_BREATHING 638 #ifdef BACKLIGHT_BREATHING
@@ -633,24 +644,43 @@ __attribute__ ((weak))
633void backlight_set(uint8_t level) 644void backlight_set(uint8_t level)
634{ 645{
635 // Prevent backlight blink on lowest level 646 // Prevent backlight blink on lowest level
636 // PORTx &= ~n 647 #if BACKLIGHT_ON_STATE == 0
637 _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); 648 // PORTx &= ~n
649 _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF);
650 #else
651 // PORTx |= n
652 _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF);
653 #endif
638 654
639 if ( level == 0 ) { 655 if ( level == 0 ) {
640 // Turn off PWM control on backlight pin, revert to output low. 656 #ifndef NO_BACKLIGHT_CLOCK
641 TCCR1A &= ~(_BV(COM1x1)); 657 // Turn off PWM control on backlight pin, revert to output low.
642 OCR1x = 0x0; 658 TCCR1A &= ~(_BV(COM1x1));
643 } else if ( level == BACKLIGHT_LEVELS ) { 659 OCR1x = 0x0;
644 // Turn on PWM control of backlight pin 660 #else
645 TCCR1A |= _BV(COM1x1); 661 #if BACKLIGHT_ON_STATE == 0
646 // Set the brightness 662 // PORTx |= n
647 OCR1x = 0xFFFF; 663 _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF);
648 } else { 664 #else
649 // Turn on PWM control of backlight pin 665 // PORTx &= ~n
650 TCCR1A |= _BV(COM1x1); 666 _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF);
651 // Set the brightness 667 #endif
652 OCR1x = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); 668 #endif
653 } 669 }
670 #ifndef NO_BACKLIGHT_CLOCK
671 else if ( level == BACKLIGHT_LEVELS ) {
672 // Turn on PWM control of backlight pin
673 TCCR1A |= _BV(COM1x1);
674 // Set the brightness
675 OCR1x = 0xFFFF;
676 }
677 else {
678 // Turn on PWM control of backlight pin
679 TCCR1A |= _BV(COM1x1);
680 // Set the brightness
681 OCR1x = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2));
682 }
683 #endif
654 684
655 #ifdef BACKLIGHT_BREATHING 685 #ifdef BACKLIGHT_BREATHING
656 breathing_intensity_default(); 686 breathing_intensity_default();
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 8a78a58c9..ab2e79026 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -39,14 +39,14 @@ enum quantum_keycodes {
39 QK_CHORDING = 0x5600, 39 QK_CHORDING = 0x5600,
40 QK_CHORDING_MAX = 0x56FF, 40 QK_CHORDING_MAX = 0x56FF,
41#endif 41#endif
42 QK_MOD_TAP = 0x6000, 42 QK_TAP_DANCE = 0x5700,
43 QK_MOD_TAP_MAX = 0x6FFF, 43 QK_TAP_DANCE_MAX = 0x57FF,
44 QK_TAP_DANCE = 0x7100,
45 QK_TAP_DANCE_MAX = 0x71FF,
46#ifdef UNICODEMAP_ENABLE 44#ifdef UNICODEMAP_ENABLE
47 QK_UNICODE_MAP = 0x7800, 45 QK_UNICODE_MAP = 0x5800,
48 QK_UNICODE_MAP_MAX = 0x7FFF, 46 QK_UNICODE_MAP_MAX = 0x5BFF,
49#endif 47#endif
48 QK_MOD_TAP = 0x6000,
49 QK_MOD_TAP_MAX = 0x7FFF,
50#ifdef UNICODE_ENABLE 50#ifdef UNICODE_ENABLE
51 QK_UNICODE = 0x8000, 51 QK_UNICODE = 0x8000,
52 QK_UNICODE_MAX = 0xFFFF, 52 QK_UNICODE_MAX = 0xFFFF,
@@ -54,7 +54,7 @@ enum quantum_keycodes {
54 54
55 // Loose keycodes - to be used directly 55 // Loose keycodes - to be used directly
56 56
57 RESET = 0x7000, 57 RESET = 0x5C00,
58 DEBUG, 58 DEBUG,
59 MAGIC_SWAP_CONTROL_CAPSLOCK, 59 MAGIC_SWAP_CONTROL_CAPSLOCK,
60 MAGIC_CAPSLOCK_TO_CONTROL, 60 MAGIC_CAPSLOCK_TO_CONTROL,
@@ -298,15 +298,29 @@ enum quantum_keycodes {
298#define OSM(mod) (mod | QK_ONE_SHOT_MOD) 298#define OSM(mod) (mod | QK_ONE_SHOT_MOD)
299 299
300// M-od, T-ap - 256 keycode max 300// M-od, T-ap - 256 keycode max
301#define MT(mod, kc) (kc | QK_MOD_TAP | ((mod & 0xF) << 8)) 301#define MT(mod, kc) (kc | QK_MOD_TAP | ((mod & 0x1F) << 8))
302
302#define CTL_T(kc) MT(MOD_LCTL, kc) 303#define CTL_T(kc) MT(MOD_LCTL, kc)
304#define LCTL_T(kc) MT(MOD_LCTL, kc)
305#define RCTL_T(kc) MT(MOD_RCTL, kc)
306
303#define SFT_T(kc) MT(MOD_LSFT, kc) 307#define SFT_T(kc) MT(MOD_LSFT, kc)
308#define LSFT_T(kc) MT(MOD_LSFT, kc)
309#define RSFT_T(kc) MT(MOD_RSFT, kc)
310
304#define ALT_T(kc) MT(MOD_LALT, kc) 311#define ALT_T(kc) MT(MOD_LALT, kc)
312#define LALT_T(kc) MT(MOD_LALT, kc)
313#define RALT_T(kc) MT(MOD_RALT, kc)
305#define ALGR_T(kc) MT(MOD_RALT, kc) // dual-function AltGR 314#define ALGR_T(kc) MT(MOD_RALT, kc) // dual-function AltGR
315
306#define GUI_T(kc) MT(MOD_LGUI, kc) 316#define GUI_T(kc) MT(MOD_LGUI, kc)
317#define LGUI_T(kc) MT(MOD_LGUI, kc)
318#define RGUI_T(kc) MT(MOD_RGUI, kc)
319
307#define C_S_T(kc) MT((MOD_LCTL | MOD_LSFT), kc) // Control + Shift e.g. for gnome-terminal 320#define C_S_T(kc) MT((MOD_LCTL | MOD_LSFT), kc) // Control + Shift e.g. for gnome-terminal
308#define MEH_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT), kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl 321#define MEH_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT), kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl
309#define LCAG_T(kc) MT((MOD_LCTL | MOD_LALT | MOD_LGUI), kc) // Left control alt and gui 322#define LCAG_T(kc) MT((MOD_LCTL | MOD_LALT | MOD_LGUI), kc) // Left control alt and gui
323#define RCAG_T(kc) MT((MOD_RCTL | MOD_RALT | MOD_RGUI), kc) // Right control alt and gui
310#define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ 324#define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
311#define SCMD_T(kc) MT((MOD_LGUI | MOD_LSFT), kc) 325#define SCMD_T(kc) MT((MOD_LGUI | MOD_LSFT), kc)
312#define SWIN_T(kc) SCMD_T(kc) 326#define SWIN_T(kc) SCMD_T(kc)
diff --git a/tmk_core/protocol/ps2_mouse.h b/tmk_core/protocol/ps2_mouse.h
index 3c93a4634..eeeffe4d8 100644
--- a/tmk_core/protocol/ps2_mouse.h
+++ b/tmk_core/protocol/ps2_mouse.h
@@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
23 23
24#define PS2_MOUSE_SEND(command, message) \ 24#define PS2_MOUSE_SEND(command, message) \
25do { \ 25do { \
26 uint8_t rcv = ps2_host_send(command); \ 26 __attribute__ ((unused)) uint8_t rcv = ps2_host_send(command); \
27 if (debug_mouse) { \ 27 if (debug_mouse) { \
28 print((message)); \ 28 print((message)); \
29 xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \ 29 xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \
@@ -55,13 +55,14 @@ do { \
55 55
56#define PS2_MOUSE_RECEIVE(message) \ 56#define PS2_MOUSE_RECEIVE(message) \
57do { \ 57do { \
58 uint8_t rcv = ps2_host_recv_response(); \ 58 __attribute__ ((unused)) uint8_t rcv = ps2_host_recv_response(); \
59 if (debug_mouse) { \ 59 if (debug_mouse) { \
60 print((message)); \ 60 print((message)); \
61 xprintf(" result: %X, error: %X \n", rcv, ps2_error); \ 61 xprintf(" result: %X, error: %X \n", rcv, ps2_error); \
62 } \ 62 } \
63} while(0) 63} while(0)
64 64
65__attribute__ ((unused))
65static enum ps2_mouse_mode_e { 66static enum ps2_mouse_mode_e {
66 PS2_MOUSE_STREAM_MODE, 67 PS2_MOUSE_STREAM_MODE,
67 PS2_MOUSE_REMOTE_MODE, 68 PS2_MOUSE_REMOTE_MODE,
diff --git a/util/travis_build.sh b/util/travis_build.sh
index 2d43f3e5e..6bafd1941 100644
--- a/util/travis_build.sh
+++ b/util/travis_build.sh
@@ -11,7 +11,7 @@ if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
11 make all-keyboards AUTOGEN="true" 11 make all-keyboards AUTOGEN="true"
12 : $((exit_code = $exit_code + $?)) 12 : $((exit_code = $exit_code + $?))
13 else 13 else
14 MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)' | sort -u) 14 MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
15 for KB in $MKB ; do 15 for KB in $MKB ; do
16 echo "Making all keymaps for $KB" 16 echo "Making all keymaps for $KB"
17 make "$KB" AUTOGEN=true 17 make "$KB" AUTOGEN=true