From 34bce6f206e30c06f4b6ccd22d461690732ea607 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sun, 24 Jul 2016 04:08:40 +0200 Subject: fixed stupid errors --- keyboards/planck/keymaps/bone2planck/keymap.c | 29 ++++++++++++++++----------- 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index ceb5564251..4cac60ff9f 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -3,10 +3,15 @@ #ifdef BACKLIGHT_ENABLE #include "backlight.h" #endif +#include "keymap_german.h" + +/* for intellisense, comment for building #include "..\..\..\..\quantum\keymap_extras\keymap_german.h" #include "..\..\..\..\quantum\keymap_common.h" #include "..\..\..\..\tmk_core\common\keycode.h" -#define _______ = KC_TRNS; +*/ + +#define _______ KC_TRNS /* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. It has "üäöß" as it is optimized for a mix of German & English. @@ -26,14 +31,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [0] = { { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, { LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) }, { KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT }, - { KC_LGUI, KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_NO, KC_RCTL, KC_ESC } + { KC_RGUI, KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_RALT, KC_RCTL, KC_ESC } }, /* M1 Special Characters @@ -45,7 +50,7 @@ very ergonomic placement for coding * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| # | $ | | | ~ | € | + | % | " | ' | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [1] = { @@ -64,7 +69,7 @@ very easy to get used to & intuituve placement * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M3 | M2 | Space | M2 | M3 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M3 | M2 | Space | M2 | M3 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [2] = { @@ -83,12 +88,12 @@ accessed by sliding from M2 to M3 with thumb * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| 0 | 1 | 2 | 3 | ; | | Tab | Ins | Enter| |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M3 | | Space | | M3 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M3 | | Space | | M3 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [3] = { - { KC_NO, KC_NO, DE_7, DE_8 DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, + { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, { _______, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______ }, { _______, DE_0, DE_1, DE_2, DE_3, DE_SCLN, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, _______ }, { _______, _______, _______, _______, KC_NO, _______, _______, KC_NO, _______, _______, _______, _______ } @@ -104,7 +109,7 @@ slide from m4 to m5 to access flipped version * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M5 | Space | M5 | M4 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M4 | M5 | Space | M5 | M4 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [4] = { @@ -112,7 +117,7 @@ slide from m4 to m5 to access flipped version { KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO }, { _______, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, _______ }, { _______, _______, _______, _______, MO(5), _______, _______, MO(5), _______, _______, _______, _______ } -} +}, /* flipped Function & Media Keys @@ -123,13 +128,13 @@ slide from m4 to m5 to access flipped version * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| ² | F1 | F2 | F3 | | | Prev | Play | Next | |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | | M5 | Space | M5 | | | Ctrl | Esc | +* | GUI | Ctrl | Alt | | M5 | Space | M5 | | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [5] = { { KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO }, - { KC_NO, KC_SQ3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO }, - { _______, KC_SQ2, KC_F1, KC_F2, KC_F3, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ }, + { KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO }, + { _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ }, { _______, _______, _______, KC_NO, _______, _______, _______, _______, KC_NO, _______, _______, _______ } } }; -- cgit v1.2.3 From 58f092cf872a8f3f584b98445672f3e6809672c2 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sun, 24 Jul 2016 04:52:35 +0200 Subject: moved ctrl --- keyboards/planck/keymaps/bone2planck/keymap.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 4cac60ff9f..440de7f0da 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -5,7 +5,8 @@ #endif #include "keymap_german.h" -/* for intellisense, comment for building +// for intellisense, comment for building +/* #include "..\..\..\..\quantum\keymap_extras\keymap_german.h" #include "..\..\..\..\quantum\keymap_common.h" #include "..\..\..\..\tmk_core\common\keycode.h" @@ -31,14 +32,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M4 | M2 | Space | M2 | M4 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [0] = { - { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, - { LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) }, - { KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT }, - { KC_RGUI, KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_RALT, KC_RCTL, KC_ESC } + { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, + { LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) }, + { KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT }, + { KC_LCTL, KC_RGUI, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_RALT, KC_ESC, KC_RCTL } }, /* M1 Special Characters @@ -50,7 +51,7 @@ very ergonomic placement for coding * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| # | $ | | | ~ | € | + | % | " | ' | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M4 | M2 | Space | M2 | M4 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [1] = { @@ -69,7 +70,7 @@ very easy to get used to & intuituve placement * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M3 | M2 | Space | M2 | M3 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [2] = { @@ -88,7 +89,7 @@ accessed by sliding from M2 to M3 with thumb * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| 0 | 1 | 2 | 3 | ; | | Tab | Ins | Enter| |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M3 | | Space | | M3 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M3 | | Space | | M3 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ @@ -109,7 +110,7 @@ slide from m4 to m5 to access flipped version * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M5 | Space | M5 | M4 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M4 | M5 | Space | M5 | M4 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [4] = { @@ -128,7 +129,7 @@ slide from m4 to m5 to access flipped version * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| ² | F1 | F2 | F3 | | | Prev | Play | Next | |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | | M5 | Space | M5 | | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | | M5 | Space | M5 | | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [5] = { -- cgit v1.2.3 From 1bfd57e2345119d5c60e95cdf82e14eb81a3b027 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sun, 24 Jul 2016 05:02:06 +0200 Subject: moved insert --- keyboards/planck/keymaps/bone2planck/keymap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 440de7f0da..6390e12897 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -64,19 +64,19 @@ very ergonomic placement for coding /* Navigation & Number Blocks very easy to get used to & intuituve placement * ,-----------------------------------------------------------------------------------. -* | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | | +* | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | Ins | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Tab | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | Enter| * |------+------+------+------+------+------|------+------+------+------+------+------| -* | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | +* | Shift| | Tab | | Enter| | 0 | 1 | 2 | 3 | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [2] = { - { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO }, + { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_INS }, { KC_TAB, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_ENT }, - { _______, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, DE_0, DE_1, DE_2, DE_3, DE_SCLN, _______ }, + { _______, KC_NO, KC_TAB, KC_NO, KC_ENT, KC_NO, DE_0, DE_1, DE_2, DE_3, DE_SCLN, _______ }, { _______, _______, _______, MO(3), _______, _______, _______, _______, MO(3), _______, _______, _______ } }, @@ -94,7 +94,7 @@ accessed by sliding from M2 to M3 with thumb */ [3] = { - { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, + { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, { _______, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______ }, { _______, DE_0, DE_1, DE_2, DE_3, DE_SCLN, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, _______ }, { _______, _______, _______, _______, KC_NO, _______, _______, KC_NO, _______, _______, _______, _______ } -- cgit v1.2.3 From 4e0bf283f695b4b584bb62d31bb4cd6d7d1f2203 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sun, 24 Jul 2016 05:11:07 +0200 Subject: added readme --- keyboards/planck/keymaps/bone2planck/readme.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 keyboards/planck/keymaps/bone2planck/readme.md (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/bone2planck/readme.md b/keyboards/planck/keymaps/bone2planck/readme.md new file mode 100644 index 0000000000..3c425efddb --- /dev/null +++ b/keyboards/planck/keymaps/bone2planck/readme.md @@ -0,0 +1,8 @@ +check keymap.c to the layers + +This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. +It has "üäöß" as it is optimized for a mix of German & English. +My favourite features are the placement of the special characters often used for programming right on the home row +and the number & navigation block combo, so you never have to move your hands from their home position. + +Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone \ No newline at end of file -- cgit v1.2.3 From 3e462fac3101955ad3561a104c24ca6125e85acd Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Mon, 25 Jul 2016 20:21:32 +0200 Subject: added missing F keys in flipped layer --- keyboards/planck/keymaps/bone2planck/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 6390e12897..5abae692c6 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -123,19 +123,19 @@ slide from m4 to m5 to access flipped version /* flipped Function & Media Keys * ,-----------------------------------------------------------------------------------. -* | | | F7 | F8 | F9 | | | Print|Scroll| Pause| | | +* | | | F7 | F8 | F9 | F12 | | Print|Scroll| Pause| | | * |------+------+------+------+------+-------------+------+------+------+------+------| -* | | ³ | F4 | F5 | F6 | | | Mute | Vol- | Vol+ | | | +* | | ³ | F4 | F5 | F6 | F11 | | Mute | Vol- | Vol+ | | | * |------+------+------+------+------+------|------+------+------+------+------+------| -* | Shift| ² | F1 | F2 | F3 | | | Prev | Play | Next | |Shift | +* | Shift| ² | F1 | F2 | F3 | F10 | | Prev | Play | Next | |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Ctrl | GUI | Alt | | M5 | Space | M5 | | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [5] = { - { KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO }, - { KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO }, - { _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ }, + { KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO }, + { KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO }, + { _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ }, { _______, _______, _______, KC_NO, _______, _______, _______, _______, KC_NO, _______, _______, _______ } } }; -- cgit v1.2.3 From 8244fa40ccd89ad16ddc00210d5b1b169fb655c2 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Tue, 26 Jul 2016 14:58:17 +0200 Subject: added config.h, and missing Ins of filpped navigation layer --- keyboards/planck/keymaps/bone2planck/config.h | 90 +++++++++++++++++++++++++++ keyboards/planck/keymaps/bone2planck/keymap.c | 6 +- 2 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 keyboards/planck/keymaps/bone2planck/config.h (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/bone2planck/config.h b/keyboards/planck/keymaps/bone2planck/config.h new file mode 100644 index 0000000000..ba157db92a --- /dev/null +++ b/keyboards/planck/keymaps/bone2planck/config.h @@ -0,0 +1,90 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#define PREVENT_STUCK_MODIFIERS + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Planck Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D0, D5, B5, B6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#ifdef SUBPROJECT_rev3 + #include "rev3/config.h" +#endif +#ifdef SUBPROJECT_rev4 + #include "rev4/config.h" +#endif + +#endif diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 5abae692c6..7db3197a72 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -5,7 +5,7 @@ #endif #include "keymap_german.h" -// for intellisense, comment for building +// for intellisense, has to be commented for building /* #include "..\..\..\..\quantum\keymap_extras\keymap_german.h" #include "..\..\..\..\quantum\keymap_common.h" @@ -83,7 +83,7 @@ very easy to get used to & intuituve placement /* Flipped Navigation & Number Blocks for one handed use accessed by sliding from M2 to M3 with thumb * ,-----------------------------------------------------------------------------------. -* | | | 7 | 8 | 9 | | PgUp | Bksp | Up | DEL | PgDn | | +* | Ins | | 7 | 8 | 9 | | PgUp | Bksp | Up | DEL | PgDn | | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Tab | . | 4 | 5 | 6 | , | Home | Left | Down | Right| End | Enter| * |------+------+------+------+------+------|------+------+------+------+------+------| @@ -94,7 +94,7 @@ accessed by sliding from M2 to M3 with thumb */ [3] = { - { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, + { KC_INS, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, { _______, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______ }, { _______, DE_0, DE_1, DE_2, DE_3, DE_SCLN, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, _______ }, { _______, _______, _______, _______, KC_NO, _______, _______, KC_NO, _______, _______, _______, _______ } -- cgit v1.2.3 From a41a7a9100b9f4c6bfdf49b39b05e626ffd95397 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Tue, 26 Jul 2016 16:19:34 +0200 Subject: include base config.h instead of copying it --- keyboards/planck/keymaps/bone2planck/config.h | 93 ++------------------------- 1 file changed, 5 insertions(+), 88 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/bone2planck/config.h b/keyboards/planck/keymaps/bone2planck/config.h index ba157db92a..60aff6db0d 100644 --- a/keyboards/planck/keymaps/bone2planck/config.h +++ b/keyboards/planck/keymaps/bone2planck/config.h @@ -1,90 +1,7 @@ -/* -Copyright 2012 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#define PREVENT_STUCK_MODIFIERS - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define MANUFACTURER Ortholinear Keyboards -#define PRODUCT The Planck Keyboard -#define DESCRIPTION A compact ortholinear keyboard - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 - -/* Planck PCB default pin-out */ -#define MATRIX_ROW_PINS { D0, D5, B5, B6 } -#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define UNUSED_PINS - -#define BACKLIGHT_PIN B7 - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCING_DELAY 5 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* key combination for command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -#ifdef SUBPROJECT_rev3 - #include "rev3/config.h" -#endif -#ifdef SUBPROJECT_rev4 - #include "rev4/config.h" +#ifndef CONFIG_USER_H +#define CONFIG_USER_H #endif -#endif +#include "../../config.h" + +#define PREVENT_STUCK_MODIFIERS \ No newline at end of file -- cgit v1.2.3 From 5f37b11f2c300a95e0e9e34517c5c29a3345be83 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 9 Aug 2016 11:03:12 +0100 Subject: changed order of bottom row of symbol layer to ease acess to brackets --- keyboards/planck/keymaps/callum/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index a747dcb159..ed187df1da 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------------------------------. * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | ~ | | | + | [ | { | } | ] | = | \ | ` | | + * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_SYMB] = { {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC }, {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, - {_______, KC_TILD, KC_PIPE, KC_PLUS, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_EQL, KC_BSLS, KC_GRV, _______}, + {_______, KC_TILD, KC_GRV, KC_PLUS, KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, -- cgit v1.2.3 From 725dd7328f9963959f72318af912ed66f5a5f513 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 9 Aug 2016 11:09:52 +0100 Subject: updated readme.md to reflect keymap changes --- keyboards/planck/keymaps/callum/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index d4f3449f15..030def7f77 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -31,9 +31,9 @@ On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ti None of the modifiers are overwritten so that `shift-alt-arrows` etc work as expected. ## The `SYMB` layer -![](http://i.imgur.com/iuU144Y.png) +![](http://i.imgur.com/thh1ne2.png) -The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, with brackets in the centre; then normally shifted symbols to the left, and non shifted to the right, in order of most to least used. +The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, arranged roughly so that the most used symbols are accessible with the strongest fingers. `esc` and `del` are repeated here since I wanted to be able to reach either, one handed, with either hand. -- cgit v1.2.3 From 993d72b11fca8d50296570dc85e9354f8045c4a6 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Fri, 12 Aug 2016 21:05:52 +0100 Subject: added a lock screen key --- keyboards/planck/keymaps/callum/keymap.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index ed187df1da..494ed30b06 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -20,7 +20,8 @@ enum planck_keycodes { BASE = SAFE_RANGE, MOVE, SYMB, - FUNC + FUNC, + LOCK }; // Fillers to make layering more clear @@ -87,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | * |-----------------------------------------------------------------------------------. - * | | Play | Prev | Next | BL+ | | | | | | | | + * | | Play | Prev | Next | BL+ | | | Lock | | | | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | Mute | Vol- | Vol+ | BL- | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -96,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_FUNC] = { {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, _______, _______, _______, _______, _______}, + {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, _______, _______}, {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } } @@ -133,6 +134,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case LOCK: + if (record->event.pressed) { + register_code(KC_RSFT); + register_code(KC_RGUI); + register_code(KC_POWER); + } else { + unregister_code(KC_POWER); + unregister_code(KC_RGUI); + unregister_code(KC_RSFT); + } + return false; + break; } return true; } -- cgit v1.2.3 From f512179e66e4d4dfbcc92c6ba1aaa1b6cf1ef12b Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Wed, 24 Aug 2016 13:17:01 +0200 Subject: ergodox: Update algernon's keymap to v1.6 Major changes include: Base layer changes ------------------ * The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`. * The `:;` and `-_` keys are now available on the base layer, on their **ADORE** location, too, just below `[{(`/`]})`. * The `Apps` key has been replaced by `F12`. * The `-`/`_` is no longer a tap-dance key. ADORE layer changes ------------------- * Adjustments were made to the **ADORE** layer, to separate some inconvenient combinations. Miscellaneous changes --------------------- * `LEAD u` now starts the symbolic unicode input system, instead of the OS-one. * The mouse acceleration keys on the **Navigation and Media* layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off. * When the **ARROW** layer is on, the *red* and *blue* LEDs light up now. Heatmap ------- * The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off. * The heatmap generator received a lot of updates. Signed-off-by: Gergely Nagy --- keyboards/ergodox/keymaps/algernon/Makefile | 9 +- .../keymaps/algernon/images/adore-layer.png | Bin 93748 -> 93893 bytes .../ergodox/keymaps/algernon/images/base-layer.png | Bin 95222 -> 95204 bytes keyboards/ergodox/keymaps/algernon/keymap.c | 494 +++++++----------- keyboards/ergodox/keymaps/algernon/readme.md | 67 ++- .../algernon/tools/heatmap-adore-layout.json | 533 -------------------- .../algernon/tools/heatmap-base-layout.json | 533 -------------------- .../algernon/tools/heatmap-layout.ADORE.json | 553 +++++++++++++++++++++ .../algernon/tools/heatmap-layout.Dvorak.json | 542 ++++++++++++++++++++ .../keymaps/algernon/tools/log-to-heatmap.py | 368 +++++++++----- 10 files changed, 1564 insertions(+), 1535 deletions(-) delete mode 100644 keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json delete mode 100644 keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json create mode 100644 keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json create mode 100644 keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json (limited to 'keyboards') diff --git a/keyboards/ergodox/keymaps/algernon/Makefile b/keyboards/ergodox/keymaps/algernon/Makefile index 00194857ac..7c2b3ad97c 100644 --- a/keyboards/ergodox/keymaps/algernon/Makefile +++ b/keyboards/ergodox/keymaps/algernon/Makefile @@ -1,22 +1,23 @@ BOOTMAGIC_ENABLE=no COMMAND_ENABLE=no SLEEP_LED_ENABLE=no -UNICODE_ENABLE=no FORCE_NKRO ?= yes DEBUG_ENABLE = no CONSOLE_ENABLE = no TAP_DANCE_ENABLE = yes KEYLOGGER_ENABLE ?= yes +UCIS_ENABLE = yes +MOUSEKEY_ENABLE ?= yes -ADORE_AUTOLOG ?= no +AUTOLOG_ENABLE ?= no ifeq (${FORCE_NKRO},yes) OPT_DEFS += -DFORCE_NKRO endif -ifeq (${ADORE_AUTOLOG},yes) +ifeq (${AUTOLOG_ENABLE},yes) KEYLOGGER_ENABLE = yes -OPT_DEFS += -DADORE_AUTOLOG +OPT_DEFS += -DAUTOLOG_ENABLE endif ifeq (${KEYLOGGER_ENABLE},yes) diff --git a/keyboards/ergodox/keymaps/algernon/images/adore-layer.png b/keyboards/ergodox/keymaps/algernon/images/adore-layer.png index 44ad8a1eb7..3d0a5fb20c 100644 Binary files a/keyboards/ergodox/keymaps/algernon/images/adore-layer.png and b/keyboards/ergodox/keymaps/algernon/images/adore-layer.png differ diff --git a/keyboards/ergodox/keymaps/algernon/images/base-layer.png b/keyboards/ergodox/keymaps/algernon/images/base-layer.png index da159fbe2e..7ea57aae38 100644 Binary files a/keyboards/ergodox/keymaps/algernon/images/base-layer.png and b/keyboards/ergodox/keymaps/algernon/images/base-layer.png differ diff --git a/keyboards/ergodox/keymaps/algernon/keymap.c b/keyboards/ergodox/keymaps/algernon/keymap.c index 144030e2e9..9f476d8a6b 100644 --- a/keyboards/ergodox/keymaps/algernon/keymap.c +++ b/keyboards/ergodox/keymaps/algernon/keymap.c @@ -2,6 +2,7 @@ * algernon's ErgoDox EZ layout, please see the readme.md file! */ +#include #include "ergodox.h" #include "led.h" #include "debug.h" @@ -33,7 +34,6 @@ enum { // Buttons that do extra stuff A_GUI, A_PLVR, - A_ESC, A_MPN, // Function / number keys @@ -47,7 +47,6 @@ enum { KF_8, KF_9, KF_10, - KF_11, // =, F11 // Application select keys APP_SLK, // Slack @@ -62,6 +61,11 @@ enum { A_MDL, A_MDR, + // Mouse acceleration + A_ACL0, + A_ACL1, + A_ACL2, + // Hungarian layer keys HU_AA, // Á HU_OO, // Ó @@ -89,7 +93,6 @@ enum { enum { CT_CLN = 0, - CT_MNS, CT_TA, CT_LBP, CT_RBP @@ -102,7 +105,11 @@ uint16_t gui_timer = 0; uint16_t kf_timers[12]; #if KEYLOGGER_ENABLE +# ifdef AUTOLOG_ENABLE +bool log_enable = true; +# else bool log_enable = false; +# endif #endif bool time_travel = false; @@ -114,12 +121,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Base Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Next/Prev | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | + * | Next/Prev | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | F12 | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | ~ | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | \ | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | ~ | ' | , | . | P | Y | ( | | ) | F | G | C | R | L | \ | + * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| * | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow | - * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------| + * |-----------+------+------+------+------+------| : | | - |------+------+------+------+------+-----------| * | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | | | | | : | | - | | | | | @@ -135,21 +142,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( // left hand M(A_MPN) ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR) -,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC +,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,TD(CT_LBP) ,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I -,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN +,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,TD(CT_CLN) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN) ,F(F_ALT),F(F_GUI) ,F(F_CTRL) - ,KC_BSPC,F(F_SFT),M(A_ESC) + ,KC_BSPC,F(F_SFT),KC_ESC // right hand - ,KC_APP ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 - ,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS + ,KC_F12 ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 + ,TD(CT_RBP),KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL - ,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP - ,TD(CT_MNS),KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_MINS ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP + ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,OSL(NMDIA),KC_DEL ,KC_LEAD @@ -159,13 +166,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 1: Adore layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Play/Pause| 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | + * | Play/Pause| 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | F12 | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | `~ | X | W | K | L | M | ( | | ) | F | H | C | P | Y | \ | + * | `~ | Y | W | G | L | M | ( | | ) | F | H | C | P | X | \ | * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| * | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | Z | Q | ' | , | . | : | | - | B | G | V | J | / | | + * | | Z | Q | ' | , | . | : | | - | B | K | V | J | / | | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | | | | | | | | | | | | * `-----------------------------------' `-----------------------------------' @@ -180,20 +187,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [ADORE] = KEYMAP( // left hand KC_MPLY ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR) -,KC_GRV ,KC_X ,KC_W ,KC_K ,KC_L ,KC_M ,TD(CT_LBP) +,KC_GRV ,KC_Y ,KC_W ,KC_G ,KC_L ,KC_M ,TD(CT_LBP) ,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U ,KC_NO ,KC_Z ,KC_Q ,KC_QUOT,KC_COMM,KC_DOT ,TD(CT_CLN) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,F(F_ALT),F(F_GUI) ,F(F_CTRL) - ,KC_BSPC,F(F_SFT),M(A_ESC) + ,KC_BSPC,F(F_SFT),KC_ESC // right hand - ,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 - ,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_Y ,KC_BSLS + ,KC_F12 ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 + ,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_X ,KC_BSLS ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL - ,TD(CT_MNS),KC_B ,KC_G ,KC_V ,KC_J ,KC_SLSH ,KC_NO + ,KC_MINS ,KC_B ,KC_K ,KC_V ,KC_J ,KC_SLSH ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,OSL(NMDIA),KC_DEL @@ -363,14 +370,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [NMDIA] = KEYMAP( // left hand - KC_ACL0 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L) -,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO -,KC_ACL2 ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO + M(A_ACL0) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L) +,M(A_ACL1) ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO +,M(A_ACL2) ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO ,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_MUTE ,KC_VOLU ,KC_VOLD - ,KC_SPC,KC_ENTER,M(A_ESC) + ,KC_SPC,KC_ENTER,KC_ESC // right hand ,LGUI(KC_L),KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO @@ -439,7 +446,7 @@ const uint16_t PROGMEM fn_actions[] = { ,[F_CTRL] = ACTION_MODS_ONESHOT (MOD_LCTL) }; -void toggle_steno(int pressed) +static void toggle_steno(int pressed) { uint8_t layer = biton32(layer_state); @@ -462,7 +469,7 @@ void toggle_steno(int pressed) } } -macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char) +static macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char) { uint8_t need_shift = 0; uint8_t hold_shift = 0; @@ -507,46 +514,43 @@ macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char) return MACRO_NONE; } -void ang_handle_kf (keyrecord_t *record, uint8_t id) +static bool from_appsel; + +static void ang_handle_kf (keyrecord_t *record, uint8_t id) { uint8_t code = id - KF_1; if (record->event.pressed) { kf_timers[code] = timer_read (); } else { - uint8_t kc; + uint8_t kc_base; - if (timer_elapsed (kf_timers[code]) > TAPPING_TERM) { + if (from_appsel) { + from_appsel = false; + return; + } + + if (kf_timers[code] && timer_elapsed (kf_timers[code]) > TAPPING_TERM) { // Long press - kc = KC_F1 + code; + kc_base = KC_F1; } else { - if (id == KF_11) - kc = KC_EQL; - else - kc = KC_1 + code; + kc_base = KC_1; } + kf_timers[code] = 0; + code += kc_base; - register_code (kc); - unregister_code (kc); + register_code (code); + unregister_code (code); } } +static struct { + uint8_t idx; +} m_accel_state; + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - case A_ESC: - if (record->event.pressed) { - if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) { - clear_oneshot_mods (); - } else { - register_code (KC_ESC); - } - layer_off (HUN); - } else { - unregister_code (KC_ESC); - } - break; - case A_MPN: if (record->event.pressed) { if (keyboard_report->mods & MOD_BIT(KC_LSFT) || @@ -588,6 +592,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case HU_UEE: return ang_do_hun (record, KC_EQL, KC_U); +#if MOUSEKEY_ENABLE /* Mouse movement */ case A_MUL: if (record->event.pressed) { @@ -633,6 +638,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) mousekey_send(); break; + case A_ACL0 ... A_ACL2: + if (record->event.pressed) { + uint8_t idx = id - A_ACL0; + if (m_accel_state.idx == id) { + mousekey_off(m_accel_state.idx - A_ACL0 + KC_ACL0); + m_accel_state.idx = 0; + } else { + if (m_accel_state.idx) { + mousekey_off(m_accel_state.idx - A_ACL0 + KC_ACL0); + m_accel_state.idx = 0; + } + mousekey_on(KC_ACL0 + idx); + m_accel_state.idx = id; + } + } + break; +#endif + /* Plover base */ case A_PLVR: toggle_steno(record->event.pressed); @@ -663,22 +686,34 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case APP_SLK: + from_appsel = true; return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END); case APP_EMCS: + from_appsel = true; return MACRODOWN(T(G), T(N), T(U), T(SPC), T(E), T(M), T(A), T(C), T(S), T(SPC), T(2), T(4), T(ENT), END); case APP_TERM: - return MACRODOWN(T(T), T(E), T(R), T(M), T(ENT), END); + from_appsel = true; + if (!record->event.pressed) { + register_code(KC_ESC); + unregister_code(KC_ESC); + wait_ms(TAPPING_TERM + 25); + register_code(KC_DEL); + unregister_code(KC_DEL); + } + break; case APP_CHRM: + from_appsel = true; return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END); case APP_MSIC: + from_appsel = true; return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END); /* Function keys */ - case KF_1 ... KF_11: + case KF_1 ... KF_10: ang_handle_kf (record, id); break; } @@ -686,12 +721,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; -uint8_t is_adore = 0; +static uint8_t is_adore = 0; // Runs just one time when the keyboard initializes. void matrix_init_user(void) { uint8_t dl; + set_unicode_input_mode(UC_LNX); + ergodox_led_all_on(); for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) { ergodox_led_all_set (i); @@ -709,120 +746,38 @@ void matrix_init_user(void) { dl = eeconfig_read_default_layer (); if (dl == (1UL << ADORE)) { is_adore = 1; -#if ADORE_AUTOLOG - log_enable = true; -#endif } }; LEADER_EXTERNS(); -void ang_do_unicode (void) { - register_code (KC_RCTL); - register_code (KC_RSFT); - register_code (KC_U); - unregister_code (KC_U); - unregister_code (KC_RSFT); - unregister_code (KC_RCTL); - wait_ms (100); -} +static void ang_tap (uint8_t code, ...) { + uint8_t kc = code; + va_list ap; -void ang_tap (uint16_t codes[]) { - for (int i = 0; codes[i] != 0; i++) { - register_code (codes[i]); - unregister_code (codes[i]); - wait_ms (50); - } + va_start(ap, code); + + do { + register_code(kc); + unregister_code(kc); + wait_ms(50); + kc = va_arg(ap, int); + } while (kc != 0); + va_end(ap); } #define TAP_ONCE(code) \ register_code (code); \ unregister_code (code) -void ang_tap_dance_bp_finished (qk_tap_dance_state_t *state, void *user_data) { - bool left, parens; - - if (state->count > 2) { - state->count = 0; - return; - } - - if (state->keycode == TD(CT_LBP)) - left = true; - else - left = false; - - if (state->count == 1) - parens = false; - else - parens = true; - - if (parens) { - register_code (KC_RSFT); - if (left) { - TAP_ONCE(KC_9); - } else { - TAP_ONCE(KC_0); - } - unregister_code (KC_RSFT); - } else { - if (left) { - TAP_ONCE (KC_LBRC); - } else { - TAP_ONCE (KC_RBRC); - } - } -} - -void ang_tap_dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code (KC_RSFT); - register_code (KC_SCLN); - } else if (state->count == 2) { - register_code (KC_SCLN); - } -} - -void ang_tap_dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code (KC_SCLN); - unregister_code (KC_RSFT); - } else if (state->count == 2) { - unregister_code (KC_SCLN); - } -} - -void ang_tap_dance_mns_finished (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code (KC_MINS); - } else if (state->count == 2) { - register_code (KC_RSFT); - register_code (KC_MINS); - } -} - -void ang_tap_dance_mns_reset (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code (KC_MINS); - } else if (state->count == 2) { - unregister_code (KC_RSFT); - unregister_code (KC_MINS); - } -} - typedef struct { bool layer_toggle; bool sticky; - bool finished_once; } td_ta_state_t; -void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { +static void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { td_ta_state_t *td_ta = (td_ta_state_t *) user_data; - if (td_ta->finished_once) { - return; - } - if (td_ta->sticky) { td_ta->sticky = false; td_ta->layer_toggle = false; @@ -830,7 +785,6 @@ void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { return; } - td_ta->finished_once = true; if (state->count == 1 && !state->pressed) { register_code (KC_TAB); td_ta->sticky = false; @@ -842,35 +796,29 @@ void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { } } -void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) { +static void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) { td_ta_state_t *td_ta = (td_ta_state_t *) user_data; if (!td_ta->layer_toggle) unregister_code (KC_TAB); if (!td_ta->sticky) layer_off (ARRW); - - td_ta->finished_once = false; } qk_tap_dance_action_t tap_dance_actions[] = { - [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_cln_finished, ang_tap_dance_cln_reset) - ,[CT_MNS] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_mns_finished, ang_tap_dance_mns_reset) + [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN) ,[CT_TA] = { .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset }, - .user_data = (void *)&((td_ta_state_t) { false, false, false }) + .user_data = (void *)&((td_ta_state_t) { false, false }) } - ,[CT_LBP] = ACTION_TAP_DANCE_FN (ang_tap_dance_bp_finished) - ,[CT_RBP] = ACTION_TAP_DANCE_FN (ang_tap_dance_bp_finished) + ,[CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN) + ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN) }; -static uint16_t uni[32]; -static uint8_t unicnt; -static bool unimagic = false; - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { uint8_t layer = biton32(layer_state); + bool is_arrow = false; if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM) unregister_code (KC_LGUI); @@ -893,13 +841,19 @@ void matrix_scan_user(void) { ergodox_right_led_2_set (LED_BRIGHTNESS_HI); } + if (layer_state & (1UL << ARRW)) { + ergodox_right_led_1_on (); + ergodox_right_led_3_on (); + is_arrow = true; + } + if (keyboard_report->mods & MOD_BIT(KC_LSFT) || ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { ergodox_right_led_1_set (LED_BRIGHTNESS_HI); ergodox_right_led_1_on (); } else { ergodox_right_led_1_set (LED_BRIGHTNESS_LO); - if (layer != NMDIA && layer != PLVR && layer != ADORE) + if (layer != NMDIA && layer != PLVR && layer != ADORE && !is_arrow) ergodox_right_led_1_off (); } @@ -919,7 +873,7 @@ void matrix_scan_user(void) { ergodox_right_led_3_on (); } else { ergodox_right_led_3_set (LED_BRIGHTNESS_LO); - if (layer != HUN && layer != PLVR && layer != ADORE) + if (layer != HUN && layer != PLVR && layer != ADORE && !is_arrow) ergodox_right_led_3_off (); } @@ -936,20 +890,17 @@ void matrix_scan_user(void) { } #endif + SEQ_ONE_KEY (KC_Q) { + register_code16 (LCTL(KC_1)); + unregister_code16 (LCTL(KC_1)); + } + SEQ_ONE_KEY (KC_T) { time_travel = !time_travel; } SEQ_ONE_KEY (KC_U) { - ang_do_unicode (); - } - - SEQ_TWO_KEYS (KC_LEAD, KC_U) { - unicnt = 0; - unimagic = true; - register_code(KC_RSFT); - TAP_ONCE(KC_U); - unregister_code(KC_RSFT); + qk_ucis_start(); } SEQ_ONE_KEY (KC_V) { @@ -958,25 +909,23 @@ void matrix_scan_user(void) { SEQ_ONE_KEY (KC_L) { /* λ */ - ang_do_unicode (); - - uint16_t codes[] = {KC_0, KC_3, KC_B, KC_B, KC_ENT, 0}; - ang_tap (codes); + unicode_input_start(); + register_hex(0x03bb); + unicode_input_finish(); } SEQ_ONE_KEY (KC_Y) { - uint16_t codes[] = {KC_BSLS, KC_O, KC_SLSH, 0}; - ang_tap (codes); + ang_tap (KC_BSLS, KC_O, KC_SLSH, 0); } SEQ_ONE_KEY (KC_S) { - ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC); + unicode_input_start(); register_hex(0xaf); unicode_input_finish(); TAP_ONCE (KC_BSLS); register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT); - ang_do_unicode (); TAP_ONCE (KC_3); TAP_ONCE (KC_0); TAP_ONCE (KC_C); TAP_ONCE (KC_4); TAP_ONCE (KC_SPC); + unicode_input_start (); register_hex(0x30c4); unicode_input_finish(); register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT); TAP_ONCE (KC_SLSH); - ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC); + unicode_input_start (); register_hex(0xaf); unicode_input_finish(); } SEQ_TWO_KEYS (KC_W, KC_M) { @@ -987,8 +936,7 @@ void matrix_scan_user(void) { wait_ms (1000); - uint16_t codes[] = {KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0}; - ang_tap (codes); + ang_tap (KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0); register_code (KC_LGUI); register_code (KC_UP); unregister_code (KC_UP); @@ -1013,13 +961,7 @@ void matrix_scan_user(void) { ergodox_right_led_2_off (); wait_ms (100); ergodox_right_led_1_off (); -#if ADORE_AUTOLOG - log_enable = true; -#endif } else { -#if ADORE_AUTOLOG - log_enable = false; -#endif is_adore = 0; default_layer_and (0); default_layer_or (1UL << BASE); @@ -1043,140 +985,38 @@ void matrix_scan_user(void) { static uint16_t last4[4]; -bool is_uni_seq(char *seq) { - uint8_t i; - - for (i = 0; seq[i]; i++) { - uint16_t code; - if (('1' <= seq[i]) && (seq[i] <= '9')) - code = seq[i] - '1' + KC_1; - else if (seq[i] == '0') - code = KC_0; - else - code = seq[i] - 'a' + KC_A; - - if (i > unicnt) - return false; - if (uni[i] != code) - return false; - } - - if (uni[i] == KC_ENT || uni[i] == KC_SPC) - return true; - - return false; -} - -uint16_t hex_to_keycode(uint8_t hex) -{ - if (hex == 0x0) { - return KC_0; - } else if (hex < 0xA) { - return KC_1 + (hex - 0x1); - } else { - return KC_A + (hex - 0xA); - } -} - -void register_hex(uint16_t hex) { - bool leading_zeros = true; - - for(int i = 3; i >= 0; i--) { - uint8_t digit = ((hex >> (i*4)) & 0xF); - if (digit != 0) - leading_zeros = false; - else if (leading_zeros) - continue; - register_code(hex_to_keycode(digit)); - unregister_code(hex_to_keycode(digit)); - wait_ms(10); - } -} - -typedef struct { - char *symbol; - uint16_t codes[4]; -} qk_ucis_symbol_t; - -static qk_ucis_symbol_t ucis_symbol_table[] = { - {"poop", {0x1, 0xf4a9, 0}}, - {"rofl", {0x1, 0xf923, 0}}, - {"kiss", {0x1, 0xf619, 0}}, - {"snowman", {0x2603, 0}}, - {NULL, {}} -}; - -bool process_record_ucis (uint16_t keycode, keyrecord_t *record) { - uint8_t i; - - if (!unimagic) - return true; - - if (!record->event.pressed) - return true; - - uni[unicnt] = keycode; - unicnt++; - - if (keycode == KC_BSPC) { - if (unicnt >= 2) { - unicnt-= 2; - return true; - } else { - unicnt--; - return false; - } - } - - if (keycode == KC_ENT || keycode == KC_SPC) { - bool symbol_found = false; - - for (i = unicnt; i > 0; i--) { - register_code (KC_BSPC); - unregister_code (KC_BSPC); - wait_ms(10); - } - - ang_do_unicode(); - wait_ms(10); - for (i = 0; ucis_symbol_table[i].symbol; i++) { - if (is_uni_seq (ucis_symbol_table[i].symbol)) { - symbol_found = true; - for (uint8_t j = 0; ucis_symbol_table[i].codes[j]; j++) { - register_hex(ucis_symbol_table[i].codes[j]); - } - break; - } - } - if (!symbol_found) { - for (i = 0; i < unicnt - 1; i++) { - uint8_t code; - - if (uni[i] > KF_1) - code = uni[i] - KF_1 + KC_1; - else - code = uni[i]; - TAP_ONCE(code); - wait_ms (10); - } - } - - unimagic = false; - return true; - } - return true; -} +const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE +( + UCIS_SYM("poop", 0x1f4a9), + UCIS_SYM("rofl", 0x1f923), + UCIS_SYM("kiss", 0x1f619), + UCIS_SYM("snowman", 0x2603), + UCIS_SYM("coffee", 0x2615), + UCIS_SYM("heart", 0x2764), + UCIS_SYM("bolt", 0x26a1) +); bool process_record_user (uint16_t keycode, keyrecord_t *record) { #if KEYLOGGER_ENABLE if (log_enable) { - xprintf ("KL: col=%d, row=%d\n", record->event.key.col, - record->event.key.row); + xprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col, + record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak"); } #endif - if (!process_record_ucis (keycode, record)) - return false; + if (keycode == KC_ESC && record->event.pressed) { + bool queue = true; + + if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) { + clear_oneshot_mods (); + queue = false; + } + if (layer_state & (1UL<event.pressed) { uint8_t p; @@ -1188,15 +1028,13 @@ bool process_record_user (uint16_t keycode, keyrecord_t *record) { last4[3] = keycode; if (last4[0] == KC_D && last4[1] == KC_A && last4[2] == KC_T && last4[3] == KC_E) { - uint16_t codes[] = {KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0}; - ang_tap (codes); + ang_tap (KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0); register_code (KC_RSFT); register_code (KC_EQL); unregister_code (KC_EQL); unregister_code (KC_RSFT); - uint16_t codes2[] = {KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0}; - ang_tap (codes2); + ang_tap (KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0); return false; } @@ -1204,3 +1042,17 @@ bool process_record_user (uint16_t keycode, keyrecord_t *record) { return true; } + +void qk_ucis_symbol_fallback (void) { + for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) { + uint8_t code; + + if (qk_ucis_state.codes[i] > KF_1) + code = qk_ucis_state.codes[i] - KF_1 + KC_1; + else + code = qk_ucis_state.codes[i]; + register_code(code); + unregister_code(code); + wait_ms (10); + } +} diff --git a/keyboards/ergodox/keymaps/algernon/readme.md b/keyboards/ergodox/keymaps/algernon/readme.md index 26dfddbe6a..5e7adb3320 100644 --- a/keyboards/ergodox/keymaps/algernon/readme.md +++ b/keyboards/ergodox/keymaps/algernon/readme.md @@ -3,11 +3,15 @@ algernon's layout ======================= -This is an unconventional layout for the ErgoDox EZ. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox]. +This is an unconventional layout for the [ErgoDox EZ][ez]. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox]. + [ez]: https://ergodox-ez.com/ [blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/ -Some of the things in the layout only work when one uses Spacemacs and GNOME under Linux. Your mileage may vary. +Some of the things in the layout only work when one uses [Spacemacs][spacemacs] and [GNOME][gnome] under Linux. Your mileage may vary. + + [spacemacs]: http://spacemacs.org/ + [gnome]: https://www.gnome.org/ ## Table of Contents @@ -40,10 +44,10 @@ At its core, this is a Dvorak layout, with some minor changes. The more interest * The `GUI` key is special, because when I double-tap it, it sends `GUI + w`, which pops up an application selector. It also switches to a one-shot layer, where the number row on the left half turns into app selector macros, for the most common things I usually want to switch to. Otherwise it behaves as on a normal layout. * The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode. * The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle. -* When holding any of the **Arrow** layer keys, the arrow layer activates while the layer key is held. Tapping the key produces the normal key. +* When holding the `Tab`/**Arrow** key, the arrow layer activates while the key is held. Tapping the key produces the normal, `Tab` key. Double-tapping it toggles the **Arrow** layer on until a third tap. * Tapping the `:` key once yields `:`, tapping it twice yields `;`. +* Tapping the `[{(`/`)}]` keys once yields `[` (or `{` when shifted), tapping them twice yields `(`. * The **Lead** key allows me to type in a sequence of keys, and trigger some actions: - - `LEAD u` enters unicode input mode, by sending the GTK+ key sequence that does this. - `LEAD l` uses the unicode input method to enter a `λ`. - `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯` - `LEAD y` types `\o/`. @@ -52,7 +56,7 @@ At its core, this is a Dvorak layout, with some minor changes. The more interest - `LEAD v` prints the firmware version, the keyboard and the keymap. - `LEAD d` toggles logging keypress positions to the HID console. - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader. - - `LEAD LEAD u` enters the [Unicode symbol input][#unicode-symbol-input] mode. + - `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode. ## ADORE layer @@ -91,6 +95,7 @@ For the layers, the following rules apply: * When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active. * When the [Hungarian layer](#hungarian-layer) is active, the *green* and *blue* LEDs are on. * When the [Navigation and media layer](#navigation-and-media-layer) is active, the *red* and *green* ones are on. +* When the **ARROW** layer is active, the *red* and *blue* ones are on. * For the [Steno layer](#steno-layer), all LEDs will be turned on. Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers use a stronger one, and modifiers override any layer preferences. For example, when on the one-handed layer, with the left side active (*red* light blinking), if `Shift` is on, the *red* light will be constantly on. @@ -116,7 +121,7 @@ This is an experimental feature, and may or may not work reliably. When the keypress logging functionality is enabled (by `LEAD d`), the keyboard will output a line every time a key is pressed, containing the position of the key in the matrix. This allows one to collect this information, and build analytics over it, such as a heat map, including dead keys too. -Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, simply point `tools/log-to-heatmap.py` to a base layout file (one is included in the `tools/` directory), and the key position log. The latter one can create by running `hid-listen`, and redirecting its output to a file. +Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, either pipe the output of `hid_listen` into it, or pipe it an already saved log, and it will save the results into files in an output directory (given on the command-line). See the output of `tools/log-to-heatmap.py --help` for more information. [kle]: http://www.keyboard-layout-editor.com/ @@ -151,7 +156,35 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the # Changelog -## v1.5 - 2016-08-12 +## v1.6 + +*2016-08-24* + +### Base layer changes + +* The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`. +* The `:;` and `-_` keys are now available on the base layer, on their [ADORE](#adore-layer) location, too, just below `[{(`/`]})`. +* The `Apps` key has been replaced by `F12`. +* The `-`/`_` is no longer a tap-dance key. + +### ADORE layer changes + +* Adjustments were made to the [ADORE](#adore-layer) layer, to separate some inconvenient combinations. + +### Miscellaneous changes + +* `LEAD u` now starts the symbolic unicode input system, instead of the OS-one. +* The mouse acceleration keys on the [Navigation and Media](#navigation-and-media-layer) layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off. +* When the **ARROW** layer is on, the *red* and *blue* LEDs light up now. + +### Heatmap + +* The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off. +* The heatmap generator received a lot of updates. + +## v1.5 + +*2016-08-12* * The **1HAND** layer has been removed. * A `Delete` key is now available on the right thumb cluster. @@ -161,7 +194,9 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the * On the **ARROW** layer, `Backspace` has been replaced by `Enter`. * There is some experimental support for entering Unicode symbols. -## v1.4 - 2016-07-29 +## v1.4 + +*2016-07-29* * When toggling the key logging on or off, the LEDs will do a little dance. * The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it. @@ -169,14 +204,18 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the * The `-`/`_` key was turned into a tap-dance key too. * There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`. -## v1.3 - 2016-07-06 +## v1.3 + +*2016-07-06* * Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a [heatmap](#heatmap) out of the logs. * The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the [base layer](#base-layer) for an image that shows where arrows are. * The **experimental** layer has been redone, and is now called [ADORE](#adore-layer), and as such, can be enabled by `LEAD a` now. * Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot. -## v1.2 - 2016-06-22 +## v1.2 + +*2016-06-22* * The forced NKRO mode can be easily toggled off at compile-time, to make the firmware compatible with [certain operating systems](#using-on-windows). * The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted. @@ -187,7 +226,9 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the * On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped. * The [Steno](#steno-layer) layer gained a few more `#` and `*` keys, to make it easier on my fingers. -## v1.1 - 2016-06-14 +## v1.1 + +*2016-06-14* * The keyboard starts in NKRO mode, bootmagic and other things are disabled. * A [Steno](#steno-layer) layer was added, to be used with Plover. @@ -201,7 +242,9 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the - `:` now inputs `;` when shifted. * `ESC` cancels the [Hungarian](#hungarian-layer) layer too, not just modifiers. -## v1.0 - 2016-05-26 +## v1.0 + +*2016-05-26* Initial version. diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json deleted file mode 100644 index 544f61ce87..0000000000 --- a/keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json +++ /dev/null @@ -1,533 +0,0 @@ -[ - { - "backcolor": "#ffffff", - "name": "ErgoDox - algernon's layout: Heatmap", - "author": "Gergely Nagy ", - "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", - "switchMount": "cherry", - "switchBrand": "gateron", - "switchType": "KS-3-Tea", - "pcb": true, - "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" - }, - [ - { - "x": 3.5, - "c": "#a7d0db", - "fa": [ - 0, - 0, - 2 - ] - }, - "#\n3\nF3", - { - "x": 10.5, - "c": "#a7d0db", - "t": "#000000", - "a": 4, - "fa": [ - 0, - 0, - 2 - ] - }, - "*\n8\nF8" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "@\n2\nF2", - { - "x": 1, - "c": "#7adabd", - "t": "#000000" - }, - "$\n4\nF4", - { - "x": 8.5 - }, - "&\n7\nF7", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "(\n9\nF9" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "%\n5\nF5", - { - "c": "#f9cd31", - "a": 7, - "f": 2 - }, - "STENO", - { - "x": 4.5, - "f": 6 - }, - "", - { - "c": "#7adabd", - "a": 4, - "f": 3, - "fa": [ - 0, - 0, - 2 - ] - }, - "^\n6\nF6" - ], - [ - { - "y": -0.875, - "c": "#ffb2d2", - "f": 3, - "w": 1.5 - }, - "\n\n~\n`", - { - "t": "#0d0d0b" - }, - "!\n1\nF1", - { - "x": 14.5 - }, - ")\n0\nF10", - { - "a": 7, - "w": 1.5 - }, - "F11" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#a7d0db", - "t": "#000000", - "a": 6 - }, - "L", - { - "x": 10.5 - }, - "C" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b", - "a": 4 - }, - ">\n.", - { - "x": 1, - "c": "#7adabd", - "t": "#000000", - "a": 6 - }, - "W", - { - "x": 8.5 - }, - "H", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "P" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "M", - { - "c": "#93c9b7", - "a": 4, - "h": 1.5 - }, - "{\n[", - { - "x": 4.5, - "h": 1.5 - }, - "}\n]", - { - "c": "#7adabd", - "a": 6 - }, - "F" - ], - [ - { - "y": -0.875, - "c": "#ffb07b", - "t": "#0d0d0b", - "f": 6, - "w": 1.5 - }, - "\n\n", - { - "c": "#ffb2d2", - "a": 4, - "f": 3 - }, - "<\n,", - { - "x": 14.5, - "a": 6 - }, - "Y", - { - "a": 4, - "w": 1.5 - }, - "|\n\\" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#a7d0db", - "t": "#000000", - "a": 6 - }, - "E", - { - "x": 10.5 - }, - "T" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "O", - { - "x": 1, - "c": "#7adabd", - "t": "#000000", - "n": true - }, - "I", - { - "x": 8.5, - "n": true - }, - "R", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "N" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "U", - { - "x": 6.5 - }, - "D" - ], - [ - { - "y": -0.875, - "c": "#ffb2d2", - "t": "#0d0d0b", - "fa": [ - 6 - ], - "w": 1.5 - }, - "\n\nTab", - { - "f": 3 - }, - "A", - { - "x": 14.5, - "f": 3 - }, - "S", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6 - ], - "w": 1.5 - }, - "+\n=" - ], - [ - { - "y": -0.625, - "x": 6.5, - "c": "#93c9b7", - "t": "#000000", - "a": 7, - "h": 1.5 - }, - "(", - { - "x": 4.5, - "h": 1.5 - }, - ")" - ], - [ - { - "y": -0.75, - "x": 3.5, - "c": "#a7d0db", - "a": 4, - "f": 3 - }, - "\"\n'", - { - "x": 10.5 - }, - "V" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "Z", - { - "x": 1, - "c": "#7adabd", - "t": "#000000" - }, - "K", - { - "x": 8.5 - }, - "G", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "J" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "X", - { - "x": 6.5 - }, - "B" - ], - [ - { - "y": -0.875, - "c": "#ffb07b", - "f": 9, - "w": 1.5 - }, - "\n\n", - { - "c": "#ffb2d2", - "t": "#0d0d0b", - "a": 4, - "f": 3 - }, - "?\n/", - { - "x": 14.5, - "a": 6 - }, - "Q", - { - "c": "#ffb07b", - "t": "#000000", - "f": 9, - "w": 1.5 - }, - "" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#d9dae0", - "g": true, - "a": 7, - "f": 3 - }, - "", - { - "x": 10.5 - }, - "" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "", - { - "x": 1, - "c": "#d4872a", - "g": false, - "a": 5 - }, - ";\n:", - { - "x": 8.5 - }, - "_\n-", - { - "x": 1, - "c": "#d9dae0", - "g": true, - "a": 7 - }, - "" - ], - [ - { - "y": -0.75, - "x": 0.5 - }, - "", - {}, - "", - { - "x": 14.5 - }, - "", - {}, - "" - ], - [ - { - "r": 30, - "rx": 6.5, - "ry": 4.25, - "y": -1, - "x": 1, - "c": "#f9cd31", - "g": false - }, - "Alt", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 9 - ] - }, - "\n\n\n" - ], - [ - { - "c": "#d4872a", - "a": 7, - "f": 9, - "h": 2 - }, - "", - { - "h": 2 - }, - "", - { - "c": "#f9cd31", - "f": 3 - }, - "Ctrl" - ], - [ - { - "x": 2, - "c": "#e26757" - }, - "ESC" - ], - [ - { - "r": -30, - "rx": 13, - "y": -1, - "x": -3, - "c": "#f9cd31", - "f": 2 - }, - "MEDIA", - {}, - "1HAND" - ], - [ - { - "x": -3 - }, - "LEAD", - { - "c": "#d4872a", - "f": 9, - "h": 2 - }, - "", - { - "f": 3, - "h": 2 - }, - "SPC" - ], - [ - { - "x": -3, - "c": "#f9cd31", - "f": 2 - }, - "HUN" - ] -] diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json deleted file mode 100644 index 148bb1f23b..0000000000 --- a/keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json +++ /dev/null @@ -1,533 +0,0 @@ -[ - { - "backcolor": "#ffffff", - "name": "ErgoDox - algernon's layout: Heatmap", - "author": "Gergely Nagy ", - "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", - "switchMount": "cherry", - "switchBrand": "gateron", - "switchType": "KS-3-Tea", - "pcb": true, - "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" - }, - [ - { - "x": 3.5, - "c": "#a7d0db", - "fa": [ - 0, - 0, - 2 - ] - }, - "#\n3\nF3", - { - "x": 10.5, - "c": "#a7d0db", - "t": "#000000", - "a": 4, - "fa": [ - 0, - 0, - 2 - ] - }, - "*\n8\nF8" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "@\n2\nF2", - { - "x": 1, - "c": "#7adabd", - "t": "#000000" - }, - "$\n4\nF4", - { - "x": 8.5 - }, - "&\n7\nF7", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "(\n9\nF9" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "%\n5\nF5", - { - "c": "#f9cd31", - "a": 7, - "f": 2 - }, - "STENO", - { - "x": 4.5, - "f": 6 - }, - "", - { - "c": "#7adabd", - "a": 4, - "f": 3, - "fa": [ - 0, - 0, - 2 - ] - }, - "^\n6\nF6" - ], - [ - { - "y": -0.875, - "c": "#ffb2d2", - "f": 3, - "w": 1.5 - }, - "\n\n~\n`", - { - "t": "#0d0d0b" - }, - "!\n1\nF1", - { - "x": 14.5 - }, - ")\n0\nF10", - { - "a": 7, - "w": 1.5 - }, - "F11" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#a7d0db", - "t": "#000000", - "a": 4 - }, - ">\n.", - { - "x": 10.5, - "a": 6 - }, - "C" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b", - "a": 4 - }, - "<\n,", - { - "x": 1, - "c": "#7adabd", - "t": "#000000", - "a": 6 - }, - "P", - { - "x": 8.5 - }, - "G", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "R" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "Y", - { - "c": "#93c9b7", - "a": 4, - "h": 1.5 - }, - "{\n[", - { - "x": 4.5, - "h": 1.5 - }, - "}\n]", - { - "c": "#7adabd", - "a": 6 - }, - "F" - ], - [ - { - "y": -0.875, - "c": "#ffb07b", - "t": "#0d0d0b", - "f": 6, - "w": 1.5 - }, - "\n\n", - { - "c": "#ffb2d2", - "a": 4, - "f": 3 - }, - "\"\n'", - { - "x": 14.5, - "a": 6 - }, - "L", - { - "a": 4, - "w": 1.5 - }, - "|\n\\" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#a7d0db", - "t": "#000000", - "a": 6 - }, - "E", - { - "x": 10.5 - }, - "T" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "O", - { - "x": 1, - "c": "#7adabd", - "t": "#000000", - "n": true - }, - "U", - { - "x": 8.5, - "n": true - }, - "H", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "N" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "I", - { - "x": 6.5 - }, - "D" - ], - [ - { - "y": -0.875, - "c": "#ffb2d2", - "t": "#0d0d0b", - "fa": [ - 6 - ], - "w": 1.5 - }, - "\n\nTab", - { - "f": 3 - }, - "A", - { - "x": 14.5, - "f": 3 - }, - "S", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6 - ], - "w": 1.5 - }, - "+\n=" - ], - [ - { - "y": -0.625, - "x": 6.5, - "c": "#93c9b7", - "t": "#000000", - "a": 7, - "h": 1.5 - }, - "(", - { - "x": 4.5, - "h": 1.5 - }, - ")" - ], - [ - { - "y": -0.75, - "x": 3.5, - "c": "#a7d0db", - "a": 6 - }, - "J", - { - "x": 10.5 - }, - "W" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "Q", - { - "x": 1, - "c": "#7adabd", - "t": "#000000" - }, - "K", - { - "x": 8.5 - }, - "M", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "V" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "X", - { - "x": 6.5 - }, - "B" - ], - [ - { - "y": -0.875, - "c": "#ffb07b", - "f": 9, - "w": 1.5 - }, - "\n\n", - { - "c": "#ffb2d2", - "t": "#0d0d0b", - "a": 4, - "f": 3 - }, - "?\n/", - { - "x": 14.5, - "a": 6 - }, - "Z", - { - "c": "#ffb07b", - "t": "#000000", - "f": 9, - "w": 1.5 - }, - "" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#d9dae0", - "g": true, - "a": 7, - "f": 3 - }, - "", - { - "x": 10.5 - }, - "" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "", - { - "x": 1, - "c": "#d4872a", - "g": false, - "a": 5 - }, - ";\n:", - { - "x": 8.5 - }, - "_\n-", - { - "x": 1, - "c": "#d9dae0", - "g": true, - "a": 7 - }, - "" - ], - [ - { - "y": -0.75, - "x": 0.5 - }, - "", - {}, - "", - { - "x": 14.5 - }, - "", - {}, - "" - ], - [ - { - "r": 30, - "rx": 6.5, - "ry": 4.25, - "y": -1, - "x": 1, - "c": "#f9cd31", - "g": false - }, - "Alt", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 9 - ] - }, - "\n\n\n" - ], - [ - { - "c": "#d4872a", - "a": 7, - "f": 9, - "h": 2 - }, - "", - { - "h": 2 - }, - "", - { - "c": "#f9cd31", - "f": 3 - }, - "Ctrl" - ], - [ - { - "x": 2, - "c": "#e26757" - }, - "ESC" - ], - [ - { - "r": -30, - "rx": 13, - "y": -1, - "x": -3, - "c": "#f9cd31", - "f": 2 - }, - "MEDIA", - {}, - "1HAND" - ], - [ - { - "x": -3 - }, - "LEAD", - { - "c": "#d4872a", - "f": 9, - "h": 2 - }, - "", - { - "f": 3, - "h": 2 - }, - "SPC" - ], - [ - { - "x": -3, - "c": "#f9cd31", - "f": 2 - }, - "HUN" - ] -] diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json new file mode 100644 index 0000000000..4dfa877a78 --- /dev/null +++ b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json @@ -0,0 +1,553 @@ +[ + { + "backcolor": "#ffffff", + "name": "ErgoDox - algernon's layout: Heatmap", + "author": "Gergely Nagy ", + "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", + "switchMount": "cherry", + "switchBrand": "gateron", + "switchType": "KS-3-Tea", + "pcb": true, + "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" + }, + [ + { + "x": 3.5, + "c": "#a7d0db", + "fa": [ + 0, + 0, + 2 + ] + }, + "#\n3\nF3", + { + "x": 10.5, + "c": "#a7d0db", + "t": "#000000", + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + }, + "*\n8\nF8" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "@\n2\nF2", + { + "x": 1, + "c": "#7adabd", + "t": "#000000" + }, + "$\n4\nF4", + { + "x": 8.5 + }, + "&\n7\nF7", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "(\n9\nF9" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "%\n5\nF5", + { + "c": "#f9cd31", + "a": 7, + "f": 2 + }, + "STENO", + { + "x": 4.5, + "f": 3 + }, + "F12", + { + "c": "#7adabd", + "a": 4, + "f": 3, + "fa": [ + 0, + 0, + 2 + ] + }, + "^\n6\nF6" + ], + [ + { + "y": -0.875, + "c": "#ffb2d2", + "f": 9, + "a": 6, + "w": 1.5 + }, + "\n\n", + { + "t": "#0d0d0b", + "f": 3, + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + }, + "!\n1\nF1", + { + "x": 14.5 + }, + ")\n0\nF10", + { + "a": 7, + "w": 1.5 + }, + "F11" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#a7d0db", + "t": "#000000", + "a": 6 + }, + "G", + { + "x": 10.5 + }, + "C" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b", + "a": 6 + }, + "W", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "a": 6 + }, + "L", + { + "x": 8.5 + }, + "H", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "P" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "M", + { + "c": "#93c9b7", + "a": 4, + "fa": [0, 0, 0], + "h": 1.5 + }, + "{\n(\n[", + { + "x": 4.5, + "h": 1.5 + }, + "}\n)\n]", + { + "c": "#7adabd", + "a": 6 + }, + "F" + ], + [ + { + "y": -0.875, + "c": "#ffb07b", + "t": "#0d0d0b", + "f": 3, + "a": 4, + "w": 1.5 + }, + "\n\n~\n`", + { + "c": "#ffb2d2", + "a": 6, + "f": 3 + }, + "Y", + { + "x": 14.5, + "a": 6 + }, + "X", + { + "a": 4, + "w": 1.5 + }, + "|\n\\" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#a7d0db", + "t": "#000000", + "a": 6 + }, + "E", + { + "x": 10.5 + }, + "T" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "O", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "n": true + }, + "I", + { + "x": 8.5, + "n": true + }, + "R", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "N" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "U", + { + "x": 6.5 + }, + "D" + ], + [ + { + "y": -0.875, + "c": "#ffb2d2", + "t": "#0d0d0b", + "fa": [ + 6 + ], + "w": 1.5 + }, + "\n\nTab", + { + "f": 3 + }, + "A", + { + "x": 14.5, + "f": 3 + }, + "S", + { + "a": 4, + "fa": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6 + ], + "w": 1.5 + }, + "+\n=" + ], + [ + { + "y": -0.625, + "x": 6.5, + "c": "#93c9b7", + "t": "#000000", + "h": 1.5 + }, + ";\n:", + { + "x": 4.5, + "h": 1.5 + }, + "_\n-" + ], + [ + { + "y": -0.75, + "x": 3.5, + "c": "#a7d0db", + "a": 4, + "f": 3 + }, + "\"\n'", + { + "x": 10.5, + "a": 6, + "f": 3 + }, + "V" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b", + "a": 6 + }, + "Q", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "a": 4 + }, + "<\n,", + { + "x": 8.5, + "a": 6 + }, + "K", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "J" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000", + "a": 4 + }, + ">\n.", + { + "x": 6.5, + "a": 6 + }, + "B" + ], + [ + { + "y": -0.875, + "c": "#ffb07b", + "f": 9, + "w": 1.5, + "g": true + }, + "", + { + "c": "#ffb2d2", + "t": "#0d0d0b", + "a": 6, + "f": 3, + "g": false + }, + "Z", + { + "x": 14.5, + "a": 4 + }, + "?\n/", + { + "c": "#ffb07b", + "t": "#000000", + "f": 9, + "g": true, + "w": 1.5, + "a": 4 + }, + "" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#d9dae0", + "g": true, + "a": 7, + "f": 3 + }, + "", + { + "x": 10.5 + }, + "" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "", + { + "x": 1, + "c": "#d4872a", + "g": true, + "a": 5 + }, + "", + { + "x": 8.5 + }, + "", + { + "x": 1, + "c": "#d9dae0", + "g": true, + "a": 7 + }, + "" + ], + [ + { + "y": -0.75, + "x": 0.5 + }, + "", + {}, + "", + { + "x": 14.5 + }, + "", + {}, + "" + ], + [ + { + "r": 30, + "rx": 6.5, + "ry": 4.25, + "y": -1, + "x": 1, + "c": "#f9cd31", + "g": false + }, + "Alt", + { + "a": 4, + "fa": [ + 0, + 0, + 0, + 9 + ] + }, + "\n\n\n" + ], + [ + { + "c": "#d4872a", + "a": 7, + "f": 9, + "h": 2 + }, + "", + { + "h": 2 + }, + "", + { + "c": "#f9cd31", + "f": 3 + }, + "Ctrl" + ], + [ + { + "x": 2, + "c": "#e26757" + }, + "ESC" + ], + [ + { + "r": -30, + "rx": 13, + "y": -1, + "x": -3, + "c": "#f9cd31", + "f": 2 + }, + "MEDIA", + {}, + "DEL" + ], + [ + { + "x": -3 + }, + "HUN", + { + "c": "#d4872a", + "f": 9, + "h": 2 + }, + "", + { + "f": 3, + "h": 2 + }, + "SPC" + ], + [ + { + "x": -3, + "c": "#f9cd31", + "f": 2 + }, + "LEAD" + ] +] diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json new file mode 100644 index 0000000000..1248d36af7 --- /dev/null +++ b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json @@ -0,0 +1,542 @@ +[ + { + "backcolor": "#ffffff", + "name": "ErgoDox - algernon's layout: Heatmap", + "author": "Gergely Nagy ", + "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", + "switchMount": "cherry", + "switchBrand": "gateron", + "switchType": "KS-3-Tea", + "pcb": true, + "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" + }, + [ + { + "x": 3.5, + "c": "#a7d0db", + "fa": [ + 0, + 0, + 2 + ] + }, + "#\n3\nF3", + { + "x": 10.5, + "c": "#a7d0db", + "t": "#000000", + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + }, + "*\n8\nF8" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "@\n2\nF2", + { + "x": 1, + "c": "#7adabd", + "t": "#000000" + }, + "$\n4\nF4", + { + "x": 8.5 + }, + "&\n7\nF7", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "(\n9\nF9" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "%\n5\nF5", + { + "c": "#f9cd31", + "a": 7, + "f": 2 + }, + "STENO", + { + "x": 4.5, + "f": 3 + }, + "F12", + { + "c": "#7adabd", + "a": 4, + "f": 3, + "fa": [ + 0, + 0, + 2 + ] + }, + "^\n6\nF6" + ], + [ + { + "y": -0.875, + "c": "#ffb2d2", + "f": 6, + "a": 6, + "w": 1.5 + }, + "\n\n", + { + "f": 3, + "t": "#0d0d0b", + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + + }, + "!\n1\nF1", + { + "x": 14.5 + }, + ")\n0\nF10", + { + "a": 7, + "w": 1.5 + }, + "F11" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#a7d0db", + "t": "#000000", + "a": 4 + }, + ">\n.", + { + "x": 10.5, + "a": 6 + }, + "C" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b", + "a": 4 + }, + "<\n,", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "a": 6 + }, + "P", + { + "x": 8.5 + }, + "G", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "R" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "Y", + { + "c": "#93c9b7", + "a": 4, + "h": 1.5 + }, + "{\n(\n[", + { + "x": 4.5, + "h": 1.5 + }, + "}\n)\n]", + { + "c": "#7adabd", + "a": 6 + }, + "F" + ], + [ + { + "y": -0.875, + "c": "#ffb07b", + "t": "#0d0d0b", + "f": 3, + "w": 1.5 + }, + "\n\n~\n`", + { + "c": "#ffb2d2", + "a": 4, + "f": 3 + }, + "\"\n'", + { + "x": 14.5, + "a": 6 + }, + "L", + { + "a": 4, + "w": 1.5 + }, + "|\n\\" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#a7d0db", + "t": "#000000", + "a": 6 + }, + "E", + { + "x": 10.5 + }, + "T" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "O", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "n": true + }, + "U", + { + "x": 8.5, + "n": true + }, + "H", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "N" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "I", + { + "x": 6.5 + }, + "D" + ], + [ + { + "y": -0.875, + "c": "#ffb2d2", + "t": "#0d0d0b", + "fa": [ + 6 + ], + "w": 1.5 + }, + "\n\nTab", + { + "f": 3 + }, + "A", + { + "x": 14.5, + "f": 3 + }, + "S", + { + "a": 4, + "fa": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6 + ], + "w": 1.5 + }, + "+\n=" + ], + [ + { + "y": -0.625, + "x": 6.5, + "c": "#93c9b7", + "t": "#000000", + "a": 7, + "h": 1.5 + }, + "(", + { + "x": 4.5, + "h": 1.5 + }, + ")" + ], + [ + { + "y": -0.75, + "x": 3.5, + "c": "#a7d0db", + "a": 6 + }, + "J", + { + "x": 10.5 + }, + "W" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "Q", + { + "x": 1, + "c": "#7adabd", + "t": "#000000" + }, + "K", + { + "x": 8.5 + }, + "M", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "V" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "X", + { + "x": 6.5 + }, + "B" + ], + [ + { + "y": -0.875, + "c": "#ffb07b", + "f": 9, + "w": 1.5 + }, + "\n\n", + { + "c": "#ffb2d2", + "t": "#0d0d0b", + "a": 4, + "f": 3 + }, + "?\n/", + { + "x": 14.5, + "a": 6 + }, + "Z", + { + "c": "#ffb07b", + "t": "#000000", + "f": 9, + "w": 1.5 + }, + "" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#d9dae0", + "g": true, + "a": 7, + "f": 3 + }, + "", + { + "x": 10.5 + }, + "" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "", + { + "x": 1, + "c": "#d4872a", + "g": false, + "a": 5 + }, + ";\n:", + { + "x": 8.5 + }, + "_\n-", + { + "x": 1, + "c": "#d9dae0", + "g": true, + "a": 7 + }, + "" + ], + [ + { + "y": -0.75, + "x": 0.5 + }, + "", + {}, + "", + { + "x": 14.5 + }, + "", + {}, + "" + ], + [ + { + "r": 30, + "rx": 6.5, + "ry": 4.25, + "y": -1, + "x": 1, + "c": "#f9cd31", + "g": false + }, + "Alt", + { + "a": 4, + "fa": [ + 0, + 0, + 0, + 9 + ] + }, + "\n\n\n" + ], + [ + { + "c": "#d4872a", + "a": 7, + "f": 9, + "h": 2 + }, + "", + { + "h": 2 + }, + "", + { + "c": "#f9cd31", + "f": 3 + }, + "Ctrl" + ], + [ + { + "x": 2, + "c": "#e26757" + }, + "ESC" + ], + [ + { + "r": -30, + "rx": 13, + "y": -1, + "x": -3, + "c": "#f9cd31", + "f": 2 + }, + "MEDIA", + {}, + "DEL" + ], + [ + { + "x": -3 + }, + "LEAD", + { + "c": "#d4872a", + "f": 9, + "h": 2 + }, + "", + { + "f": 3, + "h": 2 + }, + "SPC" + ], + [ + { + "x": -3, + "c": "#f9cd31", + "f": 2 + }, + "HUN" + ] +] diff --git a/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py b/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py index a13d12e81a..68585843be 100755 --- a/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py +++ b/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py @@ -3,143 +3,247 @@ import json import os import sys import re +import argparse from math import floor +from os.path import dirname + +class Heatmap(object): + coords = [ + [ + # Row 0 + [ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2], + [ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6], + ], + [ + # Row 1 + [ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2], + [ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6], + ], + [ + # Row 2 + [12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ], + [ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6], + ], + [ + # Row 3 + [17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0], + [13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6], + ], + [ + # Row 4 + [20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [], + [19, 4], [18, 2], [19, 6], [20, 4], [20, 6], + ], + [ + # Row 5 + [ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2], + [24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ], + ], + ] + + def set_attr_at(self, block, n, attr, fn, val): + blk = self.heatmap[block][n] + if attr in blk: + blk[attr] = fn(blk[attr], val) + else: + blk[attr] = fn(None, val) + + def coord(self, col, row): + return self.coords[row][col] + + @staticmethod + def set_attr(orig, new): + return new + + def set_bg(self, (block, n), color): + self.set_attr_at(block, n, "c", self.set_attr, color) + #self.set_attr_at(block, n, "g", self.set_attr, False) + + def set_tap_info(self, (block, n), count, cap): + def _set_tap_info(o, _count, _cap): + ns = 4 - o.count ("\n") + return o + "\n" * ns + "%.02f%%" % (float(_count) / float(_cap) * 100) + + if not cap: + cap = 1 + self.heatmap[block][n + 1] = _set_tap_info (self.heatmap[block][n + 1], count, cap) + + @staticmethod + def heatmap_color (v): + colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]] + fb = 0 + if v <= 0: + idx1, idx2 = 0, 0 + elif v >= 1: + idx1, idx2 = len(colors) - 1, len(colors) - 1 + else: + val = v * (len(colors) - 1) + idx1 = int(floor(val)) + idx2 = idx1 + 1 + fb = val - float(idx1) + + r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0] + g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1] + b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2] + + r, g, b = [x * 255 for x in r, g, b] + return "#%02x%02x%02x" % (r, g, b) + + def __init__(self, layout): + self.log = {} + self.total = 0 + self.max_cnt = 0 + self.layout = layout + + def update_log(self, (c, r)): + if not (c, r) in self.log: + self.log[(c, r)] = 0 + self.log[(c, r)] = self.log[(c, r)] + 1 + self.total = self.total + 1 + if self.max_cnt < self.log[(c, r)]: + self.max_cnt = self.log[(c, r)] + + def get_heatmap(self): + with open("%s/heatmap-layout.%s.json" % (dirname(sys.argv[0]), self.layout), "r") as f: + self.heatmap = json.load (f) + + ## Reset colors + for row in self.coords: + for coord in row: + if coord != []: + self.set_bg (coord, "#d9dae0") + + for (c, r) in self.log: + coords = self.coord(c, r) + b, n = coords + cap = self.max_cnt + if cap == 0: + cap = 1 + v = float(self.log[(c, r)]) / cap + self.set_bg (coords, self.heatmap_color (v)) + self.set_tap_info (coords, self.log[(c, r)], self.total) + return self.heatmap + + def get_stats(self): + usage = [ + # left hand + [0, 0, 0, 0, 0], + # right hand + [0, 0, 0, 0, 0] + ] + finger_map = [0, 0, 1, 2, 3, 4, 4] + for (c, r) in self.log: + if r == 5: # thumb cluster + if c <= 6: # left side + usage[0][4] = usage[0][4] + self.log[(c, r)] + else: + usage[1][4] = usage[1][4] + self.log[(c, r)] + else: + fc = c + hand = 0 + if fc >= 7: + fc = fc - 7 + hand = 1 + fm = finger_map[fc] + usage[hand][fm] = usage[hand][fm] + self.log[(c, r)] + hand_usage = [0, 0] + for f in usage[0]: + hand_usage[0] = hand_usage[0] + f + for f in usage[1]: + hand_usage[1] = hand_usage[1] + f + + total = self.total + if total == 0: + total = 1 + stats = { + "hands": { + "left": { + "usage": float(hand_usage[0]) / total * 100, + "fingers": { + "0 - pinky": 0, + "1 - ring": 0, + "2 - middle": 0, + "3 - index": 0, + "4 - thumb": 0, + } + }, + "right": { + "usage": float(hand_usage[1]) / total * 100, + "fingers": { + "0 - thumb": 0, + "1 - index": 0, + "2 - middle": 0, + "3 - ring": 0, + "4 - pinky": 0, + } + }, + } + } + + hmap = ['left', 'right'] + fmap = ['0 - pinky', '1 - ring', '2 - middle', '3 - index', '4 - thumb', + '0 - thumb', '1 - index', '2 - middle', '3 - ring', '4 - pinky'] + for hand_idx in range(len(usage)): + hand = usage[hand_idx] + for finger_idx in range(len(hand)): + stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = float(hand[finger_idx]) / total * 100 + return stats + +def dump_all(out_dir, heatmaps): + for layer in heatmaps.keys(): + if len(heatmaps[layer].log) == 0: + continue -cr_coord_map = [ - [ - # Row 0 - [ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2], - [ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6], - ], - [ - # Row 1 - [ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2], - [ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6], - ], - [ - # Row 2 - [12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ], - [ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6], - ], - [ - # Row 3 - [17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0], - [13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6], - ], - [ - # Row 4 - [20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [], - [19, 4], [18, 2], [19, 6], [20, 4], [20, 6], - ], - [ - # Row 5 - [ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2], - [24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ], - ], -] - -def set_attr_at(j, b, n, attr, fn, val): - blk = j[b][n] - if attr in blk: - blk[attr] = fn(blk[attr], val) - else: - blk[attr] = fn(None, val) - -def coord(col, row): - return cr_coord_map[row][col] - -def set_attr(orig, new): - return new - -def set_bg(j, (b, n), color): - set_attr_at(j, b, n, "c", set_attr, color) - #set_attr_at(j, b, n, "g", set_attr, False) - -def _set_tap_info(o, count, cap): - ns = 4 - o.count ("\n") - return o + "\n" * ns + "%.02f%%" % (float(count) / float(cap) * 100) - -def set_tap_info(j, (b, n), count, cap): - j[b][n + 1] = _set_tap_info (j[b][n + 1], count, cap) - -def heatmap_color (v): - colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]] - fb = 0 - if v <= 0: - idx1, idx2 = 0, 0 - elif v >= 1: - idx1, idx2 = len(colors) - 1, len(colors) - 1 - else: - val = v * (len(colors) - 1) - idx1 = int(floor(val)) - idx2 = idx1 + 1 - fb = val - float(idx1) - - r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0] - g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1] - b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2] - - r, g, b = [x * 255 for x in r, g, b] - return "#%02x%02x%02x" % (r, g, b) - -# Load the keylog -def load_keylog(fname, restrict_row): - keylog = {} - total = 0 - with open(fname, "r") as f: - lines = f.readlines() - for line in lines: - m = re.search ('KL: col=(\d+), row=(\d+)', line) + with open ("%s/%s.json" % (out_dir, layer), "w") as f: + json.dump(heatmaps[layer].get_heatmap(), f) + print >>sys.stderr, "%s stats:" % (layer) + json.dump (heatmaps[layer].get_stats(), sys.stderr, + indent = 4, sort_keys = True) + print >>sys.stderr, "" + print >>sys.stderr, "" + +def main(opts): + + heatmaps = {"Dvorak": Heatmap("Dvorak"), + "ADORE": Heatmap("ADORE") + } + cnt = 0 + restrict_row = opts.restrict_row + out_dir = opts.outdir + + while True: + line = sys.stdin.readline() + if not line: + break + m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line) if not m: continue - (c, r) = (int(m.group (2)), int(m.group (1))) - if restrict_row != None and r != int(restrict_row): + + cnt = cnt + 1 + (c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4)) + if restrict_row != -1 and r != restrict_row: + continue + if c in opts.ignore_columns: continue - if (c, r) in keylog: - keylog[(c, r)] = keylog[(c, r)] + 1 - else: - keylog[(c, r)] = 1 - total = total + 1 - return total / 2, keylog - -def l_flat(s): - f = s.split("\n") - return ", ".join (f) - -def main(base_fn, log_fn, restrict_row = None): - - with open(base_fn, "r") as f: - layout = json.load (f) - - ## Reset colors - for row in cr_coord_map: - for col in row: - if col != []: - set_bg (layout, col, "#d9dae0") - #set_attr_at (layout, col[0], col[1], "g", set_attr, True) - - total, log = load_keylog (log_fn, restrict_row) - max_cnt = 0 - for (c, r) in log: - max_cnt = max(max_cnt, log[(c, r)]) - - # Create the heatmap - for (c, r) in log: - coords = coord(c, r) - b, n = coords - cap = max_cnt - v = float(log[(c, r)]) / cap - print >> sys.stderr, "%s => %d/%d => %f = %s" % (l_flat(layout[b][n+1]), log[(c,r)], cap, v, heatmap_color(v)) - set_bg (layout, coord(c, r), heatmap_color (v)) - set_tap_info (layout, coord (c, r), log[(c, r)], total) - - print json.dumps(layout) -if __name__ == "__main__": - if len(sys.argv) < 3: - print """Log to Heatmap -- creates a heatmap out of keyboard logs + heatmaps[l].update_log ((c, r)) + + if opts.dump_interval != -1 and cnt >= opts.dump_interval: + cnt = 0 + dump_all(out_dir, heatmaps) -Usage: log-to-heatmap.py base-layout.json logfile [row] >layout.json""" - sys.exit (1) - main(*sys.argv[1:]) + dump_all (out_dir, heatmaps) + +if __name__ == "__main__": + parser = argparse.ArgumentParser (description = "keylog to heatmap processor") + parser.add_argument ('outdir', action = 'store', + help = 'Output directory') + parser.add_argument ('--row', dest = 'restrict_row', action = 'store', type = int, + default = -1, help = 'Restrict processing to this row only') + parser.add_argument ('--dump-interval', dest = 'dump_interval', action = 'store', type = int, + default = 100, help = 'Dump stats and heatmap at every Nth event, -1 for dumping at EOF only') + parser.add_argument ('--ignore-column', dest = 'ignore_columns', action = 'append', type = int, + default = [], help = 'Ignore the specified columns') + args = parser.parse_args() + main(args) -- cgit v1.2.3 From 5b58d7d1458502ad52b7a8e2be52afab17dc51a5 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 21 Aug 2016 19:31:34 +0200 Subject: =?UTF-8?q?Disable=20debugging=20for=20Ergodox=20keymap=20?= =?UTF-8?q?=E2=80=9Ccoderkun=5Fneo2=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/ergodox/keymaps/coderkun_neo2/Makefile | 1 + keyboards/ergodox/keymaps/coderkun_neo2/keymap.c | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'keyboards') diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/Makefile b/keyboards/ergodox/keymaps/coderkun_neo2/Makefile index 6c0a79b110..b0fe90ab1d 100644 --- a/keyboards/ergodox/keymaps/coderkun_neo2/Makefile +++ b/keyboards/ergodox/keymaps/coderkun_neo2/Makefile @@ -1,2 +1,3 @@ SLEEP_LED_ENABLE = no UNICODE_ENABLE = yes +COMMAND_ENABLE = no diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c index 2ac06eef85..90651956af 100644 --- a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c +++ b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c @@ -1,5 +1,4 @@ #include "ergodox.h" -#include "debug.h" #include "action_layer.h" #include "led.h" #include "keymap_extras/keymap_neo2.h" -- cgit v1.2.3 From c78b44fb18194fb130ec3c49c38abc5afb6fee34 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 21 Aug 2016 20:39:09 +0200 Subject: =?UTF-8?q?Set=20Unicode=20input=20mode=20and=20override=20unicode?= =?UTF-8?q?=5Finput=5Fstart()=20method=20to=20keymap=20=E2=80=9Ccoderkun?= =?UTF-8?q?=5Fneo2=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/ergodox/keymaps/coderkun_neo2/keymap.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'keyboards') diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c index 90651956af..b665a5f3ae 100644 --- a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c +++ b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c @@ -155,8 +155,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [FMU] = KEYMAP( // left hand KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,UC(0x2713),KC_TRNS,KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,UC(0x2715),KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,UC(0x2715),KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,UC(0x2713),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_MS_L, KC_MS_U, @@ -244,6 +244,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // Runs just one time when the keyboard initializes. void matrix_init_user(void) { + set_unicode_input_mode(UC_LNX); }; @@ -278,3 +279,14 @@ void matrix_scan_user(void) } }; + + +// Override Unicode start method to use NEO_U instead of KC_U +void unicode_input_start (void) { + register_code(KC_LCTL); + register_code(KC_LSFT); + register_code(NEO_U); + unregister_code(NEO_U); + unregister_code(KC_LSFT); + unregister_code(KC_LCTL); +}; -- cgit v1.2.3 From 137eb118e352201f7d324743e34ed57e6885b689 Mon Sep 17 00:00:00 2001 From: coderkun Date: Fri, 26 Aug 2016 13:26:16 +0200 Subject: =?UTF-8?q?Add=20box-drawing=20Unicode=20characters=20to=20keymap?= =?UTF-8?q?=20=E2=80=9Ccoderkun=5Fneo2=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/ergodox/keymaps/coderkun_neo2/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'keyboards') diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c index b665a5f3ae..0eedecf3dd 100644 --- a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c +++ b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c @@ -137,11 +137,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤ - * │ │ │ │ │ ✕ │ │ │ │ │ │ F9 │ F10 │ F11 │ F12 │ │ + * │ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ │ F9 │ F10 │ F11 │ F12 │ │ * ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤ - * │ │ │ │ │ ✓ │ ├─────┤ ├─────┤ │ F5 │ F6 │ F7 │ F8 │ │ + * │ │ ├ │ ┼ │ ┤ │ ✓ │ ✕ ├─────┤ ├─────┤ │ F5 │ F6 │ F7 │ F8 │ │ * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤ - * │ │ │ │ │ │ │ │ │ │ │ F1 │ F2 │ F3 │ F4 │ │ + * │ │ └ │ ┴ │ ┘ │ │ │ │ │ │ │ F1 │ F2 │ F3 │ F4 │ │ * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘ * │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │ * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘ @@ -155,9 +155,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [FMU] = KEYMAP( // left hand KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,UC(0x2715),KC_TRNS,KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,UC(0x2713),KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),KC_TRNS, + KC_TRNS, UC(0x251C),UC(0x253C),UC(0x2524),UC(0x2713),UC(0x2715), + KC_TRNS, UC(0x2514),UC(0x2534),UC(0x2518),KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_MS_L, KC_MS_U, KC_BTN1, -- cgit v1.2.3 From 42f1ce08dc09ff784add32750e55aa03e2427f5e Mon Sep 17 00:00:00 2001 From: Jack Henahan Date: Mon, 29 Aug 2016 11:35:07 -0400 Subject: jhenahan layout --- keyboards/planck/keymaps/jhenahan/Makefile | 25 +++ keyboards/planck/keymaps/jhenahan/config.h | 9 + keyboards/planck/keymaps/jhenahan/keymap.c | 314 ++++++++++++++++++++++++++++ keyboards/planck/keymaps/jhenahan/readme.md | 35 ++++ 4 files changed, 383 insertions(+) create mode 100644 keyboards/planck/keymaps/jhenahan/Makefile create mode 100644 keyboards/planck/keymaps/jhenahan/config.h create mode 100644 keyboards/planck/keymaps/jhenahan/keymap.c create mode 100644 keyboards/planck/keymaps/jhenahan/readme.md (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/jhenahan/Makefile b/keyboards/planck/keymaps/jhenahan/Makefile new file mode 100644 index 0000000000..de01ad2404 --- /dev/null +++ b/keyboards/planck/keymaps/jhenahan/Makefile @@ -0,0 +1,25 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/planck/keymaps/jhenahan/config.h b/keyboards/planck/keymaps/jhenahan/config.h new file mode 100644 index 0000000000..cd3adc41cc --- /dev/null +++ b/keyboards/planck/keymaps/jhenahan/config.h @@ -0,0 +1,9 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#define FORCE_NKRO +#define WORKMAN_SOUND COLEMAK_SOUND + +#endif diff --git a/keyboards/planck/keymaps/jhenahan/keymap.c b/keyboards/planck/keymaps/jhenahan/keymap.c new file mode 100644 index 0000000000..2bda4b6956 --- /dev/null +++ b/keyboards/planck/keymaps/jhenahan/keymap.c @@ -0,0 +1,314 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _WORKMAN 0 +#define _DEAD 1 +#define _QWERTY 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _ADJUST 16 + +enum planck_keycodes { + WORKMAN = SAFE_RANGE, + DEAD, + QWERTY, + LOWER, + RAISE, + PLOVER, + EXT_PLV, + TOG_PLV +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +/* Workman + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | H | T | G | Y | N | E | O | I | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | M | C | V | K | L | Dead | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_WORKMAN] = { + {KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC}, + {MT(MOD_LCTL,KC_ESC), KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, DEAD, KC_DOT, KC_SLSH, KC_ENT}, + {KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Workman Dead Layer + * ,-----------------------------------------------------------------------------------. + * | | % | & | ? | + | @ | $ | _ | [ | ] | ! | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | / | ( | = | 0 | { | } | 1 | * | ) | - | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | 6 | 7 | 8 | 9 | | | \ | 2 | 3 | 4 | 5 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | < | ~ | ` | , | # | ^ | > | | | + * `-----------------------------------------------------------------------------------' + */ +[_DEAD] = { + {XXXXXXX, KC_PERC, KC_AMPR, KC_QUES, KC_PLUS, KC_AT, KC_DLR, KC_UNDS, KC_LBRC, KC_RBRC, KC_EXLM, XXXXXXX}, + {XXXXXXX, KC_SLSH, KC_LPRN, KC_EQL, KC_0, KC_LCBR, KC_RCBR, KC_1, KC_ASTR, KC_RPRN, KC_MINS, XXXXXXX}, + {XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_PIPE, KC_BSLS, KC_2, KC_3, KC_4, KC_5, XXXXXXX}, + {XXXXXXX, XXXXXXX, KC_LT, KC_TILD, KC_GRV, KC_COMM, KC_COMM, KC_HASH, KC_CIRC, KC_GT, XXXXXXX, XXXXXXX} +}, + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | Vol+ |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Prev | Next | Vol- | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS), _______, KC_VOLU, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_MPLY} +}, + +/* Raise - KWM Interaction + * ,-----------------------------------------------------------------------------------. + * |Restrt| |TgSplt|Flotng|Parent|FlScrn|InsMrk| InsW | InsS | InsN | InsE | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | Mark |Rotate|Prefix| Term | BSP |SwpMrk|SwapW |SwapS |SwapN |SwapE | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |MarkW |MarkS |MarkN |MarkE |Monocl|Float |FocusW|FocusS|FocusN|FocusE| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {LCAG(KC_Q), XXXXXXX, LCAG(KC_S), LCAG(KC_W), LCAG(KC_D), LCAG(KC_F), LCTL(S(KC_X)), LCTL(S(KC_H)), LCTL(S(KC_J)), LCTL(S(KC_K)), LCTL(S(KC_L)), XXXXXXX}, + {XXXXXXX, LCAG(KC_M), LGUI(LCTL(KC_R)), LCAG(KC_DOT), LCAG(KC_T), LGUI(LCTL(KC_A)), LCTL(LALT(KC_M)), LCTL(LALT(KC_H)), LCTL(LALT(KC_J)), LCTL(LALT(KC_K)), LCTL(LALT(KC_L)), XXXXXXX}, + {_______, LCAG(KC_H), LCAG(KC_J), LCAG(KC_K), LCAG(KC_L), LGUI(LCTL(KC_S)), LGUI(LCTL(KC_D)), LGUI(LALT(KC_H)), LGUI(LALT(KC_J)), LGUI(LALT(KC_K)), LGUI(LALT(KC_L)), _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + +[_PLOVER] = { + {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, + {XXXXXXX, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC}, + {TOG_PLV, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_M, KC_C, XXXXXXX, XXXXXXX, KC_L, KC_COMM, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Workmn|Plover| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, WORKMAN, PLOVER, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_workman[][2] = SONG(WORKMAN_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case WORKMAN: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_workman, false, 0); + #endif + persistant_default_layer_set(1UL<<_WORKMAN); + } + return false; + break; + case DEAD: + if (record->event.pressed) { + layer_on(_DEAD); + set_oneshot_layer(_DEAD, ONESHOT_START); + clear_oneshot_layer_state(ONESHOT_PRESSED); + } + return false; + break; + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + return false; + break; + case TOG_PLV: + if (record->event.pressed) { + register_code(KC_R); + register_code(KC_W); + register_code(KC_T); + register_code(KC_C); + register_code(KC_P); + register_code(KC_O); + clear_keyboard(); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/jhenahan/readme.md b/keyboards/planck/keymaps/jhenahan/readme.md new file mode 100644 index 0000000000..1d803fe321 --- /dev/null +++ b/keyboards/planck/keymaps/jhenahan/readme.md @@ -0,0 +1,35 @@ +# jhenahan's layout + +## Layout + +The base layer is based on the +[Workman Dead](https://github.com/ojbucao/Workman/tree/master/mac) layout. The +primary interaction layer is a slightly modified Workman layout with a 'dead' +key on the third row under the middle finger. The dead key activates a layer of +special characters. + +## [Layers](http://www.keyboard-layout-editor.com/#/gists/2b875f7d5d76fe4408c0a5b3bd76ddae) +### Function Layer + +This is very slightly modified from the default, mainly just to rearrange the media keys. + +### [KWM](https://github.com/koekeishiya/kwm) Interaction Layer + +`kwm` is a tiling window manager for OS X. The keys defined in my keymap +correspond to the settings I use in +[my `kwmrc` file](https://github.com/jhenahan/dotfiles/blob/master/kwm/kwmrc). + +### QWERTY + +Just in case. + +### [Plover](http://www.openstenoproject.org/plover/) + +The Plover layer in this keymap is identical to that of the default. This layout +functions exactly as a QWERTY layout unless you're running the Plover +application. + +### Adjust Layer + +This layer is only slightly modified from the default to remove Dvorak and +Colemak and replace them with Workman. -- cgit v1.2.3 From 6d7637ae3eb4b37ab7d294818aa92ea9562df4b9 Mon Sep 17 00:00:00 2001 From: Jack Henahan Date: Mon, 29 Aug 2016 11:43:06 -0400 Subject: Update README --- keyboards/planck/keymaps/jhenahan/readme.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/jhenahan/readme.md b/keyboards/planck/keymaps/jhenahan/readme.md index 1d803fe321..a80506fc9d 100644 --- a/keyboards/planck/keymaps/jhenahan/readme.md +++ b/keyboards/planck/keymaps/jhenahan/readme.md @@ -25,9 +25,15 @@ Just in case. ### [Plover](http://www.openstenoproject.org/plover/) -The Plover layer in this keymap is identical to that of the default. This layout -functions exactly as a QWERTY layout unless you're running the Plover -application. +This layout functions exactly as a Workman layout unless you're running the Plover +application. Includes a key for toggling Plover while it's running. + +Add this in the appropriate section of your `plover.cfg` to allow this altered layout: + +``` ini +[System: English Stenotype] +keymap[keyboard] = [["#", ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "="]], ["S-", ["q", "a"]], ["T-", ["d"]], ["K-", ["s"]], ["P-", ["r"]], ["W-", ["h"]], ["H-", ["w"]], ["R-", ["t"]], ["A-", ["m"]], ["O-", ["c"]], ["*", ["y", "g", "j", "b"]], ["-E", ["l"]], ["-U", [","]], ["-F", ["f"]], ["-R", ["n"]], ["-P", ["u"]], ["-B", ["e"]], ["-L", ["p"]], ["-G", ["o"]], ["-T", [";"]], ["-S", ["i"]], ["-D", ["BackSpace"]], ["-Z", ["'"]], ["no-op", ["\\", "]", "x", ".", "/"]], ["arpeggiate", ["space"]]] +``` ### Adjust Layer -- cgit v1.2.3 From 8b2a235c8de7123187e0aa1dd950947f20a51f07 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 1 Sep 2016 18:14:39 +0100 Subject: changed order of modifiers after experimentation, updated readme --- keyboards/planck/keymaps/callum/keymap.c | 4 ++-- keyboards/planck/keymaps/callum/readme.md | 15 +++++---------- 2 files changed, 7 insertions(+), 12 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 494ed30b06..572756a383 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -38,14 +38,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | GUI | Alt | Ctrl | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps | + * | Func | Ctrl | Alt | GUI | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps | * `-----------------------------------------------------------------------------------' */ [_BASE] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} + {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} }, /* MOVE diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 030def7f77..c7ad5d163c 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -2,24 +2,19 @@ This is a layout for the grid planck, built with a few ideals in mind. These ideals are just my opinion mind! The great thing about *qmk* is that we can all afford to have different opinions about what makes a good layout: -- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided --- since they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. +- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — since they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. - The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. - There should be two of every modifier (one on each side), since otherwise certain long key combinations become hard to make. - Backspace should be in the “capslock position” as God intended. -- The keyboard should be usable without any firmware changes on any operating system. In my case that means it should work on *Windows* and *Linux* without any software modifications, while I can change the behaviour slightly on *macOS* in software since that’s my home OS. The images reflect the intended use on *macOS* **after** minor software tweaks; which will be noted. We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. ## The `BASE` layer -![](http://i.imgur.com/aEXOlWl.png) +![](http://i.imgur.com/tVNI3SE.png) This is the default layer; in [colemak](https://colemak.com). `esc` and `del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. -The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneosly, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. - -The `ctrl`, `alt`, `cmd` cluster is asymmetric around the centre so that at least one of each of the modifiers can be reached with the thumbs. The intended use is to always hit the left `cmd` and the right `ctrl`, unless an awkward key combination dictates otherwise. - -In firmware `ctrl` and `cmd`/`GUI` are swapped with respect to the image above --- I swap them to the illustrated location when using *macOS* and leave them be for *Windows* and *Linux*. (so that `cmd-z,x,c,v,...` becomes `ctrl-z,x,c,v,...` saving me some confusion) +The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. ## The `MOVE` layer ![](http://i.imgur.com/KXRSuHT.png) @@ -40,9 +35,9 @@ The symbol layer has all the numbers and their usual corresponding symbols in th Again none of the modifiers are overwritten so that shortcuts involving numbers or symbols work as expected. ## The `FUNC` layer -![](http://i.imgur.com/skxRZiH.png) +![](http://i.imgur.com/1VKFBBU.png) -The only thing of note here is that `bl+` and `bl-` are short for *backlight up* and *backlight down* respectively, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. +The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-cmd-power`.) ## Other changes from the default I have LEDs and sound disabled, simply because I have no need of them. \ No newline at end of file -- cgit v1.2.3 From 4c67ccc81ee8006190438c5f54cda871bcb2afa6 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 1 Sep 2016 18:30:49 +0100 Subject: changed some of the wording in the readme --- keyboards/planck/keymaps/callum/readme.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index c7ad5d163c..2d38e6355a 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -1,11 +1,11 @@ # callum’s planck layout -This is a layout for the grid planck, built with a few ideals in mind. These ideals are just my opinion mind! The great thing about *qmk* is that we can all afford to have different opinions about what makes a good layout: +This is a layout for the grid planck, built with a few ideals in mind: -- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — since they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. +- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. - The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. -- There should be two of every modifier (one on each side), since otherwise certain long key combinations become hard to make. -- Backspace should be in the “capslock position” as God intended. +- There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make. +- Backspace should be in the “capslock position” in the colemak tradition. We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. -- cgit v1.2.3 From e4167c8c53b0cf7c68192bbe4db368785f24b970 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Fri, 2 Sep 2016 09:03:39 +0100 Subject: fixed incorrect key combination for locking screen on macOS --- keyboards/planck/keymaps/callum/keymap.c | 4 ++-- keyboards/planck/keymaps/callum/readme.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 572756a383..6c34311339 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -137,11 +137,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case LOCK: if (record->event.pressed) { register_code(KC_RSFT); - register_code(KC_RGUI); + register_code(KC_RCTL); register_code(KC_POWER); } else { unregister_code(KC_POWER); - unregister_code(KC_RGUI); + unregister_code(KC_RCTL); unregister_code(KC_RSFT); } return false; diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 2d38e6355a..b70de3f1e2 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -14,7 +14,7 @@ We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow c This is the default layer; in [colemak](https://colemak.com). `esc` and `del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. -The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. +The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. ## The `MOVE` layer ![](http://i.imgur.com/KXRSuHT.png) @@ -37,7 +37,7 @@ Again none of the modifiers are overwritten so that shortcuts involving numbers ## The `FUNC` layer ![](http://i.imgur.com/1VKFBBU.png) -The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-cmd-power`.) +The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.) ## Other changes from the default -I have LEDs and sound disabled, simply because I have no need of them. \ No newline at end of file +I have LEDs and sound disabled, simply because I have no need of them. -- cgit v1.2.3 From 295ef0d9649b7482c380f38dd6157879df4af91d Mon Sep 17 00:00:00 2001 From: Major Koos Date: Fri, 2 Sep 2016 16:14:40 -0700 Subject: Add support for JD40 MKII PCB RGB Included. --- keyboards/jd40/Makefile | 74 ++++++++++++++ keyboards/jd40/config.h | 79 +++++++++++++++ keyboards/jd40/jd40.c | 26 +++++ keyboards/jd40/jd40.h | 45 +++++++++ keyboards/jd40/keymaps/default/keymap.c | 164 ++++++++++++++++++++++++++++++++ keyboards/jd40/readme.md | 17 ++++ 6 files changed, 405 insertions(+) create mode 100644 keyboards/jd40/Makefile create mode 100644 keyboards/jd40/config.h create mode 100644 keyboards/jd40/jd40.c create mode 100644 keyboards/jd40/jd40.h create mode 100644 keyboards/jd40/keymaps/default/keymap.c create mode 100644 keyboards/jd40/readme.md (limited to 'keyboards') diff --git a/keyboards/jd40/Makefile b/keyboards/jd40/Makefile new file mode 100644 index 0000000000..242748111c --- /dev/null +++ b/keyboards/jd40/Makefile @@ -0,0 +1,74 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +# CONSOLE_ENABLE ?= yes # Console for debug(+400) +# COMMAND_ENABLE ?= yes # Commands for debug and configuration +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow + +ifndef QUANTUM_DIR + include ../../Makefile +endif + diff --git a/keyboards/jd40/config.h b/keyboards/jd40/config.h new file mode 100644 index 0000000000..e2594f4b37 --- /dev/null +++ b/keyboards/jd40/config.h @@ -0,0 +1,79 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER geekhack +#define PRODUCT jd40v2 +#define DESCRIPTION t.m.k. keyboard firmware for JD40 MKII + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F5, B4 } +#define MATRIX_COL_PINS { F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#define RGB_DI_PIN D3 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 12 // Number of LEDs +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +#endif diff --git a/keyboards/jd40/jd40.c b/keyboards/jd40/jd40.c new file mode 100644 index 0000000000..fa06356d97 --- /dev/null +++ b/keyboards/jd40/jd40.c @@ -0,0 +1,26 @@ +#include "jd40.h" + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + + // if (usb_led & (1<event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +void matrix_scan_user(void) { + +// Layer LED indicators +// ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster + uint32_t layer = layer_state; + if (layer & (1<<1)) { + //gh60_wasd_leds_on(); + } else { + //gh60_wasd_leds_off(); + } + + if (layer & (1<<2)) { + //gh60_esc_led_on(); + } else { + //gh60_esc_led_off(); + } +}; + +#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + switch (id) { + case RGBLED_TOGGLE: + //led operations + if (record->event.pressed) { + rgblight_toggle(); + } + break; + case RGBLED_INCREASE_HUE: + if (record->event.pressed) { + rgblight_increase_hue(); + } + break; + case RGBLED_DECREASE_HUE: + if (record->event.pressed) { + rgblight_decrease_hue(); + } + break; + case RGBLED_INCREASE_SAT: + if (record->event.pressed) { + rgblight_increase_sat(); + } + break; + case RGBLED_DECREASE_SAT: + if (record->event.pressed) { + rgblight_decrease_sat(); + } + break; + case RGBLED_INCREASE_VAL: + if (record->event.pressed) { + rgblight_increase_val(); + } + break; + case RGBLED_DECREASE_VAL: + if (record->event.pressed) { + rgblight_decrease_val(); + } + break; + case RGBLED_STEP_MODE: + if (record->event.pressed) { + rgblight_step(); + } + break; + static uint8_t shift_esc_shift_mask; + // Shift + ESC = ~ + case SHIFT_ESC: + shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; + if (record->event.pressed) { + if (shift_esc_shift_mask) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + if (shift_esc_shift_mask) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +}; diff --git a/keyboards/jd40/readme.md b/keyboards/jd40/readme.md new file mode 100644 index 0000000000..7daa0980eb --- /dev/null +++ b/keyboards/jd40/readme.md @@ -0,0 +1,17 @@ +## jd40 mkii keyboard firmware + + Pins: + MATRIX_ROW_PINS { F0, F1, F5, B4 } + MATRIX_COL_PINS { F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2 } + RGB_DI_PIN D3 + +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/jd40 folder. +Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Amtel Flip to program your .hex file. -- cgit v1.2.3 From 11224a00fe79bcba8ed596847000b7ad8118b95f Mon Sep 17 00:00:00 2001 From: Major Koos Date: Fri, 2 Sep 2016 16:42:40 -0700 Subject: Add rules.mk file --- keyboards/jd40/rules.mk | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 keyboards/jd40/rules.mk (limited to 'keyboards') diff --git a/keyboards/jd40/rules.mk b/keyboards/jd40/rules.mk new file mode 100644 index 0000000000..2f18fdf10d --- /dev/null +++ b/keyboards/jd40/rules.mk @@ -0,0 +1,69 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +# CONSOLE_ENABLE ?= yes # Console for debug(+400) +# COMMAND_ENABLE ?= yes # Commands for debug and configuration +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow \ No newline at end of file -- cgit v1.2.3 From f6cb08a5bd0d3c34c64691c7f51911742b562c05 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sun, 4 Sep 2016 01:07:36 -0500 Subject: Added diagonal mice macros, breathing ala Atomic --- keyboards/planck/keymaps/pvc/config.h | 9 +- keyboards/planck/keymaps/pvc/keymap.c | 428 +++++++++++++++++++--------------- 2 files changed, 238 insertions(+), 199 deletions(-) (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/pvc/config.h b/keyboards/planck/keymaps/pvc/config.h index c857a3e89d..1113372b0a 100644 --- a/keyboards/planck/keymaps/pvc/config.h +++ b/keyboards/planck/keymaps/pvc/config.h @@ -59,13 +59,8 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) -/* ws2812 RGB LED */ -#define RGB_DI_PIN D1 -#define RGBLIGHT_TIMER -#define RGBLED_NUM 28 // Number of LEDs -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_BREATHING /* * Feature disable options diff --git a/keyboards/planck/keymaps/pvc/keymap.c b/keyboards/planck/keymaps/pvc/keymap.c index 0bb7f0def2..8ff40f377c 100644 --- a/keyboards/planck/keymaps/pvc/keymap.c +++ b/keyboards/planck/keymaps/pvc/keymap.c @@ -2,48 +2,50 @@ #include "action_layer.h" #include "eeconfig.h" #include "led.h" +#include "mousekey.h" #ifdef AUDIO_ENABLE #include "audio.h" #include "song_list.h" #endif -#define LAYER_QWERTY 0 -#define LAYER_COLEMAK 1 -#define LAYER_DVORAK 2 -#define LAYER_UPPER 3 -#define LAYER_LOWER 4 -#define LAYER_FUNCTION 5 -#define LAYER_MOUSE 6 -#define LAYER_ADJUST 7 - -#define MACRO_QWERTY 0 -#define MACRO_COLEMAK 1 -#define MACRO_DVORAK 2 -#define MACRO_UPPER 3 -#define MACRO_LOWER 4 -#define MACRO_FUNCTION 5 -#define MACRO_MOUSE 6 -#define MACRO_TIMBRE_1 7 -#define MACRO_TIMBRE_2 8 -#define MACRO_TIMBRE_3 9 -#define MACRO_TIMBRE_4 10 -#define MACRO_TEMPO_U 11 -#define MACRO_TEMPO_D 12 -#define MACRO_TONE_DEFAULT 13 -#define MACRO_MUSIC_TOGGLE 14 -#define MACRO_AUDIO_TOGGLE 16 -#define MACRO_INC_VOICE 18 -#define MACRO_DEC_VOICE 19 -#define MACRO_BACKLIGHT 20 -#define MACRO_BREATH_TOGGLE 21 -#define MACRO_BREATH_SPEED_INC 23 -#define MACRO_BREATH_SPEED_DEC 24 -#define MACRO_BREATH_DEFAULT 25 +enum keyboard_layers { + LAYER_QWERTY = 0, + LAYER_UPPER, + LAYER_LOWER, + LAYER_FUNCTION, + LAYER_MOUSE, + LAYER_ADJUST, +}; +enum keyboard_macros { + MACRO_QWERTY = 0, + MACRO_UPPER, + MACRO_LOWER, + MACRO_FUNCTION, + MACRO_MOUSE, + MACRO_TIMBRE_1, + MACRO_TIMBRE_2, + MACRO_TIMBRE_3, + MACRO_TIMBRE_4, + MACRO_TEMPO_U, + MACRO_TEMPO_D, + MACRO_TONE_DEFAULT, + MACRO_MUSIC_TOGGLE, + MACRO_AUDIO_TOGGLE, + MACRO_INC_VOICE, + MACRO_DEC_VOICE, + MACRO_BACKLIGHT, + MACRO_BREATH_TOGGLE, + MACRO_BREATH_SPEED_INC, + MACRO_BREATH_SPEED_DEC, + MACRO_BREATH_DEFAULT, + MACRO_MOUSE_MOVE_UL, + MACRO_MOUSE_MOVE_UR, + MACRO_MOUSE_MOVE_DL, + MACRO_MOUSE_MOVE_DR, +}; #define M_QWRTY M(MACRO_QWERTY) -#define M_COLMK M(MACRO_COLEMAK) -#define M_DVORK M(MACRO_DVORAK) #define M_UPPER M(MACRO_UPPER) #define M_LOWER M(MACRO_LOWER) #define M_FUNCT M(MACRO_FUNCTION) @@ -60,6 +62,10 @@ #define M_BSPDU M(MACRO_BREATH_SPEED_INC) #define M_BSPDD M(MACRO_BREATH_SPEED_DEC) #define M_BDFLT M(MACRO_BREATH_DEFAULT) +#define M_MS_UL M(MACRO_MOUSE_MOVE_UL) +#define M_MS_UR M(MACRO_MOUSE_MOVE_UR) +#define M_MS_DL M(MACRO_MOUSE_MOVE_DL) +#define M_MS_DR M(MACRO_MOUSE_MOVE_DR) #define VC_UP M(MACRO_INC_VOICE) @@ -86,147 +92,124 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* QWERTY - * .-----------------------------------------------------------------------------------------------------------. - * | TAB | Q | W | E | R | T | Y | U | I | O | P | BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | Z | X | C | V | B | N | M | , | . | UP | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | SHIFT | LEFT | DOWN | RIGHT | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_QWERTY] = { // QWERTY - { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, - { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT }, - }, - -/* COLEMAK - * .-----------------------------------------------------------------------------------------------------------. - * | TAB | Q | W | F | P | G | J | L | U | Y | ; | ESC | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | Z | X | C | V | B | K | M | , | . | UP | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | SHIFT | LEFT | DOWN | RIGHT | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_COLEMAK] = { // COLEMAK - { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_ESC }, - { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT }, - }, - -/* DVORAK - * .-----------------------------------------------------------------------------------------------------------. - * | TAB | ' | , | . | P | Y | F | G | C | R | L | BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ESC | A | O | E | U | I | D | H | T | N | S | / | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_DVORAK] = { // DVORAK - { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, - { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH }, - { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT }, - }, - -/* UPPER - * .-----------------------------------------------------------------------------------------------------------. - * | PRINT | F1 | F2 | F3 | F4 | NUM LK | / | 7 | 8 | 9 | - | DEL | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | CAP LK | F5 | F6 | F7 | F8 | SCR LK | * | 4 | 5 | 6 | + | INS | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | F9 | F10 | F11 | F12 | PAUSE | | 1 | 2 | 3 | ENTER | HOME | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | | | | | 0 | 0 | | RALT | . | ENTER | END | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_UPPER] = { // UPPER - { KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_DEL }, - { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_SLCK, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_INS }, - { _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_HOME }, - { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, KC_END }, - }, - -/* LOWER - * .-----------------------------------------------------------------------------------------------------------. - * | | $ | { | [ | ( | % | # | ) | ] | } | @ | PG UP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | ^ | * | + | - | / | \ | _ | ' | " | ` | PG DN | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | & | ! | ~ | ; | : | = | < | > | ? | HOME | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | | | | | | | | | | | END | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_LOWER] = { // LOWER - { _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, KC_PGUP }, - { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, KC_PGDN }, - { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL, KC_LT, KC_GT, KC_QUES, KC_HOME }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END }, - }, - - -/* FUNCTION - * .-----------------------------------------------------------------------------------------------------------. - * | NUM LK | F13 | F14 | F15 | F16 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | PAUSE | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | CAP LK | F17 | F18 | F19 | F20 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | PRINT | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | SCR LK | F21 | F22 | F23 | F24 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUTE | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | PLAY | PLAY | LOWER | VOL UP | VOL DN | NEXT | PREV | - * '-----------------------------------------------------------------------------------------------------------' - */ - [LAYER_FUNCTION] = { // FUNCTION - { KC_NLCK, KC_F13, KC_F14, KC_F15, KC_F16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS }, - { KC_CAPS, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR }, - { KC_SLCK, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE }, - { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT }, - }, +/* LAYER = LAYER_QWERTY + .-----------------------------------------------------------------------------------------------------------. + | TAB | Q | W | E | R | T | Y | U | I | O | P | BACKSP | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ESC | A | S | D | F | G | H | J | K | L | ; | ' | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | LSHIFT | Z | X | C | V | B | N | M | , | . | UP | ENTER | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | OSHIFT | LEFT | DOWN | RIGHT | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_QWERTY] = { + { KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC }, + { KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT }, + { KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_UP , KC_ENT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT } +}, + +/* LAYER = LAYER_UPPER + .-----------------------------------------------------------------------------------------------------------. + | PRINT | F1 | F2 | F3 | F4 | NUM LK | KP / | KP 7 | KP 8 | KP 9 | KP - | DEL | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | PAUSE | F5 | F6 | F7 | F8 | SCR LK | KP * | KP 4 | KP 5 | KP 6 | KP + | INS | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | F9 | F10 | F11 | F12 | PAUSE | KP 0 | KP 1 | KP 2 | KP 3 | KP ENT | HOME | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | UPPER | KP 0 | KP 0 | ______ | RALT | KP . | KP ENT | END | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_UPPER] = { + { KC_PSCR, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_DEL }, + { KC_PAUS, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_SLCK, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_INS }, + { _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PAUS, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_HOME }, + { _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, KC_END } +}, + +/* LAYER = LAYER_LOWER + .-----------------------------------------------------------------------------------------------------------. + | ______ | $ | { | [ | ( | % | # | ) | ] | } | @ | PG UP | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ^ | * | + | - | / | \ | _ | ' | " | ` | PG DN | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | HOME | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | ______ | ______ | ______ | LOWER | ______ | ______ | ______ | END | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_LOWER] = { + { _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , KC_PGUP }, + { _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , KC_PGDN }, + { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, KC_HOME }, + { _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, KC_END } +}, + +/* LAYER = LAYER_FUNCTION + .-----------------------------------------------------------------------------------------------------------. + | XXXXXX | F13 | F14 | F15 | F16 | NUM LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | F17 | F18 | F19 | F20 | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | F21 | F22 | F23 | F24 | CAP LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | VOL UP | MUTE | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | FN | ______ | ______ | PLAY | PLAY | ______ | ______ | PREV | VOL DN | NEXT | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_FUNCTION] = { + { XXXXXXX, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { _______, KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE }, + { _______, _______, M_FUNCT, _______, _______, KC_MPLY, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT } +}, #ifdef MOUSEKEY_ENABLE - [LAYER_MOUSE] = { // MOUSE - { KC_ESC, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { _______, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, KC_MS_U, KC_MS_D, KC_MS_L, KC_MS_R }, - }, +/* LAYER = LAYER_MOUSE + .-----------------------------------------------------------------------------------------------------------. + | ESC | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS UL | MS U | MS UR | MS WHL | MS WHR | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | MS BT5 | MS BT4 | MS BT3 | MS BT2 | XXXXXX | XXXXXX | MS L | XXXXXX | MS R | XXXXXX | MS WHU | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS DL | MS D | MS DR | MS U | MS WHD | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | ______ | MS BT1 | MS BT1 | ______ | ______ | MS L | MS D | MS R | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_MOUSE] = { + { KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_UL, KC_MS_U, M_MS_UR, KC_WH_L, KC_WH_R }, + { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, XXXXXXX, KC_MS_R, XXXXXXX, KC_WH_U }, + { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_DL, KC_MS_D, M_MS_DR, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R } +}, #endif - [LAYER_ADJUST] = { // ADJUST - { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, MU_TOG, AU_TOG }, - { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, MUV_IN, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, _______ }, - }, - -/* - [LAYER_EMPTY] = { - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, }, - }, +/* LAYER = LAYER_ADJUST + .-----------------------------------------------------------------------------------------------------------. + | XXXXXX | BRTOG | BRSPD+ | BRSPD- | BRDFLT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUSIC | AUDIO | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | VOICE+ | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX | XXXXXX | LOWER | XXXXXX | TEMPO- | VOICE- | TEMPO+ | + '-----------------------------------------------------------------------------------------------------------' */ +[LAYER_ADJUST] = { + { XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG , AU_TOG }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP } +}, + }; #ifdef AUDIO_ENABLE @@ -234,10 +217,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_my_startup[][2] = SONG(ODE_TO_JOY); float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY); -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); - float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE); float tone_music_on[][2] = SONG(DOE_A_DEER); float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND); @@ -267,46 +246,38 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { - case MACRO_QWERTY: + case MACRO_BREATH_TOGGLE: if (record->event.pressed) { - persistant_default_layer_set(1UL<event.pressed) { - persistant_default_layer_set(1UL<event.pressed) { - persistant_default_layer_set(1UL<event.pressed) { - layer_on(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + breathing_defaults(); } - else + break; + + case MACRO_QWERTY: + if (record->event.pressed) { - layer_off(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + persistant_default_layer_set(1UL<event.pressed) { layer_on(LAYER_UPPER); + breathing_speed_set(2); + breathing_pulse(); update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } else @@ -323,13 +296,32 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; + case MACRO_LOWER: + if (record->event.pressed) + { + layer_on(LAYER_LOWER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + else + { + layer_off(LAYER_LOWER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + break; + case MACRO_FUNCTION: if (record->event.pressed) { + breathing_speed_set(3); + breathing_enable(); layer_on(LAYER_FUNCTION); } else { + breathing_speed_set(1); + breathing_self_disable(); layer_off(LAYER_FUNCTION); } break; @@ -352,6 +344,58 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; + case MACRO_MOUSE_MOVE_UL: + if (record->event.pressed) + { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_LEFT); + } + else + { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_LEFT); + } + break; + + case MACRO_MOUSE_MOVE_UR: + if (record->event.pressed) + { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_RIGHT); + } + else + { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_RIGHT); + } + break; + + case MACRO_MOUSE_MOVE_DL: + if (record->event.pressed) + { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_LEFT); + } + else + { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_LEFT); + } + break; + + case MACRO_MOUSE_MOVE_DR: + if (record->event.pressed) + { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_RIGHT); + } + else + { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_RIGHT); + } + break; + #endif /* MOUSEKEY_ENABLE */ #ifdef AUDIO_ENABLE -- cgit v1.2.3 From bf5941b335268748ee7877fc24cdd538a9faacd0 Mon Sep 17 00:00:00 2001 From: Samuel Ryan Goodwin Date: Mon, 5 Sep 2016 15:53:52 +0200 Subject: Add my keymap. --- keyboards/planck/keymaps/sgoodwin/Makefile | 25 +++ keyboards/planck/keymaps/sgoodwin/keymap.c | 233 ++++++++++++++++++++++++++++ keyboards/planck/keymaps/sgoodwin/readme.md | 10 ++ 3 files changed, 268 insertions(+) create mode 100644 keyboards/planck/keymaps/sgoodwin/Makefile create mode 100644 keyboards/planck/keymaps/sgoodwin/keymap.c create mode 100644 keyboards/planck/keymaps/sgoodwin/readme.md (limited to 'keyboards') diff --git a/keyboards/planck/keymaps/sgoodwin/Makefile b/keyboards/planck/keymaps/sgoodwin/Makefile new file mode 100644 index 0000000000..581e08cd02 --- /dev/null +++ b/keyboards/planck/keymaps/sgoodwin/Makefile @@ -0,0 +1,25 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/sgoodwin/keymap.c b/keyboards/planck/keymaps/sgoodwin/keymap.c new file mode 100644 index 0000000000..4d5d3d7ef6 --- /dev/null +++ b/keyboards/planck/keymaps/sgoodwin/keymap.c @@ -0,0 +1,233 @@ +// This is sgoodwin's layout file for the Quantum project. +// It doesn't have Plover or Dvorak layers because he doesn't use that. +// It Also doesn't allow for swapping alt with CMD because that only happens in error. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 1 +#define _COLEMAK 0 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum planck_keycodes { + COLEMAK = SAFE_RANGE, + QWERTY, + LOWER, + RAISE, + BACKLIT, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |SHEnt | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Hyper| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT) }, + {ALL_T(KC_NO), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |SHEnt | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Hyper| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT) }, + {ALL_T(KC_NO), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff| | |Qwerty|Colemk| | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, _______, _______, QWERTY, COLEMAK, _______, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/sgoodwin/readme.md b/keyboards/planck/keymaps/sgoodwin/readme.md new file mode 100644 index 0000000000..dfa88f380d --- /dev/null +++ b/keyboards/planck/keymaps/sgoodwin/readme.md @@ -0,0 +1,10 @@ +# sgoodwin's Planck Layout + +Includes: + +1. No Dvorak or Plover +2. No alt-swapping +3. Right enter is shift when held down, enter when tapped. +4. Bottom left corner in normal layers is Hyper and not brightness control. +5. Brightness is instead in the bottom corner on raise/lower. + -- cgit v1.2.3 From e9ce4960c15066c14c775b1d769f1f89ec450787 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Mon, 5 Sep 2016 17:40:03 -0400 Subject: Add new ErgoDox EZ keymap, YORUIAN --- .../keymaps/yoruian/90-ergodox-yoruian.conf | 6 ++ keyboards/ergodox/keymaps/yoruian/Makefile | 13 +++ keyboards/ergodox/keymaps/yoruian/README | 102 +++++++++++++++++++++ keyboards/ergodox/keymaps/yoruian/ergodox_yoruian | 34 +++++++ keyboards/ergodox/keymaps/yoruian/keymap.c | 61 ++++++++++++ keyboards/ergodox/keymaps/yoruian/yoruian.h | 61 ++++++++++++ 6 files changed, 277 insertions(+) create mode 100644 keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf create mode 100644 keyboards/ergodox/keymaps/yoruian/Makefile create mode 100644 keyboards/ergodox/keymaps/yoruian/README create mode 100644 keyboards/ergodox/keymaps/yoruian/ergodox_yoruian create mode 100644 keyboards/ergodox/keymaps/yoruian/keymap.c create mode 100644 keyboards/ergodox/keymaps/yoruian/yoruian.h (limited to 'keyboards') diff --git a/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf new file mode 100644 index 0000000000..c8a92c5c5b --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "ErgoDox EZ" + MatchIsKeyboard "on" + MatchProduct "ErgoDox EZ ErgoDox EZ" + Option "XkbLayout" "ergodox_ez_yoruian" +EndSection diff --git a/keyboards/ergodox/keymaps/yoruian/Makefile b/keyboards/ergodox/keymaps/yoruian/Makefile new file mode 100644 index 0000000000..b43a24c611 --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/Makefile @@ -0,0 +1,13 @@ +ifndef QUANTUM_DIR + include ../../../../Makefile +endif + +install-xorg-configuration: + install -m 0664 90-$(KEYBOARD)-$(KEYMAP).conf \ + /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf + install -m 0644 $(KEYBOARD)_$(KEYMAP) \ + /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP) + +uninstall-xorg-configuration: + -rm -f /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf + -rm -f /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP) diff --git a/keyboards/ergodox/keymaps/yoruian/README b/keyboards/ergodox/keymaps/yoruian/README new file mode 100644 index 0000000000..99b41434ef --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/README @@ -0,0 +1,102 @@ + Snarfangel's YORUIAN for the ErgoDox EZ + ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ +DEFAULT +┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ +┃ ` │ ; │ : │ - │ / │ ( │ < ┃ ┃ > │ ) │ ^ │ * │ ~ │ Γ │ σ ┃ +┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨ +┃ ⎋ │ . │ y │ o │ r │ ? │ ✦ ┃ ┃ ✦ │ j │ v │ d │ f │ w │ q ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ ⎈ │ u │ i │ a │ n │ ! ├───┨ ┠───┤ m │ h │ t │ s │ c │ ⎈ ┃ +┠───┼───┼───┼───┼───┼───┤ ❖ ┃ ┃ ❖ ├───┼───┼───┼───┼───┼───┨ +┃ λ │ ' │ " │ , │ _ │ = │ ┃ ┃ │ k │ l │ p │ g │ b │ x ┃ +┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨ +┃ ⎀ │ E │ │ │ ◆ ┃ ┃ ◆ │ │ │ z │ ⎙ ┃ +┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛ + ┏━━━┯━━━┓ ┏━━━┯━━━┓ + ┃ ⌫ │ ⌥ ┃ ┃ ⎄ │ ↹ ┃ + ┏━━━╃───┼───┨ ┠───┼───╄━━━┓ + ┃ │ │ ┃ ┃ │ │ ┃ + ┃ e │ ⇧ ├───┨ ┠───┤ ⏎ │ ␣ ┃ + ┃ │ │ ┃ ┃ │ │ ┃ + ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛ +SHIFTED +┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ +┃ 9 │ 7 │ 5 │ 3 │ 1 │ [ │ { ┃ ┃ } │ ] │ 0 │ 2 │ 4 │ 6 │ 8 ┃ +┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨ +┃ │ * │ Y │ O │ R │ \ │ ┃ ┃ │ J │ V │ D │ F │ W │ Q ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ │ U │ I │ A │ N │ | ├───┨ ┠───┤ M │ H │ T │ S │ C │ ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ │ # │ $ │ @ │ & │ + │ ┃ ┃ │ K │ L │ P │ G │ B │ X ┃ +┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨ +┃ │ │ │ │ ┃ ┃ │ │ │ Z │ ┃ +┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛ + ┏━━━┯━━━┓ ┏━━━┯━━━┓ + ┃ │ ┃ ┃ │ ┃ + ┏━━━╃───┼───┨ ┠───┼───╄━━━┓ + ┃ │ │ ┃ ┃ │ │ ┃ + ┃ │ ├───┨ ┠───┤ │ ┃ + ┃ │ │ ┃ ┃ │ │ ┃ + ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛ +λ LAYER +┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ +┃ │ │ │ │ │ │ ┃ ┃ │ │ ⑤ │ ⑥ │ ⑦ │ ⑧ │ ⑨ ┃ +┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨ +┃ │ │ │ │ │ │ ┃ ┃ │ │ ① │ ② │ ③ │ ④ │ ⑩ ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ │ │ │ │ │ ├───┨ ┠───┤ ⎉ │ ← │ ↓ │ ↑ │ → │ ⑪ ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ λ │ │ │ │ │ │ ┃ ┃ │ │ ⇱ │ ⎘ │ ⎗ │ ⇲ │ ⑫ ┃ +┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨ +┃ │ │ │ │ ┃ ┃ │ │ │ │ ┃ +┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛ + ┏━━━┯━━━┓ ┏━━━┯━━━┓ + ┃ │ ┃ ┃ │ ┃ + ┏━━━╃───┼───┨ ┠───┼───╄━━━┓ + ┃ │ │ ┃ ┃ │ │ ┃ + ┃ │ ├───┨ ┠───┤ │ ┃ + ┃ │ │ ┃ ┃ │ │ ┃ + ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛ + +Installation (X only) +‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + 1. Build and flash firmware as usual + + 2. sudo make install-xorg-configuration + + 3. Restart X + +Features +‾‾‾‾‾‾‾‾ + • E on the thumb + + • Emacs-friendly + + • Symmetric control keys for finger wear levelling + + • Greek and subscript dead keys + + • Compose key for arbitrary Unicode input via ~/.XCompose + +Don't Cares +‾‾‾‾‾‾‾‾‾‾‾ + • Easy migration from QWERTY + + • Compatbility with non-XKB systems + + • Mouse emulation + + • Media keys + +Acknowledgements +‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ +Snarfangel, for designing the layout. + +The GNU FreeFont project and Steve White, for adding new keyboard +symbols. + +Xah Lee, for http://xahlee.info/comp/unicode_computing_symbols.html + +Colophon +‾‾‾‾‾‾‾‾ +This file is best-viewed with an SVN version of GNU FreeFont Mono. diff --git a/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian new file mode 100644 index 0000000000..7343143948 --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian @@ -0,0 +1,34 @@ +partial alphanumeric_keys modifier_keys +xkb_symbols "ergodox_ez_yoruian" { + include "us" + name[Group1]= "English (yoruian-1.0.0)"; + + replace key { [ Multi_key, Multi_key ] }; + replace key { [ Hyper_L, Hyper_L ] }; + replace key { [ grave, 9 ] }; + replace key { [ semicolon, 7 ] }; + replace key { [ colon, 5 ] }; + replace key { [ minus, 3 ] }; + replace key { [ slash, 1 ] }; + replace key { [ asciicircum, 0 ] }; + replace key { [ percent, 2 ] }; + replace key { [ asciitilde, 4 ] }; + replace key { [ dead_greek, 6 ] }; + replace key { [ dead_caron, 8 ] }; + replace key { [ E, E ] }; + replace key { [ period, asterisk ] }; + replace key { [ question, backslash ] }; + replace key { [ exclam, bar ] }; + replace key { [ apostrophe, numbersign ] }; + replace key { [ quotedbl, dollar ] }; + replace key { [ comma, at ] }; + replace key { [ underscore, ampersand ] }; + replace key { [ equal, plus ] }; + replace key { [ parenleft, bracketleft ] }; + replace key { [ less, braceleft ] }; + replace key { [ greater, braceright ] }; + replace key { [ parenright, bracketright ] }; + + modifier_map none { }; + modifier_map Mod3 { }; +}; diff --git a/keyboards/ergodox/keymaps/yoruian/keymap.c b/keyboards/ergodox/keymaps/yoruian/keymap.c new file mode 100644 index 0000000000..d3635ddf3f --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/keymap.c @@ -0,0 +1,61 @@ +/* + * Copyright 2016 Thomas Fitzsimmons + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "yoruian.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP\ +(9, 7, 5, 3, 1, GRV, MINS, EQL, LBRC, 0, 2, 4, 6, 8, + ES, RBRC, Y, O, R, BSLS, P3, P3, J, V, D, F, W, Q, + LC, U, I, A, N, SCLN, M, H, T, S, C, RC, + FF, QUOT, COMM, DOT, SLSH, P0, LGUI, LGUI, K, L, P, G, B, X, + IN, P1, NO, NO, LALT, LALT, NO, NO, Z, PS, + BSPC, RALT, P2, TAB, + NO, NO, + E, LSFT, NO, NO, ENT, SPC), +[1] = KEYMAP\ +(TR, TR, TR, TR, TR, TR, TR, TR, TR, F5, F6, F7, F8, F9, + TR, TR, TR, TR, TR, TR, TR, TR, TR, F1, F2, F3, F4, FT, + TR, TR, TR, TR, TR, TR, PAUS, LEFT, DOWN, UP, RGHT, FE, + TR, TR, TR, TR, TR, TR, TR, TR, TR, HOME, PGDN, PGUP, END, FW, + TR, TR, TR, TR, TR, TR, TR, TR, TR, TR, + TR, TR, TR, TR, + TR, TR, + TR, TR, TR, TR, TR, TR), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + return MACRO_NONE; +}; + +void matrix_init_user(void) { +}; + +void matrix_scan_user(void) { + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); +}; + +/* + * Local Variables: + * electric-indent-mode: nil + * End: + */ diff --git a/keyboards/ergodox/keymaps/yoruian/yoruian.h b/keyboards/ergodox/keymaps/yoruian/yoruian.h new file mode 100644 index 0000000000..1adcb7fd3f --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/yoruian.h @@ -0,0 +1,61 @@ +/* + * Copyright 2016 Thomas Fitzsimmons + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + +#undef KEYMAP +#define KEYMAP\ +( \ + /* Spacial positions. */ \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \ + k20, k21, k22, k23, k24, k25, k28, k29, k2A, k2B, k2C, k2D, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \ + k40, k41, k42, k43, k44, k49, k4A, k4B, k4C, k4D, \ + k55, k56, k57, k58, \ + k54, k59, \ + k53, k52, k51, k5C, k5B, k5A) \ + \ + /* Matrix positions. */ \ + { \ + { KC_##k00, KC_##k10, KC_##k20, KC_##k30, KC_##k40, KC_NO }, \ + { KC_##k01, KC_##k11, KC_##k21, KC_##k31, KC_##k41, KC_##k51 }, \ + { KC_##k02, KC_##k12, KC_##k22, KC_##k32, KC_##k42, KC_##k52 }, \ + { KC_##k03, KC_##k13, KC_##k23, KC_##k33, KC_##k43, KC_##k53 }, \ + { KC_##k04, KC_##k14, KC_##k24, KC_##k34, KC_##k44, KC_##k54 }, \ + { KC_##k05, KC_##k15, KC_##k25, KC_##k35, KC_NO, KC_##k55 }, \ + { KC_##k06, KC_##k16, KC_NO, KC_##k36, KC_NO, KC_##k56 }, \ + { KC_##k07, KC_##k17, KC_NO, KC_##k37, KC_NO, KC_##k57 }, \ + { KC_##k08, KC_##k18, KC_##k28, KC_##k38, KC_NO, KC_##k58 }, \ + { KC_##k09, KC_##k19, KC_##k29, KC_##k39, KC_##k49, KC_##k59 }, \ + { KC_##k0A, KC_##k1A, KC_##k2A, KC_##k3A, KC_##k4A, KC_##k5A }, \ + { KC_##k0B, KC_##k1B, KC_##k2B, KC_##k3B, KC_##k4B, KC_##k5B }, \ + { KC_##k0C, KC_##k1C, KC_##k2C, KC_##k3C, KC_##k4C, KC_##k5C }, \ + { KC_##k0D, KC_##k1D, KC_##k2D, KC_##k3D, KC_##k4D, KC_NO } \ + } + +#define KC_ES KC_ESC +#define KC_LC KC_LCTL +#define KC_RC KC_RCTL +#define KC_FF MO(1) +#define KC_IN KC_INS +#define KC_PS KC_PSCR +#define KC_TR KC_TRNS +#define KC_FT KC_F10 +#define KC_FE KC_F11 +#define KC_FW KC_F12 -- cgit v1.2.3 From ce53c0643d4eaf8f13ac1140d3bd91dfa5f90e22 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Tue, 6 Sep 2016 00:09:14 -0400 Subject: Fix ergodox_yoruian XKB naming --- keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf | 2 +- keyboards/ergodox/keymaps/yoruian/ergodox_yoruian | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'keyboards') diff --git a/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf index c8a92c5c5b..ce4fce3b1d 100644 --- a/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf +++ b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf @@ -2,5 +2,5 @@ Section "InputClass" Identifier "ErgoDox EZ" MatchIsKeyboard "on" MatchProduct "ErgoDox EZ ErgoDox EZ" - Option "XkbLayout" "ergodox_ez_yoruian" + Option "XkbLayout" "ergodox_yoruian" EndSection diff --git a/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian index 7343143948..0d13fbfd4c 100644 --- a/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian +++ b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian @@ -1,5 +1,5 @@ partial alphanumeric_keys modifier_keys -xkb_symbols "ergodox_ez_yoruian" { +xkb_symbols "ergodox_yoruian" { include "us" name[Group1]= "English (yoruian-1.0.0)"; -- cgit v1.2.3 From a3e7042084ac2a117cea129e4dd4995904f247e8 Mon Sep 17 00:00:00 2001 From: joar Date: Tue, 6 Sep 2016 16:00:08 +0200 Subject: norwegian programmer-friendly layout --- .../keyboard-layout.png | Bin 0 -> 140077 bytes .../keymaps/norwegian_programmer_osx_pc/keymap.c | 180 +++++++++++++++++++++ .../keymaps/norwegian_programmer_osx_pc/readme.md | 30 ++++ .../keyboard-layout.png | Bin 0 -> 97519 bytes .../norwegian_programmer_osx_pc_colemak/keymap.c | 180 +++++++++++++++++++++ .../norwegian_programmer_osx_pc_colemak/readme.md | 30 ++++ 6 files changed, 420 insertions(+) create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keyboard-layout.png create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keyboard-layout.png create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md (limited to 'keyboards') diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keyboard-layout.png b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keyboard-layout.png new file mode 100644 index 0000000000..544b5658e9 Binary files /dev/null and b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keyboard-layout.png differ diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c new file mode 100644 index 0000000000..1d505f8e38 --- /dev/null +++ b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c @@ -0,0 +1,180 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_norwegian.h" + +#define BASE 0 // default layer +#define BASE_MAC 1 // default layer mac +#define NUMB_FUNC 2 // numbers and function keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Keymap 0: Basic layer PC + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | * | [ | ] | { | } | ~ |Mac/PC| | ^ | $ | ( | ) | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | + | Q | W | E | R | T | " | | ' | Y | U | I | O | P | Å | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | / | A | S | D | F | G |------| |------| H | J | K | L | Ø | Æ | + * |--------+------+------+------+------+------| ; | | = |------+------+------+------+------+--------| + * | - | Z | X | C | V | B | | | | N | M | RIGHT| DOWN | UP | _ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Alt/esc| ! | ? | : | TAB | | LEFT | _ | & | | |Num/fn| + * `----------------------------------' `----------------------------------' + * ,-------------. ,--------------. + * | # | ` | |Insert| % | + * ,------|------|------| |------+-------+------. + * | | | ´ | | Del | | | + * | Shift|Ctrl/.|------| |------| Enter |Space | + * | | |GUI/, | | Bspc | | | + * `--------------------' `---------------------' + */ +[BASE] = KEYMAP( + // left hand + KC_PAST, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, KC_FN2, TG(1), + KC_PPLS, KC_Q, KC_W, KC_E, KC_R, KC_T, NO_QUO2, + KC_PSLS, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_PMNS, KC_Z, KC_X, KC_C, KC_V, KC_B, NO_SCLN, + ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB, + KC_HASH, KC_FN7, + KC_FN6, + KC_FN1,CTL_T(KC_DOT),GUI_T(KC_COMMA), + // right hand + KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT, + NO_APOS, KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA , + KC_H, KC_J, KC_K, KC_L, NO_OSLH, NO_AE, + NO_EQL, KC_N, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_BSLS, + KC_LEFT, NO_UNDS, NO_AMPR, NO_PIPE, OSL(2), + KC_INSERT, KC_PERC, + KC_DELT, + KC_BSPC,KC_ENT,KC_SPC + ), +/* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | | | { | } | | | | | $ | | | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | ' |------+------+------+------+------+--------| + * | | | | | | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | |,/Ctrl| | | | ` | |Num/fn| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | ` | | | | + * ,------|------|------| |------+------+------. + * | | | ´ | | | | | + * | |GUI/. |------| |------| | | + * | | |crtl/,| | | | | + * `--------------------' `--------------------' + */ +[BASE_MAC] = KEYMAP( + KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, NO_GRV_MAC, + KC_FN10, + KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA), + // right hand + KC_TRNS, NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC, + NO_APOS_MAC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NO_BSLS_MAC, + KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 2: Number ++´ánd Fn layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | F9 | F10 | F11 | F12 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | 8 | 7 | 6 | 5 | 9 | | | | | F5 | F6 | F7 | F8 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | 4 | 3 | 2 | 1 | 0 |------| |------| | F1 | F2 | F3 | F4 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | END | PGDWN| PGUP | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | HOME | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUMB_FUNC] = KEYMAP( + NO_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + NO_PLUS, KC_8, KC_7,KC_6,KC_5, KC_9 , KC_TRNS, + NO_SLSH , KC_4 , KC_3 , KC_2 , KC_1 , KC_0, + NO_MINS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_F5, KC_F6 , KC_F7, KC_F8, KC_TRNS, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, + KC_TRNS, KC_HOME, KC_TRNS, KC_END, KC_PGDN, KC_PGUP, KC_TRNS, + KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +) +}; + +enum macro_id { + TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO, GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_MODS_ONESHOT(MOD_LSFT), // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift. + [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed. + [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first. + [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first. + [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed. + [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed. + [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed. + [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly + [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly + [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed +}; + + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + keyevent_t event = record->event; + + switch (id) { + case TILDE_NO: + return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); + case LESS_NO: + return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); + case GRTR_NO: + return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); + case CIRC_NO: + return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); + case ACUT_NO: + return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); + case GRV_NO: + return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); + case LESS_NO_MAC: + return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); + case GRTR_NO_MAC: + return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); + case ACUT_NO_MAC: + return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); + } + return MACRO_NONE; +}; diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md new file mode 100644 index 0000000000..f7e8baf56a --- /dev/null +++ b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md @@ -0,0 +1,30 @@ +# Norwegian setup with osx/pc toggle + +## Motivation +I wanted a Norwegian setup that worked in a similar way on both my Mac and PC. I also wanted the keyboard to translate from a standard Norwegian keyboard OS setup. + +## Overview +The setup is created to be programmer friendly. +- Most of the symbols used in code can be activated without using layers or shift key. +- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb or the wrist. +- Navigation is prioritized, arrows below the home row. + +## PC/Mac toggle +The default setup is for Norwegian keyboard setting(on a PC(Windows or Linux) or Mac. Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard. + +## Layers +Since symbols are prioritized in this setup, numbers and function keys are on a new layer. The easiest way to use the layer switch(and also the alt key), is to push your hand right below the little finger, on the key. You will then have all your fingers free to type numbers or press function keys. + +## Tap-shift +Tap for the next character to be shifted, hold down for regular shift. + +## Comma dot and escape +Comma, dot and escape share buttons with modifier keys. Tap to access these keys, hold down to use the keys as modifier keys. + +## Numpad symbols ++-/* are implemented with the numpad keycodes. The benefit is that they will work better with shortcuts in certain programs. For some reason, the default setting in the osx terminal is to not accept numpad characters for '/' and '-'. For a solution, see https://discussions.apple.com/thread/6613968?start=0&tstart=0. +If you really need the norwegian symbols in a program, you can access them using the number toggle button. + +## Layout + +![keyboard-layout](keyboard-layout.png) diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keyboard-layout.png b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keyboard-layout.png new file mode 100644 index 0000000000..462de5c56b Binary files /dev/null and b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keyboard-layout.png differ diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c new file mode 100644 index 0000000000..acf74a47d2 --- /dev/null +++ b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c @@ -0,0 +1,180 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_norwegian.h" + +#define BASE 0 // default layer +#define BASE_MAC 1 // default layer mac +#define NUMB_FUNC 2 // numbers and function keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Keymap 0: Basic layer PC + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | * | [ | ] | { | } | ~ |Mac/PC| | ^ | $ | ( | ) | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | + | Q | W | F | P | G | " | | ' | J | L | U | Y | Å | Æ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | / | A | R | S | T | D |------| |------| H | N | E | I | O | Ø | + * |--------+------+------+------+------+------| ; | | = |------+------+------+------+------+--------| + * | - | Z | X | C | V | B | | | | K | M | RIGHT| DOWN | UP | _ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Alt/esc| ! | ? | : | TAB | | LEFT | _ | & | | |Num/fn| + * `----------------------------------' `----------------------------------' + * ,-------------. ,--------------. + * | # | ` | |Insert| % | + * ,------|------|------| |------+-------+------. + * | | | ´ | | Del | | | + * | Shift|Ctrl/.|------| |------| Enter |Space | + * | | |GUI/, | | Bspc | | | + * `--------------------' `---------------------' + */ +[BASE] = KEYMAP( + // left hand + KC_PAST, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, KC_FN2, TG(1), + KC_PPLS, KC_Q, KC_W, KC_F, KC_P, KC_G, NO_QUO2, + KC_PSLS, KC_A, KC_R, KC_S, KC_T, KC_D, + KC_PMNS, KC_Z, KC_X, KC_C, KC_V, KC_B, NO_SCLN, + ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB, + KC_HASH, KC_FN7, + KC_FN6, + KC_FN1,CTL_T(KC_DOT),GUI_T(KC_COMMA), + // right hand + KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT, + NO_APOS, KC_J, KC_L, KC_U, KC_Y, NO_AA, NO_AE , + KC_H, KC_N, KC_E, KC_I, KC_O, NO_OSLH, + NO_EQL, KC_K, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_BSLS, + KC_LEFT, NO_UNDS, NO_AMPR, NO_PIPE, OSL(2), + KC_INSERT, KC_PERC, + KC_DELT, + KC_BSPC,KC_ENT,KC_SPC + ), +/* Keymap 1: Basic layer MAC (Same as pc, except for cmd/ctrl, which are swapped) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | | | { | } | | | | | $ | | | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | ' |------+------+------+------+------+--------| + * | | | | | | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | |,/Ctrl| | | | ` | |Num/fn| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | ` | | | | + * ,------|------|------| |------+------+------. + * | | | ´ | | | | | + * | |GUI/. |------| |------| | | + * | | |crtl/,| | | | | + * `--------------------' `--------------------' + */ +[BASE_MAC] = KEYMAP( + KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, NO_GRV_MAC, + KC_FN10, + KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA), + // right hand + KC_TRNS, NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC, + NO_APOS_MAC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NO_BSLS_MAC, + KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 2: Number ++´ánd Fn layer pc + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | F9 | F10 | F11 | F12 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | 8 | 7 | 6 | 5 | 9 | | | | | F5 | F6 | F7 | F8 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | 4 | 3 | 2 | 1 | 0 |------| |------| | F1 | F2 | F3 | F4 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | END | PGDWN| PGUP | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | HOME | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUMB_FUNC] = KEYMAP( + NO_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + NO_PLUS, KC_8, KC_7,KC_6,KC_5, KC_9 , KC_TRNS, + NO_SLSH , KC_4 , KC_3 , KC_2 , KC_1 , KC_0, + NO_MINS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_F5, KC_F6 , KC_F7, KC_F8, KC_TRNS, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, + KC_TRNS, KC_HOME, KC_TRNS, KC_END, KC_PGDN, KC_PGUP, KC_TRNS, + KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +) +}; + +enum macro_id { + TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO, GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_MODS_ONESHOT(MOD_LSFT), // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift. + [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed. + [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first. + [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first. + [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed. + [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed. + [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed. + [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly + [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly + [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed +}; + + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + keyevent_t event = record->event; + + switch (id) { + case TILDE_NO: + return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); + case LESS_NO: + return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); + case GRTR_NO: + return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); + case CIRC_NO: + return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); + case ACUT_NO: + return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); + case GRV_NO: + return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); + case LESS_NO_MAC: + return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); + case GRTR_NO_MAC: + return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); + case ACUT_NO_MAC: + return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); + } + return MACRO_NONE; +}; diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md new file mode 100644 index 0000000000..aaaec3e534 --- /dev/null +++ b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md @@ -0,0 +1,30 @@ +# Norwegian Colemak setup with osx/pc toggle + +## Motivation +I wanted a Norwegian Colemak setup that worked in a similar way on both my Mac and PC. I also wanted the keyboard to translate from a standard Norwegian keyboard OS setup. + +## Overview +The setup is created to be programmer friendly. +- Most of the symbols used in code can be activated without using layers or shift key. +- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb or the wrist. +- Navigation is prioritized, arrows below the home row. + +## PC/Mac toggle +The default setup is for Norwegian keyboard setting(not colemak software variants) on a PC(Windows or Linux) or Mac. Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard. + +## Layers +Since symbols are prioritized in this setup, numbers and function keys are on a new layer. The easiest way to use the layer switch(and also the alt key), is to push your hand right below the little finger, on the key. You will then have all your fingers free to type numbers or press function keys. + +## Tap-shift +Tap for the next character to be shifted, hold down for regular shift. + +## Comma dot and escape +Comma, dot and escape share buttons with modifier keys. Tap to access these keys, hold down to use the keys as modifier keys. + +## Numpad symbols ++-/* are implemented with the numpad keycodes. The benefit is that they will work better with shortcuts in certain programs. For some reason, the default setting in the osx terminal is to not accept numpad characters for '/' and '-'. For a solution, see https://discussions.apple.com/thread/6613968?start=0&tstart=0. +If you really need the norwegian symbols in a program, you can access them using the number toggle button. + +## Layout + +![keyboard-layout](keyboard-layout.png) -- cgit v1.2.3 From da16733e7ab66ebd27fde21312990f5733966a52 Mon Sep 17 00:00:00 2001 From: Roman Zolotarev Date: Wed, 7 Sep 2016 07:55:22 +0800 Subject: Change CTL_T(KC_ESC) to KC_LCTRL and update readme --- .../keymaps/romanzolotarev-norman-osx/keymap.c | 30 +++++++++--------- .../keymaps/romanzolotarev-norman-osx/readme.md | 37 +++++++++++++++------- 2 files changed, 40 insertions(+), 27 deletions(-) (limited to 'keyboards') diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c index 24d0c4ecb7..2c64304404 100644 --- a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c +++ b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c @@ -6,23 +6,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, - KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS, - CTL_T(KC_ESC), KC_A, KC_S, KC_E, KC_T, KC_G, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, - KC_F1, KC_F2, KC_F3, KC_F4, KC_LGUI, - /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE, - /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU, - /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_LALT, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, + KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS, + KC_LCTRL, KC_A, KC_S, KC_E, KC_T, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, + KC_F1, KC_F2, KC_F3, KC_F4, KC_LGUI, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_LALT, // - /*-*/ KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, - /*-*/ KC_NO, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS, - /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT, - /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - /*-*/ /*-*/ /*-*/ KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, - KC_MPLY, KC_MNXT, + /*-*/ KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + /*-*/ KC_NO, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS, + /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT, + /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + /*-*/ /*-*/ /*-*/ KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_MPLY, KC_MNXT, KC_MPRV, - KC_RALT, KC_QUOT, KC_SPC + KC_RALT, KC_QUOT, KC_SPC ) }; diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md index 80475ab21e..a86061285a 100644 --- a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md +++ b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md @@ -1,28 +1,41 @@ # Roman's Layout -There is only one layer based on [Norman layout](https://normanlayout.info/). +There is only one layer, and it is based on [Norman +layout](https://normanlayout.info/). Looking for multiple-layer layouts? -- [Symbols, arrows, plover, HJKL arrows](../romanzolotarev-norman-plover-osx-hjkl/) +- [Symbols, arrows, plover, HJKL + arrows](../romanzolotarev-norman-plover-osx-hjkl/) - [Same with IJKL arrows](../romanzolotarev-norman-plover-osx/) [![keyboard-layout](romanzolotarev-norman-osx.png)](http://www.keyboard-layout-editor.com/#/gists/9e89d54f1ea6eeeb7dab1b2d19d28195) -## Functional Keys +## How to use Vim key -- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/). -- Tap `F2` to copy screenshot to the clipboard. -- Hold `SHIFT` and tap `F2` to save screenshot as a file. -- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/). - -## CTRL/ESC - -CTRL and ESC are frequently used in Vim. +It is `CTL_T(KC_ESC)` and it works this way: - Tap `CTRL/ESC` to send `ESC`. - Hold `CTRL/ESC` to use as `CTRL`. -## Activate N-rollover +## How to activate N-rollover - Hold left `SHIFT` and right `SHIRT` and then tap `N`. + +## How to make and flash on OS X + +First you need to install few brew packages. + +```bash +brew tap osx-cross/avr +brew install dfu-programmer avr-libc teensy_loader_cli +``` + +Then you can clone this repository, make and flash your ErgoDox. + +```bash +git clone https://github.com/romanzolotarev/qmk_firmware +cd qmk_firmware/keyboards/ergodox +# Optionally tweak ./keymaps/romanzolotarev-norman-osx/keymap.c +SLEEP_LED_ENABLED=no KEYMAP=romanzolotarev-norman-osx make teensy +``` -- cgit v1.2.3