diff options
| -rw-r--r-- | Makefile | 8 | ||||
| -rw-r--r-- | docs/faq_keymap.md | 4 | ||||
| -rw-r--r-- | keyboards/bananasplit/keymaps/coloneljesus/config.h | 1 | ||||
| -rw-r--r-- | keyboards/lets_split/keymaps/piemod/README.md | 31 | ||||
| -rw-r--r-- | keyboards/lets_split/keymaps/piemod/config.h | 37 | ||||
| -rw-r--r-- | keyboards/lets_split/keymaps/piemod/keymap.c | 121 | ||||
| -rwxr-xr-x | keyboards/planck/keymaps/piemod/Makefile | 10 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/piemod/README.md | 31 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/piemod/keymap.c | 111 | ||||
| m--------- | lib/chibios | 0 | ||||
| -rw-r--r-- | quantum/quantum.c | 16 | ||||
| -rw-r--r-- | quantum/template/config.h | 5 |
12 files changed, 367 insertions, 8 deletions
| @@ -19,6 +19,11 @@ endif | |||
| 19 | # Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly | 19 | # Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly |
| 20 | override SILENT := false | 20 | override SILENT := false |
| 21 | 21 | ||
| 22 | QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null) | ||
| 23 | ifneq ($(QMK_VERSION),) | ||
| 24 | $(info QMK Firmware v$(QMK_VERSION)) | ||
| 25 | endif | ||
| 26 | |||
| 22 | ON_ERROR := error_occurred=1 | 27 | ON_ERROR := error_occurred=1 |
| 23 | 28 | ||
| 24 | BREAK_ON_ERRORS = no | 29 | BREAK_ON_ERRORS = no |
| @@ -390,7 +395,6 @@ endef | |||
| 390 | define BUILD | 395 | define BUILD |
| 391 | MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) | 396 | MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) |
| 392 | COMMANDS += $$(COMMAND) | 397 | COMMANDS += $$(COMMAND) |
| 393 | MAKE_MSG = QMK Firmware v$$(shell git describe --abbrev=0 --tags 2>/dev/null)\n\n$(MAKE_MSG) | ||
| 394 | COMMAND_true_$$(COMMAND) := \ | 398 | COMMAND_true_$$(COMMAND) := \ |
| 395 | printf "$$(MAKE_MSG)" | \ | 399 | printf "$$(MAKE_MSG)" | \ |
| 396 | $$(MAKE_MSG_FORMAT); \ | 400 | $$(MAKE_MSG_FORMAT); \ |
| @@ -421,7 +425,7 @@ define BUILD_TEST | |||
| 421 | COMMAND := $1 | 425 | COMMAND := $1 |
| 422 | MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET) | 426 | MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET) |
| 423 | MAKE_VARS := TEST=$$(TEST_NAME) FULL_TESTS="$$(FULL_TESTS)" | 427 | MAKE_VARS := TEST=$$(TEST_NAME) FULL_TESTS="$$(FULL_TESTS)" |
| 424 | MAKE_MSG := QMK Firmware v$$(shell git describe --abbrev=0 --tags 2>/dev/null)\n\n$$(MSG_MAKE_TEST) | 428 | MAKE_MSG := $$(MSG_MAKE_TEST) |
| 425 | $$(eval $$(call BUILD)) | 429 | $$(eval $$(call BUILD)) |
| 426 | ifneq ($$(MAKE_TARGET),clean) | 430 | ifneq ($$(MAKE_TARGET),clean) |
| 427 | TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf | 431 | TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf |
diff --git a/docs/faq_keymap.md b/docs/faq_keymap.md index d6442ac53..3c2795816 100644 --- a/docs/faq_keymap.md +++ b/docs/faq_keymap.md | |||
| @@ -116,7 +116,9 @@ https://github.com/tekezo/Karabiner/issues/403 | |||
| 116 | 116 | ||
| 117 | ## Esc and `~ on a key | 117 | ## Esc and `~ on a key |
| 118 | 118 | ||
| 119 | Use `GRAVE_ESC` or `KC_GESC` in your keymap. | 119 | Use `GRAVE_ESC` or `KC_GESC` in your keymap. `GUI`+`GRAVE_ESC` results in `\`` and `SHIFT`+`GRAVE_ESC` results in `~`. |
| 120 | |||
| 121 | Note that this will break the CTRL+SHIFT+ESC shortcut to the Windows task manager. Use `#define GRAVE_ESC_CTRL_OVERRIDE` in your `config.h` to get the shortcut back. With this option, `ESC_GRAVE` results in `ESC` if `CTRL` is held, even if `SHIFT` or `GUI` are also held. | ||
| 120 | 122 | ||
| 121 | ## Arrow on Right Modifier keys with Dual-Role | 123 | ## Arrow on Right Modifier keys with Dual-Role |
| 122 | This turns right modifer keys into arrow keys when the keys are tapped while still modifiers when the keys are hold. In TMK the dual-role function is dubbed **TAP**. | 124 | This turns right modifer keys into arrow keys when the keys are tapped while still modifiers when the keys are hold. In TMK the dual-role function is dubbed **TAP**. |
diff --git a/keyboards/bananasplit/keymaps/coloneljesus/config.h b/keyboards/bananasplit/keymaps/coloneljesus/config.h index 060f5922f..af6cf8ef1 100644 --- a/keyboards/bananasplit/keymaps/coloneljesus/config.h +++ b/keyboards/bananasplit/keymaps/coloneljesus/config.h | |||
| @@ -20,5 +20,6 @@ | |||
| 20 | #include "../../config.h" | 20 | #include "../../config.h" |
| 21 | 21 | ||
| 22 | // place overrides here | 22 | // place overrides here |
| 23 | #define GRAVE_ESC_CTRL_OVERRIDE | ||
| 23 | 24 | ||
| 24 | #endif | 25 | #endif |
diff --git a/keyboards/lets_split/keymaps/piemod/README.md b/keyboards/lets_split/keymaps/piemod/README.md new file mode 100644 index 000000000..f2a051da1 --- /dev/null +++ b/keyboards/lets_split/keymaps/piemod/README.md | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | PieMod | ||
| 2 | ====== | ||
| 3 | |||
| 4 | A keymap for users that need: | ||
| 5 | |||
| 6 | - *P*: Programming symbols. | ||
| 7 | |||
| 8 | - *I*: i3wm. | ||
| 9 | |||
| 10 | - *E*: Emacs. | ||
| 11 | |||
| 12 | - *M*: Macros. | ||
| 13 | |||
| 14 | - *O*: Ortholinear. | ||
| 15 | |||
| 16 | - *D*: Dvorak. | ||
| 17 | |||
| 18 | Still a work-in-progress. Suggestions welcome @ https://github.com/dwrz/piemod. | ||
| 19 | |||
| 20 | ### Keymap | ||
| 21 | |||
| 22 |  | ||
| 23 | |||
| 24 | ### TODO | ||
| 25 | |||
| 26 | - [ ] Add Emacs layer. | ||
| 27 | - [ ] Add Macro layer. | ||
| 28 | - [ ] Add system control keys (rotation, brightness). | ||
| 29 | - [ ] Switch " and ' quotes (or function to toggle default). | ||
| 30 | - [ ] Add capslock. | ||
| 31 | . | ||
diff --git a/keyboards/lets_split/keymaps/piemod/config.h b/keyboards/lets_split/keymaps/piemod/config.h new file mode 100644 index 000000000..7f33a4363 --- /dev/null +++ b/keyboards/lets_split/keymaps/piemod/config.h | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | /* | ||
| 2 | This is the c configuration file for the keymap | ||
| 3 | |||
| 4 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
| 5 | Copyright 2015 Jack Humbert | ||
| 6 | |||
| 7 | This program is free software: you can redistribute it and/or modify | ||
| 8 | it under the terms of the GNU General Public License as published by | ||
| 9 | the Free Software Foundation, either version 2 of the License, or | ||
| 10 | (at your option) any later version. | ||
| 11 | |||
| 12 | This program is distributed in the hope that it will be useful, | ||
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | GNU General Public License for more details. | ||
| 16 | |||
| 17 | You should have received a copy of the GNU General Public License | ||
| 18 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | */ | ||
| 20 | |||
| 21 | #ifndef CONFIG_USER_H | ||
| 22 | #define CONFIG_USER_H | ||
| 23 | |||
| 24 | #include "../../config.h" | ||
| 25 | |||
| 26 | /* Use I2C or Serial, not both */ | ||
| 27 | |||
| 28 | #define USE_SERIAL | ||
| 29 | // #define USE_I2C | ||
| 30 | |||
| 31 | /* Select hand configuration */ | ||
| 32 | |||
| 33 | #define MASTER_LEFT | ||
| 34 | // #define _MASTER_RIGHT | ||
| 35 | // #define EE_HANDS | ||
| 36 | |||
| 37 | #endif \ No newline at end of file | ||
diff --git a/keyboards/lets_split/keymaps/piemod/keymap.c b/keyboards/lets_split/keymaps/piemod/keymap.c new file mode 100644 index 000000000..558370fa8 --- /dev/null +++ b/keyboards/lets_split/keymaps/piemod/keymap.c | |||
| @@ -0,0 +1,121 @@ | |||
| 1 | #include "lets_split.h" | ||
| 2 | #include "action_layer.h" | ||
| 3 | #include "eeconfig.h" | ||
| 4 | |||
| 5 | extern keymap_config_t keymap_config; | ||
| 6 | |||
| 7 | #define _DVORAK 0 | ||
| 8 | #define _ARROW 1 //F(1) | ||
| 9 | #define _SYMBOL 2 // F(2) | ||
| 10 | #define _NUMBER 3 // F(3) | ||
| 11 | #define _FUNCTION 4 // F(4) | ||
| 12 | #define _EMACS 5 // F(5) | ||
| 13 | #define _MACROS 6 // F(6) | ||
| 14 | #define _MOUSE 7 // F(7) | ||
| 15 | |||
| 16 | enum custom_keycodes { | ||
| 17 | DVORAK = SAFE_RANGE, | ||
| 18 | ARROW, | ||
| 19 | SYMBOL, | ||
| 20 | NUMBER, | ||
| 21 | FUNCTION, | ||
| 22 | EMACS, | ||
| 23 | MACROS, | ||
| 24 | MOUSE, | ||
| 25 | }; | ||
| 26 | |||
| 27 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 28 | |||
| 29 | [_DVORAK] = KEYMAP( \ | ||
| 30 | KC_ESC, KC_QUOTE, F(7), KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DELETE, \ | ||
| 31 | KC_TAB, F(1), F(2), F(3), F(4), KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENTER, \ | ||
| 32 | KC_LSHIFT, KC_SCOLON, F(5), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_MINUS, \ | ||
| 33 | F(10), F(6), KC_MENU, KC_LALT, KC_LGUI, KC_BSPACE, KC_SPACE, KC_RCTRL, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT \ | ||
| 34 | ), | ||
| 35 | |||
| 36 | [_ARROW] = KEYMAP( \ | ||
| 37 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_UP, KC_END, KC_PGUP, \ | ||
| 38 | KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, \ | ||
| 39 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_NO, \ | ||
| 40 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \ | ||
| 41 | ), | ||
| 42 | |||
| 43 | [_SYMBOL] = KEYMAP( \ | ||
| 44 | KC_TILD, KC_GRAVE, KC_NO, KC_EQUAL, KC_PLUS, KC_NO, KC_LBRACKET, KC_RBRACKET, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, \ | ||
| 45 | KC_NO, KC_NO, KC_TRNS, KC_SCOLON, KC_COLN, KC_NO, KC_LCBR, KC_RCBR, KC_DLR, KC_PERC, KC_CIRC, F(21), \ | ||
| 46 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSLASH, KC_SLASH, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, \ | ||
| 47 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ASTR, KC_SLASH, KC_MINUS, KC_PLUS, KC_EQUAL \ | ||
| 48 | ), | ||
| 49 | |||
| 50 | [_NUMBER] = KEYMAP( \ | ||
| 51 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_7, KC_8, KC_9, KC_NO, \ | ||
| 52 | KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_4, KC_5, KC_6, KC_NO, \ | ||
| 53 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_0, KC_1, KC_2, KC_3, KC_NO, \ | ||
| 54 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ASTR, KC_SLASH, KC_MINUS, KC_PLUS, KC_EQUAL \ | ||
| 55 | ), | ||
| 56 | |||
| 57 | [_FUNCTION] = KEYMAP( \ | ||
| 58 | KC_PSCREEN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \ | ||
| 59 | KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ | ||
| 60 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, \ | ||
| 61 | RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DELETE, KC_INSERT, KC_HOME, KC_PGDN, KC_PGUP, KC_END \ | ||
| 62 | ), | ||
| 63 | |||
| 64 | [_EMACS] = KEYMAP( \ | ||
| 65 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 66 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 67 | KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 68 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \ | ||
| 69 | ), | ||
| 70 | |||
| 71 | [_MACROS] = KEYMAP( \ | ||
| 72 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 73 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 74 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 75 | KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \ | ||
| 76 | ), | ||
| 77 | |||
| 78 | [_MOUSE] = KEYMAP( \ | ||
| 79 | KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_U, KC_NO, KC_NO, \ | ||
| 80 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, \ | ||
| 81 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 82 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, KC_NO, KC_NO, KC_NO \ | ||
| 83 | ) | ||
| 84 | }; | ||
| 85 | |||
| 86 | enum function_id { | ||
| 87 | TEENSY_KEY, | ||
| 88 | CUSTOM_KEY, | ||
| 89 | L_CTRL_ALT_ENT, | ||
| 90 | R_CTRL_ALT_ENT, | ||
| 91 | }; | ||
| 92 | |||
| 93 | int CAPSLOCKED = 0; | ||
| 94 | |||
| 95 | const uint16_t PROGMEM fn_actions[] = { | ||
| 96 | |||
| 97 | // DVORAK 0 | ||
| 98 | // ARROW 1, F(1) | ||
| 99 | // SYMBOL 2, F(2) | ||
| 100 | // NUMBER 3, F(3) | ||
| 101 | // FUNCTION 4, F(4) | ||
| 102 | // EMACS 5, F(5) | ||
| 103 | // MACROS 6, F(6) | ||
| 104 | // MOUSE 7, F(7) | ||
| 105 | |||
| 106 | // Layers | ||
| 107 | [1] = ACTION_LAYER_TAP_KEY(1, KC_A), // FN1 = Momentary Arrow layer on A. | ||
| 108 | [2] = ACTION_LAYER_TAP_KEY(2, KC_O), // FN2 = Momentary symbOl layer on O. | ||
| 109 | [3] = ACTION_LAYER_TAP_KEY(3, KC_E), // FN3 = Momentary numbEr layer on E. | ||
| 110 | [4] = ACTION_LAYER_TAP_KEY(4, KC_U), // FN4 = Momentary fUnction layer on U. | ||
| 111 | [5] = ACTION_LAYER_TAP_KEY(5, KC_Q), // FN5 = Momentary emaQs layer on Q. | ||
| 112 | [6] = ACTION_LAYER_TAP_KEY(6, KC_LCTRL), // FN6 = Momentary MACROS on ??? key. | ||
| 113 | [7] = ACTION_LAYER_TAP_KEY(7, KC_COMMA), // FN7 = Momentary MOUSE on , key. | ||
| 114 | |||
| 115 | // Special Keys | ||
| 116 | [10] = ACTION_MODS_KEY(KC_LCTRL, KC_LALT), // FN10 = Ctrl + Alt. | ||
| 117 | |||
| 118 | // Symbols | ||
| 119 | [21] = ACTION_MODS_KEY(MOD_LSFT, KC_SLASH), // FN21 = Question mark. | ||
| 120 | |||
| 121 | }; | ||
diff --git a/keyboards/planck/keymaps/piemod/Makefile b/keyboards/planck/keymaps/piemod/Makefile new file mode 100755 index 000000000..1e48872e3 --- /dev/null +++ b/keyboards/planck/keymaps/piemod/Makefile | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | SUBPROJECT_DEFAULT = rev4 | ||
| 2 | |||
| 3 | MOUSEKEY_ENABLE = yes | ||
| 4 | BLUETOOTH_ENABLE = yes | ||
| 5 | EXTRAKEY_ENABLE = yes | ||
| 6 | AUDIO_ENABLE = yes | ||
| 7 | |||
| 8 | ifndef QUANTUM_DIR | ||
| 9 | include ../../../../Makefile | ||
| 10 | endif | ||
diff --git a/keyboards/planck/keymaps/piemod/README.md b/keyboards/planck/keymaps/piemod/README.md new file mode 100644 index 000000000..f2a051da1 --- /dev/null +++ b/keyboards/planck/keymaps/piemod/README.md | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | PieMod | ||
| 2 | ====== | ||
| 3 | |||
| 4 | A keymap for users that need: | ||
| 5 | |||
| 6 | - *P*: Programming symbols. | ||
| 7 | |||
| 8 | - *I*: i3wm. | ||
| 9 | |||
| 10 | - *E*: Emacs. | ||
| 11 | |||
| 12 | - *M*: Macros. | ||
| 13 | |||
| 14 | - *O*: Ortholinear. | ||
| 15 | |||
| 16 | - *D*: Dvorak. | ||
| 17 | |||
| 18 | Still a work-in-progress. Suggestions welcome @ https://github.com/dwrz/piemod. | ||
| 19 | |||
| 20 | ### Keymap | ||
| 21 | |||
| 22 |  | ||
| 23 | |||
| 24 | ### TODO | ||
| 25 | |||
| 26 | - [ ] Add Emacs layer. | ||
| 27 | - [ ] Add Macro layer. | ||
| 28 | - [ ] Add system control keys (rotation, brightness). | ||
| 29 | - [ ] Switch " and ' quotes (or function to toggle default). | ||
| 30 | - [ ] Add capslock. | ||
| 31 | . | ||
diff --git a/keyboards/planck/keymaps/piemod/keymap.c b/keyboards/planck/keymaps/piemod/keymap.c new file mode 100644 index 000000000..e6e7a8a5a --- /dev/null +++ b/keyboards/planck/keymaps/piemod/keymap.c | |||
| @@ -0,0 +1,111 @@ | |||
| 1 | #include "planck.h" | ||
| 2 | #include "action_layer.h" | ||
| 3 | #ifdef AUDIO_ENABLE | ||
| 4 | #include "audio.h" | ||
| 5 | #endif | ||
| 6 | #include "eeconfig.h" | ||
| 7 | |||
| 8 | #define DVORAK 0 | ||
| 9 | #define ARROW 1 //F(1) | ||
| 10 | #define SYMBOL 2 // F(2) | ||
| 11 | #define NUMBER 3 // F(3) | ||
| 12 | #define FUNCTION 4 // F(4) | ||
| 13 | #define EMACS 5 // F(5) | ||
| 14 | #define CUSTOM_MACROS 6 // F(6) | ||
| 15 | #define MOUSE 7 // F(7) | ||
| 16 | |||
| 17 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 18 | [DVORAK] = { | ||
| 19 | {KC_ESC, KC_QUOTE, F(7), KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DELETE}, | ||
| 20 | {KC_TAB, F(1), F(2), F(3), F(4), KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENTER}, | ||
| 21 | {KC_LSHIFT, KC_SCOLON, F(5), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_MINUS}, | ||
| 22 | {F(10), F(6), KC_MENU, KC_LALT, KC_LGUI, KC_BSPACE, KC_SPACE, KC_RCTRL, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT}, | ||
| 23 | }, | ||
| 24 | |||
| 25 | [ARROW] = { | ||
| 26 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_UP, KC_END, KC_PGUP}, | ||
| 27 | {KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN}, | ||
| 28 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_NO}, | ||
| 29 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} | ||
| 30 | }, | ||
| 31 | |||
| 32 | [SYMBOL] = { | ||
| 33 | {KC_TILD, KC_GRAVE, KC_NO, KC_EQUAL, KC_PLUS, KC_NO, KC_LBRACKET, KC_RBRACKET, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN}, | ||
| 34 | {KC_NO, KC_NO, KC_TRNS, KC_SCOLON, KC_COLN, KC_NO, KC_LCBR, KC_RCBR, KC_DLR, KC_PERC, KC_CIRC, F(21)}, | ||
| 35 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSLASH, KC_SLASH, KC_EXLM, KC_AT, KC_HASH, KC_PIPE}, | ||
| 36 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ASTR, KC_SLASH, KC_MINUS, KC_PLUS, KC_EQUAL} | ||
| 37 | }, | ||
| 38 | |||
| 39 | [NUMBER] = { | ||
| 40 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_7, KC_8, KC_9, KC_NO}, | ||
| 41 | {KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_4, KC_5, KC_6, KC_NO}, | ||
| 42 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_0, KC_1, KC_2, KC_3, KC_NO}, | ||
| 43 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ASTR, KC_SLASH, KC_MINUS, KC_PLUS, KC_EQUAL} | ||
| 44 | }, | ||
| 45 | |||
| 46 | [FUNCTION] = { | ||
| 47 | {KC_PSCREEN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6}, | ||
| 48 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, | ||
| 49 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE}, | ||
| 50 | {RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DELETE, KC_INSERT, KC_HOME, KC_PGDN, KC_PGUP, KC_END} | ||
| 51 | }, | ||
| 52 | |||
| 53 | [EMACS] = { | ||
| 54 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 55 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 56 | {KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 57 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} | ||
| 58 | }, | ||
| 59 | |||
| 60 | [CUSTOM_MACROS] = { | ||
| 61 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 62 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 63 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 64 | {KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} | ||
| 65 | }, | ||
| 66 | |||
| 67 | [MOUSE] = { | ||
| 68 | {KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_U, KC_NO, KC_NO}, | ||
| 69 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO}, | ||
| 70 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 71 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, KC_NO, KC_NO, KC_NO} | ||
| 72 | }, | ||
| 73 | |||
| 74 | }; | ||
| 75 | |||
| 76 | enum function_id { | ||
| 77 | TEENSY_KEY, | ||
| 78 | CUSTOM_KEY, | ||
| 79 | L_CTRL_ALT_ENT, | ||
| 80 | R_CTRL_ALT_ENT, | ||
| 81 | }; | ||
| 82 | |||
| 83 | int CAPSLOCKED = 0; | ||
| 84 | |||
| 85 | const uint16_t PROGMEM fn_actions[] = { | ||
| 86 | |||
| 87 | // DVORAK 0 | ||
| 88 | // ARROW 1, F(1) | ||
| 89 | // SYMBOL 2, F(2) | ||
| 90 | // NUMBER 3, F(3) | ||
| 91 | // FUNCTION 4, F(4) | ||
| 92 | // EMACS 5, F(5) | ||
| 93 | // MACROS 6, F(6) | ||
| 94 | // MOUSE 7, F(7) | ||
| 95 | |||
| 96 | // Layers | ||
| 97 | [1] = ACTION_LAYER_TAP_KEY(1, KC_A), // FN1 = Momentary Arrow layer on A. | ||
| 98 | [2] = ACTION_LAYER_TAP_KEY(2, KC_O), // FN2 = Momentary symbOl layer on O. | ||
| 99 | [3] = ACTION_LAYER_TAP_KEY(3, KC_E), // FN3 = Momentary numbEr layer on E. | ||
| 100 | [4] = ACTION_LAYER_TAP_KEY(4, KC_U), // FN4 = Momentary fUnction layer on U. | ||
| 101 | [5] = ACTION_LAYER_TAP_KEY(5, KC_Q), // FN5 = Momentary emaQs layer on Q. | ||
| 102 | [6] = ACTION_LAYER_TAP_KEY(6, KC_LCTRL), // FN6 = Momentary MACROS on ??? key. | ||
| 103 | [7] = ACTION_LAYER_TAP_KEY(7, KC_COMMA), // FN7 = Momentary MOUSE on , key. | ||
| 104 | |||
| 105 | // Special Keys | ||
| 106 | [10] = ACTION_MODS_KEY(KC_LCTRL, KC_LALT), // FN10 = Ctrl + Alt. | ||
| 107 | |||
| 108 | // Symbols | ||
| 109 | [21] = ACTION_MODS_KEY(MOD_LSFT, KC_SLASH), // FN21 = Question mark. | ||
| 110 | |||
| 111 | }; | ||
diff --git a/lib/chibios b/lib/chibios | |||
| Subproject 8fce03b3a75c743e5d5c40b9d59c1637c59d22a | Subproject d34e8eb83101a95f98892bf68605fe545821f32 | ||
diff --git a/quantum/quantum.c b/quantum/quantum.c index 0243a7e01..aac1d07a9 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
| @@ -40,13 +40,12 @@ extern backlight_config_t backlight_config; | |||
| 40 | #ifndef AG_SWAP_SONG | 40 | #ifndef AG_SWAP_SONG |
| 41 | #define AG_SWAP_SONG SONG(AG_SWAP_SOUND) | 41 | #define AG_SWAP_SONG SONG(AG_SWAP_SOUND) |
| 42 | #endif | 42 | #endif |
| 43 | #ifndef DEFAULT_LAYER_SONGS | ||
| 44 | #define DEFAULT_LAYER_SONGS { } | ||
| 45 | #endif | ||
| 46 | float goodbye_song[][2] = GOODBYE_SONG; | 43 | float goodbye_song[][2] = GOODBYE_SONG; |
| 47 | float ag_norm_song[][2] = AG_NORM_SONG; | 44 | float ag_norm_song[][2] = AG_NORM_SONG; |
| 48 | float ag_swap_song[][2] = AG_SWAP_SONG; | 45 | float ag_swap_song[][2] = AG_SWAP_SONG; |
| 49 | float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS; | 46 | #ifdef DEFAULT_LAYER_SONGS |
| 47 | float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS; | ||
| 48 | #endif | ||
| 50 | #endif | 49 | #endif |
| 51 | 50 | ||
| 52 | static void do_code16 (uint16_t code, void (*f) (uint8_t)) { | 51 | static void do_code16 (uint16_t code, void (*f) (uint8_t)) { |
| @@ -479,6 +478,13 @@ bool process_record_quantum(keyrecord_t *record) { | |||
| 479 | void (*method)(uint8_t) = (record->event.pressed) ? &add_key : &del_key; | 478 | void (*method)(uint8_t) = (record->event.pressed) ? &add_key : &del_key; |
| 480 | uint8_t shifted = get_mods() & ((MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT) | 479 | uint8_t shifted = get_mods() & ((MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT) |
| 481 | |MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI))); | 480 | |MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI))); |
| 481 | |||
| 482 | #ifdef GRAVE_ESC_CTRL_OVERRIDE | ||
| 483 | // if CTRL is pressed, ESC is always read as ESC, even if SHIFT or GUI is pressed. | ||
| 484 | // this is handy for the ctrl+shift+esc shortcut on windows, among other things. | ||
| 485 | if (get_mods() & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL))) | ||
| 486 | shifted = 0; | ||
| 487 | #endif | ||
| 482 | 488 | ||
| 483 | method(shifted ? KC_GRAVE : KC_ESCAPE); | 489 | method(shifted ? KC_GRAVE : KC_ESCAPE); |
| 484 | send_keyboard_report(); | 490 | send_keyboard_report(); |
| @@ -560,7 +566,7 @@ void send_string_with_delay(const char *str, uint8_t interval) { | |||
| 560 | } | 566 | } |
| 561 | 567 | ||
| 562 | void set_single_persistent_default_layer(uint8_t default_layer) { | 568 | void set_single_persistent_default_layer(uint8_t default_layer) { |
| 563 | #ifdef AUDIO_ENABLE | 569 | #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) |
| 564 | PLAY_SONG(default_layer_songs[default_layer]); | 570 | PLAY_SONG(default_layer_songs[default_layer]); |
| 565 | #endif | 571 | #endif |
| 566 | eeconfig_update_default_layer(1U<<default_layer); | 572 | eeconfig_update_default_layer(1U<<default_layer); |
diff --git a/quantum/template/config.h b/quantum/template/config.h index dbca45765..700a56f52 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h | |||
| @@ -67,6 +67,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 67 | /* Locking resynchronize hack */ | 67 | /* Locking resynchronize hack */ |
| 68 | #define LOCKING_RESYNC_ENABLE | 68 | #define LOCKING_RESYNC_ENABLE |
| 69 | 69 | ||
| 70 | /* If defined, GRAVE_ESC will always act as ESC when CTRL is held. | ||
| 71 | * This is userful for the Windows task manager shortcut (ctrl+shift+esc). | ||
| 72 | */ | ||
| 73 | // #define GRAVE_ESC_CTRL_OVERRIDE | ||
| 74 | |||
| 70 | /* | 75 | /* |
| 71 | * Force NKRO | 76 | * Force NKRO |
| 72 | * | 77 | * |
