From e2c9f4d36435b0f3f04e4aed5e27f96411ef04ce Mon Sep 17 00:00:00 2001 From: nik gaffney Date: Sat, 31 Jul 2021 12:41:28 +0200 Subject: [PATCH] MOD_RGUI --- README.org | 81 ++++--- config.h | 35 ++-- data/zzkt--alphalikes.kle.json | 372 +++++++++++++++++++++++++++++++++ data/zzkt--emacs.kle.json | 333 +++++++++++++++++++++++++++++ img/zzkt--alphalikes.png | Bin 0 -> 42952 bytes img/zzkt--emacs.png | Bin 0 -> 35208 bytes keymap.c | 142 ++++++------- rules.mk | 23 +- 8 files changed, 853 insertions(+), 133 deletions(-) create mode 100644 data/zzkt--alphalikes.kle.json create mode 100644 data/zzkt--emacs.kle.json create mode 100644 img/zzkt--alphalikes.png create mode 100644 img/zzkt--emacs.png diff --git a/README.org b/README.org index c105085..136c0e0 100644 --- a/README.org +++ b/README.org @@ -13,7 +13,7 @@ For reference, comparison and reading the [[https://github.com/manna-harbour/qmk * general principles -This config uses a mulit-layer qwerty layout which has emerged from a combination of writing and programming using emacs (and emacs style keybindings) on macos and linux. The numeric layer has numbers on the home row and shifted symbols on the first row, with commonly used brackets on the third row symmetrically between sides. The emacs layer(s) provide both command and prefix keys. The movement layer provides arrows (as WASD) and jump keys on the left and mouse keys (when enabled) on the right. There is a QMK reset key on each half of the keyboard. +This config uses a mulit-layer qwerty layout which has emerged from a combination of writing and programming using emacs (and emacs style keybindings) on macos and linux. The numeric layer has numbers on the home row and shifted symbols on the first row, with commonly used brackets on the third row symmetrically between sides. The emacs layer(s) provide both command and prefix keys. The movement layer provides arrows (as WASD and HJKL) and jump keys on the left and mouse keys (when enabled) on the right. There is a QMK reset key on each half of the keyboard. * specific mappings @@ -30,7 +30,7 @@ Details of keyboard layout, layers, macros and general confusion can be found in - Left thumb (base layer) Emacs layer, =KC_LAPO=, and GUI (held) or space (tap) - Right thumb (base layer) Enter, =KC_RAPC=, and Toggle numeric layer -The =KC_LAPO= key is Left Alt when held and =(= when tapped, it can be used as =Meta=. The =KC_RAPC= key is Right Alt when held and =)= when tapped, it can be used for accents and non-ascii characters with the international macos input sources. +The =KC_LAPO= key is Left Alt when held and =(= when tapped, it can be used as =Meta=. The =KC_RAPC= key is Right Alt when held and =)= when tapped, it can be used for accents and non-ascii characters with the international macOS input sources. The =emacs= layer is activated with Left-thumb-outer (=L30=) and the =hypm= layer can be activated with Left-thumb-outer, right-thumb-outer (=R32=) and can be used to provide the =H-= prefix bindings defined in =.emacs= The =hyper= key seen by emacs can be mapped to =KC_RGUI= rather than the =KC_HYPR= modifier combination (see also the “[[https://github.com/qmk/qmk_firmware/issues/2179][the infamous Apple Fn key]]” for compatibility) @@ -61,41 +61,41 @@ A complete keymap can be defined within =mugur-mugur= which will generate the re (require 'mugur) (let ((mugur-qmk-path "~/qmk_firmware") - (mugur-keyboard-name "crkbd") - (mugur-layout-name "LAYOUT_split_3x6_3") - (mugur-keymap-name "zzkt4") + (mugur-keyboard-name "crkbd") + (mugur-layout-name "LAYOUT_split_3x6_3") + (mugur-keymap-name "zzkt4") (mugur-tapping-term 175)) (mugur-mugur '(("base" - tab q w e r t y u i o p bspace - C a s d f g h j k l ?\; (LT move ?\') - S z x c v b n m ?\, dot ?\? (MO qmik) - (MO emacs) lapo (G space) ent rapc (TG numeric)) + tab q w e r t y u i o p bspace + C a s d f g h j k l scolon (LT move ?\') + (LT S up) z x c v b n m comma dot slash (LT hypm down) + (MO emacs) lapo (G space) ent rapc (TT numeric)) ("numeric" - ~ ?\! ?\@ ?\# ?\$ ?\% ?\^ ?\& ?\* - = bspace - 0 1 2 3 4 5 6 7 8 9 0 (LT move ent) - S ` ?\< ?\{ ?\[ ?\( ?\) ?\] ?\} ?\> | (MO emacs) - (TG qmik) C-M --- --- S (TG numeric)) + "~" ?\! ?\@ ?\# ?\$ ?\% ?\^ ?\& ?\* - = bspace + 0 1 2 3 4 5 6 7 8 9 0 (LT move ent) + (LT S left) "`" --- ?\\ ?\{ ?\[ ?\] ?\} comma dot | (LT S right) + (TG qmik) lapo --- --- rapc ---) ("move" - --- M-v up --- --- --- --- --- --- --- --- --- - C-a left down right C-e --- --- --- --- --- --- --- - --- M-< C-v M-> --- --- --- --- --- --- --- --- - --- --- --- --- --- --- ) + --- M-v up --- --- --- --- --- --- --- --- --- + C-a left down right C-e --- left up down right --- --- + --- M-< C-v M-> --- --- --- --- --- --- --- --- + C S --- --- --- --- ) ("emacs" - esc --- --- (C-x 0) (C-x 2) (C-x 3) (C-x 4 t) --- --- --- --- --- + esc --- --- (C-x 0) (C-x 2) (C-x 3) (C-x 4 t) --- --- (C-M o) --- --- --- --- M-% --- --- (M-x "gtd" ent) (C-x b) --- --- "λ" --- --- reset --- M-x C-c --- ?\( ?\) (M-x "magit" ent) --- --- --- --- --- --- (H-i e) (C-x 8) --- (MO hypm)) ("hypm" - --- --- --- --- --- --- --- --- H-i (H-i o) (H-i l) --- - --- --- --- H-d --- --- --- --- --- --- --- --- - --- --- --- --- --- --- --- H-m (H-m s) --- --- --- - --- --- --- --- --- --- ) + x --- --- --- --- --- --- --- H-i (H-i o) (H-i l) --- + --- --- --- H-d --- --- --- --- --- --- --- --- + --- --- --- --- --- --- (H-m n) (H-m m) (H-m s) --- --- --- + --- --- --- --- --- --- ) ("qmik" -x- rgb_tog rgb_mod -x- -x- -x- --- --- --- --- --- reset @@ -185,10 +185,10 @@ turn on (or off) debug info (check that =CONSOLE_ENABLE= is set accordingly in = #+BEGIN_SRC c :tangle keymap.c void keyboard_post_init_user(void) { - debug_enable=true; - //debug_matrix=true; - debug_keyboard=true; - //debug_mouse=true; + // debug_enable=true; + // debug_matrix=true; + // debug_keyboard=true; + // debug_mouse=true; } #+END_SRC @@ -197,7 +197,10 @@ void keyboard_post_init_user(void) { this will create a =rules.mk= file with some specifics for the [[https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd][Corne Keyboard (CRKBD)]] #+BEGIN_SRC makefile :tangle rules.mk -BOOTLOADER = atmel-dfu # Elite-C +# START-MUGUR-REGION +# END-MUGUR-REGION + +BOOTLOADER = dfu-ee # Elite-C RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = yes # WS2812 # per-key RGB and underglow @@ -207,12 +210,19 @@ UNICODE_ENABLE = yes OLED_DRIVER_ENABLE = yes MOUSEKEY_ENABLE = no # use mouse keys or not CONSOLE_ENABLE = no # debug info + +VIA_ENABLE = yes # to enable configuraiton with VIA #+END_SRC ** config.h This will generate a =config.h= file +#+BEGIN_SRC c :tangle config.h +// START-MUGUR-REGION +// END-MUGUR-REGION +#+END_SRC + #+BEGIN_SRC c :tangle config.h #define EE_HANDS #+END_SRC @@ -319,31 +329,36 @@ then write the keymap as defined above then compile and/or write to the keyboard #+name: qmk -#+BEGIN_SRC shell :dir ~/qmk_firmware :wrap SRC text :tangle no +#+BEGIN_SRC shell :dir ~/qmk_firmware :wrap SRC text :results raw :tangle no qmk compile -kb crkbd -km zzkt4 #+END_SRC #+name: qmk -#+BEGIN_SRC shell :dir ~/qmk_firmware :wrap SRC text :tangle no +#+BEGIN_SRC shell :dir ~/qmk_firmware :wrap SRC text :results raw :tangle no qmk flash -km zzkt4 -bl dfu #+END_SRC or flash one side at a time… #+name: qmk -#+BEGIN_SRC shell :dir ~/qmk_firmware :wrap SRC text :tangle no +#+BEGIN_SRC shell :dir ~/qmk_firmware :wrap SRC text :results raw :tangle no qmk flash -km zzkt4 -bl dfu-split-left #+END_SRC #+name: qmk -#+BEGIN_SRC shell :dir ~/qmk_firmware wrap SRC text :tangle no +#+BEGIN_SRC shell :dir ~/qmk_firmware wrap SRC text :results raw :tangle no qmk flash -km zzkt4 -bl dfu-split-right #+END_SRC * illustrative -#+caption: blank crkbd layout -[[file:img/crkbd-default-layer.svg]] +#+caption: alphanumeric layers (0-2) +[[file:img/zzkt--alphalikes.png]] + +#+caption: emacs layers (3-4) +[[file:img/zzkt--emacs.png]] + +see also [[http://www.keyboard-layout-editor.com/##@_name=zzkt%20-%20alphalikes&author=https%2F:%2F%2F%2F%2Fgithub.com%2F%2Fzzkt%2F%2Fcrkbd¬es=layers%2F:%0A-%200%20default%0A-%201%20numeric%0A-%202%20move%0A-%203%20emacs%0A-%204%20hypm%0A-%205%20qmik&plate:false%3B&@_x:3&t=%23000000%0A%0A%23dd3c84%3B&=%0A%0A%23%0A%0A%0A%0A%0A%0A%0AE&_x:7%3B&=%0A%0A*%0A%0A%0A%0A%0A%0A%0AI%3B&@_y:-0.9&x:2&t=%23000000%0A%0A%23dd3c84%0A%231c937f%3B&=%0A%0A%2F@%0A%E2%96%B2%0A%0A%0A%0A%0A%0AW%3B&@_y:-1&x:4&t=%23000000%0A%0A%23dd3c84%3B&=%0A%0A$%0A%0A%0A%0A%0A%0A%0AR&_x:5%3B&=%0A%0A%2F&%0A%0A%0A%0A%0A%0A%0AU&_x:1&t=%23000000%0A%0A%23dd3c84%0A%0A%0A%0A%0A%23dd3c84&fa@:0&:0&:4&:0&:0&:0&:0&:4%3B%3B&=%0A%0A%2F_%0A%0A%0A%0A%0A-%0A%0AO%3B&@_y:-0.9000000000000001&x:5&t=%23000000%0A%0A%23dd3c84&f:3%3B&=%0A%0A%25%0A%0A%0A%0A%0A%0A%0AT&_x:3&f:3%3B&=%0A%0A%5E%0A%0A%0A%0A%0A%0A%0AY%3B&@_y:-0.8999999999999999&f:3%3B&=%0A%0A~%0A%0A%0A%0ATab&_t=%23000000%0A%0A%23dd3c84%0A%231c937f&fa@:0&:0&:0&:2%3B%3B&=%0A%0A!%0AM-v%0A%0A%0A%0A%0A%0AQ&_x:11&t=%23000000%0A%0A%23dd3c84%0A%0A%0A%0A%0A%23dd3c84%3B&=%0A%0A+%0A%0A%0A%0A%0A%2F=%0A%0AP&_t=%23000000&a:7%3B&=Bksp%3B&@_y:-0.30000000000000004&x:3&t=%23000000%0A%0A%23dd3c84%0A1c937f&a:4&f:3%3B&=%0A%0A3%0A%E2%96%BA%0A%0A%0A%0A%0A%0AD&_x:7&f:3%3B&=%0A%0A8%0A%E2%96%BC%0A%0A%0A%0A%0A%0AK%3B&@_y:-0.8999999999999999&x:2&f:3%3B&=%0A%0A2%0A%E2%96%BC%0A%0A%0A%0A%0A%0AS&_x:1&t=%23000000%0A%0A%23dd3c84%0A%231c937f&f:3%3B&=%0A%0A4%0AC-e%0A%0A%0A%0A%0A%0AF&_x:5&t=%23000000%0A%0A%23dd3c84%0A1c937f&f2:0%3B&=%0A%0A7%0A%E2%96%B2%0A%0A%0A%0A%0A%0AJ&_x:1%3B&=%0A%0A9%0A%E2%96%BA%0A%0A%0A%0A%0A%0AL%3B&@_y:-0.9000000000000001&x:5&t=%23000000%0A%0A%23dd3c84%3B&=%0A%0A5%0A%0A%0A%0A%0A%0A%0AG&_x:3&t=%23000000%0A%0A%23dd3c84%0A1c937f&fa@:0&:0&:0&:1%3B%3B&=%0A%0A6%0A%E2%97%80%EF%B8%8E%0A%0A%0A%0A%0A%0AH%3B&@_y:-0.9000000000000001&t=%23000000%0A%0A%23dd3c84%0A%231c937f&f:3%3B&=%0A%0A0%0AC-a%0A%0A%0A%0A%0A%0ACtrl&=%0A%0A1%0A%E2%97%80%EF%B8%8E%0A%0A%0A%0A%0A%0AA&_x:11&t=%23000000%0A%0A%23dd3c84&fa@:0&:0&:0&:1&:0&:0&:0&:0&:0&:4%3B%3B&=%0A%0A0%0A%0A%0A%0A%0A%0A%2F:%0A%2F%3B&_f:2%3B&=%0A%0A%E2%86%B5%0A%0A%0A%0A%0A%0A%22%0A'%20(LT%202)%3B&@_y:-0.2999999999999998&x:3&t=%23000000%0A%0A%23dd3c84%0A%231c937f&f:3&fa@:0&:0&:0&:2%3B%3B&=%0A%0A%0AM%20%3E%0A%0A%0A%0A%0A%0AC&_x:7&t=%23000000&a:5&fa@:0&:0&:0&:2&:0&:0&:6%3B%3B&=%3C%0A%0A%0A%0A%0A%0A,%3B&@_y:-0.8999999999999999&x:2&t=%23000000%0A%0A%23dd3c84%0A%231c937f&a:4%3B&=%0A%0A%0AC-v%0A%0A%0A%0A%0A%0AX&_x:1&t=%23000000%0A%0A%23dd3c84%3B&=%0A%0A%7B%0A%0A%0A%0A%0A%0A%0AV&_x:5%3B&=%0A%0A%7D%0A%0A%0A%0A%0A%0A%0AM&_x:1&t=%23000000&a:5%3B&=%3E%0A%0A%0A%0A%0A%0A.%3B&@_y:-0.8999999999999999&x:5&t=%23000000%0A%0A%23dd3c84&a:4%3B&=%0A%0A%5B%0A%0A%0A%0A%0A%0A%0AB&_x:3%3B&=%0A%0A%5D%0A%0A%0A%0A%0A%0A%0AN%3B&@_y:-0.9000000000000004&t=%23000000&a:7%3B&=Shift&_t=%23000000%0A%0A%23dd3c84%0A%231c937f&a:4&fa@:0&:0&:6&:2%3B%3B&=Z%0A%0A%60%0AM%20%3C&_x:11&t=%23000000%0A%0A%23dd3c84&f:3%3B&=%0A%0A%7C%0A%0A%0A%0A%0A%0A%3F%0A%2F%2F&_t=%23dd3c84&f:2%3B&=(MO%203)%0A%0A%0A%0A%0A%0A(MO%205)%3B&@_y:-0.19999999999999973&x:3.5%3B&=(MO%205)%0A%0A%0A%0A%0A%0A(MO%203)&_x:6&t=%23000000%3B&=(TG%201)%3B&@_r:15&rx:4.5&ry:4.1&y:-0.9999999999999996&f:3%3B&=lapo%3B&@_r:30&rx:5.4&ry:4.3&y:-1.5&x:0.09999999999999964&f:2&h:1.5%3B&=(G%20spc)%3B&@_r:-30&rx:9.6&y:-1.5&x:-1.0999999999999996&f:3&h:1.5%3B&=Enter%3B&@_r:-15&rx:10.5&ry:4.1&y:-1.0999999999999996&x:-1&t=&fa@:2%3B%3B&=rapc][KLE layers (pt.1)]] and [[http://www.keyboard-layout-editor.com/##@_name=zzkt%20-%20emacs&author=https%2F:%2F%2F%2F%2Fgithub.com%2F%2Fzzkt%2F%2Fcrkbd¬es=layers%2F:%0A-%200%20default%0A-%201%20numeric%0A-%202%20move%0A-%203%20emacs%0A-%204%20hypm%0A-%205%20qmik&plate:false%3B&@_x:3&a:7%3B&=C-x%200&_x:7&t=%23000000%0A%0A%23dd3c84&a:4%3B&=%0A%0AH-i%3B&@_y:-0.9&x:2&t=%23000000&a:7%3B&=%3B&@_y:-1&x:4%3B&=C-x%202&_x:5%3B&=&_x:1&t=%23000000%0A%0A%23dd3c84%0A%0A%0A%0A%0A%23dd3c84&a:4%3B&=%0A%0AH-i%20o%0A%0A%0A%0AC-M%20o%3B&@_y:-0.9000000000000001&x:5&t=%23000000&a:7%3B&=C-x%203&_x:3%3B&=C-x%204%20t%3B&@_y:-0.8999999999999999&t=%23000000%0A%0A%23dd3c84&a:4%3B&=esc&_t=%23000000&a:7%3B&=&_x:11&t=%23000000%0A%0A%23dd3c84%0A%0A%0A%0A%0A%23dd3c84&a:4%3B&=%0A%0AH-i%20l&_t=%23000000&a:7%3B&=%3B&@_y:-0.30000000000000004&x:3&t=%23000000%0A%0A%23dd3c84%0A1c937f&a:4%3B&=%0A%0AH-d&_x:7&t=%23000000&a:7%3B&=%3B&@_y:-0.8999999999999999&x:2%3B&=M-%25&_x:1%3B&=&_x:5%3B&=&_x:1%3B&=%3B&@_y:-0.9000000000000001&x:5%3B&=(gtd)&_x:3&a:6%3B&=C-x%20b%3B&@_y:-0.9000000000000001&a:7%3B&=&=&_x:11%3B&=&_f:2%3B&=%3B&@_y:-0.2999999999999998&x:3&f:3%3B&=C-c&_x:7&t=%23000000%0A%0A%23dd3c84&a:4&fa@:0&:0&:2&:0&:0&:0&:0&:0&:0&:0%3B%3B&=%0A%0AH-m%20s%3B&@_y:-0.8999999999999999&x:2&t=%23000000&a:7%3B&=M-x&_x:1%3B&=&_x:5&t=%23000000%0A%0A%23dd3c84&a:4&fa@:0&:0&:0&:0&:0&:0&:0&:0&:0&:2%3B%3B&=%0A%0AH-m%0A%0A%0A%0A%0A%0A%0A(magit)&_x:1&t=%23000000&a:7%3B&=%3B&@_y:-0.8999999999999999&x:5%3B&=&_x:3&t=%23000000%0A%0A%23dd3c84&a:4%3B&=%0A%0AH-n%3B&@_y:-0.9000000000000004&t=%23000000%3B&=reset&_a:7%3B&=&_x:11%3B&=&_t=%23dd3c84&f:2%3B&=%3B&@_y:-0.19999999999999973&x:3.5%3B&=&_x:6&t=%23000000%3B&=(MO%204)%3B&@_r:15&rx:4.5&ry:4.1&y:-0.9999999999999996&f:3%3B&=lapo%3B&@_r:30&rx:5.4&ry:4.3&y:-1.5&x:0.09999999999999964&f:2&fa@:4%3B&h:1.5%3B&=H-i%20e%3B&@_r:-30&rx:9.6&y:-1.5&x:-1.0999999999999996&f:3&fa@:4%3B&h:1.5%3B&=C-x%208%3B&@_r:-15&rx:10.5&ry:4.1&y:-1.0999999999999996&x:-1&f:3%3B&=rapc][KLE layers (pt.2)]] etc. * further diff --git a/config.h b/config.h index c490abc..1d6cc2f 100644 --- a/config.h +++ b/config.h @@ -1,15 +1,23 @@ // START-MUGUR-REGION - #undef TAPPING_TERM - #define TAPPING_TERM 175 - #define COMBO_TERM 300 - #define LEADER_TIMEOUT 300 - #define LEADER_PER_KEY_TIMING - #define COMBO_COUNT 0 - #define FORCE_NKRO - #undef RGBLIGHT_ANIMATIONS +#undef TAPPING_TERM +#define TAPPING_TERM 175 +#define COMBO_TERM 300 +#define LEADER_TIMEOUT 300 +#define LEADER_PER_KEY_TIMING +#define COMBO_COUNT 0 +#define FORCE_NKRO +#undef RGBLIGHT_ANIMATIONS -// END-MUGUR-REGION #define UNICODE_SELECTED_MODES UC_MAC +// END-MUGUR-REGION + +#define EE_HANDS + +#define TAPPING_TOGGLE 2 +#define TAPPING_TERM 175 +#define COMBO_TERM 300 + +#define UNICODE_SELECTED_MODES UC_MAC #define VENDOR_ID 0x4653 #define PRODUCT_ID 0x0001 @@ -28,7 +36,7 @@ #define DISABLE_RGB_MATRIX_ALPHAS_MODS #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -/* #define DISABLE_RGB_MATRIX_BREATHING */ +#define DISABLE_RGB_MATRIX_BREATHING #define DISABLE_RGB_MATRIX_CYCLE_ALL #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN @@ -54,16 +62,9 @@ #define DISABLE_RGB_MATRIX_MULTISPLASH #define DISABLE_RGB_MATRIX_SOLID_SPLASH #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP #define RGB_MATRIX_STARTUP_HUE 128 // HSV_CYAN #define RGB_MATRIX_STARTUP_SAT 255 #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // #define RGB_MATRIX_STARTUP_SPD #endif - -#define EE_HANDS - -#define TAPPING_TERM 175 -#define COMBO_TERM 300 -#define RETRO_TAPPING diff --git a/data/zzkt--alphalikes.kle.json b/data/zzkt--alphalikes.kle.json new file mode 100644 index 0000000..7221590 --- /dev/null +++ b/data/zzkt--alphalikes.kle.json @@ -0,0 +1,372 @@ +[ + { + "name": "zzkt - alphalikes", + "author": "https://github.com/zzkt/crkbd", + "notes": "layers:\n- 0 default\n- 1 numeric\n- 2 move\n- 3 emacs\n- 4 hypm\n- 5 qmik", + "plate": false + }, + [ + { + "x": 3, + "t": "#000000\n\n#dd3c84" + }, + "\n\n#\n\n\n\n\n\n\nE", + { + "x": 7 + }, + "\n\n*\n\n\n\n\n\n\nI" + ], + [ + { + "y": -0.9, + "x": 2, + "t": "#000000\n\n#dd3c84\n#1c937f" + }, + "\n\n@\n▲\n\n\n\n\n\nW" + ], + [ + { + "y": -1, + "x": 4, + "t": "#000000\n\n#dd3c84" + }, + "\n\n$\n\n\n\n\n\n\nR", + { + "x": 5 + }, + "\n\n&\n\n\n\n\n\n\nU", + { + "x": 1, + "t": "#000000\n\n#dd3c84\n\n\n\n\n#dd3c84", + "fa": [ + 0, + 0, + 4, + 0, + 0, + 0, + 0, + 4 + ] + }, + "\n\n_\n\n\n\n\n-\n\nO" + ], + [ + { + "y": -0.9000000000000001, + "x": 5, + "t": "#000000\n\n#dd3c84", + "f": 3 + }, + "\n\n%\n\n\n\n\n\n\nT", + { + "x": 3, + "f": 3 + }, + "\n\n^\n\n\n\n\n\n\nY" + ], + [ + { + "y": -0.8999999999999999, + "f": 3 + }, + "\n\n~\n\n\n\nTab", + { + "t": "#000000\n\n#dd3c84\n#1c937f", + "fa": [ + 0, + 0, + 0, + 2 + ] + }, + "\n\n!\nM v\n\n\n\n\n\nQ", + { + "x": 11, + "t": "#000000\n\n#dd3c84\n\n\n\n\n#dd3c84" + }, + "\n\n+\n\n\n\n\n=\n\nP", + { + "t": "#000000", + "a": 7 + }, + "Bksp" + ], + [ + { + "y": -0.30000000000000004, + "x": 3, + "t": "#000000\n\n#dd3c84\n1c937f", + "a": 4, + "f2": 0 + }, + "\n\n3\n►\n\n\n\n\n\nD", + { + "x": 7 + }, + "\n\n8\n▼\n\n\n\n\n\nK" + ], + [ + { + "y": -0.8999999999999999, + "x": 2 + }, + "\n\n2\n▼\n\n\n\n\n\nS", + { + "x": 1, + "t": "#000000\n\n#dd3c84\n#1c937f" + }, + "\n\n4\nC e\n\n\n\n\n\nF", + { + "x": 5, + "t": "#000000\n\n#dd3c84\n1c937f" + }, + "\n\n7\n▲\n\n\n\n\n\nJ", + { + "x": 1 + }, + "\n\n9\n►\n\n\n\n\n\nL" + ], + [ + { + "y": -0.9000000000000001, + "x": 5, + "t": "#000000\n\n#dd3c84" + }, + "\n\n5\n\n\n\n\n\n\nG", + { + "x": 3, + "t": "#000000\n\n#dd3c84\n1c937f", + "fa": [ + 0, + 0, + 0, + 1 + ] + }, + "\n\n6\n◀︎\n\n\n\n\n\nH" + ], + [ + { + "y": -0.9000000000000001, + "t": "#000000\n\n#dd3c84\n#1c937f", + "f": 3 + }, + "\n\n0\nC a\n\n\n\n\n\nCtrl", + { + "fa": [ + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "\n\n1\n◀︎\n\n\n\n\n\nA", + { + "x": 11, + "t": "#000000\n\n#dd3c84", + "fa": [ + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 4 + ] + }, + "\n\n0\n\n\n\n\n\n:\n;", + { + "t": "#000000\n\n#dd3c84\n#1c937f", + "f": 2 + }, + "\n(LT 2)\n\n●\n\n\n\n\n\"\n'" + ], + [ + { + "y": -0.2999999999999998, + "x": 3, + "f": 3, + "fa": [ + 0, + 0, + 0, + 2 + ] + }, + "\n\n\\\nM >\n\n\n\n\n\nC", + { + "x": 7, + "t": "#000000", + "a": 5, + "fa": [ + 0, + 0, + 0, + 2, + 0, + 0, + 6 + ] + }, + "<\n\n\n\n\n\n," + ], + [ + { + "y": -0.8999999999999999, + "x": 2, + "t": "#000000\n\n\n#1c937f", + "a": 4 + }, + "\n\n\nC v\n\n\n\n\n\nX", + { + "x": 1, + "t": "#000000\n\n#dd3c84" + }, + "\n\n{\n\n\n\n\n\n\nV", + { + "x": 5 + }, + "\n\n}\n\n\n\n\n\n\nM", + { + "x": 1, + "t": "#000000", + "a": 5 + }, + ">\n\n\n\n\n\n." + ], + [ + { + "y": -0.8999999999999999, + "x": 5, + "t": "#000000\n\n#dd3c84", + "a": 4 + }, + "\n\n[\n\n\n\n\n\n\nB", + { + "x": 3 + }, + "\n\n]\n\n\n\n\n\n\nN" + ], + [ + { + "y": -0.9000000000000004, + "t": "#000000", + "a": 5, + "fa": [ + 0, + 0, + 0, + 2, + 0, + 0, + 4 + ] + }, + "\nShift\n\n\n\n\n▲", + { + "t": "#000000\n\n#dd3c84\n#1c937f", + "a": 4, + "fa": [ + 0, + 0, + 6, + 2 + ] + }, + "Z\n\n`\nM <", + { + "x": 11, + "t": "#000000\n\n#dd3c84", + "f": 3 + }, + "\n\n|\n\n\n\n\n\n?\n/", + { + "t": "#000000", + "a": 5, + "f": 2, + "fa": [ + 0, + 0, + 6, + 0, + 0, + 0, + 4 + ] + }, + "\n(LT 4)\n\n\n\n\n▼" + ], + [ + { + "y": -0.19999999999999973, + "x": 3.5, + "t": "#dd3c84\n#1c937f\n\n\n\n\n#000000", + "a": 4, + "f": 2 + }, + "(TG 5)\nCtrl\n\n\n\n\n(MO 3)", + { + "x": 6, + "t": "#000000\n\n#dd3c84" + }, + "(TG 1)\n\n●" + ], + [ + { + "r": 15, + "rx": 4.5, + "ry": 4.1, + "y": -0.9999999999999996, + "t": "#000000\n#1c937f", + "f": 3, + "f2": 2 + }, + "lapo\nShift" + ], + [ + { + "r": 30, + "rx": 5.4, + "ry": 4.3, + "y": -1.5, + "x": 0.09999999999999964, + "t": "#000000", + "f": 2, + "h": 1.5 + }, + "(G spc)" + ], + [ + { + "r": -30, + "rx": 9.6, + "y": -1.5, + "x": -1.0999999999999996, + "a": 5, + "f": 3, + "h": 1.5 + }, + "(G ↵ )" + ], + [ + { + "r": -15, + "rx": 10.5, + "ry": 4.1, + "y": -0.9999999999999996, + "x": -1, + "a": 4 + }, + "rapc" + ] +] \ No newline at end of file diff --git a/data/zzkt--emacs.kle.json b/data/zzkt--emacs.kle.json new file mode 100644 index 0000000..9fb0cff --- /dev/null +++ b/data/zzkt--emacs.kle.json @@ -0,0 +1,333 @@ +[ + { + "name": "zzkt - emacs", + "author": "https://github.com/zzkt/crkbd", + "notes": "layers:\n- 0 default\n- 1 numeric\n- 2 move\n- 3 emacs\n- 4 hypm\n- 5 qmik", + "plate": false + }, + [ + { + "x": 3, + "a": 7 + }, + "C-x 0", + { + "x": 7, + "t": "#000000\n\n#dd3c84", + "a": 4 + }, + "\n\nH-i" + ], + [ + { + "y": -0.9, + "x": 2, + "t": "#000000", + "a": 7 + }, + "" + ], + [ + { + "y": -1, + "x": 4 + }, + "C-x 2", + { + "x": 5 + }, + "", + { + "x": 1, + "t": "#000000\n\n#dd3c84", + "a": 4, + "fa": [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ] + }, + "\n\nH-i o\n\n\n\n\n\n\nC-M o" + ], + [ + { + "y": -0.9000000000000001, + "x": 5, + "t": "#000000", + "a": 7 + }, + "C-x 3", + { + "x": 3 + }, + "C-x 4 t" + ], + [ + { + "y": -0.8999999999999999, + "a": 4, + "fa": [ + 2 + ] + }, + "esc", + { + "a": 7 + }, + "", + { + "x": 11, + "t": "#000000\n\n#dd3c84", + "a": 4, + "fa": [ + 2, + 0, + 2 + ] + }, + "\n\nH-i l", + { + "t": "#000000", + "a": 7 + }, + "" + ], + [ + { + "y": -0.30000000000000004, + "x": 3, + "t": "#000000\n\n#dd3c84", + "a": 4, + "f": 3 + }, + "\n\nH-d", + { + "x": 7, + "t": "#000000", + "a": 7 + }, + "" + ], + [ + { + "y": -0.8999999999999999, + "x": 2, + "f": 3 + }, + "M-%", + { + "x": 1 + }, + "", + { + "x": 5 + }, + "", + { + "x": 1 + }, + "" + ], + [ + { + "y": -0.9000000000000001, + "x": 5 + }, + "(gtd)", + { + "x": 3, + "f": 3 + }, + "C-x b" + ], + [ + { + "y": -0.9000000000000001 + }, + "", + "", + { + "x": 11 + }, + "", + { + "f": 2 + }, + "" + ], + [ + { + "y": -0.2999999999999998, + "x": 3, + "f": 3 + }, + "C-c", + { + "x": 7, + "t": "#000000\n\n#dd3c84", + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + }, + "\n\nH-m s" + ], + [ + { + "y": -0.8999999999999999, + "x": 2, + "t": "#000000", + "a": 7 + }, + "M-x", + { + "x": 1 + }, + "", + { + "x": 5, + "t": "#000000\n\n#dd3c84", + "a": 4, + "fa": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ] + }, + "\n\nH-m\n\n\n\n\n\n\n(magit)", + { + "x": 1, + "t": "#000000", + "a": 7 + }, + "" + ], + [ + { + "y": -0.8999999999999999, + "x": 5 + }, + "", + { + "x": 3, + "t": "#000000\n\n#dd3c84", + "a": 4 + }, + "\n\nH-n" + ], + [ + { + "y": -0.9000000000000004, + "t": "#000000" + }, + "reset", + { + "a": 7 + }, + "", + { + "x": 11 + }, + "", + { + "t": "#dd3c84", + "f": 2 + }, + "" + ], + [ + { + "y": -0.19999999999999973, + "x": 3.5 + }, + "", + { + "x": 6, + "t": "#000000" + }, + "(MO 4)" + ], + [ + { + "r": 15, + "rx": 4.5, + "ry": 4.1, + "y": -0.9999999999999996, + "a": 4, + "f": 3 + }, + "lapo" + ], + [ + { + "r": 30, + "rx": 5.4, + "ry": 4.3, + "y": -1.5, + "x": 0.09999999999999964, + "a": 5, + "f": 2, + "fa": [ + 4, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "h": 1.5 + }, + "H-i e" + ], + [ + { + "r": -30, + "rx": 9.6, + "y": -1.5, + "x": -1.0999999999999996, + "f": 3, + "fa": [ + 4, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "h": 1.5 + }, + "C-x 8" + ], + [ + { + "r": -15, + "rx": 10.5, + "ry": 4.1, + "y": -0.9999999999999996, + "x": -1, + "a": 4, + "fa": [ + 2 + ] + }, + "rapc" + ] +] \ No newline at end of file diff --git a/img/zzkt--alphalikes.png b/img/zzkt--alphalikes.png new file mode 100644 index 0000000000000000000000000000000000000000..7f58b28d4588ca0d3d2090e643c349494d6b90c8 GIT binary patch literal 42952 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 literal 0 HcmV?d00001 diff --git a/img/zzkt--emacs.png b/img/zzkt--emacs.png new file mode 100644 index 0000000000000000000000000000000000000000..e76f17889a17c18ba96b10b98a5aa6730ada28ea GIT binary patch literal 35208 zcmeFZcRbeZ|32Oj8b-^^YSJKNWL%O+!!8;|S!HBoZ&8#HO)Z4V3Z*2QtW-$Sm26jK z?{(SV@=aqhZO_&4#k&_>?5kJwwtZakr)&Z}U3(S%n_aF5{bjieR4 zG8c_ar8EyHEqocj$!3xVw~4sK{51}k*cn|kv#~d`w&EqOdDhU{!CrRbM*N+3;o|mYrhi}E%5Gu!m-+3lED?3;i{0{PNetnOI@AE@E0LE{2FM zTEx5P&;j{l&X2moJ=C?%{g~~rIyYw7us_`NN5_%DZdFsKS~E*C|M2~k7Zk}(_4KZ* z4YtNF0z-sCuBM#c(fKB^IPH5hsh6T@k#=``Zk_r1)k~H$({IjCY31};UvPJ@S8wt9 z(4|dHJeHaQ%OlP-KeB7<{B-WwW#&o=vV#G6M5Q7_ZC}3E%u?R3H8nj+@$nrA$;q_x z%rtX9mpS5zcM=mPS9vqr^m$2G)jKD@dGlsyVx;T5nb~5aAYOW(xu5-aUcY|bjJM

-0{;30SvSv< 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.pressed) { - switch (keycode) { -case MACRO_1: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_0)); return false; -case MACRO_2: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_2)); return false; -case MACRO_3: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_3)); return false; -case MACRO_4: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_4) SS_TAP(X_T)); return false; -case MACRO_5: SEND_STRING(SS_LALT(SS_TAP(X_X)) "gtd" SS_TAP(X_ENTER)); return false; -case MACRO_6: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_B)); return false; -case MACRO_7: SEND_STRING("λ"); return false; -case MACRO_8: SEND_STRING(SS_LALT(SS_TAP(X_X)) "magit" SS_TAP(X_ENTER)); return false; -case MACRO_9: SEND_STRING(SS_RGUI(SS_TAP(X_I)) SS_TAP(X_E)); return false; -case MACRO_10: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_8)); return false; -case MACRO_11: SEND_STRING(SS_RGUI(SS_TAP(X_I)) SS_TAP(X_O)); return false; -case MACRO_12: SEND_STRING(SS_RGUI(SS_TAP(X_I)) SS_TAP(X_L)); return false; -case MACRO_13: SEND_STRING(SS_RGUI(SS_TAP(X_M)) SS_TAP(X_S)); return false; -case MACRO_14: SEND_STRING(SS_RGUI(SS_TAP(X_D))); return false; -case MACRO_15: SEND_STRING(SS_RGUI(SS_TAP(X_M)) SS_TAP(X_ENTER)); return false; -} - } - return true; - }; + if (record->event.pressed) { + switch (keycode) { + case MACRO_1: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_0)); return false; + case MACRO_2: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_2)); return false; + case MACRO_3: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_3)); return false; + case MACRO_4: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_4) SS_TAP(X_T)); return false; + case MACRO_5: SEND_STRING(SS_LCTL(SS_TAP(X_LALT)) SS_TAP(X_O)); return false; + case MACRO_6: SEND_STRING(SS_LALT(SS_TAP(X_X)) "gtd" SS_TAP(X_ENTER)); return false; + case MACRO_7: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_B)); return false; + case MACRO_8: SEND_STRING("λ"); return false; + case MACRO_9: SEND_STRING(SS_LALT(SS_TAP(X_X)) "magit" SS_TAP(X_ENTER)); return false; + case MACRO_10: SEND_STRING(SS_RCMD(SS_TAP(X_I)) SS_TAP(X_E)); return false; + case MACRO_11: SEND_STRING(SS_LCTL(SS_TAP(X_X)) SS_TAP(X_8)); return false; + case MACRO_12: SEND_STRING(SS_RCMD(SS_TAP(X_I)) SS_TAP(X_O)); return false; + case MACRO_13: SEND_STRING(SS_RCMD(SS_TAP(X_I)) SS_TAP(X_L)); return false; + case MACRO_14: SEND_STRING(SS_RCMD(SS_TAP(X_M)) SS_TAP(X_N)); return false; + case MACRO_15: SEND_STRING(SS_RCMD(SS_TAP(X_M)) SS_TAP(X_M)); return false; + case MACRO_16: SEND_STRING(SS_RCMD(SS_TAP(X_M)) SS_TAP(X_S)); return false;} + } + return true; +}; - /* Tap Dances */ - - - /* Leader Keys */ - - - /* Combos */ - - - /* Layer Codes and Matrix */ - enum layer_codes {BASE, NUMERIC, MOVE, EMACS, HYPM, QMIK}; +/* Layer Codes and Matrix */ +enum layer_codes {BASE = 0, NUMERIC = 1, MOVE = 2, EMACS = 3, HYPM = 4, QMIK = 15}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[BASE] = LAYOUT_split_3x6_3(KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPACE, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, LT(MOVE, KC_QUOTE), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_QUESTION, MO(QMIK), MO(EMACS), KC_LAPO, MT(MOD_LGUI, KC_SPACE), KC_ENTER, KC_RAPC, TG(NUMERIC)), + [BASE] = LAYOUT_split_3x6_3(KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPACE, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, LT(MOVE, KC_QUOTE), MT(MOD_LSFT, KC_UP), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, LT(HYPM, KC_DOWN), MO(EMACS), KC_LAPO, MT(MOD_LGUI, KC_SPACE), MT(MOD_RGUI, KC_ENTER), KC_RAPC, TT(NUMERIC)), -[NUMERIC] = LAYOUT_split_3x6_3(KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_MINUS, KC_EQUAL, KC_BSPACE, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, LT(MOVE, KC_ENTER), KC_LSFT, KC_TRNS, KC_LEFT_ANGLE_BRACKET, KC_LEFT_CURLY_BRACE, KC_LBRACKET, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_RBRACKET, KC_RIGHT_CURLY_BRACE, KC_RIGHT_ANGLE_BRACKET, KC_PIPE, MO(EMACS), TG(QMIK), LCTL(KC_LALT), KC_TRNS, KC_TRNS, KC_LSFT, TG(NUMERIC)), + [NUMERIC] = LAYOUT_split_3x6_3(KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_MINUS, KC_EQUAL, KC_BSPACE, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, LT(MOVE, KC_ENTER), MT(MOD_LSFT, KC_LEFT), KC_GRAVE, KC_TRNS, KC_TRNS, KC_LEFT_CURLY_BRACE, KC_LBRACKET, KC_RBRACKET, KC_RIGHT_CURLY_BRACE, KC_COMMA, KC_DOT, KC_PIPE, MT(MOD_RSFT, KC_RIGHT), TG(QMIK), KC_LAPO, KC_TRNS, KC_TRNS, KC_RAPC, KC_TRNS), -[MOVE] = LAYOUT_split_3x6_3(KC_TRNS, LALT(KC_V), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_A), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LALT(KC_LEFT_ANGLE_BRACKET), LCTL(KC_V), LALT(KC_RIGHT_ANGLE_BRACKET), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [MOVE] = LAYOUT_split_3x6_3(KC_TRNS, LALT(KC_V), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_A), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E), KC_TRNS, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, LALT(KC_LEFT_ANGLE_BRACKET), LCTL(KC_V), LALT(KC_RIGHT_ANGLE_BRACKET), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCTL, KC_LSFT, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS), -[EMACS] = LAYOUT_split_3x6_3(KC_ESCAPE, KC_TRNS, KC_TRNS, MACRO_1, MACRO_2, MACRO_3, MACRO_4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LALT(KC_PERCENT), KC_TRNS, KC_TRNS, MACRO_5, MACRO_6, KC_TRNS, KC_TRNS, MACRO_7, KC_TRNS, KC_TRNS, RESET, KC_TRNS, LALT(KC_X), LCTL(KC_C), KC_TRNS, KC_LEFT_PAREN, KC_RIGHT_PAREN, MACRO_8, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MACRO_9, MACRO_10, KC_TRNS, MO(HYPM)), + [EMACS] = LAYOUT_split_3x6_3(KC_ESCAPE, KC_TRNS, KC_TRNS, MACRO_1, MACRO_2, MACRO_3, MACRO_4, KC_TRNS, KC_TRNS, MACRO_5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LALT(KC_PERCENT), KC_TRNS, KC_TRNS, MACRO_6, MACRO_7, KC_TRNS, KC_TRNS, MACRO_8, KC_TRNS, KC_TRNS, RESET, KC_TRNS, LALT(KC_X), LCTL(KC_C), KC_TRNS, KC_LEFT_PAREN, KC_RIGHT_PAREN, MACRO_9, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MACRO_10, MACRO_11, KC_TRNS, MO(HYPM)), -[HYPM] = LAYOUT_split_3x6_3(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MACRO_15, MACRO_11, MACRO_12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MACRO_14, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_M, MACRO_13, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [HYPM] = LAYOUT_split_3x6_3(KC_X, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_I, MACRO_12, MACRO_13, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MACRO_14, MACRO_15, MACRO_16, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), -[QMIK] = LAYOUT_split_3x6_3(KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, RGB_SAD, RGB_VAD, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, RGB_VAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)}; + [QMIK] = LAYOUT_split_3x6_3(KC_NO, RGB_TOG, RGB_MOD, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, RGB_SAD, RGB_VAD, RGB_HUD, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, RGB_VAI, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)}; // END-MUGUR-REGION @@ -64,38 +54,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // 'fm_logo-128x32', 32x128px static void render_logo(void) { static const char PROGMEM fm_logo[] = { -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x20, 0x70, 0x78, 0x78, 0x78, 0x78, 0x38, 0x30, 0x60, 0xd0, 0xc0, 0x80, -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x83, 0xcf, 0xfe, 0xfc, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0c, 0x0e, 0x1e, 0x1e, 0x3e, 0x7e, 0xfe, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x78, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, -0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xe0, 0xfb, -0xff, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x1f, 0x7f, 0xff, 0xff, -0x7f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1e, 0x1e, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, -0x00, 0x30, 0x30, 0x60, 0x60, 0x60, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfe, 0xff, 0xf8, -0xe0, 0xe0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0xff, 0xff, 0xff, 0x1f, 0x0f, 0x07, -0x07, 0x07, 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0e, 0x1c, 0xf8, -0xfc, 0xfe, 0x6f, 0xe7, 0xf3, 0xf9, 0xf9, 0xf9, 0xf9, 0xf3, 0xe3, 0x07, 0x1e, 0xfc, 0xf0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x07, 0x0f, 0x1c, 0x38, 0x33, 0x33, 0x77, 0x77, 0x33, 0x33, 0x39, 0x1c, 0x0f, 0x07, 0x01, 0x00 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, 0x78, 0x78, 0x78, 0x78, 0x38, 0x30, 0x60, 0xd0, 0xc0, 0x80, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x83, 0xcf, 0xfe, 0xfc, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0c, 0x0e, 0x1e, 0x1e, 0x3e, 0x7e, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x78, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xe0, 0xfb, + 0xff, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x1f, 0x7f, 0xff, 0xff, + 0x7f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1e, 0x1e, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x30, 0x60, 0x60, 0x60, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfe, 0xff, 0xf8, + 0xe0, 0xe0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0xff, 0xff, 0xff, 0x1f, 0x0f, 0x07, + 0x07, 0x07, 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0e, 0x1c, 0xf8, + 0xfc, 0xfe, 0x6f, 0xe7, 0xf3, 0xf9, 0xf9, 0xf9, 0xf9, 0xf3, 0xe3, 0x07, 0x1e, 0xfc, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x07, 0x0f, 0x1c, 0x38, 0x33, 0x33, 0x77, 0x77, 0x33, 0x33, 0x39, 0x1c, 0x0f, 0x07, 0x01, 0x00 }; oled_write_raw_P(fm_logo, sizeof(fm_logo)); } @@ -118,7 +108,7 @@ void oled_task_user(void) { void keyboard_post_init_user(void) { debug_enable=true; - //debug_matrix=true; debug_keyboard=true; + //debug_matrix=true; //debug_mouse=true; } diff --git a/rules.mk b/rules.mk index d154ca8..502d81b 100644 --- a/rules.mk +++ b/rules.mk @@ -1,18 +1,27 @@ - # START-MUGUR-REGION + +BOOTLOADER = dfu # Elite-C + +# START-MUGUR-REGION FORCE_NKRO = yes - LEADER_ENABLE = no - RGBLIGHT_ENABLE = yes - TAP_DANCE_ENABLE = no - COMBO_ENABLE = no + LEADER_ENABLE = no + RGBLIGHT_ENABLE = no + TAP_DANCE_ENABLE = no + COMBO_ENABLE = no + +# END-MUGUR-REGION + +NKRO_ENABLE = no # six simultaneous keys should be enough -# END-MUGUR-REGION BOOTLOADER = atmel-dfu # Elite-C RGBLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = yes # WS2812 # per-key RGB and underglow +RGB_MATRIX_ENABLE = no # yes # WS2812 # per-key RGB and underglow + +VIA_ENABLE = yes UNICODE_ENABLE = yes OLED_DRIVER_ENABLE = yes MOUSEKEY_ENABLE = no # use mouse keys or not + CONSOLE_ENABLE = no # debug info