diff options
| -rw-r--r-- | keyboards/minidox/keymaps/norman/config.h | 5 | ||||
| -rw-r--r-- | keyboards/minidox/keymaps/norman/keymap.c | 69 | ||||
| -rw-r--r-- | keyboards/minidox/keymaps/norman/readme.md | 56 | ||||
| -rw-r--r-- | quantum/keymap_extras/keymap_norman.h | 54 | ||||
| -rw-r--r-- | quantum/keymap_extras/sendstring_norman.h | 39 |
5 files changed, 223 insertions, 0 deletions
diff --git a/keyboards/minidox/keymaps/norman/config.h b/keyboards/minidox/keymaps/norman/config.h new file mode 100644 index 000000000..0d3542a03 --- /dev/null +++ b/keyboards/minidox/keymaps/norman/config.h | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | #define PERMISSIVE_HOLD | ||
| 4 | #define QMK_KEYS_PER_SCAN 4 | ||
| 5 | #define TAPPING_TERM 160 | ||
diff --git a/keyboards/minidox/keymaps/norman/keymap.c b/keyboards/minidox/keymaps/norman/keymap.c new file mode 100644 index 000000000..2786b7dd9 --- /dev/null +++ b/keyboards/minidox/keymaps/norman/keymap.c | |||
| @@ -0,0 +1,69 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | |||
| 3 | #include <sendstring_norman.h> | ||
| 4 | |||
| 5 | |||
| 6 | extern keymap_config_t keymap_config; | ||
| 7 | |||
| 8 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
| 9 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
| 10 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
| 11 | // entirely and just use numbers. | ||
| 12 | enum layers { | ||
| 13 | _NORMAN, | ||
| 14 | _LOWER, | ||
| 15 | _RAISE, | ||
| 16 | _ADJUST | ||
| 17 | }; | ||
| 18 | |||
| 19 | enum custom_keycodes { | ||
| 20 | QWERTY = SAFE_RANGE, | ||
| 21 | LOWER, | ||
| 22 | RAISE, | ||
| 23 | ADJUST | ||
| 24 | }; | ||
| 25 | |||
| 26 | // Defines for task manager and such | ||
| 27 | #define CALTDEL LCTL(LALT(KC_DEL)) | ||
| 28 | #define TSKMGR LCTL(LSFT(KC_ESC)) | ||
| 29 | #define DSK_LFT LGUI(LCTL(KC_LEFT)) | ||
| 30 | #define DSK_RT LGUI(LCTL(KC_RIGHT)) | ||
| 31 | |||
| 32 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 33 | |||
| 34 | |||
| 35 | [_NORMAN] = LAYOUT( \ | ||
| 36 | NM_Q, NM_W, NM_D, NM_F, NM_K, NM_J, NM_U, NM_R, NM_L, NM_SCLN, \ | ||
| 37 | NM_A, NM_S, NM_E, NM_T, NM_G, NM_Y, NM_N, NM_I, NM_O, NM_H, \ | ||
| 38 | NM_Z, NM_X, NM_C, NM_V, NM_B, NM_P, NM_M, NM_COMM, NM_DOT, NM_SLSH, \ | ||
| 39 | LGUI_T(KC_ENT), LT(_RAISE, KC_ESC), SFT_T(KC_BSPC), CTL_T(KC_SPC), LT(_LOWER, KC_TAB), ALT_T(KC_ENT) \ | ||
| 40 | ), | ||
| 41 | |||
| 42 | [_RAISE] = LAYOUT( \ | ||
| 43 | KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PLUS, KC_7, KC_8, KC_9, KC_0, \ | ||
| 44 | KC_CIRC, KC_AMPR, KC_TILD, KC_PIPE, KC_BSLS, KC_MINUS, KC_4, KC_5, KC_6, KC_EQL, \ | ||
| 45 | KC_DQT, KC_QUOT, KC_UNDS, KC_GRV, _______, KC_ASTR, KC_1, KC_2, KC_3, _______, \ | ||
| 46 | _______, _______, _______, _______, MO(_ADJUST), _______ \ | ||
| 47 | ), | ||
| 48 | |||
| 49 | |||
| 50 | [_LOWER] = LAYOUT( \ | ||
| 51 | KC_ESC, KC_HOME, KC_UP, KC_END, _______, _______, KC_LPRN, KC_RPRN, _______, _______, | ||
| 52 | KC_VOLU, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGUP, _______, KC_LBRC, KC_RBRC, _______, _______, \ | ||
| 53 | KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_PGDN, _______, KC_LCBR, KC_RCBR, _______, _______, \ | ||
| 54 | _______, MO(_ADJUST), _______, _______, _______, _______ \ | ||
| 55 | ), | ||
| 56 | |||
| 57 | [_ADJUST] = LAYOUT( \ | ||
| 58 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, \ | ||
| 59 | _______, DSK_LFT, _______, DSK_RT, _______, TSKMGR, CALTDEL, _______, KC_F11, KC_F12, \ | ||
| 60 | RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ | ||
| 61 | _______, _______, _______, _______, _______, _______ \ | ||
| 62 | ) | ||
| 63 | |||
| 64 | }; | ||
| 65 | |||
| 66 | void persistant_default_layer_set(uint16_t default_layer) { | ||
| 67 | eeconfig_update_default_layer(default_layer); | ||
| 68 | default_layer_set(default_layer); | ||
| 69 | } | ||
diff --git a/keyboards/minidox/keymaps/norman/readme.md b/keyboards/minidox/keymaps/norman/readme.md new file mode 100644 index 000000000..018e43632 --- /dev/null +++ b/keyboards/minidox/keymaps/norman/readme.md | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | # Minidox Norman Layout by LeHoff | ||
| 2 | Based on the QWERTY layout created by Khitsule. | ||
| 3 |  | ||
| 4 | |||
| 5 | [KLE link](http://www.keyboard-layout-editor.com/#/gists/86ec49f9f820a8b9b36f6e0d2ef8fff7) | ||
| 6 | |||
| 7 | ## Layers | ||
| 8 | | Layer | Legend | | ||
| 9 | | ----- | ------ | | ||
| 10 | | Base | Top left (black) | | ||
| 11 | | Lower | Bottom right (red) | | ||
| 12 | | Raise | Top right (orange) | | ||
| 13 | | Adjust | Front print | | ||
| 14 | |||
| 15 | ## Features | ||
| 16 | * Raise/lower layers focus first on one-handed use | ||
| 17 | * Numpad on right hand with raise layer | ||
| 18 | * Navigation on left hand with lower layer (ESDF) | ||
| 19 | * D refers to desktop left/right on Win 10 (win+ctrl+left/right) | ||
| 20 | * Heavy use of hold/tap dual function keys - from left to right: | ||
| 21 | * Cmd/Enter | ||
| 22 | * Raise/Esc | ||
| 23 | * Shift/Backspace | ||
| 24 | * Ctrl/Space | ||
| 25 | * Lower/Tab | ||
| 26 | * Alt/Enter | ||
| 27 | |||
| 28 | |||
| 29 | ## Modifier Placement Rationale | ||
| 30 | |||
| 31 | There are several major driving forces at play: | ||
| 32 | |||
| 33 | * I use MacOS. | ||
| 34 | * I'm Danish so the Alt and Shift-Alt layers in MacOS simply have to work. | ||
| 35 | * I use Vim for coding. | ||
| 36 | * I use org-mode in Emacs to keep track of my time. | ||
| 37 | |||
| 38 | * Space is on the right hand side because I almost exclusively use my right hand thumb for | ||
| 39 | space. | ||
| 40 | * Cmd is on the left since I often use Cmd+click to open a link in a new tab in Safari. | ||
| 41 | * Due to my usage of Vim Esc got a spot on the modifier row. | ||
| 42 | * Tab is on the right to enable easy navigation between winows with Cmd+Tab. | ||
| 43 | * Shift is on the left since org-mode uses Ctrl+arrows to manipulate task state quickly, | ||
| 44 | and since the arrow keys are activated using Lower (which has been moved to the right) and S, E, T, | ||
| 45 | and D, it works well that way. | ||
| 46 | * Ctrl is on the right since Ctrl+<0-9> is used in MacOS to switch between spaces. | ||
| 47 | * Enter is on both sides since Enter is often used together with all of the modifiers. E.g., | ||
| 48 | Cmd+Enter to send mails in most situations, but Ctrl+Enter is used in Emacs to create a | ||
| 49 | new task in org-mode. | ||
| 50 | |||
| 51 | This means that arrows and digits are being modified from the other hand, which could be | ||
| 52 | bad for gaming, so if you're into that you might want to re-think a few things, but in | ||
| 53 | that case you are probably using a Windows machine and then there are other constraints | ||
| 54 | you have to deal with. | ||
| 55 | |||
| 56 | |||
diff --git a/quantum/keymap_extras/keymap_norman.h b/quantum/keymap_extras/keymap_norman.h new file mode 100644 index 000000000..995b1b8a0 --- /dev/null +++ b/quantum/keymap_extras/keymap_norman.h | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | |||
| 2 | /* Copyright 2019 Torben Hoffmann | ||
| 3 | * | ||
| 4 | * This program is free software: you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License as published by | ||
| 6 | * the Free Software Foundation, either version 2 of the License, or | ||
| 7 | * (at your option) any later version. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope that it will be useful, | ||
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | * GNU General Public License for more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License | ||
| 15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 16 | */ | ||
| 17 | #pragma once | ||
| 18 | |||
| 19 | #include "keymap.h" | ||
| 20 | // For software implementation of norman | ||
| 21 | #define NM_Q KC_Q | ||
| 22 | #define NM_W KC_W | ||
| 23 | #define NM_D KC_E | ||
| 24 | #define NM_F KC_R | ||
| 25 | #define NM_K KC_T | ||
| 26 | #define NM_J KC_Y | ||
| 27 | #define NM_U KC_U | ||
| 28 | #define NM_R KC_I | ||
| 29 | #define NM_L KC_O | ||
| 30 | #define NM_SCLN KC_P | ||
| 31 | #define NM_COLN LSFT(NM_SCLN) | ||
| 32 | |||
| 33 | #define NM_A KC_A | ||
| 34 | #define NM_S KC_S | ||
| 35 | #define NM_E KC_D | ||
| 36 | #define NM_T KC_F | ||
| 37 | #define NM_G KC_G | ||
| 38 | #define NM_Y KC_H | ||
| 39 | #define NM_N KC_J | ||
| 40 | #define NM_I KC_K | ||
| 41 | #define NM_O KC_L | ||
| 42 | #define NM_H KC_SCLN | ||
| 43 | |||
| 44 | #define NM_Z KC_Z | ||
| 45 | #define NM_X KC_X | ||
| 46 | #define NM_C KC_C | ||
| 47 | #define NM_V KC_V | ||
| 48 | #define NM_B KC_B | ||
| 49 | #define NM_P KC_N | ||
| 50 | #define NM_M KC_M | ||
| 51 | #define NM_COMM KC_COMM | ||
| 52 | #define NM_DOT KC_DOT | ||
| 53 | #define NM_SLSH KC_SLSH | ||
| 54 | |||
diff --git a/quantum/keymap_extras/sendstring_norman.h b/quantum/keymap_extras/sendstring_norman.h new file mode 100644 index 000000000..57d450ca8 --- /dev/null +++ b/quantum/keymap_extras/sendstring_norman.h | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | /* Copyright 2019 Torben Hoffmann | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | /* Sendstring definitions for the Colemak layout */ | ||
| 17 | #pragma once | ||
| 18 | |||
| 19 | #include "keymap_norman.h" | ||
| 20 | |||
| 21 | const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { | ||
| 22 | 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 23 | KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, | ||
| 24 | 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 25 | 0, 0, 0, KC_ESC, 0, 0, 0, 0, | ||
| 26 | KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, | ||
| 27 | KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, | ||
| 28 | KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, | ||
| 29 | KC_8, KC_9, NM_SCLN, NM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, | ||
| 30 | KC_2, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G, | ||
| 31 | NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O, | ||
| 32 | NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W, | ||
| 33 | NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS, | ||
| 34 | KC_GRV, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G, | ||
| 35 | NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O, | ||
| 36 | NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W, | ||
| 37 | NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL | ||
| 38 | }; | ||
| 39 | |||
