diff options
| -rw-r--r-- | keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c | 17 | ||||
| -rw-r--r-- | layouts/community/ergodox/manna-harbour_miryoku/keymap.c | 21 | ||||
| -rw-r--r-- | layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c | 17 | ||||
| l--------- | users/manna-harbour_miryoku/README.org | 1 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/config.h | 13 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/manna-harbour_miryoku.c | 56 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/miryoku.org | 609 | ||||
| -rw-r--r-- | users/manna-harbour_miryoku/rules.mk | 5 |
8 files changed, 739 insertions, 0 deletions
diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000..56d4de25a --- /dev/null +++ b/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | |||
| 2 | // generated from users/manna-harbour_miryoku/miryoku.org | ||
| 3 | |||
| 4 | #define LAYOUT_miryoku( \ | ||
| 5 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ | ||
| 6 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ | ||
| 7 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ | ||
| 8 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ | ||
| 9 | ) \ | ||
| 10 | LAYOUT( \ | ||
| 11 | KC_NO, K00, K01, K02, K03, K04, 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, K25, K26, K27, K28, K29, KC_NO, \ | ||
| 14 | K32, K33, K34, K35, K36, K37 \ | ||
| 15 | ) | ||
| 16 | |||
| 17 | #include "manna-harbour_miryoku.c" | ||
diff --git a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000..86547df98 --- /dev/null +++ b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | |||
| 2 | // generated from users/manna-harbour_miryoku/miryoku.org | ||
| 3 | |||
| 4 | #define LAYOUT_miryoku(\ | ||
| 5 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 6 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 7 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 8 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 9 | )\ | ||
| 10 | LAYOUT_ergodox_pretty( \ | ||
| 11 | 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, \ | ||
| 12 | KC_NO, K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09, KC_NO, \ | ||
| 13 | KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ | ||
| 14 | KC_NO, K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29, KC_NO, \ | ||
| 15 | KC_NO, KC_NO, KC_NO, KC_NO, K32, K37, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 16 | KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 17 | KC_NO, KC_NO, \ | ||
| 18 | K33, K34, KC_NO, KC_NO, K35, K36 \ | ||
| 19 | ) | ||
| 20 | |||
| 21 | #include "manna-harbour_miryoku.c" | ||
diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000..b1341d41f --- /dev/null +++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | |||
| 2 | // generated from users/manna-harbour_miryoku/miryoku.org | ||
| 3 | |||
| 4 | #define LAYOUT_miryoku(\ | ||
| 5 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 6 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 7 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 8 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 9 | )\ | ||
| 10 | LAYOUT_ortho_4x12(\ | ||
| 11 | KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ | ||
| 12 | K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\ | ||
| 13 | K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ | ||
| 14 | K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ | ||
| 15 | ) | ||
| 16 | |||
| 17 | #include "manna-harbour_miryoku.c" | ||
diff --git a/users/manna-harbour_miryoku/README.org b/users/manna-harbour_miryoku/README.org new file mode 120000 index 000000000..b6caaade1 --- /dev/null +++ b/users/manna-harbour_miryoku/README.org | |||
| @@ -0,0 +1 @@ | |||
| miryoku.org \ No newline at end of file | |||
diff --git a/users/manna-harbour_miryoku/config.h b/users/manna-harbour_miryoku/config.h new file mode 100644 index 000000000..c3c513d06 --- /dev/null +++ b/users/manna-harbour_miryoku/config.h | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | |||
| 2 | // generated from users/manna-harbour_miryoku/miryoku.org | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | // Prevent normal rollover on alphas from accidentally triggering mods. | ||
| 7 | #define IGNORE_MOD_TAP_INTERRUPT | ||
| 8 | |||
| 9 | // Enable rapid switch from tap to hold, disables double tap hold auto-repeat. | ||
| 10 | #define TAPPING_FORCE_HOLD | ||
| 11 | |||
| 12 | // Recommended for heavy chording. | ||
| 13 | #define QMK_KEYS_PER_SCAN 4 | ||
diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.c b/users/manna-harbour_miryoku/manna-harbour_miryoku.c new file mode 100644 index 000000000..bb4770afc --- /dev/null +++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.c | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | |||
| 2 | // generated from users/manna-harbour_miryoku/miryoku.org | ||
| 3 | |||
| 4 | #include QMK_KEYBOARD_H | ||
| 5 | |||
| 6 | #define KC_NP KC_NO // key is not present | ||
| 7 | #define KC_NA KC_NO // present but not available for use | ||
| 8 | #define KC_NU KC_NO // available but not used | ||
| 9 | #define KC_RST RESET | ||
| 10 | |||
| 11 | enum layers { BASE, MEDR, NAVR, MOUR, NSSL, NSL, FUNL }; | ||
| 12 | |||
| 13 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 14 | [BASE] = LAYOUT_miryoku( | ||
| 15 | KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, | ||
| 16 | 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), | ||
| 17 | KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, | ||
| 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 | [NAVR] = LAYOUT_miryoku( | ||
| 21 | KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_AGIN, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, | ||
| 22 | KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, | ||
| 23 | KC_NA, KC_NA, KC_NA, KC_NA, KC_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, | ||
| 24 | KC_NP, KC_NP, KC_NA, KC_NA, KC_NA, KC_ENT, KC_BSPC, KC_DEL, KC_NP, KC_NP | ||
| 25 | ), | ||
| 26 | [MOUR] = LAYOUT_miryoku( | ||
| 27 | KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_NU, KC_NU, KC_NU, KC_NU, KC_NU, | ||
| 28 | KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_NU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, | ||
| 29 | KC_NA, KC_NA, KC_NA, KC_NA, KC_NA, KC_NU, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, | ||
| 30 | KC_NP, KC_NP, KC_NA, KC_NA, KC_NA, KC_BTN3, KC_BTN1, KC_BTN2, KC_NP, KC_NP | ||
| 31 | ), | ||
| 32 | [MEDR] = LAYOUT_miryoku( | ||
| 33 | 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_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, | ||
| 35 | KC_NA, KC_NA, KC_NA, KC_NA, KC_NA, KC_NU, KC_NU, KC_NU, KC_NU, KC_NU, | ||
| 36 | KC_NP, KC_NP, KC_NA, KC_NA, KC_NA, KC_MSTP, KC_MPLY, KC_MUTE, KC_NP, KC_NP | ||
| 37 | ), | ||
| 38 | [FUNL] = LAYOUT_miryoku( | ||
| 39 | KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_NA, KC_NA, KC_NA, KC_NA, KC_RST, | ||
| 40 | KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, KC_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, | ||
| 41 | KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_NA, KC_NA, KC_NA, KC_NA, KC_NA, | ||
| 42 | KC_NP, KC_NP, KC_APP, KC_SPC, KC_TAB, KC_NA, KC_NA, KC_NA, KC_NP, KC_NP | ||
| 43 | ), | ||
| 44 | [NSL] = LAYOUT_miryoku( | ||
| 45 | KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, KC_NA, KC_NA, KC_NA, KC_NA, KC_RST, | ||
| 46 | KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, KC_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, | ||
| 47 | KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, KC_NA, KC_NA, KC_NA, KC_NA, KC_NA, | ||
| 48 | KC_NP, KC_NP, KC_DOT, KC_0, KC_MINS, KC_NA, KC_NA, KC_NA, KC_NP, KC_NP | ||
| 49 | ), | ||
| 50 | [NSSL] = LAYOUT_miryoku( | ||
| 51 | KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, KC_NA, KC_NA, KC_NA, KC_NA, KC_RST, | ||
| 52 | KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, | ||
| 53 | KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_NA, KC_NA, KC_NA, KC_NA, KC_NA, | ||
| 54 | KC_NP, KC_NP, KC_GT, KC_RPRN, KC_UNDS, KC_NA, KC_NA, KC_NA, KC_NP, KC_NP | ||
| 55 | ) | ||
| 56 | }; | ||
diff --git a/users/manna-harbour_miryoku/miryoku.org b/users/manna-harbour_miryoku/miryoku.org new file mode 100644 index 000000000..556f95f60 --- /dev/null +++ b/users/manna-harbour_miryoku/miryoku.org | |||
| @@ -0,0 +1,609 @@ | |||
| 1 | #+Title: miryoku.org | ||
| 2 | |||
| 3 | The miryoku layout is an ergonomic, minimal, orthogonal layout for ergo or ortho | ||
| 4 | keyboards, implemented as part of the QMK firmware. The layout is maintained in | ||
| 5 | emacs org-mode tables and converted to QMK keymap data structures using embedded | ||
| 6 | python scripts. The layout is mapped onto keyboards with different physical | ||
| 7 | layouts as a subset without code duplication using the QMK userland feature and | ||
| 8 | C macros. Versions of the layout can also be seen outside of the QMK source at | ||
| 9 | [[https://github.com/manna-harbour/miryoku/]]. | ||
| 10 | |||
| 11 | * Contents | ||
| 12 | |||
| 13 | - [[#layout][Layout]] | ||
| 14 | - [[#code-generation][Code Generation]] | ||
| 15 | - [[#subset-mapping][Subset Mapping]] | ||
| 16 | |||
| 17 | |||
| 18 | * Layout | ||
| 19 | :PROPERTIES: | ||
| 20 | :CUSTOM_ID: layout | ||
| 21 | :END: | ||
| 22 | |||
| 23 | ** Info | ||
| 24 | |||
| 25 | *** General Principles | ||
| 26 | |||
| 27 | - Use layers instead of reaching. | ||
| 28 | - Use both hands instead of contortions. | ||
| 29 | - Use the home positions as much as possible. | ||
| 30 | - Make full use of the thumbs. | ||
| 31 | - Avoid unnecessary complication. | ||
| 32 | |||
| 33 | |||
| 34 | *** Specifics | ||
| 35 | |||
| 36 | - 5 columns, 3 rows, 3 thumb keys, 2 hands. | ||
| 37 | - Can be used on almost any split or non-split ergo or ortho keyboard. | ||
| 38 | - Includes all keys found on a US layout TKL keyboard, plus media keys and | ||
| 39 | mouse emulation. | ||
| 40 | - Home row is the middle row, home thumb key is the middle thumb key. | ||
| 41 | - Maximum 1-u movement from home position for fingers and thumbs, and only | ||
| 42 | along one axis (except for the inner index finger column which is | ||
| 43 | deprioritised compared with the home columns). | ||
| 44 | - Dual-function modifiers on home row, mirrored on both hands. | ||
| 45 | - Dual-function layer change on thumbs. | ||
| 46 | - Layers are designed orthogonally with a single purpose per hand and are | ||
| 47 | accessed by holding a thumb key on the opposite hand. | ||
| 48 | - Holding layer change and modifiers on one hand combined with a single key | ||
| 49 | press on the other hand can produce any combination of modifiers and | ||
| 50 | single keys without any finger contortions. | ||
| 51 | - Single function mods are also defined on layers on the same hand as the | ||
| 52 | layer change thumb key so layer change and mods can be held in any order | ||
| 53 | or simultaneously without race conditions. | ||
| 54 | - As mods are only enabled on the opposite hand, auto-repeat is available on | ||
| 55 | the home row on layers for use with cursor and mouse keys. | ||
| 56 | - Tap-hold auto-repeat is disabled to enable faster tap-hold switching on | ||
| 57 | thumbs but thumb tap keys are mirrored onto some layers for use with | ||
| 58 | auto-repeat. | ||
| 59 | |||
| 60 | |||
| 61 | ** Layers | ||
| 62 | |||
| 63 | The layers are maintained in tables, with the thumb keys on the bottom row. NP | ||
| 64 | indicates the key is not present and is used to fill in the table around the | ||
| 65 | thumb keys. The grid arrangement of the tables does not imply a particular | ||
| 66 | physical layout. | ||
| 67 | |||
| 68 | Basic keycodes are entered without the KC_ prefix. Symbols can be entered as-is | ||
| 69 | (excepting '"' (DQUO) and '|' (PIPE)). Empty cells are unused. | ||
| 70 | |||
| 71 | The base layer has both halves of the layout joined for convenience. Other | ||
| 72 | layers are specified as a single hand. | ||
| 73 | |||
| 74 | *** Base (BASE) | ||
| 75 | |||
| 76 | |||
| 77 | The base layer is maintained as separate tap and hold tables and are combined | ||
| 78 | into the corresponding tap-hold keycodes for mods and layer change. RST and | ||
| 79 | mods will be available on sub layers on the same hand as the layer change thumb | ||
| 80 | key. Unknown names are considered to be layer names. | ||
| 81 | |||
| 82 | Base layer alphas are Colemak DHm. Thumb keys are backspace, enter, delete on | ||
| 83 | the right and space, tab, escape on the left. Dot, comma and apostrophe are | ||
| 84 | included for prose, dot and slash for file and directory names. | ||
| 85 | |||
| 86 | #+NAME: tap | ||
| 87 | | Q | W | F | P | B | J | L | U | Y | ' | | ||
| 88 | | A | R | S | T | G | M | N | E | I | O | | ||
| 89 | | Z | X | C | D | V | K | H | , | . | / | | ||
| 90 | | NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | | ||
| 91 | |||
| 92 | #+NAME: hold | ||
| 93 | | RST | | | | | | | | | RST | | ||
| 94 | | LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI | | ||
| 95 | | | | | | | | | | | | | ||
| 96 | | NP | NP | MEDR | NAVR | MOUR | NSSL | NSL | FUNL | NP | NP | | ||
| 97 | |||
| 98 | |||
| 99 | *** Navigation (NAVR) | ||
| 100 | |||
| 101 | Primary right-hand layer (left home thumb) is navigation and editing. Cursor | ||
| 102 | keys are on the home position, line and page movement below, clipboard above, | ||
| 103 | caps and insert on the inner column. Thumb keys are duplicated from the base | ||
| 104 | layer to avoid having to layer change mid edit and to enable auto-repeat. | ||
| 105 | |||
| 106 | #+NAME: navr | ||
| 107 | | AGIN | UNDO | CUT | COPY | PSTE | | ||
| 108 | | CAPS | LEFT | DOWN | UP | RGHT | | ||
| 109 | | INS | HOME | PGDN | PGUP | END | | ||
| 110 | | ENT | BSPC | DEL | NP | NP | | ||
| 111 | |||
| 112 | |||
| 113 | *** Mouse (MOUR) | ||
| 114 | |||
| 115 | Secondary RH layer is mouse emulation. Mouse movement mirrors cursor navigation | ||
| 116 | on home and wheel mirrors line / page movement below. Buttons are on the | ||
| 117 | thumbs. Mouse movement, click, and drag with modifiers can be performed from | ||
| 118 | the home position. Unused keys are available for other related functions. | ||
| 119 | |||
| 120 | #+NAME: mour | ||
| 121 | | | | | | | | ||
| 122 | | | MS_L | MS_D | MS_U | MS_R | | ||
| 123 | | | WH_L | WH_D | WH_U | WH_R | | ||
| 124 | | BTN3 | BTN1 | BTN2 | NP | NP | | ||
| 125 | |||
| 126 | |||
| 127 | *** Media (MEDR) | ||
| 128 | |||
| 129 | Tertiary RH layer is media control, with volume up / down and next / prev | ||
| 130 | mirroring the navigation keys. Pause, stop and mute are on thumbs. Unused keys | ||
| 131 | are available for other related functions. | ||
| 132 | |||
| 133 | #+NAME: medr | ||
| 134 | | | | | | | | ||
| 135 | | | MPRV | VOLD | VOLU | MNXT | | ||
| 136 | | | | | | | | ||
| 137 | | MSTP | MPLY | MUTE | NP | NP | | ||
| 138 | |||
| 139 | |||
| 140 | *** Numerals and Symbols (NSL) | ||
| 141 | |||
| 142 | Primary left-hand layer (right home thumb) is numerals and symbols. Numerals | ||
| 143 | are in the standard numpad locations with symbols in the remaining positions. | ||
| 144 | Dot is duplicated from the base layer for convenience. | ||
| 145 | |||
| 146 | #+NAME: nsl | ||
| 147 | | [ | 7 | 8 | 9 | ] | | ||
| 148 | | ; | 4 | 5 | 6 | = | | ||
| 149 | | ` | 1 | 2 | 3 | \ | | ||
| 150 | | NP | NP | . | 0 | - | | ||
| 151 | |||
| 152 | |||
| 153 | *** Shifted Numerals and Symbols (NSSL) | ||
| 154 | |||
| 155 | Secondary LH layer has shifted symbols in the same locations to reduce chording | ||
| 156 | when using mods with shifted symbols. Automatically generated from unshifted | ||
| 157 | table. | ||
| 158 | |||
| 159 | |||
| 160 | *** Function and System (FUNL) | ||
| 161 | |||
| 162 | Tertiary LH layer has function keys mirroring the numerals on the primary layer | ||
| 163 | with extras on the pinkie column, plus system keys on the inner column. App | ||
| 164 | (menu) is on the tertiary thumb key and other thumb keys are duplicated from the | ||
| 165 | base layer to enable auto-repeat. | ||
| 166 | |||
| 167 | |||
| 168 | #+NAME: funl | ||
| 169 | | F12 | F7 | F8 | F9 | PSCR | | ||
| 170 | | F11 | F4 | F5 | F6 | SLCK | | ||
| 171 | | F10 | F1 | F2 | F3 | PAUS | | ||
| 172 | | NP | NP | APP | SPC | TAB | | ||
| 173 | |||
| 174 | |||
| 175 | *** COMMENT Templates | ||
| 176 | |||
| 177 | #+NAME: tem | ||
| 178 | | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | | ||
| 179 | |------+------+------+------+------+------+------+------+------+------| | ||
| 180 | | | | | | | | | | | | | ||
| 181 | | | | | | | | | | | | | ||
| 182 | | | | | | | | | | | | | ||
| 183 | | NP | NP | | | | | | | NP | NP | | ||
| 184 | |||
| 185 | |||
| 186 | Duplicate base layer tap keys on thumbs rather than trans to enable auto-repeat. | ||
| 187 | |||
| 188 | #+NAME: temr | ||
| 189 | | <l4> | <l4> | <l4> | <l4> | <l4> | | ||
| 190 | |------+------+------+------+------| | ||
| 191 | | | | | | | | ||
| 192 | | | | | | | | ||
| 193 | | | | | | | | ||
| 194 | | ENT | BSPC | DEL | NP | NP | | ||
| 195 | |||
| 196 | #+NAME: teml | ||
| 197 | | <l4> | <l4> | <l4> | <l4> | <l4> | | ||
| 198 | |------+------+------+------+------| | ||
| 199 | | | | | | | | ||
| 200 | | | | | | | | ||
| 201 | | | | | | | | ||
| 202 | | NP | NP | ESC | SPC | TAB | | ||
| 203 | |||
| 204 | |||
| 205 | * Code Generation | ||
| 206 | :PROPERTIES: | ||
| 207 | :CUSTOM_ID: code-generation | ||
| 208 | :END: | ||
| 209 | |||
| 210 | ** Table Conversion Scripts | ||
| 211 | |||
| 212 | *** table-layout-taphold | ||
| 213 | |||
| 214 | Produce base layer from separate tap and hold tables. | ||
| 215 | |||
| 216 | #+NAME: table-layout-taphold | ||
| 217 | #+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 | ||
| 218 | width = 19 | ||
| 219 | mods_dict = dict.fromkeys(mods_list) | ||
| 220 | symbol_names_dict = {} | ||
| 221 | for symbol, name, shifted_symbol, shifted_name in symbol_names_table: | ||
| 222 | symbol_names_dict[symbol] = name | ||
| 223 | symbol_names_dict[shifted_symbol] = shifted_name | ||
| 224 | results = ' [BASE] = LAYOUT_miryoku(\n' | ||
| 225 | for tap_row, hold_row in map(None, tap_table, hold_table): | ||
| 226 | results += ' ' | ||
| 227 | for tap, hold in map(None, tap_row, hold_row): | ||
| 228 | if tap == '': | ||
| 229 | code = 'NU' | ||
| 230 | elif tap in symbol_names_dict: | ||
| 231 | code = symbol_names_dict[tap] | ||
| 232 | else: | ||
| 233 | code = tap | ||
| 234 | code = 'KC_' + str(code) | ||
| 235 | if hold in mods_dict: | ||
| 236 | code = str(hold) + '_T(' + code + ')' | ||
| 237 | elif hold != '' and hold != 'NP' and hold != 'RST': | ||
| 238 | code = 'LT(' + str(hold) + ', ' + code + ')' | ||
| 239 | results += (code + ', ').ljust(width) | ||
| 240 | results = results.rstrip(' ') + '\n' | ||
| 241 | results = results.rstrip('\n, ') + '\n )' | ||
| 242 | return results | ||
| 243 | #+END_SRC | ||
| 244 | |||
| 245 | #+RESULTS: table-layout-taphold | ||
| 246 | : [BASE] = LAYOUT_miryoku( | ||
| 247 | : KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, | ||
| 248 | : 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), | ||
| 249 | : KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, | ||
| 250 | : 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 | ||
| 251 | : ) | ||
| 252 | |||
| 253 | |||
| 254 | *** table-layout-half | ||
| 255 | |||
| 256 | Produce sub layers given layer name and corresponding table for single hand and | ||
| 257 | incorporating mods and reset from base layer. Layer names must end with R or L. | ||
| 258 | A layer with shifted symbols can also be generated. | ||
| 259 | |||
| 260 | #+NAME: table-layout-half | ||
| 261 | #+BEGIN_SRC python :var hold_table=hold :var layer_name="NSL" :var half_table=nsl :var symbol_names_table=symbol-names :var mods_list=mods :var shift="false" :tangle no :results verbatim | ||
| 262 | width = 9 | ||
| 263 | mods_dict = dict.fromkeys(mods_list) | ||
| 264 | symbol_names_dict = {} | ||
| 265 | shifted_symbol_names_dict = {} | ||
| 266 | for symbol, name, shifted_symbol, shifted_name in symbol_names_table: | ||
| 267 | symbol_names_dict[symbol] = name | ||
| 268 | symbol_names_dict[shifted_symbol] = shifted_name | ||
| 269 | shifted_symbol_names_dict[symbol] = shifted_name | ||
| 270 | length = len(half_table[0]) | ||
| 271 | mode = layer_name[-1:].lower() | ||
| 272 | results = ' [' + layer_name + '] = LAYOUT_miryoku(\n' | ||
| 273 | for half_row, hold_row in map(None, half_table, hold_table): | ||
| 274 | results += ' ' | ||
| 275 | hold_row_l, hold_row_r = hold_row[:length], hold_row[length:] | ||
| 276 | for lr, hold_row_lr in ('l', hold_row_l), ('r', hold_row_r): | ||
| 277 | if lr == mode: | ||
| 278 | for half in half_row: | ||
| 279 | if half == '': | ||
| 280 | code = 'NU' | ||
| 281 | elif shift == "true" and half in shifted_symbol_names_dict: | ||
| 282 | code = shifted_symbol_names_dict[half] | ||
| 283 | elif half in symbol_names_dict: | ||
| 284 | code = symbol_names_dict[half] | ||
| 285 | else: | ||
| 286 | code = half | ||
| 287 | results += ('KC_' + str(code) + ', ').ljust(width) | ||
| 288 | else: | ||
| 289 | for hold in hold_row_lr: | ||
| 290 | if hold == '' or hold != 'NP' and hold != 'RST' and hold not in mods_dict: | ||
| 291 | code = 'NA' | ||
| 292 | else: | ||
| 293 | code = hold | ||
| 294 | results += ('KC_' + str(code) + ', ').ljust(width) | ||
| 295 | results = results.rstrip(' ') + '\n' | ||
| 296 | results = results.rstrip('\n, ') + '\n )' | ||
| 297 | return results | ||
| 298 | #+END_SRC | ||
| 299 | |||
| 300 | #+RESULTS: table-layout-half | ||
| 301 | : [NSL] = LAYOUT_miryoku( | ||
| 302 | : KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, KC_NA, KC_NA, KC_NA, KC_NA, KC_RST, | ||
| 303 | : KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, KC_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, | ||
| 304 | : KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, KC_NA, KC_NA, KC_NA, KC_NA, KC_NA, | ||
| 305 | : KC_NP, KC_NP, KC_DOT, KC_0, KC_MINS, KC_NA, KC_NA, KC_NA, KC_NP, KC_NP | ||
| 306 | : ) | ||
| 307 | |||
| 308 | |||
| 309 | *** table-enums | ||
| 310 | |||
| 311 | Produce layer enums from layer names in hold table. | ||
| 312 | |||
| 313 | #+NAME: table-enums | ||
| 314 | #+BEGIN_SRC python :var hold_table=hold :var mods_list=mods :tangle no | ||
| 315 | mods_dict = dict.fromkeys(mods_list) | ||
| 316 | results = 'enum layers { BASE, ' | ||
| 317 | for hold_row in hold_table: | ||
| 318 | for hold in hold_row: | ||
| 319 | if hold not in mods_dict and hold != '' and hold != 'NP' and hold != 'RST': | ||
| 320 | results += hold + ', ' | ||
| 321 | results = results.rstrip(', ') + ' };' | ||
| 322 | return results | ||
| 323 | #+END_SRC | ||
| 324 | |||
| 325 | #+RESULTS: table-enums | ||
| 326 | : enum layers { BASE, MEDR, NAVR, MOUR, NSSL, NSL, FUNL }; | ||
| 327 | |||
| 328 | |||
| 329 | ** Data | ||
| 330 | |||
| 331 | *** symbol-names | ||
| 332 | |||
| 333 | Symbol, name, and shifted symbol mappings for use in tables. | ||
| 334 | |||
| 335 | #+NAME: symbol-names | ||
| 336 | | ` | GRV | ~ | TILD | | ||
| 337 | | - | MINS | _ | UNDS | | ||
| 338 | | = | EQL | + | PLUS | | ||
| 339 | | [ | LBRC | { | LCBR | | ||
| 340 | | ] | RBRC | } | RCBR | | ||
| 341 | | \ | BSLS | PIPE | PIPE | | ||
| 342 | | ; | SCLN | : | COLN | | ||
| 343 | | ' | QUOT | DQUO | DQUO | | ||
| 344 | | , | COMM | < | LT | | ||
| 345 | | . | DOT | > | GT | | ||
| 346 | | / | SLSH | ? | QUES | | ||
| 347 | | 1 | 1 | ! | EXLM | | ||
| 348 | | 2 | 2 | @ | AT | | ||
| 349 | | 3 | 3 | # | HASH | | ||
| 350 | | 4 | 4 | $ | DLR | | ||
| 351 | | 5 | 5 | % | PERC | | ||
| 352 | | 6 | 6 | ^ | CIRC | | ||
| 353 | | 7 | 7 | & | AMPR | | ||
| 354 | | 8 | 8 | * | ASTR | | ||
| 355 | | 9 | 9 | ( | LPRN | | ||
| 356 | | 0 | 0 | ) | RPRN | | ||
| 357 | |||
| 358 | |||
| 359 | *** mods | ||
| 360 | |||
| 361 | Modifiers usable in hold table. Need to have the same name for KC_ and _T versions. | ||
| 362 | |||
| 363 | #+NAME: mods | ||
| 364 | - LSFT | ||
| 365 | - LCTL | ||
| 366 | - LALT | ||
| 367 | - LGUI | ||
| 368 | - LAGR | ||
| 369 | |||
| 370 | |||
| 371 | ** Other | ||
| 372 | |||
| 373 | *** header | ||
| 374 | |||
| 375 | Header for tangled src files. | ||
| 376 | |||
| 377 | #+NAME: header | ||
| 378 | #+BEGIN_SRC C :tangle no | ||
| 379 | generated from users/manna-harbour_miryoku/miryoku.org | ||
| 380 | #+END_SRC | ||
| 381 | |||
| 382 | |||
| 383 | * Subset Mapping | ||
| 384 | :PROPERTIES: | ||
| 385 | :CUSTOM_ID: subset-mapping | ||
| 386 | :END: | ||
| 387 | |||
| 388 | ** Userspace | ||
| 389 | |||
| 390 | The keymap and configuration are shared between keyboards. The keymap is | ||
| 391 | defined for LAYOUT_miryoku which is 10x4, with the outer 2 positions on the | ||
| 392 | bottom row unused and the rest of the bottom row are the thumb keys. | ||
| 393 | |||
| 394 | |||
| 395 | *** manna-harbour_miryoku.c | ||
| 396 | |||
| 397 | Contains the keymap. Included from keymap.c | ||
| 398 | |||
| 399 | [[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]] | ||
| 400 | #+BEGIN_SRC C :noweb yes :tangle manna-harbour_miryoku.c | ||
| 401 | |||
| 402 | // <<header>> | ||
| 403 | |||
| 404 | #include QMK_KEYBOARD_H | ||
| 405 | |||
| 406 | #define KC_NP KC_NO // key is not present | ||
| 407 | #define KC_NA KC_NO // present but not available for use | ||
| 408 | #define KC_NU KC_NO // available but not used | ||
| 409 | #define KC_RST RESET | ||
| 410 | |||
| 411 | <<table-enums()>> | ||
| 412 | |||
| 413 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 414 | <<table-layout-taphold()>>, | ||
| 415 | <<table-layout-half(layer_name="NAVR", half_table=navr)>>, | ||
| 416 | <<table-layout-half(layer_name="MOUR", half_table=mour)>>, | ||
| 417 | <<table-layout-half(layer_name="MEDR", half_table=medr)>>, | ||
| 418 | <<table-layout-half(layer_name="FUNL", half_table=funl)>>, | ||
| 419 | <<table-layout-half(layer_name="NSL", half_table=nsl)>>, | ||
| 420 | <<table-layout-half(layer_name="NSSL", half_table=nsl, shift="true")>> | ||
| 421 | }; | ||
| 422 | #+END_SRC | ||
| 423 | |||
| 424 | |||
| 425 | *** config.h | ||
| 426 | |||
| 427 | Config options. Automatically included. | ||
| 428 | |||
| 429 | [[./config.h][users/manna-harbour_miryoku/config.h]] | ||
| 430 | #+BEGIN_SRC C :noweb yes :tangle config.h | ||
| 431 | |||
| 432 | // <<header>> | ||
| 433 | |||
| 434 | #pragma once | ||
| 435 | |||
| 436 | // Prevent normal rollover on alphas from accidentally triggering mods. | ||
| 437 | #define IGNORE_MOD_TAP_INTERRUPT | ||
| 438 | |||
| 439 | // Enable rapid switch from tap to hold, disables double tap hold auto-repeat. | ||
| 440 | #define TAPPING_FORCE_HOLD | ||
| 441 | |||
| 442 | // Recommended for heavy chording. | ||
| 443 | #define QMK_KEYS_PER_SCAN 4 | ||
| 444 | |||
| 445 | #+END_SRC | ||
| 446 | |||
| 447 | |||
| 448 | *** rules.mk | ||
| 449 | |||
| 450 | Build options. Automatically included. | ||
| 451 | |||
| 452 | [[./rules.mk][users/manna-harbour_miryoku/rules.mk]] | ||
| 453 | #+BEGIN_SRC makefile :noweb yes :tangle rules.mk | ||
| 454 | |||
| 455 | # <<header>> | ||
| 456 | |||
| 457 | MOUSEKEY_ENABLE = yes # Mouse keys(+4700) | ||
| 458 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
| 459 | |||
| 460 | #+END_SRC | ||
| 461 | |||
| 462 | |||
| 463 | ** Layouts | ||
| 464 | |||
| 465 | To use the keymap on a keyboard supporting the layouts feature, LAYOUT_miryoku | ||
| 466 | is defined as a macro mapping onto the layout's own LAYOUT macro, leaving the | ||
| 467 | unused keys as KC_NO. The userspace keymap is then included. | ||
| 468 | |||
| 469 | *** ergodox | ||
| 470 | |||
| 471 | For the ergodox layout, the main 5x3 alphas are used as usual. The primary and | ||
| 472 | secondary thumb keys are the inner and outer 2u thumb keys and the tertiary | ||
| 473 | thumb key is the innermost key of the partial bottom row. The remaining keys | ||
| 474 | are unused. | ||
| 475 | |||
| 476 | [[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]] | ||
| 477 | #+BEGIN_SRC C :noweb yes :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c | ||
| 478 | |||
| 479 | // <<header>> | ||
| 480 | |||
| 481 | #define LAYOUT_miryoku(\ | ||
| 482 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 483 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 484 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 485 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 486 | )\ | ||
| 487 | LAYOUT_ergodox_pretty( \ | ||
| 488 | 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, \ | ||
| 489 | KC_NO, K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09, KC_NO, \ | ||
| 490 | KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ | ||
| 491 | KC_NO, K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29, KC_NO, \ | ||
| 492 | KC_NO, KC_NO, KC_NO, KC_NO, K32, K37, KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 493 | KC_NO, KC_NO, KC_NO, KC_NO, \ | ||
| 494 | KC_NO, KC_NO, \ | ||
| 495 | K33, K34, KC_NO, KC_NO, K35, K36 \ | ||
| 496 | ) | ||
| 497 | |||
| 498 | #include "manna-harbour_miryoku.c" | ||
| 499 | |||
| 500 | #+END_SRC | ||
| 501 | |||
| 502 | To build for any keyboard using the this layout (ergodone, ergodox_ez, | ||
| 503 | ergodox_infinity, hotdox) e.g. the ergodox_ez, | ||
| 504 | |||
| 505 | #+BEGIN_SRC sh :tangle no | ||
| 506 | cd ../.. && make ergodox_ez:manna-harbour_miryoku:teensy | ||
| 507 | #+END_SRC | ||
| 508 | |||
| 509 | |||
| 510 | |||
| 511 | *** ortho_4x12 | ||
| 512 | |||
| 513 | For the ortho_4x12 layout, the right half as is as follows: The rightmost column | ||
| 514 | bottom 3 rows is the pinkie column. The middle 4 columns top 3 rows are for the | ||
| 515 | remaining fingers. The bottom row left 3 columns are the thumb keys. The | ||
| 516 | remaining keys are unused. | ||
| 517 | |||
| 518 | [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]] | ||
| 519 | #+BEGIN_SRC C :noweb yes :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c | ||
| 520 | |||
| 521 | // <<header>> | ||
| 522 | |||
| 523 | #define LAYOUT_miryoku(\ | ||
| 524 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ | ||
| 525 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ | ||
| 526 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ | ||
| 527 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ | ||
| 528 | )\ | ||
| 529 | LAYOUT_ortho_4x12(\ | ||
| 530 | KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ | ||
| 531 | K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\ | ||
| 532 | K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ | ||
| 533 | K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ | ||
| 534 | ) | ||
| 535 | |||
| 536 | #include "manna-harbour_miryoku.c" | ||
| 537 | |||
| 538 | #+END_SRC | ||
| 539 | |||
| 540 | To build for any keyboard using this layout (4x4, nori, chimera_ls, contra, | ||
| 541 | divergetm2, jj40, lets_split, lets_split_eh, meira, niu_mini, planck, telophase, | ||
| 542 | vitamins_included, zinc, zlant, ortho48, kbd4x, levinson, wavelet, plaid) | ||
| 543 | e.g. the levinson, | ||
| 544 | |||
| 545 | #+BEGIN_SRC sh :tangle no | ||
| 546 | make keebio/levinson:manna-harbour_miryoku:avrdude | ||
| 547 | #+END_SRC | ||
| 548 | |||
| 549 | |||
| 550 | ** Keyboards | ||
| 551 | |||
| 552 | To use the keymap on a keyboard which does not support the layouts feature, | ||
| 553 | LAYOUT_miryoku is defined as a macro mapping onto the keyboard's own LAYOUT | ||
| 554 | macro, leaving the unused keys as KC_NO. The userspace keymap is then included. | ||
| 555 | |||
| 556 | |||
| 557 | *** crkbd | ||
| 558 | |||
| 559 | The outer columns are unused. | ||
| 560 | |||
| 561 | [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c][keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c]] | ||
| 562 | #+BEGIN_SRC C :noweb yes :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c | ||
| 563 | |||
| 564 | // <<header>> | ||
| 565 | |||
| 566 | #define LAYOUT_miryoku( \ | ||
| 567 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ | ||
| 568 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ | ||
| 569 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ | ||
| 570 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ | ||
| 571 | ) \ | ||
| 572 | LAYOUT( \ | ||
| 573 | KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \ | ||
| 574 | KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ | ||
| 575 | KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ | ||
| 576 | K32, K33, K34, K35, K36, K37 \ | ||
| 577 | ) | ||
| 578 | |||
| 579 | #include "manna-harbour_miryoku.c" | ||
| 580 | |||
| 581 | #+END_SRC | ||
| 582 | |||
| 583 | To build for this keyboard, | ||
| 584 | |||
| 585 | #+BEGIN_SRC sh :tangle no | ||
| 586 | cd ../.. && make crkbd:manna-harbour_miryoku:avrdude | ||
| 587 | #+END_SRC | ||
| 588 | |||
| 589 | |||
| 590 | * Related Documentation | ||
| 591 | |||
| 592 | ** QMK | ||
| 593 | |||
| 594 | - https://qmk.fm/ | ||
| 595 | - https://docs.qmk.fm/#/getting_started_introduction | ||
| 596 | - https://docs.qmk.fm/#/hardware_keyboard_guidelines | ||
| 597 | - https://docs.qmk.fm/#/config_options | ||
| 598 | - https://docs.qmk.fm/#/keycodes | ||
| 599 | - https://docs.qmk.fm/#/feature_advanced_keycodes | ||
| 600 | - https://docs.qmk.fm/#/feature_layouts | ||
| 601 | - https://docs.qmk.fm/#/feature_userspace | ||
| 602 | - https://docs.qmk.fm/#/getting_started_make_guide | ||
| 603 | |||
| 604 | |||
| 605 | ** Org Mode | ||
| 606 | |||
| 607 | - https://orgmode.org/ | ||
| 608 | - https://orgmode.org/manual/Tables.html | ||
| 609 | - https://orgmode.org/manual/Working-with-Source-Code.html | ||
diff --git a/users/manna-harbour_miryoku/rules.mk b/users/manna-harbour_miryoku/rules.mk new file mode 100644 index 000000000..baff1431f --- /dev/null +++ b/users/manna-harbour_miryoku/rules.mk | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | |||
| 2 | # generated from users/manna-harbour_miryoku/miryoku.org | ||
| 3 | |||
| 4 | MOUSEKEY_ENABLE = yes # Mouse keys(+4700) | ||
| 5 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
