diff options
| author | Manna Harbour <51143715+manna-harbour@users.noreply.github.com> | 2020-06-23 15:30:05 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-22 22:30:05 -0700 |
| commit | f0bde7906d35c1955a39251659e80d41caccbc54 (patch) | |
| tree | d7b00bdd3bae2c295c78c1837ddbf90c31d04735 | |
| parent | 24b0cda3e877c28c53c1aca02ef6e0eaa66fad91 (diff) | |
| download | qmk_firmware-f0bde7906d35c1955a39251659e80d41caccbc54.tar.gz qmk_firmware-f0bde7906d35c1955a39251659e80d41caccbc54.zip | |
Update miryoku (#9442)
- Add mouse buttons overlay layer
- Change button order
- Remove crkbd hardware specifics
- Add alternative base layer alphas
- Change title
- Add logo
- Reword intro text
- Add dev branch and new commits links
- Replace manual toc and remove anchors
- Unindent lists
- Reduce headings
- Update docs
- Build keymap as object instead of including .c file
- Add kle subset mapping images
- Add alternative mapping support
- Change default mapping for ortho_4x12
- Add split mapping for ortho_4x12
- Add contact section
- Add #pragma once to layout and keyboard config.h
| -rw-r--r-- | keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h | 26 | ||||
| -rw-r--r-- | keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c | 53 | ||||
| -rw-r--r-- | keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk | 7 | ||||
| -rw-r--r-- | layouts/community/ergodox/manna-harbour_miryoku/config.h | 20 | ||||
| -rw-r--r-- | layouts/community/ergodox/manna-harbour_miryoku/keymap.c | 19 | ||||
| -rw-r--r-- | layouts/community/ortho_4x12/manna-harbour_miryoku/config.h | 31 | ||||
| -rw-r--r-- | layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c | 15 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/config.h | 15 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/manna-harbour_miryoku.c | 61 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/manna-harbour_miryoku.h | 19 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/miryoku.org | 559 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/rules.mk | 17 |
12 files changed, 513 insertions, 329 deletions
diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h b/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h index e2fe1824d..a3d430b1e 100644 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h +++ b/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h | |||
| @@ -2,17 +2,15 @@ | |||
| 2 | 2 | ||
| 3 | #pragma once | 3 | #pragma once |
| 4 | 4 | ||
| 5 | #define EE_HANDS | 5 | #define LAYOUT_miryoku( \ |
| 6 | 6 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ | |
| 7 | #ifdef RGB_MATRIX_ENABLE | 7 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ |
| 8 | #define RGB_MATRIX_KEYPRESSES // reacts to keypresses | 8 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ |
| 9 | #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended | 9 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ |
| 10 | #define RGB_MATRIX_FRAMEBUFFER_EFFECTS | 10 | ) \ |
| 11 | #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. | 11 | LAYOUT( \ |
| 12 | #define RGB_MATRIX_HUE_STEP 8 | 12 | KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \ |
| 13 | #define RGB_MATRIX_SAT_STEP 8 | 13 | KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ |
| 14 | #define RGB_MATRIX_VAL_STEP 8 | 14 | KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ |
| 15 | #define RGB_MATRIX_SPD_STEP 10 | 15 | K32, K33, K34, K35, K36, K37 \ |
| 16 | #endif | 16 | ) |
| 17 | |||
| 18 | #define SSD1306OLED // old oled driver | ||
diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c index f5be6844f..a852ddd05 100644 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c +++ b/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c | |||
| @@ -1,54 +1 @@ | |||
| 1 | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | |
| 2 | |||
| 3 | #define LAYOUT_miryoku( \ | ||
| 4 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ | ||
| 5 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ | ||
| 6 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ | ||
| 7 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ | ||
| 8 | ) \ | ||
| 9 | LAYOUT( \ | ||
| 10 | KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \ | ||
| 11 | KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ | ||
| 12 | KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ | ||
| 13 | K32, K33, K34, K35, K36, K37 \ | ||
| 14 | ) | ||
| 15 | |||
| 16 | #include "manna-harbour_miryoku.c" | ||
| 17 | |||
| 18 | |||
| 19 | #ifdef SSD1306OLED | ||
| 20 | |||
| 21 | #include "ssd1306.h" | ||
| 22 | |||
| 23 | void matrix_init_user(void) { | ||
| 24 | iota_gfx_init(!has_usb()); // turns on the display | ||
| 25 | } | ||
| 26 | |||
| 27 | // When add source files to SRC in rules.mk, you can use functions. | ||
| 28 | const char *read_logo(void); | ||
| 29 | |||
| 30 | void matrix_scan_user(void) { | ||
| 31 | iota_gfx_task(); | ||
| 32 | } | ||
| 33 | |||
| 34 | void matrix_render_user(struct CharacterMatrix *matrix) { | ||
| 35 | if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { | ||
| 36 | matrix_write(matrix, read_logo()); | ||
| 37 | } | ||
| 38 | } | ||
| 39 | |||
| 40 | void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { | ||
| 41 | if (memcmp(dest->display, source->display, sizeof(dest->display))) { | ||
| 42 | memcpy(dest->display, source->display, sizeof(dest->display)); | ||
| 43 | dest->dirty = true; | ||
| 44 | } | ||
| 45 | } | ||
| 46 | |||
| 47 | void iota_gfx_task_user(void) { | ||
| 48 | struct CharacterMatrix matrix; | ||
| 49 | matrix_clear(&matrix); | ||
| 50 | matrix_render_user(&matrix); | ||
| 51 | matrix_update(&display, &matrix); | ||
| 52 | } | ||
| 53 | |||
| 54 | #endif //SSD1306OLED | ||
diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk deleted file mode 100644 index c4fb15f34..000000000 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | # generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | ||
| 2 | |||
| 3 | RGB_MATRIX_ENABLE = WS2812 | ||
| 4 | |||
| 5 | # old oled driver | ||
| 6 | SRC += ./lib/glcdfont.c \ | ||
| 7 | ./lib/logo_reader.c | ||
diff --git a/layouts/community/ergodox/manna-harbour_miryoku/config.h b/layouts/community/ergodox/manna-harbour_miryoku/config.h new file mode 100644 index 000000000..0f20409c2 --- /dev/null +++ b/layouts/community/ergodox/manna-harbour_miryoku/config.h | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | ||
| 2 | |||
| 3 | #pragma once | ||
| 4 | |||
| 5 | #define LAYOUT_miryoku(\ | ||
| 6 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 7 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 8 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 9 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 10 | )\ | ||
| 11 | LAYOUT_ergodox_pretty( \ | ||
| 12 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 13 | KC_NO, K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09, KC_NO, \ | ||
| 14 | KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ | ||
| 15 | KC_NO, K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29, KC_NO, \ | ||
| 16 | KC_NO, KC_NO, KC_NO, KC_NO, K32, K37, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 17 | KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 18 | KC_NO, KC_NO, \ | ||
| 19 | K33, K34, KC_NO, KC_NO, K35, K36 \ | ||
| 20 | ) | ||
diff --git a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c index 1c715a68f..a852ddd05 100644 --- a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c +++ b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c | |||
| @@ -1,20 +1 @@ | |||
| 1 | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | |
| 2 | |||
| 3 | #define LAYOUT_miryoku(\ | ||
| 4 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 5 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 6 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 7 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 8 | )\ | ||
| 9 | LAYOUT_ergodox_pretty( \ | ||
| 10 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 11 | KC_NO, K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09, KC_NO, \ | ||
| 12 | KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ | ||
| 13 | KC_NO, K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29, KC_NO, \ | ||
| 14 | KC_NO, KC_NO, KC_NO, KC_NO, K32, K37, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 15 | KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 16 | KC_NO, KC_NO, \ | ||
| 17 | K33, K34, KC_NO, KC_NO, K35, K36 \ | ||
| 18 | ) | ||
| 19 | |||
| 20 | #include "manna-harbour_miryoku.c" | ||
diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h b/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h new file mode 100644 index 000000000..772b510ef --- /dev/null +++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | ||
| 2 | |||
| 3 | #pragma once | ||
| 4 | |||
| 5 | #if defined MIRYOKU_MAPPING_SPLIT | ||
| 6 | #define LAYOUT_miryoku(\ | ||
| 7 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 8 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 9 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 10 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 11 | )\ | ||
| 12 | LAYOUT_ortho_4x12(\ | ||
| 13 | KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ | ||
| 14 | K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\ | ||
| 15 | K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ | ||
| 16 | K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ | ||
| 17 | ) | ||
| 18 | #else | ||
| 19 | #define LAYOUT_miryoku(\ | ||
| 20 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 21 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 22 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 23 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 24 | )\ | ||
| 25 | LAYOUT_ortho_4x12(\ | ||
| 26 | K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ | ||
| 27 | K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ | ||
| 28 | K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ | ||
| 29 | KC_NO, KC_NO, K32, K33, K34, K34, K35, K35, K36, K37, KC_NO, KC_NO\ | ||
| 30 | ) | ||
| 31 | #endif | ||
diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c index 07bc15c2a..a852ddd05 100644 --- a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c +++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c | |||
| @@ -1,16 +1 @@ | |||
| 1 | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | |
| 2 | |||
| 3 | #define LAYOUT_miryoku(\ | ||
| 4 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 5 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 6 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 7 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 8 | )\ | ||
| 9 | LAYOUT_ortho_4x12(\ | ||
| 10 | KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ | ||
| 11 | K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\ | ||
| 12 | K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ | ||
| 13 | K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ | ||
| 14 | ) | ||
| 15 | |||
| 16 | #include "manna-harbour_miryoku.c" | ||
diff --git a/users/manna-harbour_miryoku/config.h b/users/manna-harbour_miryoku/config.h index 5ac3208c9..db1608815 100644 --- a/users/manna-harbour_miryoku/config.h +++ b/users/manna-harbour_miryoku/config.h | |||
| @@ -2,6 +2,9 @@ | |||
| 2 | 2 | ||
| 3 | #pragma once | 3 | #pragma once |
| 4 | 4 | ||
| 5 | // default but important | ||
| 6 | #define TAPPING_TERM 200 | ||
| 7 | |||
| 5 | // Prevent normal rollover on alphas from accidentally triggering mods. | 8 | // Prevent normal rollover on alphas from accidentally triggering mods. |
| 6 | #define IGNORE_MOD_TAP_INTERRUPT | 9 | #define IGNORE_MOD_TAP_INTERRUPT |
| 7 | 10 | ||
| @@ -10,3 +13,15 @@ | |||
| 10 | 13 | ||
| 11 | // Recommended for heavy chording. | 14 | // Recommended for heavy chording. |
| 12 | #define QMK_KEYS_PER_SCAN 4 | 15 | #define QMK_KEYS_PER_SCAN 4 |
| 16 | |||
| 17 | // Mouse key speed and acceleration. | ||
| 18 | #undef MOUSEKEY_DELAY | ||
| 19 | #define MOUSEKEY_DELAY 0 | ||
| 20 | #undef MOUSEKEY_INTERVAL | ||
| 21 | #define MOUSEKEY_INTERVAL 16 | ||
| 22 | #undef MOUSEKEY_WHEEL_DELAY | ||
| 23 | #define MOUSEKEY_WHEEL_DELAY 0 | ||
| 24 | #undef MOUSEKEY_MAX_SPEED | ||
| 25 | #define MOUSEKEY_MAX_SPEED 6 | ||
| 26 | #undef MOUSEKEY_TIME_TO_MAX | ||
| 27 | #define MOUSEKEY_TIME_TO_MAX 64 | ||
diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.c b/users/manna-harbour_miryoku/manna-harbour_miryoku.c index 8ae38c25c..9bc0f17e6 100644 --- a/users/manna-harbour_miryoku/manna-harbour_miryoku.c +++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.c | |||
| @@ -1,28 +1,51 @@ | |||
| 1 | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | 1 | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- |
| 2 | 2 | ||
| 3 | #include QMK_KEYBOARD_H | 3 | #include "manna-harbour_miryoku.h" |
| 4 | |||
| 5 | #define KC_NP KC_NO // key is not present | ||
| 6 | #define KC_NA KC_NO // present but not available for use | ||
| 7 | #define KC_NU KC_NO // available but not used | ||
| 8 | |||
| 9 | // non-KC_ keycodes | ||
| 10 | #define KC_RST RESET | ||
| 11 | #define KC_TOG RGB_TOG | ||
| 12 | #define KC_MOD RGB_MOD | ||
| 13 | #define KC_HUI RGB_HUI | ||
| 14 | #define KC_SAI RGB_SAI | ||
| 15 | #define KC_VAI RGB_VAI | ||
| 16 | |||
| 17 | enum layers { BASE, MEDR, NAVR, MOUR, NSSL, NSL, FUNL }; | ||
| 18 | 4 | ||
| 19 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 5 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 6 | #if defined MIRYOKU_ALPHAS_QWERTY | ||
| 7 | [BASE] = LAYOUT_miryoku( | ||
| 8 | KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, | ||
| 9 | LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), | ||
| 10 | KC_Z, ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, | ||
| 11 | KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP | ||
| 12 | ), | ||
| 13 | #elif defined MIRYOKU_ALPHAS_DVORAK | ||
| 14 | [BASE] = LAYOUT_miryoku( | ||
| 15 | KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, | ||
| 16 | LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S), | ||
| 17 | KC_SLSH, ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), KC_Z, | ||
| 18 | KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP | ||
| 19 | ), | ||
| 20 | #elif defined MIRYOKU_ALPHAS_COLEMAK | ||
| 21 | [BASE] = LAYOUT_miryoku( | ||
| 22 | KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, | ||
| 23 | LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), | ||
| 24 | KC_Z, ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, | ||
| 25 | KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP | ||
| 26 | ), | ||
| 27 | #elif defined MIRYOKU_ALPHAS_COLEMAKDH | ||
| 28 | [BASE] = LAYOUT_miryoku( | ||
| 29 | KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, | ||
| 30 | LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), | ||
| 31 | KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, | ||
| 32 | KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP | ||
| 33 | ), | ||
| 34 | #elif defined MIRYOKU_ALPHAS_WORKMAN | ||
| 35 | [BASE] = LAYOUT_miryoku( | ||
| 36 | KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, | ||
| 37 | LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), | ||
| 38 | KC_Z, ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, | ||
| 39 | KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP | ||
| 40 | ), | ||
| 41 | #else | ||
| 20 | [BASE] = LAYOUT_miryoku( | 42 | [BASE] = LAYOUT_miryoku( |
| 21 | KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, | 43 | KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, |
| 22 | LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), | 44 | LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), |
| 23 | KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, | 45 | KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, |
| 24 | KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP | 46 | KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP |
| 25 | ), | 47 | ), |
| 48 | #endif | ||
| 26 | [NAVR] = LAYOUT_miryoku( | 49 | [NAVR] = LAYOUT_miryoku( |
| 27 | KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_AGIN, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, | 50 | KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_AGIN, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, |
| 28 | KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, | 51 | KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, |
| @@ -33,7 +56,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 33 | KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_NU, KC_NU, KC_NU, KC_NU, KC_NU, | 56 | KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_NU, KC_NU, KC_NU, KC_NU, KC_NU, |
| 34 | KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_NU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, | 57 | KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_NU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, |
| 35 | KC_NA, KC_ALGR, KC_NA, KC_NA, KC_NA, KC_NU, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, | 58 | KC_NA, KC_ALGR, KC_NA, KC_NA, KC_NA, KC_NU, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, |
| 36 | KC_NP, KC_NP, KC_NA, KC_NA, KC_NA, KC_BTN3, KC_BTN1, KC_BTN2, KC_NP, KC_NP | 59 | KC_NP, KC_NP, KC_NA, KC_NA, KC_NA, KC_BTN1, KC_BTN3, KC_BTN2, KC_NP, KC_NP |
| 60 | ), | ||
| 61 | [MBO] = LAYOUT_miryoku( | ||
| 62 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 63 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 64 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 65 | KC_NP, KC_NP, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_NP, KC_NP | ||
| 37 | ), | 66 | ), |
| 38 | [MEDR] = LAYOUT_miryoku( | 67 | [MEDR] = LAYOUT_miryoku( |
| 39 | KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_TOG, KC_MOD, KC_HUI, KC_SAI, KC_VAI, | 68 | KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_TOG, KC_MOD, KC_HUI, KC_SAI, KC_VAI, |
diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.h b/users/manna-harbour_miryoku/manna-harbour_miryoku.h new file mode 100644 index 000000000..5f543cb0f --- /dev/null +++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | // generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | ||
| 2 | |||
| 3 | #pragma once | ||
| 4 | |||
| 5 | #include QMK_KEYBOARD_H | ||
| 6 | |||
| 7 | #define KC_NP KC_NO // key is not present | ||
| 8 | #define KC_NA KC_NO // present but not available for use | ||
| 9 | #define KC_NU KC_NO // available but not used | ||
| 10 | |||
| 11 | // non-KC_ keycodes | ||
| 12 | #define KC_RST RESET | ||
| 13 | #define KC_TOG RGB_TOG | ||
| 14 | #define KC_MOD RGB_MOD | ||
| 15 | #define KC_HUI RGB_HUI | ||
| 16 | #define KC_SAI RGB_SAI | ||
| 17 | #define KC_VAI RGB_VAI | ||
| 18 | |||
| 19 | enum layers { BASE, MBO, MEDR, NAVR, MOUR, NSSL, NSL, FUNL }; | ||
diff --git a/users/manna-harbour_miryoku/miryoku.org b/users/manna-harbour_miryoku/miryoku.org index 692321d01..011e43455 100644 --- a/users/manna-harbour_miryoku/miryoku.org +++ b/users/manna-harbour_miryoku/miryoku.org | |||
| @@ -1,68 +1,75 @@ | |||
| 1 | #+Title: miryoku.org | 1 | # After making changes to code or tables call org-babel-tangle (C-c C-v t). |
| 2 | |||
| 3 | #+Title: Miryoku [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/miryoku-roa-32.png]] | ||
| 2 | 4 | ||
| 3 | [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-keycodes.png]] | 5 | [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-keycodes.png]] |
| 4 | 6 | ||
| 5 | The miryoku layout is an ergonomic, minimal, orthogonal layout for ergo or ortho | 7 | Miryoku is an ergonomic, minimal, orthogonal layout for ergo or ortho keyboards, |
| 6 | keyboards, implemented as part of the QMK firmware. The layout is maintained in | 8 | implemented as part of the QMK firmware. |
| 7 | emacs org-mode tables and converted to QMK keymap data structures using embedded | ||
| 8 | python scripts. The layout is mapped onto keyboards with different physical | ||
| 9 | layouts as a subset without code duplication using the QMK userspace feature and | ||
| 10 | C macros. Versions of the layout can also be seen outside of the QMK source at | ||
| 11 | [[https://github.com/manna-harbour/miryoku/]]. | ||
| 12 | 9 | ||
| 13 | After making changes here call org-babel-tangle (C-c C-v t). | 10 | The layout is maintained in emacs org-mode tables and converted to QMK keymap |
| 11 | data structures using embedded python scripts. It is mapped onto keyboards with | ||
| 12 | different physical layouts as a subset without code duplication using the QMK | ||
| 13 | userspace feature and C macros. | ||
| 14 | 14 | ||
| 15 | * Contents | 15 | Please see the [[https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org][development branch]] for any [[https://github.com/qmk/qmk_firmware/compare/master...manna-harbour:miryoku][updates not yet merged into QMK]]. |
| 16 | Additional visualisations are provided outside QMK in the [[https://github.com/manna-harbour/miryoku/blob/master/README.org][Miryoku (Extras) repository]]. | ||
| 16 | 17 | ||
| 18 | * Contents :TOC: | ||
| 17 | - [[#layout][Layout]] | 19 | - [[#layout][Layout]] |
| 20 | - [[#general-principles][General Principles]] | ||
| 21 | - [[#details][Details]] | ||
| 22 | - [[#layers][Layers]] | ||
| 18 | - [[#code-generation][Code Generation]] | 23 | - [[#code-generation][Code Generation]] |
| 24 | - [[#table-conversion-scripts][Table Conversion Scripts]] | ||
| 25 | - [[#data][Data]] | ||
| 19 | - [[#subset-mapping][Subset Mapping]] | 26 | - [[#subset-mapping][Subset Mapping]] |
| 20 | - [[#related-documentation][Related Documentation]] | 27 | - [[#userspace][Userspace]] |
| 21 | 28 | - [[#layouts][Layouts]] | |
| 29 | - [[#keyboards][Keyboards]] | ||
| 30 | - [[#documentation][Documentation]] | ||
| 31 | - [[#qmk][QMK]] | ||
| 32 | - [[#org-mode][Org Mode]] | ||
| 33 | - [[#contact][Contact]] | ||
| 22 | 34 | ||
| 23 | * Layout | 35 | * Layout |
| 24 | :PROPERTIES: | 36 | |
| 25 | :CUSTOM_ID: layout | 37 | ** General Principles |
| 26 | :END: | 38 | |
| 27 | 39 | - Use layers instead of reaching. | |
| 28 | ** Info | 40 | - Use both hands instead of contortions. |
| 29 | 41 | - Use the home positions as much as possible. | |
| 30 | *** General Principles | 42 | - Make full use of the thumbs. |
| 31 | 43 | - Avoid unnecessary complication. | |
| 32 | - Use layers instead of reaching. | 44 | |
| 33 | - Use both hands instead of contortions. | 45 | |
| 34 | - Use the home positions as much as possible. | 46 | ** Details |
| 35 | - Make full use of the thumbs. | 47 | |
| 36 | - Avoid unnecessary complication. | 48 | - 5 columns, 3 rows, 3 thumb keys, 2 hands. |
| 37 | 49 | - Can be used on almost any split or non-split ergo or ortho keyboard. | |
| 38 | 50 | - Includes all keys found on a US layout TKL keyboard, plus media keys and mouse | |
| 39 | *** Specifics | 51 | emulation. |
| 40 | 52 | - Home row is the middle row, home thumb key is the middle thumb key. | |
| 41 | - 5 columns, 3 rows, 3 thumb keys, 2 hands. | 53 | - Maximum 1-u movement from home position for fingers and thumbs, and only along |
| 42 | - Can be used on almost any split or non-split ergo or ortho keyboard. | 54 | one axis (except for the inner index finger column which is deprioritised |
| 43 | - Includes all keys found on a US layout TKL keyboard, plus media keys and | 55 | compared with the home columns). |
| 44 | mouse emulation. | 56 | - Dual-function modifiers on home row, mirrored on both hands. |
| 45 | - Home row is the middle row, home thumb key is the middle thumb key. | 57 | - Dual-function layer change on thumbs. |
| 46 | - Maximum 1-u movement from home position for fingers and thumbs, and only | 58 | - Layers are designed orthogonally with a single purpose per hand and are |
| 47 | along one axis (except for the inner index finger column which is | 59 | accessed by holding a thumb key on the opposite hand. |
| 48 | deprioritised compared with the home columns). | 60 | - All layers on the same hand are based on the same basic key arrangement. |
| 49 | - Dual-function modifiers on home row, mirrored on both hands. | 61 | - Holding layer change and modifiers on one hand combined with a single key |
| 50 | - Dual-function layer change on thumbs. | 62 | press on the other hand can produce any combination of modifiers and single |
| 51 | - Layers are designed orthogonally with a single purpose per hand and are | 63 | keys without any finger contortions. |
| 52 | accessed by holding a thumb key on the opposite hand. | 64 | - Single function mods are also defined on layers on the same hand as the layer |
| 53 | - All layers on the same hand are based on the same basic key arrangement. | 65 | change thumb key so layer change and mods can be held in any order or |
| 54 | - Holding layer change and modifiers on one hand combined with a single key | 66 | simultaneously without race conditions. |
| 55 | press on the other hand can produce any combination of modifiers and | 67 | - As mods are only enabled on the opposite hand, auto-repeat is available on the |
| 56 | single keys without any finger contortions. | 68 | home row on layers for use with cursor and mouse keys. |
| 57 | - Single function mods are also defined on layers on the same hand as the | 69 | - Tap-hold auto-repeat is disabled to permit faster tap-hold switching on |
| 58 | layer change thumb key so layer change and mods can be held in any order | 70 | thumbs, but thumb tap keys are mirrored onto some layers for use with |
| 59 | or simultaneously without race conditions. | 71 | auto-repeat. On other layers thumb keys are redefined with important |
| 60 | - As mods are only enabled on the opposite hand, auto-repeat is available on | 72 | functions for that layer. |
| 61 | the home row on layers for use with cursor and mouse keys. | ||
| 62 | - Tap-hold auto-repeat is disabled to permit faster tap-hold switching on | ||
| 63 | thumbs, but thumb tap keys are mirrored onto some layers for use with | ||
| 64 | auto-repeat. On other layers thumb keys are redefined with important | ||
| 65 | functions for that layer. | ||
| 66 | 73 | ||
| 67 | 74 | ||
| 68 | ** Layers | 75 | ** Layers |
| @@ -86,16 +93,21 @@ into the corresponding tap-hold keycodes for mods and layer change. RST and | |||
| 86 | mods will be available on sub layers on the same hand as the layer change thumb | 93 | mods will be available on sub layers on the same hand as the layer change thumb |
| 87 | key. Unknown names are considered to be layer names. | 94 | key. Unknown names are considered to be layer names. |
| 88 | 95 | ||
| 89 | Base layer alphas are Colemak DHm. Thumb keys are backspace, enter, delete on | 96 | Base layer alphas are Colemak-DHm. Thumb keys are backspace, enter, delete on |
| 90 | the right and space, tab, escape on the left. Dot, comma and apostrophe are | 97 | the right and space, tab, escape on the left. Dot, comma and apostrophe are |
| 91 | included for prose, dot and slash for file and directory names. | 98 | included for prose, dot and slash for file and directory names. |
| 92 | 99 | ||
| 93 | #+NAME: tap | 100 | **** Tap |
| 101 | |||
| 102 | #+NAME: colemakdhm | ||
| 94 | | Q | W | F | P | B | J | L | U | Y | ' | | 103 | | Q | W | F | P | B | J | L | U | Y | ' | |
| 95 | | A | R | S | T | G | M | N | E | I | O | | 104 | | A | R | S | T | G | M | N | E | I | O | |
| 96 | | Z | X | C | D | V | K | H | , | . | / | | 105 | | Z | X | C | D | V | K | H | , | . | / | |
| 97 | | NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | | 106 | | NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | |
| 98 | 107 | ||
| 108 | |||
| 109 | **** Hold | ||
| 110 | |||
| 99 | #+NAME: hold | 111 | #+NAME: hold |
| 100 | | RST | | | | | | | | | RST | | 112 | | RST | | | | | | | | | RST | |
| 101 | | LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI | | 113 | | LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI | |
| @@ -103,6 +115,52 @@ included for prose, dot and slash for file and directory names. | |||
| 103 | | NP | NP | MEDR | NAVR | MOUR | NSSL | NSL | FUNL | NP | NP | | 115 | | NP | NP | MEDR | NAVR | MOUR | NSSL | NSL | FUNL | NP | NP | |
| 104 | 116 | ||
| 105 | 117 | ||
| 118 | **** Alternative Base Layer Alphas | ||
| 119 | |||
| 120 | Alternative base layer alphas are provided. To select, append | ||
| 121 | e.g. ~MIRYOKU_ALPHAS=QWERTY~ to the make command line when building. | ||
| 122 | |||
| 123 | ***** QWERTY (QWERTY) | ||
| 124 | #+NAME: qwerty | ||
| 125 | | Q | W | E | R | T | Y | U | I | O | P | | ||
| 126 | | A | S | D | F | G | H | J | K | L | ' | | ||
| 127 | | Z | X | C | V | B | N | M | , | . | / | | ||
| 128 | | NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | | ||
| 129 | |||
| 130 | |||
| 131 | ***** Dvorak (DVORAK) | ||
| 132 | #+NAME: dvorak | ||
| 133 | | ' | , | . | P | Y | F | G | C | R | L | | ||
| 134 | | A | O | E | U | I | D | H | T | N | S | | ||
| 135 | | / | Q | J | K | X | B | M | W | V | Z | | ||
| 136 | | NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | | ||
| 137 | |||
| 138 | |||
| 139 | ***** Colemak (COLEMAK) | ||
| 140 | #+NAME: colemak | ||
| 141 | | Q | W | F | P | G | J | L | U | Y | ' | | ||
| 142 | | A | R | S | T | D | H | N | E | I | O | | ||
| 143 | | Z | X | C | V | B | K | M | , | . | / | | ||
| 144 | | NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | | ||
| 145 | |||
| 146 | |||
| 147 | ***** Colemak Mod-DH (COLEMAKDH) | ||
| 148 | #+NAME: colemakdh | ||
| 149 | | Q | W | F | P | B | J | L | U | Y | ' | | ||
| 150 | | A | R | S | T | G | K | N | E | I | O | | ||
| 151 | | Z | X | C | D | V | M | H | , | . | / | | ||
| 152 | | NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | | ||
| 153 | |||
| 154 | |||
| 155 | ***** Workman (WORKMAN) | ||
| 156 | #+NAME: workman | ||
| 157 | | Q | D | R | W | B | J | F | U | P | ' | | ||
| 158 | | A | S | H | T | G | Y | N | E | O | I | | ||
| 159 | | Z | X | M | C | V | K | L | , | . | / | | ||
| 160 | | NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | | ||
| 161 | |||
| 162 | |||
| 163 | |||
| 106 | *** Navigation (NAVR) | 164 | *** Navigation (NAVR) |
| 107 | 165 | ||
| 108 | Primary right-hand layer (left home thumb) is navigation and editing. Cursor | 166 | Primary right-hand layer (left home thumb) is navigation and editing. Cursor |
| @@ -120,15 +178,27 @@ layer to avoid having to layer change mid edit and to enable auto-repeat. | |||
| 120 | *** Mouse (MOUR) | 178 | *** Mouse (MOUR) |
| 121 | 179 | ||
| 122 | Secondary RH layer is mouse emulation. Mouse movement mirrors cursor navigation | 180 | Secondary RH layer is mouse emulation. Mouse movement mirrors cursor navigation |
| 123 | on home and wheel mirrors line / page movement below. Buttons are on the | 181 | on home and wheel mirrors line / page movement below. Buttons are on the thumbs |
| 124 | thumbs. Mouse movement, click, and drag with modifiers can be performed from | 182 | (L, M, R). Mouse movement, click, and drag with modifiers can be performed from |
| 125 | the home position. Unused keys are available for other related functions. | 183 | the home position. Unused keys are available for other related functions. |
| 126 | 184 | ||
| 127 | #+NAME: mour | 185 | #+NAME: mour |
| 128 | | | | | | | | 186 | | | | | | | |
| 129 | | | MS_L | MS_D | MS_U | MS_R | | 187 | | | MS_L | MS_D | MS_U | MS_R | |
| 130 | | | WH_L | WH_D | WH_U | WH_R | | 188 | | | WH_L | WH_D | WH_U | WH_R | |
| 131 | | BTN3 | BTN1 | BTN2 | NP | NP | | 189 | | BTN1 | BTN3 | BTN2 | NP | NP | |
| 190 | |||
| 191 | |||
| 192 | **** Mouse Buttons Overlay (MBO) | ||
| 193 | |||
| 194 | Available for automatic activation depending on keyboard hardware and | ||
| 195 | configuration. Not activated manually. | ||
| 196 | |||
| 197 | #+NAME: mbo | ||
| 198 | | | | | | | | | | | | | ||
| 199 | | | | | | | | | | | | | ||
| 200 | | | | | | | | | | | | | ||
| 201 | | NP | NP | | | | BTN1 | BTN3 | BTN2 | NP | NP | | ||
| 132 | 202 | ||
| 133 | 203 | ||
| 134 | *** Media (MEDR) | 204 | *** Media (MEDR) |
| @@ -211,9 +281,6 @@ Duplicate base layer tap keys on thumbs rather than trans to enable auto-repeat. | |||
| 211 | 281 | ||
| 212 | 282 | ||
| 213 | * Code Generation | 283 | * Code Generation |
| 214 | :PROPERTIES: | ||
| 215 | :CUSTOM_ID: code-generation | ||
| 216 | :END: | ||
| 217 | 284 | ||
| 218 | ** Table Conversion Scripts | 285 | ** Table Conversion Scripts |
| 219 | 286 | ||
| @@ -222,14 +289,14 @@ Duplicate base layer tap keys on thumbs rather than trans to enable auto-repeat. | |||
| 222 | Produce base layer from separate tap and hold tables. | 289 | Produce base layer from separate tap and hold tables. |
| 223 | 290 | ||
| 224 | #+NAME: table-layout-taphold | 291 | #+NAME: table-layout-taphold |
| 225 | #+BEGIN_SRC python :var tap_table=tap :var hold_table=hold :var symbol_names_table=symbol-names :var mods_list=mods :tangle no :results verbatim | 292 | #+BEGIN_SRC python :var layer_name="BASE" :var tap_table=colemakdhm :var hold_table=hold :var symbol_names_table=symbol-names :var mods_list=mods :tangle no :results verbatim |
| 226 | width = 19 | 293 | width = 19 |
| 227 | mods_dict = dict.fromkeys(mods_list) | 294 | mods_dict = dict.fromkeys(mods_list) |
| 228 | symbol_names_dict = {} | 295 | symbol_names_dict = {} |
| 229 | for symbol, name, shifted_symbol, shifted_name in symbol_names_table: | 296 | for symbol, name, shifted_symbol, shifted_name in symbol_names_table: |
| 230 | symbol_names_dict[symbol] = name | 297 | symbol_names_dict[symbol] = name |
| 231 | symbol_names_dict[shifted_symbol] = shifted_name | 298 | symbol_names_dict[shifted_symbol] = shifted_name |
| 232 | results = ' [BASE] = LAYOUT_miryoku(\n' | 299 | results = ' [' + layer_name + '] = LAYOUT_miryoku(\n' |
| 233 | for tap_row, hold_row in map(None, tap_table, hold_table): | 300 | for tap_row, hold_row in map(None, tap_table, hold_table): |
| 234 | results += ' ' | 301 | results += ' ' |
| 235 | for tap, hold in map(None, tap_row, hold_row): | 302 | for tap, hold in map(None, tap_row, hold_row): |
| @@ -254,7 +321,7 @@ return results | |||
| 254 | : [BASE] = LAYOUT_miryoku( | 321 | : [BASE] = LAYOUT_miryoku( |
| 255 | : KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, | 322 | : KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, |
| 256 | : LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), | 323 | : LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), |
| 257 | : KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, | 324 | : KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, |
| 258 | : KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP | 325 | : KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP |
| 259 | : ) | 326 | : ) |
| 260 | 327 | ||
| @@ -314,6 +381,43 @@ return results | |||
| 314 | : ) | 381 | : ) |
| 315 | 382 | ||
| 316 | 383 | ||
| 384 | *** table-layout-full | ||
| 385 | |||
| 386 | Produce full layer from single table. Fill for unused keys is configurable. | ||
| 387 | |||
| 388 | #+NAME: table-layout-full | ||
| 389 | #+BEGIN_SRC python :var table=mbo :var layer_name="MBO" :var fill="TRNS" :var symbol_names_table=symbol-names :tangle no :results verbatim | ||
| 390 | width = 9 | ||
| 391 | symbol_names_dict = {} | ||
| 392 | for symbol, name, shifted_symbol, shifted_name in symbol_names_table: | ||
| 393 | symbol_names_dict[symbol] = name | ||
| 394 | symbol_names_dict[shifted_symbol] = shifted_name | ||
| 395 | results = ' [' + layer_name + '] = LAYOUT_miryoku(\n' | ||
| 396 | for row in table: | ||
| 397 | results += ' ' | ||
| 398 | for key in row: | ||
| 399 | if key == '': | ||
| 400 | code = fill | ||
| 401 | elif key in symbol_names_dict: | ||
| 402 | code = symbol_names_dict[key] | ||
| 403 | else: | ||
| 404 | code = key | ||
| 405 | code = 'KC_' + str(code) | ||
| 406 | results += (code + ', ').ljust(width) | ||
| 407 | results = results.rstrip(' ') + '\n' | ||
| 408 | results = results.rstrip('\n, ') + '\n )' | ||
| 409 | return results | ||
| 410 | #+END_SRC | ||
| 411 | |||
| 412 | #+RESULTS: table-layout-full | ||
| 413 | : [MBO] = LAYOUT_miryoku( | ||
| 414 | : KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 415 | : KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 416 | : KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 417 | : KC_NP, KC_NP, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_NP, KC_NP | ||
| 418 | : ) | ||
| 419 | |||
| 420 | |||
| 317 | *** table-enums | 421 | *** table-enums |
| 318 | 422 | ||
| 319 | Produce layer enums from layer names in hold table. | 423 | Produce layer enums from layer names in hold table. |
| @@ -321,7 +425,7 @@ Produce layer enums from layer names in hold table. | |||
| 321 | #+NAME: table-enums | 425 | #+NAME: table-enums |
| 322 | #+BEGIN_SRC python :var hold_table=hold :var mods_list=mods :tangle no | 426 | #+BEGIN_SRC python :var hold_table=hold :var mods_list=mods :tangle no |
| 323 | mods_dict = dict.fromkeys(mods_list) | 427 | mods_dict = dict.fromkeys(mods_list) |
| 324 | results = 'enum layers { BASE, ' | 428 | results = 'enum layers { BASE, MBO, ' |
| 325 | for hold_row in hold_table: | 429 | for hold_row in hold_table: |
| 326 | for hold in hold_row: | 430 | for hold in hold_row: |
| 327 | if hold not in mods_dict and hold != '' and hold != 'NP' and hold != 'RST': | 431 | if hold not in mods_dict and hold != '' and hold != 'NP' and hold != 'RST': |
| @@ -331,7 +435,7 @@ return results | |||
| 331 | #+END_SRC | 435 | #+END_SRC |
| 332 | 436 | ||
| 333 | #+RESULTS: table-enums | 437 | #+RESULTS: table-enums |
| 334 | : enum layers { BASE, MEDR, NAVR, MOUR, NSSL, NSL, FUNL }; | 438 | : enum layers { BASE, MBO, MEDR, NAVR, MOUR, NSSL, NSL, FUNL }; |
| 335 | 439 | ||
| 336 | 440 | ||
| 337 | ** Data | 441 | ** Data |
| @@ -376,8 +480,6 @@ Modifiers usable in hold table. Need to have the same name for KC_ and _T versi | |||
| 376 | - ALGR | 480 | - ALGR |
| 377 | 481 | ||
| 378 | 482 | ||
| 379 | ** Other | ||
| 380 | |||
| 381 | *** header | 483 | *** header |
| 382 | 484 | ||
| 383 | Header for tangled src files. | 485 | Header for tangled src files. |
| @@ -389,25 +491,27 @@ generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t | |||
| 389 | 491 | ||
| 390 | 492 | ||
| 391 | * Subset Mapping | 493 | * Subset Mapping |
| 392 | :PROPERTIES: | 494 | |
| 393 | :CUSTOM_ID: subset-mapping | 495 | The keymap, build options, and configuration are shared between keyboards. The |
| 394 | :END: | 496 | layout is mapped onto keyboards with different physical layouts as a subset. |
| 395 | 497 | ||
| 396 | ** Userspace | 498 | ** Userspace |
| 397 | 499 | ||
| 398 | The keymap and configuration are shared between keyboards. The keymap is | 500 | The keymap is defined for LAYOUT_miryoku which is 10x4, with the outer 2 |
| 399 | defined for LAYOUT_miryoku which is 10x4, with the outer 2 positions on the | 501 | positions on the bottom row unused and the rest of the bottom row being the |
| 400 | bottom row unused and the rest of the bottom row are the thumb keys. | 502 | thumb keys. |
| 401 | 503 | ||
| 504 | *** manna-harbour_miryoku.h | ||
| 402 | 505 | ||
| 403 | *** manna-harbour_miryoku.c | 506 | Keymap-related definitions. Included from manna-harbour_miryoku.c. Can be |
| 507 | included from keymap or layout keymap.c if needed. | ||
| 404 | 508 | ||
| 405 | Contains the keymap. Included from keymap.c | 509 | [[./manna-harbour_miryoku.h][users/manna-harbour_miryoku/manna-harbour_miryoku.h]] |
| 406 | 510 | #+BEGIN_SRC C :noweb yes :padline no :tangle manna-harbour_miryoku.h | |
| 407 | [[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]] | ||
| 408 | #+BEGIN_SRC C :noweb yes :padline no :tangle manna-harbour_miryoku.c | ||
| 409 | // <<header>> | 511 | // <<header>> |
| 410 | 512 | ||
| 513 | #pragma once | ||
| 514 | |||
| 411 | #include QMK_KEYBOARD_H | 515 | #include QMK_KEYBOARD_H |
| 412 | 516 | ||
| 413 | #define KC_NP KC_NO // key is not present | 517 | #define KC_NP KC_NO // key is not present |
| @@ -423,11 +527,36 @@ Contains the keymap. Included from keymap.c | |||
| 423 | #define KC_VAI RGB_VAI | 527 | #define KC_VAI RGB_VAI |
| 424 | 528 | ||
| 425 | <<table-enums()>> | 529 | <<table-enums()>> |
| 530 | #+END_SRC | ||
| 531 | |||
| 532 | |||
| 533 | *** manna-harbour_miryoku.c | ||
| 534 | |||
| 535 | Contains the keymap. Added from rules.mk. | ||
| 536 | |||
| 537 | [[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]] | ||
| 538 | #+BEGIN_SRC C :noweb yes :padline no :tangle manna-harbour_miryoku.c | ||
| 539 | // <<header>> | ||
| 540 | |||
| 541 | #include "manna-harbour_miryoku.h" | ||
| 426 | 542 | ||
| 427 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 543 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 428 | <<table-layout-taphold()>>, | 544 | #if defined MIRYOKU_ALPHAS_QWERTY |
| 545 | <<table-layout-taphold(layer_name="BASE", tap_table=qwerty, hold_table=hold)>>, | ||
| 546 | #elif defined MIRYOKU_ALPHAS_DVORAK | ||
| 547 | <<table-layout-taphold(layer_name="BASE", tap_table=dvorak, hold_table=hold)>>, | ||
| 548 | #elif defined MIRYOKU_ALPHAS_COLEMAK | ||
| 549 | <<table-layout-taphold(layer_name="BASE", tap_table=colemak, hold_table=hold)>>, | ||
| 550 | #elif defined MIRYOKU_ALPHAS_COLEMAKDH | ||
| 551 | <<table-layout-taphold(layer_name="BASE", tap_table=colemakdh, hold_table=hold)>>, | ||
| 552 | #elif defined MIRYOKU_ALPHAS_WORKMAN | ||
| 553 | <<table-layout-taphold(layer_name="BASE", tap_table=workman, hold_table=hold)>>, | ||
| 554 | #else | ||
| 555 | <<table-layout-taphold(layer_name="BASE", tap_table=colemakdhm, hold_table=hold)>>, | ||
| 556 | #endif | ||
| 429 | <<table-layout-half(layer_name="NAVR", half_table=navr)>>, | 557 | <<table-layout-half(layer_name="NAVR", half_table=navr)>>, |
| 430 | <<table-layout-half(layer_name="MOUR", half_table=mour)>>, | 558 | <<table-layout-half(layer_name="MOUR", half_table=mour)>>, |
| 559 | <<table-layout-full(layer_name="MBO", table=mbo, fill="TRNS")>>, | ||
| 431 | <<table-layout-half(layer_name="MEDR", half_table=medr)>>, | 560 | <<table-layout-half(layer_name="MEDR", half_table=medr)>>, |
| 432 | <<table-layout-half(layer_name="FUNL", half_table=funl)>>, | 561 | <<table-layout-half(layer_name="FUNL", half_table=funl)>>, |
| 433 | <<table-layout-half(layer_name="NSL", half_table=nsl)>>, | 562 | <<table-layout-half(layer_name="NSL", half_table=nsl)>>, |
| @@ -446,6 +575,9 @@ Config options. Automatically included. | |||
| 446 | 575 | ||
| 447 | #pragma once | 576 | #pragma once |
| 448 | 577 | ||
| 578 | // default but important | ||
| 579 | #define TAPPING_TERM 200 | ||
| 580 | |||
| 449 | // Prevent normal rollover on alphas from accidentally triggering mods. | 581 | // Prevent normal rollover on alphas from accidentally triggering mods. |
| 450 | #define IGNORE_MOD_TAP_INTERRUPT | 582 | #define IGNORE_MOD_TAP_INTERRUPT |
| 451 | 583 | ||
| @@ -455,6 +587,18 @@ Config options. Automatically included. | |||
| 455 | // Recommended for heavy chording. | 587 | // Recommended for heavy chording. |
| 456 | #define QMK_KEYS_PER_SCAN 4 | 588 | #define QMK_KEYS_PER_SCAN 4 |
| 457 | 589 | ||
| 590 | // Mouse key speed and acceleration. | ||
| 591 | #undef MOUSEKEY_DELAY | ||
| 592 | #define MOUSEKEY_DELAY 0 | ||
| 593 | #undef MOUSEKEY_INTERVAL | ||
| 594 | #define MOUSEKEY_INTERVAL 16 | ||
| 595 | #undef MOUSEKEY_WHEEL_DELAY | ||
| 596 | #define MOUSEKEY_WHEEL_DELAY 0 | ||
| 597 | #undef MOUSEKEY_MAX_SPEED | ||
| 598 | #define MOUSEKEY_MAX_SPEED 6 | ||
| 599 | #undef MOUSEKEY_TIME_TO_MAX | ||
| 600 | #define MOUSEKEY_TIME_TO_MAX 64 | ||
| 601 | |||
| 458 | #+END_SRC | 602 | #+END_SRC |
| 459 | 603 | ||
| 460 | 604 | ||
| @@ -466,10 +610,20 @@ Build options. Automatically included. | |||
| 466 | #+BEGIN_SRC makefile :noweb yes :padline no :tangle rules.mk | 610 | #+BEGIN_SRC makefile :noweb yes :padline no :tangle rules.mk |
| 467 | # <<header>> | 611 | # <<header>> |
| 468 | 612 | ||
| 469 | MOUSEKEY_ENABLE = yes # Mouse keys(+4700) | 613 | MOUSEKEY_ENABLE = yes # Mouse keys |
| 470 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | 614 | EXTRAKEY_ENABLE = yes # Audio control and System control |
| 471 | EXTRAFLAGS += -flto # Link Time Optimization to reduce code size, 31358->28034/28672 | ||
| 472 | 615 | ||
| 616 | SRC += manna-harbour_miryoku.c # keymap | ||
| 617 | |||
| 618 | # select alternative base layer alphas | ||
| 619 | ifneq ($(strip $(MIRYOKU_ALPHAS)),) | ||
| 620 | OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS) | ||
| 621 | endif | ||
| 622 | |||
| 623 | # select alternative subset mappings | ||
| 624 | ifneq ($(strip $(MIRYOKU_MAPPING)),) | ||
| 625 | OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING) | ||
| 626 | endif | ||
| 473 | #+END_SRC | 627 | #+END_SRC |
| 474 | 628 | ||
| 475 | 629 | ||
| @@ -477,7 +631,9 @@ EXTRAFLAGS += -flto # Link Time Optimization to reduce code size, 31358->28 | |||
| 477 | 631 | ||
| 478 | To use the keymap on a keyboard supporting the layouts feature, LAYOUT_miryoku | 632 | To use the keymap on a keyboard supporting the layouts feature, LAYOUT_miryoku |
| 479 | is defined as a macro mapping onto the layout's own LAYOUT macro, leaving the | 633 | is defined as a macro mapping onto the layout's own LAYOUT macro, leaving the |
| 480 | unused keys as KC_NO. The userspace keymap is then included. | 634 | unused keys as KC_NO. |
| 635 | |||
| 636 | The following are example layouts. | ||
| 481 | 637 | ||
| 482 | *** ergodox | 638 | *** ergodox |
| 483 | 639 | ||
| @@ -486,10 +642,26 @@ secondary thumb keys are the inner and outer 2u thumb keys and the tertiary | |||
| 486 | thumb key is the innermost key of the partial bottom row. The remaining keys | 642 | thumb key is the innermost key of the partial bottom row. The remaining keys |
| 487 | are unused. | 643 | are unused. |
| 488 | 644 | ||
| 489 | [[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]] | 645 | [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-mapping-ergodox.png]] |
| 490 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c | 646 | |
| 647 | To build for any keyboard using the this layout (ergodone, ergodox_ez, | ||
| 648 | ergodox_infinity, hotdox) e.g. the ergodox_ez, | ||
| 649 | |||
| 650 | #+BEGIN_SRC sh :tangle no | ||
| 651 | make ergodox_ez:manna-harbour_miryoku:flash | ||
| 652 | #+END_SRC | ||
| 653 | |||
| 654 | |||
| 655 | **** config.h | ||
| 656 | |||
| 657 | Contains subset mapping. | ||
| 658 | |||
| 659 | [[../../layouts/community/ergodox/manna-harbour_miryoku/config.h][layouts/community/ergodox/manna-harbour_miryoku/config.h]] | ||
| 660 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/config.h | ||
| 491 | // <<header>> | 661 | // <<header>> |
| 492 | 662 | ||
| 663 | #pragma once | ||
| 664 | |||
| 493 | #define LAYOUT_miryoku(\ | 665 | #define LAYOUT_miryoku(\ |
| 494 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | 666 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ |
| 495 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | 667 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ |
| @@ -506,32 +678,62 @@ KC_NO, KC_NO, KC_NO, KC_NO, K32, K37, KC_NO, KC_ | |||
| 506 | KC_NO, KC_NO, \ | 678 | KC_NO, KC_NO, \ |
| 507 | K33, K34, KC_NO, KC_NO, K35, K36 \ | 679 | K33, K34, KC_NO, KC_NO, K35, K36 \ |
| 508 | ) | 680 | ) |
| 681 | #+END_SRC | ||
| 682 | |||
| 683 | |||
| 684 | **** keymap.c | ||
| 509 | 685 | ||
| 510 | #include "manna-harbour_miryoku.c" | 686 | Required by the build system. |
| 511 | 687 | ||
| 688 | [[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]] | ||
| 689 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c | ||
| 690 | // <<header>> | ||
| 512 | #+END_SRC | 691 | #+END_SRC |
| 513 | 692 | ||
| 514 | To build for any keyboard using the this layout (ergodone, ergodox_ez, | 693 | |
| 515 | ergodox_infinity, hotdox) e.g. the ergodox_ez, | 694 | *** ortho_4x12 |
| 695 | |||
| 696 | For the ortho_4x12 layout, the middle two columns, and the 2 keys on each end of | ||
| 697 | the bottom row are unused. This allows the hands to be positioned without ulnar | ||
| 698 | deviation of the wrists. | ||
| 699 | |||
| 700 | In the implementation, the 2 unused middle columns bottom row keys are mapped as | ||
| 701 | duplicates of their adjacent keys to support alternative bottom row physical | ||
| 702 | layouts including 1x2uC (MIT), 1x2uR, 1x2uL, and 2x2u. | ||
| 703 | |||
| 704 | [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-mapping-ortho_4x12.png]] | ||
| 705 | |||
| 706 | For split keyboards using this layout the halves can be positioned and rotated | ||
| 707 | for each hand and so an alternative mapping is provided. The right half is as | ||
| 708 | follows: The rightmost column bottom 3 keys is the pinkie column. The middle 4 | ||
| 709 | columns top 3 rows are for the remaining fingers. The pinkie column is one row | ||
| 710 | lower than the other columns to provide some column stagger. The bottom row | ||
| 711 | left 3 keys are the thumb keys. The remaining keys are unused. To select this | ||
| 712 | mapping, append ~MIRYOKU_MAPPING=SPLIT~ to the make command line when building. | ||
| 713 | |||
| 714 | [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-mapping-ortho_4x12-split.png]] | ||
| 715 | |||
| 716 | To build for any keyboard using this layout (4x4, nori, chimera_ls, contra, | ||
| 717 | divergetm2, jj40, lets_split, lets_split_eh, meira, niu_mini, planck, telophase, | ||
| 718 | vitamins_included, zinc, zlant, ortho48, kbd4x, levinson, wavelet, plaid): | ||
| 516 | 719 | ||
| 517 | #+BEGIN_SRC sh :tangle no | 720 | #+BEGIN_SRC sh :tangle no |
| 518 | cd ../.. && make ergodox_ez:manna-harbour_miryoku:teensy | 721 | make planck/rev6:manna-harbour_miryoku:flash # planck |
| 722 | make keebio/levinson:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SPLIT # levinson | ||
| 519 | #+END_SRC | 723 | #+END_SRC |
| 520 | 724 | ||
| 521 | 725 | ||
| 726 | **** config.h | ||
| 522 | 727 | ||
| 523 | *** ortho_4x12 | 728 | Contains subset mapping. |
| 524 | |||
| 525 | For the ortho_4x12 layout, the right half as is as follows: The rightmost column | ||
| 526 | bottom 3 rows is the pinkie column. The middle 4 columns top 3 rows are for the | ||
| 527 | remaining fingers. The pinkie column is one row lower than the other columns to | ||
| 528 | provide some column stagger on ortho keyboards. The bottom row left 3 columns | ||
| 529 | are the thumb keys. The remaining keys are unused. | ||
| 530 | 729 | ||
| 531 | [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]] | 730 | [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h][layouts/community/ortho_4x12/manna-harbour_miryoku/config.h]] |
| 532 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c | 731 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h |
| 533 | // <<header>> | 732 | // <<header>> |
| 534 | 733 | ||
| 734 | #pragma once | ||
| 735 | |||
| 736 | #if defined MIRYOKU_MAPPING_SPLIT | ||
| 535 | #define LAYOUT_miryoku(\ | 737 | #define LAYOUT_miryoku(\ |
| 536 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | 738 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ |
| 537 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | 739 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ |
| @@ -544,18 +746,30 @@ K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09 | |||
| 544 | K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ | 746 | K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ |
| 545 | K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ | 747 | K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ |
| 546 | ) | 748 | ) |
| 749 | #else | ||
| 750 | #define LAYOUT_miryoku(\ | ||
| 751 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 752 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 753 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 754 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 755 | )\ | ||
| 756 | LAYOUT_ortho_4x12(\ | ||
| 757 | K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ | ||
| 758 | K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ | ||
| 759 | K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ | ||
| 760 | KC_NO, KC_NO, K32, K33, K34, K34, K35, K35, K36, K37, KC_NO, KC_NO\ | ||
| 761 | ) | ||
| 762 | #endif | ||
| 763 | #+END_SRC | ||
| 547 | 764 | ||
| 548 | #include "manna-harbour_miryoku.c" | ||
| 549 | 765 | ||
| 550 | #+END_SRC | 766 | **** keymap.c |
| 551 | 767 | ||
| 552 | To build for any keyboard using this layout (4x4, nori, chimera_ls, contra, | 768 | Required by the build system. |
| 553 | divergetm2, jj40, lets_split, lets_split_eh, meira, niu_mini, planck, telophase, | ||
| 554 | vitamins_included, zinc, zlant, ortho48, kbd4x, levinson, wavelet, plaid) | ||
| 555 | e.g. the levinson, | ||
| 556 | 769 | ||
| 557 | #+BEGIN_SRC sh :tangle no | 770 | [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]] |
| 558 | make keebio/levinson:manna-harbour_miryoku:avrdude | 771 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c |
| 772 | // <<header>> | ||
| 559 | #+END_SRC | 773 | #+END_SRC |
| 560 | 774 | ||
| 561 | 775 | ||
| @@ -563,18 +777,30 @@ make keebio/levinson:manna-harbour_miryoku:avrdude | |||
| 563 | 777 | ||
| 564 | To use the keymap on a keyboard which does not support the layouts feature, | 778 | To use the keymap on a keyboard which does not support the layouts feature, |
| 565 | LAYOUT_miryoku is defined as a macro mapping onto the keyboard's own LAYOUT | 779 | LAYOUT_miryoku is defined as a macro mapping onto the keyboard's own LAYOUT |
| 566 | macro, leaving the unused keys as KC_NO. The userspace keymap is then included. | 780 | macro, leaving the unused keys as KC_NO. |
| 781 | |||
| 782 | The following are example keyboards. | ||
| 567 | 783 | ||
| 568 | *** crkbd | 784 | *** crkbd |
| 569 | 785 | ||
| 570 | The outer columns are unused. | 786 | The outer columns are unused. |
| 571 | 787 | ||
| 572 | **** keymap.c | 788 | To build for this keyboard, |
| 573 | 789 | ||
| 574 | [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c][keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c]] | 790 | #+BEGIN_SRC sh :tangle no |
| 575 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c | 791 | make crkbd:manna-harbour_miryoku:flash |
| 792 | #+END_SRC | ||
| 793 | |||
| 794 | **** config.h | ||
| 795 | |||
| 796 | Contains subset mapping. | ||
| 797 | |||
| 798 | [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h][keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h]] | ||
| 799 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h | ||
| 576 | // <<header>> | 800 | // <<header>> |
| 577 | 801 | ||
| 802 | #pragma once | ||
| 803 | |||
| 578 | #define LAYOUT_miryoku( \ | 804 | #define LAYOUT_miryoku( \ |
| 579 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ | 805 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ |
| 580 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ | 806 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ |
| @@ -587,114 +813,33 @@ KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_ | |||
| 587 | KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ | 813 | KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ |
| 588 | K32, K33, K34, K35, K36, K37 \ | 814 | K32, K33, K34, K35, K36, K37 \ |
| 589 | ) | 815 | ) |
| 590 | |||
| 591 | #include "manna-harbour_miryoku.c" | ||
| 592 | |||
| 593 | |||
| 594 | #ifdef SSD1306OLED | ||
| 595 | |||
| 596 | #include "ssd1306.h" | ||
| 597 | |||
| 598 | void matrix_init_user(void) { | ||
| 599 | iota_gfx_init(!has_usb()); // turns on the display | ||
| 600 | } | ||
| 601 | |||
| 602 | // When add source files to SRC in rules.mk, you can use functions. | ||
| 603 | const char *read_logo(void); | ||
| 604 | |||
| 605 | void matrix_scan_user(void) { | ||
| 606 | iota_gfx_task(); | ||
| 607 | } | ||
| 608 | |||
| 609 | void matrix_render_user(struct CharacterMatrix *matrix) { | ||
| 610 | if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { | ||
| 611 | matrix_write(matrix, read_logo()); | ||
| 612 | } | ||
| 613 | } | ||
| 614 | |||
| 615 | void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { | ||
| 616 | if (memcmp(dest->display, source->display, sizeof(dest->display))) { | ||
| 617 | memcpy(dest->display, source->display, sizeof(dest->display)); | ||
| 618 | dest->dirty = true; | ||
| 619 | } | ||
| 620 | } | ||
| 621 | |||
| 622 | void iota_gfx_task_user(void) { | ||
| 623 | struct CharacterMatrix matrix; | ||
| 624 | matrix_clear(&matrix); | ||
| 625 | matrix_render_user(&matrix); | ||
| 626 | matrix_update(&display, &matrix); | ||
| 627 | } | ||
| 628 | |||
| 629 | #endif //SSD1306OLED | ||
| 630 | |||
| 631 | #+END_SRC | 816 | #+END_SRC |
| 632 | 817 | ||
| 633 | 818 | ||
| 634 | **** config.h | 819 | **** keymap.c |
| 635 | |||
| 636 | [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h][keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h]] | ||
| 637 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h | ||
| 638 | // <<header>> | ||
| 639 | |||
| 640 | #pragma once | ||
| 641 | |||
| 642 | #define EE_HANDS | ||
| 643 | |||
| 644 | #ifdef RGB_MATRIX_ENABLE | ||
| 645 | #define RGB_MATRIX_KEYPRESSES // reacts to keypresses | ||
| 646 | #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended | ||
| 647 | #define RGB_MATRIX_FRAMEBUFFER_EFFECTS | ||
| 648 | #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. | ||
| 649 | #define RGB_MATRIX_HUE_STEP 8 | ||
| 650 | #define RGB_MATRIX_SAT_STEP 8 | ||
| 651 | #define RGB_MATRIX_VAL_STEP 8 | ||
| 652 | #define RGB_MATRIX_SPD_STEP 10 | ||
| 653 | #endif | ||
| 654 | |||
| 655 | #define SSD1306OLED // old oled driver | ||
| 656 | |||
| 657 | #+END_SRC | ||
| 658 | |||
| 659 | |||
| 660 | **** rules.mk | ||
| 661 | |||
| 662 | [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk][keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk]] | ||
| 663 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk | ||
| 664 | # <<header>> | ||
| 665 | |||
| 666 | RGB_MATRIX_ENABLE = WS2812 | ||
| 667 | |||
| 668 | # old oled driver | ||
| 669 | SRC += ./lib/glcdfont.c \ | ||
| 670 | ./lib/logo_reader.c | ||
| 671 | |||
| 672 | #+END_SRC | ||
| 673 | |||
| 674 | 820 | ||
| 675 | To build for this keyboard, | 821 | Required by the build system. |
| 676 | 822 | ||
| 677 | #+BEGIN_SRC sh :tangle no | 823 | [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c][keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c]] |
| 678 | cd ../.. && make crkbd:manna-harbour_miryoku:flash | 824 | #+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c |
| 825 | // <<header>> | ||
| 679 | #+END_SRC | 826 | #+END_SRC |
| 680 | 827 | ||
| 681 | 828 | ||
| 682 | * Related Documentation | 829 | * Documentation |
| 683 | :PROPERTIES: | ||
| 684 | :CUSTOM_ID: related-documentation | ||
| 685 | :END: | ||
| 686 | |||
| 687 | 830 | ||
| 688 | ** QMK | 831 | ** QMK |
| 689 | 832 | ||
| 690 | - https://qmk.fm/ | 833 | - https://qmk.fm/ |
| 691 | - https://docs.qmk.fm/#/getting_started_introduction | 834 | - https://docs.qmk.fm/#/getting_started_introduction |
| 692 | - https://docs.qmk.fm/#/hardware_keyboard_guidelines | ||
| 693 | - https://docs.qmk.fm/#/config_options | 835 | - https://docs.qmk.fm/#/config_options |
| 694 | - https://docs.qmk.fm/#/keycodes | 836 | - https://docs.qmk.fm/#/keycodes |
| 695 | - https://docs.qmk.fm/#/feature_advanced_keycodes | 837 | - https://docs.qmk.fm/#/feature_advanced_keycodes |
| 838 | - https://docs.qmk.fm/#/feature_layers | ||
| 839 | - https://docs.qmk.fm/#/mod_tap | ||
| 696 | - https://docs.qmk.fm/#/feature_layouts | 840 | - https://docs.qmk.fm/#/feature_layouts |
| 697 | - https://docs.qmk.fm/#/feature_userspace | 841 | - https://docs.qmk.fm/#/feature_userspace |
| 842 | - https://docs.qmk.fm/#/feature_mouse_keys | ||
| 698 | - https://docs.qmk.fm/#/getting_started_make_guide | 843 | - https://docs.qmk.fm/#/getting_started_make_guide |
| 699 | 844 | ||
| 700 | 845 | ||
| @@ -703,3 +848,13 @@ cd ../.. && make crkbd:manna-harbour_miryoku:flash | |||
| 703 | - https://orgmode.org/ | 848 | - https://orgmode.org/ |
| 704 | - https://orgmode.org/manual/Tables.html | 849 | - https://orgmode.org/manual/Tables.html |
| 705 | - https://orgmode.org/manual/Working-with-Source-Code.html | 850 | - https://orgmode.org/manual/Working-with-Source-Code.html |
| 851 | |||
| 852 | |||
| 853 | * Contact | ||
| 854 | |||
| 855 | For issues with this branch, or to request support for additional base layer | ||
| 856 | alphas, layouts, or keyboards, please [[https://github.com/manna-harbour/qmk_firmware/issues/new][open an issue]]. | ||
| 857 | |||
| 858 | For more general discussion, please join a relevant [[https://www.reddit.com/user/manna_harbour/posts/?sort=new][recent thread]] or [[https://www.reddit.com/message/compose/?to=manna_harbour][send a PM]]. | ||
| 859 | |||
| 860 | [[https://github.com/manna-harbour][https://raw.githubusercontent.com/manna-harbour/miryoku/master/manna-harbour-boa-32.png]] | ||
diff --git a/users/manna-harbour_miryoku/rules.mk b/users/manna-harbour_miryoku/rules.mk index a54616b47..ca135af07 100644 --- a/users/manna-harbour_miryoku/rules.mk +++ b/users/manna-harbour_miryoku/rules.mk | |||
| @@ -1,5 +1,16 @@ | |||
| 1 | # generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- | 1 | # generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- |
| 2 | 2 | ||
| 3 | MOUSEKEY_ENABLE = yes # Mouse keys(+4700) | 3 | MOUSEKEY_ENABLE = yes # Mouse keys |
| 4 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | 4 | EXTRAKEY_ENABLE = yes # Audio control and System control |
| 5 | LTO_ENABLE = yes | 5 | |
| 6 | SRC += manna-harbour_miryoku.c # keymap | ||
| 7 | |||
| 8 | # select alternative base layer alphas | ||
| 9 | ifneq ($(strip $(MIRYOKU_ALPHAS)),) | ||
| 10 | OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS) | ||
| 11 | endif | ||
| 12 | |||
| 13 | # select alternative subset mappings | ||
| 14 | ifneq ($(strip $(MIRYOKU_MAPPING)),) | ||
| 15 | OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING) | ||
| 16 | endif | ||
