Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout. Miryoku Babel generates the layer data source files for Miryoku implementations from a single source.
This document describes Miryoku Babel only. For Miryoku documentation, implementations, and discussions and support, see Miryoku.
Emacs is an extensible text editor. Org is an emacs mode for structured text. Babel is org’s ability to execute source code from within org documents. This org document uses babel to generate the layer data source files for Miryoku implementations.
Layers and alternative layouts are maintained in org tables. The tables are tangled into source files via python scripts and additional data tables.
Changes to Miryoku layers can be made with convenient org table editing commands.
For those not using emacs, changes can also be made in any editor and the tangling can be performed from the shell or via a GitHub actions workflow.
The scripts can also be used by other layouts to generated multi-firmware keymaps from a single source.
Emacs, python, and org 9.4 or later are required.
Add the following to your emacs initialisation file:
(require 'ob-python)
(setq org-confirm-babel-evaluate nil)
(setq python-indent-guess-indent-offset-verbose nil)
Call org-babel-tangle
(C-c
C-v
t
).
See the Install Org and Tangle steps in .github/workflows/main.yml for example shell commands that can be run locally.
Log in to GitHub, fork the Miryoku Babel repository, and enable workflows.
The Test workflow is not applicable when using the Build workflow and should be prevented from running on push by deleting the push line in .github/workflows/test.yml.
Visit the Actions tab, select the Build workflow, select Run workflow, select the Branch if desired, activate Run workflow, select the Artifacts, and unzip the downloaded zip file.
The layers are maintained in tables. U_NP
indicates the key is not present and is used to fill in the table around the thumb keys.
Basic keycodes are entered without a common prefix. Symbols can be entered as-is, except for ‘-’ (MINS
), ‘.’ (DOT
), ‘|’ (PIPE
), and ‘”’ (DQUO
). Empty cells are unused.
The base layer is maintained as separate tables for tap alphas, tap thumbs, and hold. Other layers are specified as a single hand including thumbs. Tables are combined to produce the keymap data for each layer.
Q | W | F | P | B | J | L | U | Y | ’ |
A | R | S | T | G | M | N | E | I | O |
Z | X | C | D | V | K | H | , | DOT | / |
U_NP | U_NP | ESC | SPC | TAB | ENT | BSPC | DEL | U_NP | U_NP |
BOOT | DF(U_TAP) | DF(U_EXTRA) | DF(U_BASE) | DF(U_BASE) | DF(U_EXTRA) | DF(U_TAP) | BOOT | ||
LGUI | LALT | LCTL | LSFT | LSFT | LCTL | LALT | LGUI | ||
U_BUTTON | ALGR | LOCK_OPP | LOCK_CUR | LOCK_CUR | LOCK_OPP | ALGR | U_BUTTON | ||
U_NP | U_NP | U_MEDIA | U_NAV | U_MOUSE | U_SYM | U_NUM | U_FUN | U_NP | U_NP |
U_RDO | U_PST | U_CPY | U_CUT | U_UND |
CPSWRD | LEFT | DOWN | UP | RGHT |
INS | HOME | PGDN | PGUP | END |
ENT | BSPC | DEL | U_NP | U_NP |
U_RDO | U_PST | U_CPY | U_CUT | U_UND |
MS_L | MS_D | MS_U | MS_R | |
WH_L | WH_D | WH_U | WH_R | |
BTN2 | BTN1 | BTN3 | U_NP | U_NP |
U_UND | U_CUT | U_CPY | U_PST | U_RDO | U_RDO | U_PST | U_CPY | U_CUT | U_UND |
LGUI | LALT | LCTL | LSFT | LSFT | LCTL | LALT | LGUI | ||
U_UND | U_CUT | U_CPY | U_PST | U_RDO | U_RDO | U_PST | U_CPY | U_CUT | U_UND |
U_NP | U_NP | BTN3 | BTN1 | BTN2 | BTN2 | BTN1 | BTN3 | U_NP | U_NP |
RGB_TOG | RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI |
EP_TOG | MPRV | VOLD | VOLU | MNXT |
OUT_TOG | BT_SEL_0 | BT_SEL_1 | BT_SEL_2 | BT_SEL_3 |
MSTP | MPLY | MUTE | U_NP | U_NP |
[ | 7 | 8 | 9 | ] |
; | 4 | 5 | 6 | = |
` | 1 | 2 | 3 | \ |
U_NP | U_NP | DOT | 0 | MINS |
{ | & | * | ( | } |
: | $ | % | ^ | + |
~ | ! | @ | # | PIPE |
U_NP | U_NP | ( | ) | _ |
F12 | F7 | F8 | F9 | PSCR |
F11 | F4 | F5 | F6 | SLCK |
F10 | F1 | F2 | F3 | PAUS |
U_NP | U_NP | APP | SPC | TAB |
MIRYOKU_ALPHAS=AZERTY
A | Z | E | R | T | Y | U | I | O | P |
Q | S | D | F | G | H | J | K | L | M |
W | X | C | V | B | N | , | DOT | / | ’ |
MIRYOKU_ALPHAS=BEAKL15
Q | H | O | U | X | G | C | R | F | Z |
Y | I | E | A | DOT | D | S | T | N | B |
J | / | , | K | ’ | W | M | L | P | V |
MIRYOKU_ALPHAS=COLEMAK
Q | W | F | P | G | J | L | U | Y | ’ |
A | R | S | T | D | H | N | E | I | O |
Z | X | C | V | B | K | M | , | DOT | / |
MIRYOKU_ALPHAS=COLEMAKDHK
Q | W | F | P | B | J | L | U | Y | ’ |
A | R | S | T | G | K | N | E | I | O |
Z | X | C | D | V | M | H | , | DOT | / |
MIRYOKU_ALPHAS=DVORAK
‘ | , | DOT | P | Y | F | G | C | R | L |
A | O | E | U | I | D | H | T | N | S |
/ | Q | J | K | X | B | M | W | V | Z |
MIRYOKU_ALPHAS=HALMAK
W | L | R | B | Z | ’ | Q | U | D | J |
S | H | N | T | , | DOT | A | E | O | I |
F | M | V | C | / | G | P | X | K | Y |
MIRYOKU_ALPHAS=WORKMAN
Q | D | R | W | B | J | F | U | P | ’ |
A | S | H | T | G | Y | N | E | O | I |
Z | X | M | C | V | K | L | , | DOT | / |
MIRYOKU_ALPHAS=QWERTY
Q | W | E | R | T | Y | U | I | O | P |
A | S | D | F | G | H | J | K | L | ’ |
Z | X | C | V | B | N | M | , | DOT | / |
MIRYOKU_ALPHAS=QWERTZ
Q | W | E | R | T | Z | U | I | O | P |
A | S | D | F | G | H | J | K | L | ’ |
Y | X | C | V | B | N | M | , | DOT | / |
MIRYOKU_NAV=VI
Not available with MIRYOKU_LAYERS=FLIP
.
U_RDO | U_PST | U_CPY | U_CUT | U_UND |
LEFT | DOWN | UP | RGHT | CPSWRD |
HOME | PGDN | PGUP | END | INS |
ENT | BSPC | DEL | U_NP | U_NP |
U_RDO | U_PST | U_CPY | U_CUT | U_UND |
MS_L | MS_D | MS_U | MS_R | |
WH_L | WH_D | WH_U | WH_R | |
BTN2 | BTN1 | BTN3 | U_NP | U_NP |
RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | RGB_TOG |
MPRV | VOLD | VOLU | MNXT | EP_TOG |
BT_SEL_0 | BT_SEL_1 | BT_SEL_2 | BT_SEL_3 | OUT_TOG |
MSTP | MPLY | MUTE | U_NP | U_NP |
MIRYOKU_NAV=INVERTEDT
INS | HOME | UP | END | PGUP |
CPSWRD | LEFT | DOWN | RGHT | PGDN |
U_RDO | U_PST | U_CPY | U_CUT | U_UND |
ENT | BSPC | DEL | U_NP | U_NP |
WH_L | MS_U | WH_R | WH_U | |
MS_L | MS_D | MS_R | WH_D | |
U_RDO | U_PST | U_CPY | U_CUT | U_UND |
BTN2 | BTN1 | BTN3 | U_NP | U_NP |
RGB_TOG | RGB_MOD | VOLU | RGB_HUI | RGB_SAI |
EP_TOG | MPRV | VOLD | MNXT | RGB_VAI |
OUT_TOG | BT_SEL_0 | BT_SEL_1 | BT_SEL_2 | BT_SEL_3 |
MSTP | MPLY | MUTE | U_NP | U_NP |
MIRYOKU_LAYERS=FLIP
U_NP | U_NP | DEL | BSPC | ENT | TAB | SPC | ESC | U_NP | U_NP |
BOOT | DF(U_TAP) | DF(U_EXTRA) | DF(U_BASE) | DF(U_BASE) | DF(U_EXTRA) | DF(U_TAP) | BOOT | ||
LGUI | LALT | LCTL | LSFT | LSFT | LCTL | LALT | LGUI | ||
U_BUTTON | ALGR | LOCK_OPP | LOCK_CUR | LOCK_CUR | LOCK_OPP | ALGR | U_BUTTON | ||
U_NP | U_NP | U_FUN | U_NUM | U_SYM | U_MOUSE | U_NAV | U_MEDIA | U_NP | U_NP |
[ | 7 | 8 | 9 | ] |
= | 4 | 5 | 6 | ; |
\ | 1 | 2 | 3 | ` |
MINS | 0 | DOT | U_NP | U_NP |
{ | & | * | ( | } |
+ | $ | % | ^ | : |
PIPE | ! | @ | # | ~ |
_ | ( | ) | U_NP | U_NP |
PSCR | F7 | F8 | F9 | F12 |
SLCK | F4 | F5 | F6 | F11 |
PAUS | F1 | F2 | F3 | F10 |
TAB | SPC | APP | U_NP | U_NP |
HOME | PGDN | PGUP | END | INS |
LEFT | DOWN | UP | RGHT | CPSWRD |
U_UND | U_CUT | U_CPY | U_PST | U_RDO |
U_NP | U_NP | DEL | BSPC | ENT |
WH_L | WH_D | WH_U | WH_R | |
MS_L | MS_D | MS_U | MS_R | |
U_UND | U_CUT | U_CPY | U_PST | U_RDO |
U_NP | U_NP | BTN3 | BTN1 | BTN2 |
RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | RGB_TOG |
MPRV | VOLD | VOLU | MNXT | EP_TOG |
BT_SEL_0 | BT_SEL_1 | BT_SEL_2 | BT_SEL_3 | OUT_TOG |
U_NP | U_NP | MUTE | MPLY | MSTP |
MIRYOKU_NAV=INVERTEDT
PGUP | HOME | UP | END | INS |
PGDN | LEFT | DOWN | RGHT | CPSWRD |
U_UND | U_CUT | U_CPY | U_PST | U_RDO |
U_NP | U_NP | DEL | BSPC | ENT |
WH_U | WH_L | MS_U | WH_R | |
WH_D | MS_L | MS_D | MS_R | |
U_UND | U_CUT | U_CPY | U_PST | U_RDO |
U_NP | U_NP | BTN3 | BTN1 | BTN2 |
RGB_HUI | RGB_SAI | VOLU | RGB_VAI | RGB_TOG |
RGB_MOD | MPRV | VOLD | MNXT | EP_TOG |
BT_SEL_0 | BT_SEL_1 | BT_SEL_2 | BT_SEL_3 | OUT_TOG |
U_NP | U_NP | MUTE | MPLY | MSTP |
U_BASE | Base |
U_EXTRA | Extra |
U_TAP | Tap |
U_BUTTON | Button |
U_NAV | Nav |
U_MOUSE | Mouse |
U_MEDIA | Media |
U_NUM | Num |
U_SYM | Sym |
U_FUN | Fun |
Symbol to name mappings for use in tables.
` | GRV |
”-” | MINS |
= | EQL |
[ | LBRC |
] | RBRC |
\ | BSLS |
; | SCLN |
‘ | QUOT |
, | COMM |
”.” | DOT |
/ | SLSH |
~ | TILD |
_ | UNDS |
+ | PLUS |
{ | LCBR |
} | RCBR |
: | COLN |
< | LT |
> | GT |
? | QUES |
! | EXLM |
@ | AT |
# | HASH |
$ | DLR |
% | PERC |
^ | CIRC |
& | AMPR |
* | ASTR |
( | LPRN |
) | RPRN |
Shifted mappings for use in tables.
GRV | TILD |
MINS | UNDS |
EQL | PLUS |
LBRC | LCBR |
RBRC | RCBR |
BSLS | PIPE |
SCLN | COLN |
QUOT | DQUO |
COMM | LT |
DOT | GT |
SLSH | QUES |
1 | EXLM |
2 | AT |
3 | HASH |
4 | DLR |
5 | PERC |
6 | CIRC |
7 | AMPR |
8 | ASTR |
9 | LPRN |
0 | RPRN |
BT_SEL_0 | BT_CLR_0 |
BT_SEL_1 | BT_CLR_1 |
BT_SEL_2 | BT_CLR_2 |
BT_SEL_3 | BT_CLR_3 |
BT_SEL_4 | BT_CLR_4 |
CPSWRD | CAPS |
EP_TOG | EP_OFF |
OUT_TOG | OUT_USB |
RGB_HUI | RGB_HUD |
RGB_MOD | RGB_RMOD |
RGB_SAI | RGB_SAD |
RGB_TOG | RGB_OFF |
RGB_VAI | RGB_VAD |
Modifiers usable in hold table. Need to have the same name for KC_
and _T
versions.
LSFT | LCTL | LALT | LGUI | ALGR |
Source keycode to implementation equivalent (source, QMK, ZMK, KMonad, SVG, KMK).
A | A | A | a | A | A |
B | B | B | b | B | B |
C | C | C | c | C | C |
D | D | D | d | D | D |
E | E | E | e | E | E |
F | F | F | f | F | F |
G | G | G | g | G | G |
H | H | H | h | H | H |
I | I | I | i | I | I |
J | J | J | j | J | J |
K | K | K | k | K | K |
L | L | L | l | L | L |
M | M | M | m | M | M |
N | N | N | n | N | N |
O | O | O | o | O | O |
P | P | P | p | P | P |
Q | Q | Q | q | Q | Q |
R | R | R | r | R | R |
S | S | S | s | S | S |
T | T | T | t | T | T |
U | U | U | u | U | U |
V | V | V | v | V | V |
W | W | W | w | W | W |
X | X | X | x | X | X |
Y | Y | Y | y | Y | Y |
Z | Z | Z | z | Z | Z |
0 | 0 | N0 | 0 | 0 | N0 |
1 | 1 | N1 | 1 | 1 | N1 |
2 | 2 | N2 | 2 | 2 | N2 |
3 | 3 | N3 | 3 | 3 | N3 |
4 | 4 | N4 | 4 | 4 | N4 |
5 | 5 | N5 | 5 | 5 | N5 |
6 | 6 | N6 | 6 | 6 | N6 |
7 | 7 | N7 | 7 | 7 | N7 |
8 | 8 | N8 | 8 | 8 | N8 |
9 | 9 | N9 | 9 | 9 | N9 |
ALGR | ALGR | RALT | ralt | AltGr | RALT |
AMPR | AMPR | AMPS | & | & | AMPR |
APP | APP | K_APP | comp | App | APP |
ASTR | ASTR | ASTRK | * | * | ASTR |
AT | AT | AT | @ | @ | AT |
BSLS | BSLS | BSLH | \ | \ | BSLS |
BSPC | BSPC | BSPC | bspc | Back Space | BSPC |
BOOT | TD(U_TD_BOOT) | U_BOOT | U_BOOT | U_BOOT | |
BT_CLR | &bt BT_CLR | BT Clear | |||
BT_CLR_0 | BT 0 Clear | ||||
BT_CLR_1 | BT 1 Clear | ||||
BT_CLR_2 | BT 2 Clear | ||||
BT_CLR_3 | BT 3 Clear | ||||
BT_CLR_4 | BT 4 Clear | ||||
BT_SEL_0 | &u_bt_sel_0 | BT 0 Select | |||
BT_SEL_1 | &u_bt_sel_1 | BT 1 Select | |||
BT_SEL_2 | &u_bt_sel_2 | BT 2 Select | |||
BT_SEL_3 | &u_bt_sel_3 | BT 3 Select | |||
BT_SEL_4 | &u_bt_sel_4 | BT 4 Select | |||
BTN1 | BTN1 | U_BTN1 | #(kp/ kp5) | Left Button | MB_LMB |
BTN2 | BTN2 | U_BTN2 | #(kp- kp5) | Right Button | MB_RMB |
BTN3 | BTN3 | U_BTN3 | #(kp* kp5) | Middle Button | MB_MMB |
CAPS | CAPS | CAPS | caps | Caps Lock | CAPS |
CIRC | CIRC | CARET | ^ | ^ | CIRC |
COLN | COLN | COLON | : | : | COLN |
COMM | COMM | COMMA | U_COMM | S_COMM | COMM |
CPSWRD | CW_TOGG | &u_caps_word | caps | Caps Word | U_CW |
DEL | DEL | DEL | del | Delete | DEL |
DF(U_BASE) | TD(U_TD_U_BASE) | &u_to_U_BASE | U_DF(U_BASE) | U_DF(U_BASE) | U_DF(U_BASE) |
DF(U_EXTRA) | TD(U_TD_U_EXTRA) | &u_to_U_EXTRA | U_DF(U_EXTRA) | U_DF(U_EXTRA) | U_DF(U_EXTRA) |
DF(U_TAP) | TD(U_TD_U_TAP) | &u_to_U_TAP | U_DF(U_TAP) | U_DF(U_TAP) | U_DF(U_TAP) |
DLR | DLR | DLLR | $ | $ | DLR |
DOT | DOT | DOT | . | . | DOT |
DOWN | DOWN | DOWN | down | Down | DOWN |
DQUO | DQUO | DQT | U_DQUO | " | DQUO |
END | END | END | end | End | END |
ENT | ENT | RET | ent | Enter | ENT |
EP_OFF | EP Off | PS_OFF | |||
EP_TOG | U_EP_TOG | EP Toggle | PS_TOG | ||
EQL | EQL | EQUAL | = | = | EQL |
ESC | ESC | ESC | esc | Esc | ESC |
EXLM | EXLM | EXCL | ! | ! | EXLM |
F1 | F1 | F1 | f1 | F1 | F1 |
F2 | F2 | F2 | f2 | F2 | F2 |
F3 | F3 | F3 | f3 | F3 | F3 |
F4 | F4 | F4 | f4 | F4 | F4 |
F5 | F5 | F5 | f5 | F5 | F5 |
F6 | F6 | F6 | f6 | F6 | F6 |
F7 | F7 | F7 | f7 | F7 | F7 |
F8 | F8 | F8 | f8 | F8 | F8 |
F9 | F9 | F9 | f9 | F9 | F9 |
F10 | F10 | F10 | f10 | F10 | F10 |
F11 | F11 | F11 | f11 | F11 | F11 |
F12 | F12 | F12 | f12 | F12 | F12 |
GRV | GRV | GRAVE | ` | ` | GRV |
GT | GT | GT | > | > | RABK |
HASH | HASH | HASH | # | # | HASH |
HOME | HOME | HOME | home | Home | HOME |
INS | INS | INS | ins | Insert | INS |
LALT | LALT | LALT | alt | Alt | LALT |
LBRC | LBRC | LBKT | [ | [ | LBRC |
LCBR | LCBR | LBRC | { | { | LCBR |
LCTL | LCTL | LCTRL | ctl | Ctrl | LCTL |
LEFT | LEFT | LEFT | left | Left | LEFT |
LGUI | LGUI | LGUI | met | Meta | LGUI |
LPRN | LPRN | LPAR | U_LPRN | S_LPRN | LPRN |
LSFT | LSFT | LSHFT | sft | Shift | LSFT |
LT | LT | LT | < | < | LABK |
MINS | MINS | MINUS | - | - | MINS |
MNXT | MNXT | C_NEXT | nextsong | Next | MNXT |
MPLY | MPLY | C_PP | playpause | Play Pause | MPLY |
MPRV | MPRV | C_PREV | previoussong | Prev | MPRV |
MS_D | MS_D | U_MS_D | kp2 | Mouse Down | MS_DN |
MS_L | MS_L | U_MS_L | kp4 | Mouse Left | MS_LT |
MS_R | MS_R | U_MS_R | kp6 | Mouse Right | MS_RT |
MS_U | MS_U | U_MS_U | kp8 | Mouse Up | MS_UP |
MSTP | MSTP | C_STOP | stopcd | Stop | MSTP |
MUTE | MUTE | C_MUTE | mute | Mute | MUTE |
NO | NO | &none | XX | NO | |
OUT_TOG | OU_AUTO | &u_out_tog | Out Toggle | HID | |
OUT_BT | OU_BT | &out OUT_BT | Out BT | ||
OUT_USB | OU_USB | &out OUT_USB | Out USB | ||
PAUS | PAUS | PAUSE_BREAK | pause | Pause Break | PAUS |
PERC | PERC | PRCNT | % | % | PERC |
PGDN | PGDN | PG_DN | pgdn | Page Down | PGDN |
PGUP | PGUP | PG_UP | pgup | Page Up | PGUP |
PIPE | PIPE | PIPE | U_PIPE | S_PIPE | PIPE |
PLUS | PLUS | PLUS | + | + | PLUS |
PSCR | PSCR | PSCRN | sysrq | PrtScn SysRq | PSCR |
QUES | QUES | QMARK | ? | ? | QUES |
QUOT | QUOT | SQT | U_QUOT | ’ | QUOT |
RBRC | RBRC | RBKT | ] | ] | RBRC |
RCBR | RCBR | RBRC | } | } | RCBR |
RESET | QK_RBT | &reset | Reset | RESET | |
RGB_HUD | RGB_HUD | RGB Hue - | U_RGB_HUD | ||
RGB_HUI | RGB_HUI | U_RGB_HUI | RGB Hue + | U_RGB_HUI | |
RGB_MOD | RGB_MOD | U_RGB_EFF | RGB Mode + | U_RGB_MOD | |
RGB_RMOD | RGB_RMOD | RGB Mode - | U_RGB_RMOD | ||
RGB_OFF | RGB Off | U_RGB_OFF | |||
RGB_SAD | RGB_SAD | RGB Sat - | U_RGB_SAD | ||
RGB_SAI | RGB_SAI | U_RGB_SAI | RGB Sat + | U_RGB_SAI | |
RGB_TOG | RGB_TOG | U_RGB_TOG | RGB Toggle | U_RGB_TOG | |
RGB_VAD | RGB_VAD | RGB Value - | U_RGB_VAD | ||
RGB_VAI | RGB_VAI | U_RGB_BRI | RGB Value + | U_RGB_VAI | |
RGHT | RGHT | RIGHT | right | Right | RGHT |
RPRN | RPRN | RPAR | U_RPRN | S_RPRN | RPRN |
SCLN | SCLN | SEMI | ; | ; | SCLN |
SLCK | SCRL | SLCK | slck | Scroll Lock | SLCK |
SLSH | SLSH | SLASH | / | / | SLSH |
SPC | SPC | SPACE | spc | Space | SPC |
TAB | TAB | TAB | tab | Tab | TAB |
TILD | TILD | TILDE | ~ | ~ | TILD |
TRNS | TRNS | &trans | _ | Trans | TRNS |
UNDS | UNDS | UNDER | \_ | _ | UNDS |
UP | UP | UP | up | Up | UP |
VOLD | VOLD | C_VOL_DN | vold | Volume Down | VOLD |
VOLU | VOLU | C_VOL_UP | volu | Volume Up | VOLU |
WH_D | WH_D | U_WH_D | Scroll Down | MW_DN | |
WH_L | WH_L | U_WH_L | Scroll Left | ||
WH_R | WH_R | U_WH_R | Scroll Right | ||
WH_U | WH_U | U_WH_U | Scroll Up | MW_UP |
import os
def wrap_basic(code):
if not str(code).startswith(nonbasic_tuple):
code = basic_prefix + str(code) + basic_suffix
return code
def convert_symbol(code):
if code in symbol_names_dict:
code = symbol_names_dict[code]
return code
def get_translated(code):
if code in keycode_translation_dict:
code = keycode_translation_dict[code]
return code
def get_shifted(code):
if code in shifted_symbol_names_dict:
code = shifted_symbol_names_dict[code]
code = get_translated(code)
else:
code = None
return code
def trim_shifted(code, shifted_code):
code = str(code)
shifted_code = str(shifted_code)
prefix = os.path.commonprefix([code, shifted_code])
space_index = prefix.find(" ")
doublespace_index = prefix.find(" ")
if space_index != -1 and space_index != doublespace_index:
index = space_index + 1
else:
index = len(prefix)
shifted_code = shifted_code[index:]
return shifted_code
width = 19
mods_dict = dict.fromkeys(mods_table[0])
layers_dict = {}
for layer, name in layers_table:
layers_dict[layer] = name
symbol_names_dict = {}
shifted_symbol_names_dict = {}
for symbol, name in symbol_names_table:
symbol_names_dict[symbol] = name
for name, shifted_name in shifted_names_table:
shifted_symbol_names_dict[name] = shifted_name
keycode_translation_dict = {}
if target == 'qmk':
nonbasic_tuple = tuple(nonkc_table[0])
basic_prefix = 'KC_'
basic_suffix = ''
for source, qmk, zmk, kmonad, long, kmk in keycode_translation_table:
keycode_translation_dict[source] = qmk
elif target == 'zmk':
nonbasic_tuple = tuple(nonkp_table[0])
basic_prefix = '&kp '
basic_suffix = ''
for source, qmk, zmk, kmonad, long, kmk in keycode_translation_table:
keycode_translation_dict[source] = zmk
elif target == 'kmonad':
nonbasic_tuple = ()
basic_prefix = ''
basic_suffix = ''
for source, qmk, zmk, kmonad, long, kmk in keycode_translation_table:
keycode_translation_dict[source] = kmonad
elif target == 'svg':
nonbasic_tuple = tuple(nonquote_table[0])
basic_prefix = '"'
basic_suffix = '"'
for source, qmk, zmk, kmonad, long, kmk in keycode_translation_table:
keycode_translation_dict[source] = long
elif target == 'kmk':
nonbasic_tuple = tuple(nonkcdot_table[0])
basic_prefix = 'KC.'
basic_suffix = ''
for source, qmk, zmk, kmonad, long, kmk in keycode_translation_table:
keycode_translation_dict[source] = kmk
results = '// target: ' + target
results
Produce base layer from separate alphas, thumbs, and hold tables.
results = ''
for tap_row, hold_row in zip(alphas_table + thumbs_table, hold_table):
for tap, hold in zip(tap_row, hold_row):
code = tap
code = convert_symbol(code)
shifted_code = get_shifted(code)
code = get_translated(code)
if code == '':
code = 'U_NU'
if hold in mods_dict:
hold = get_translated(hold)
if target == 'qmk':
code = wrap_basic(code)
code = str(hold) + '_T(' + code + ')'
elif target == 'zmk':
code = 'U_MT(' + str(hold) + ', ' + code + ')'
elif target == 'kmonad':
code = 'U_MT(' + code + ', ' + str(hold) + ')'
elif target == 'svg':
code = wrap_basic(code)
hold = wrap_basic(hold)
if shifted_code != None:
shifted_code = wrap_basic(shifted_code)
code = 'U_SMT(' + shifted_code + ', ' + code + ', ' + hold + ')'
else:
code = 'U_MT(' + code + ', ' + hold + ')'
elif target == 'kmk':
code = wrap_basic(code)
hold = wrap_basic(hold)
code = 'U_MT(' + code + ',' + hold + ')'
elif hold in layers_dict:
if target == 'qmk':
code = wrap_basic(code)
code = 'LT(' + str(hold) + ',' + code + ')'
elif target == 'zmk':
code = 'U_LT(' + str(hold) + ', ' + code + ')'
elif target == 'kmonad':
code = 'U_LT(' + code + ', ' + str(hold) + ')'
elif target == 'svg':
code = wrap_basic(code)
if shifted_code != None:
shifted_code = wrap_basic(shifted_code)
code = 'U_SLT(' + shifted_code + ', ' + code + ', ' + str(hold) + ')'
else:
code = 'U_LT(' + code + ', ' + str(hold) + ')'
if target == 'kmk':
code = wrap_basic(code)
code = 'U_LT(' + str(hold) + ',' + code + ')'
else:
if target == 'svg' and shifted_code != None:
shifted_code = trim_shifted(code, shifted_code)
shifted_code = wrap_basic(shifted_code)
code = wrap_basic(code)
code = 'U_S(' + shifted_code + ', ' + code + ')'
else:
code = wrap_basic(code)
results += (code + ',').ljust(width)
results += '\\\n'
results = results.rstrip(', \\\n')
results
Produce sub layers from single hand and hold tables.
length = len(half_table[0])
results = ''
for half_row, hold_row in zip(half_table, hold_table):
hold_row_l, hold_row_r = hold_row[:length], hold_row[length:]
for lr, hold_row_lr in ('l', hold_row_l), ('r', hold_row_r):
if lr == mode:
for half in half_row:
code = half
code = convert_symbol(code)
shifted_code = get_shifted(code)
if shift == "true" and shifted_code != None:
code = shifted_code
elif target == 'svg' and shifted_code != None:
code = get_translated(code)
shifted_code = trim_shifted(code, shifted_code)
code = 'U_S(' + str(wrap_basic(shifted_code)) + ', ' + str(wrap_basic(code)) +')'
code = get_translated(code)
if code == '':
code = 'U_NU'
code = wrap_basic(code)
results += (str(code) + ',').ljust(width)
else:
for hold in hold_row_lr:
if hold in mods_dict:
code = wrap_basic(get_translated(hold))
else:
hold = get_translated(hold)
if hold == '' or hold in layers_dict:
code = 'U_NA'
if target == 'svg' and hold == current_layer_name:
code = 'U_HELD(' + code + ')'
elif hold == 'LOCK_CUR' or hold == 'LOCK_OPP':
if hold == 'LOCK_CUR':
layer_name = current_layer_name
else:
layer_name = opposite_layer_name
if target == 'qmk':
code = 'TD(U_TD_' + layer_name + ')'
elif target == 'zmk':
code = '&u_to_' + layer_name
elif target == 'kmonad':
code = 'U_DF(' + layer_name + ')'
elif target == 'svg':
code = 'U_DF(' + layer_name + ')'
elif target == 'kmk':
code = 'U_DF(' + layer_name + ')'
else:
code = wrap_basic(hold)
results += (str(code) + ',').ljust(width)
results += '\\\n'
results = results.rstrip(', \\\n')
results
Produce full layer from single table. Fill for unused keys is configurable.
results = ''
for full_row, hold_row in zip(alphas_table + thumbs_table, hold_table):
for key, hold in zip(full_row, hold_row):
if key in symbol_names_dict:
code = symbol_names_dict[key]
else:
code = key
if code == '':
code = fill
if code in keycode_translation_dict:
code = keycode_translation_dict[code]
if code == '':
code = 'U_NU'
if not str(code).startswith(nonbasic_tuple):
code = wrap_basic(code)
if target == 'svg' and hold == current_layer_name:
code = 'U_HELD(' + code + ')'
results += (code + ',').ljust(width)
results += '\\\n'
results = results.rstrip(', \\\n')
results
Body of miryoku_layer_selection.h.
#pragma once
#include "miryoku_layer_alternatives.h"
#if !defined(MIRYOKU_LAYER_BASE)
#if defined (MIRYOKU_LAYERS_FLIP)
#if defined (MIRYOKU_ALPHAS_AZERTY)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP
#elif defined (MIRYOKU_ALPHAS_BEAKL15)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP
#elif defined (MIRYOKU_ALPHAS_COLEMAK)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP
#elif defined (MIRYOKU_ALPHAS_COLEMAKDH)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP
#elif defined (MIRYOKU_ALPHAS_COLEMAKDHK)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP
#elif defined (MIRYOKU_ALPHAS_DVORAK)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP
#elif defined (MIRYOKU_ALPHAS_HALMAK)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP
#elif defined (MIRYOKU_ALPHAS_WORKMAN)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP
#elif defined (MIRYOKU_ALPHAS_QWERTY)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP
#elif defined (MIRYOKU_ALPHAS_QWERTZ)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP
#else
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP
#endif
#else
#if defined (MIRYOKU_ALPHAS_AZERTY)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_AZERTY
#elif defined (MIRYOKU_ALPHAS_BEAKL15)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_BEAKL15
#elif defined (MIRYOKU_ALPHAS_COLEMAK)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAK
#elif defined (MIRYOKU_ALPHAS_COLEMAKDH)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH
#elif defined (MIRYOKU_ALPHAS_COLEMAKDHK)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK
#elif defined (MIRYOKU_ALPHAS_DVORAK)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_DVORAK
#elif defined (MIRYOKU_ALPHAS_HALMAK)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_HALMAK
#elif defined (MIRYOKU_ALPHAS_WORKMAN)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_WORKMAN
#elif defined (MIRYOKU_ALPHAS_QWERTY)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTY
#elif defined (MIRYOKU_ALPHAS_QWERTZ)
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTZ
#else
#define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH
#endif
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_BASE)
#define MIRYOKU_LAYERMAPPING_BASE MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_EXTRA)
#if defined (MIRYOKU_LAYERS_FLIP)
#if defined (MIRYOKU_EXTRA_AZERTY)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP
#elif defined (MIRYOKU_EXTRA_BEAKL15)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP
#elif defined (MIRYOKU_EXTRA_COLEMAK)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP
#elif defined (MIRYOKU_EXTRA_COLEMAKDH)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP
#elif defined (MIRYOKU_EXTRA_COLEMAKDHK)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP
#elif defined (MIRYOKU_EXTRA_DVORAK)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP
#elif defined (MIRYOKU_EXTRA_HALMAK)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP
#elif defined (MIRYOKU_EXTRA_WORKMAN)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP
#elif defined (MIRYOKU_EXTRA_QWERTY)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP
#elif defined (MIRYOKU_EXTRA_QWERTZ)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP
#else
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP
#endif
#else
#if defined (MIRYOKU_EXTRA_AZERTY)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_AZERTY
#elif defined (MIRYOKU_EXTRA_BEAKL15)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_BEAKL15
#elif defined (MIRYOKU_EXTRA_COLEMAK)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAK
#elif defined (MIRYOKU_EXTRA_COLEMAKDH)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH
#elif defined (MIRYOKU_EXTRA_COLEMAKDHK)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK
#elif defined (MIRYOKU_EXTRA_DVORAK)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_DVORAK
#elif defined (MIRYOKU_EXTRA_HALMAK)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_HALMAK
#elif defined (MIRYOKU_EXTRA_WORKMAN)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_WORKMAN
#elif defined (MIRYOKU_EXTRA_QWERTY)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY
#elif defined (MIRYOKU_EXTRA_QWERTZ)
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTZ
#else
#define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY
#endif
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_EXTRA)
#define MIRYOKU_LAYERMAPPING_EXTRA MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_TAP)
#if defined (MIRYOKU_LAYERS_FLIP)
#if defined (MIRYOKU_TAP_AZERTY)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP
#elif defined (MIRYOKU_TAP_BEAKL15)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP
#elif defined (MIRYOKU_TAP_COLEMAK)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP
#elif defined (MIRYOKU_TAP_COLEMAKDH)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP
#elif defined (MIRYOKU_TAP_COLEMAKDHK)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP
#elif defined (MIRYOKU_TAP_DVORAK)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP
#elif defined (MIRYOKU_TAP_HALMAK)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP
#elif defined (MIRYOKU_TAP_WORKMAN)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP
#elif defined (MIRYOKU_TAP_QWERTY)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP
#elif defined (MIRYOKU_TAP_QWERTZ)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP
#else
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP
#endif
#else
#if defined (MIRYOKU_TAP_AZERTY)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_AZERTY
#elif defined (MIRYOKU_TAP_BEAKL15)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_BEAKL15
#elif defined (MIRYOKU_TAP_COLEMAK)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAK
#elif defined (MIRYOKU_TAP_COLEMAKDH)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH
#elif defined (MIRYOKU_TAP_COLEMAKDHK)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK
#elif defined (MIRYOKU_TAP_DVORAK)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_DVORAK
#elif defined (MIRYOKU_TAP_HALMAK)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_HALMAK
#elif defined (MIRYOKU_TAP_WORKMAN)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_WORKMAN
#elif defined (MIRYOKU_TAP_QWERTY)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTY
#elif defined (MIRYOKU_TAP_QWERTZ)
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTZ
#else
#define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH
#endif
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_TAP)
#define MIRYOKU_LAYERMAPPING_TAP MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_BUTTON)
#define MIRYOKU_LAYER_BUTTON MIRYOKU_ALTERNATIVES_BUTTON
#endif
#if !defined(MIRYOKU_LAYERMAPPING_BUTTON)
#define MIRYOKU_LAYERMAPPING_BUTTON MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_NAV)
#if defined (MIRYOKU_LAYERS_FLIP)
#if defined (MIRYOKU_NAV_INVERTEDT)
#define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP
#else
#define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_FLIP
#endif
#else
#if defined (MIRYOKU_NAV_INVERTEDT)
#define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_INVERTEDT
#elif defined (MIRYOKU_NAV_VI)
#define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_VI
#else
#define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV
#endif
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_NAV)
#define MIRYOKU_LAYERMAPPING_NAV MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_MOUSE)
#if defined (MIRYOKU_LAYERS_FLIP)
#if defined (MIRYOKU_NAV_INVERTEDT)
#define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP
#else
#define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_FLIP
#endif
#else
#if defined (MIRYOKU_NAV_INVERTEDT)
#define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT
#elif defined (MIRYOKU_NAV_VI)
#define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_VI
#else
#define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE
#endif
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_MOUSE)
#define MIRYOKU_LAYERMAPPING_MOUSE MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_MEDIA)
#if defined (MIRYOKU_LAYERS_FLIP)
#if defined (MIRYOKU_NAV_INVERTEDT)
#define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP
#else
#define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_FLIP
#endif
#else
#if defined (MIRYOKU_NAV_INVERTEDT)
#define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT
#elif defined (MIRYOKU_NAV_VI)
#define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_VI
#else
#define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA
#endif
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_MEDIA)
#define MIRYOKU_LAYERMAPPING_MEDIA MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_NUM)
#if defined (MIRYOKU_LAYERS_FLIP)
#define MIRYOKU_LAYER_NUM MIRYOKU_ALTERNATIVES_NUM_FLIP
#else
#define MIRYOKU_LAYER_NUM MIRYOKU_ALTERNATIVES_NUM
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_NUM)
#define MIRYOKU_LAYERMAPPING_NUM MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_SYM)
#if defined (MIRYOKU_LAYERS_FLIP)
#define MIRYOKU_LAYER_SYM MIRYOKU_ALTERNATIVES_SYM_FLIP
#else
#define MIRYOKU_LAYER_SYM MIRYOKU_ALTERNATIVES_SYM
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_SYM)
#define MIRYOKU_LAYERMAPPING_SYM MIRYOKU_MAPPING
#endif
#if !defined(MIRYOKU_LAYER_FUN)
#if defined (MIRYOKU_LAYERS_FLIP)
#define MIRYOKU_LAYER_FUN MIRYOKU_ALTERNATIVES_FUN_FLIP
#else
#define MIRYOKU_LAYER_FUN MIRYOKU_ALTERNATIVES_FUN
#endif
#endif
#if !defined(MIRYOKU_LAYERMAPPING_FUN)
#define MIRYOKU_LAYERMAPPING_FUN MIRYOKU_MAPPING
#endif
width = 8
results = '#define MIRYOKU_LAYER_LIST \\\n'
for layer, name in layers_table:
stripped=layer.lstrip('U_')
results += 'MIRYOKU_X(' + ( stripped + ', ').ljust(width)
results += '"' + name + '"'
results += ') \\\n'
results = results.rstrip(' \\\n')
return results
width = 9
results = ''
i = 0
for layer, name in layers_table:
results += '#define ' + ( layer + ' ').ljust(width)
if target == 'zmk' or target == 'kmk':
results += str(i) + '\n'
elif target == 'svg':
results += '"' + name + '"' + '\n'
i += 1
results = results.rstrip('\n')
return results
Keycodes that match any of these prefixes will not have KC_
automatically
prepended.
U_ | RGB_ | OU_ | QK_ | S( | C( | SCMD( | LCMD( | TD( | CW_TOGG |
License for tangled QMK C source files.
// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Keycodes that match any of these prefixes will not have &kp
automatically
prepended.
U_ | & |
Keycodes that match any of these prefixes will not be automatically quoted.
U_ |
Keycodes that match any of these prefixes will not have KC.
automatically prepended.
U_ |
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<table-layer-init(target="qmk")>>
<<license-qmk>>
#pragma once
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \
<<table-layer-taphold(alphas_table=azerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \
<<table-layer-taphold(alphas_table=beakl15, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \
<<table-layer-taphold(alphas_table=colemak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \
<<table-layer-taphold(alphas_table=colemakdh, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \
<<table-layer-taphold(alphas_table=colemakdhk, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \
<<table-layer-taphold(alphas_table=dvorak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \
<<table-layer-taphold(alphas_table=halmak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \
<<table-layer-taphold(alphas_table=workman, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \
<<table-layer-taphold(alphas_table=qwerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \
<<table-layer-taphold(alphas_table=qwertz, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY \
<<table-layer-taphold(alphas_table=azerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \
<<table-layer-taphold(alphas_table=beakl15)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \
<<table-layer-taphold(alphas_table=colemak)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \
<<table-layer-taphold(alphas_table=colemakdh)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \
<<table-layer-taphold(alphas_table=colemakdhk)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK \
<<table-layer-taphold(alphas_table=dvorak)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK \
<<table-layer-taphold(alphas_table=halmak)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \
<<table-layer-taphold(alphas_table=workman)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY \
<<table-layer-taphold(alphas_table=qwerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \
<<table-layer-taphold(alphas_table=qwertz)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15 \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV_VI \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_VI \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_VI \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NUM_FLIP \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NUM \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_SYM_FLIP \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_SYM \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_FUN_FLIP \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_FUN \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_BUTTON \
<<table-layer-full(current_layer_name="U_BUTTON", alphas_table=button, thumbs_table=button-thumbs)>>
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<license-qmk>>
<<layer-body>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<license-qmk>>
#pragma once
#if !defined (MIRYOKU_LAYER_LIST)
<<layer-names-list()>>
#endif
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<table-layer-init(target="zmk")>>
#pragma once
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \
<<table-layer-taphold(alphas_table=azerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \
<<table-layer-taphold(alphas_table=beakl15, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \
<<table-layer-taphold(alphas_table=colemak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \
<<table-layer-taphold(alphas_table=colemakdh, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \
<<table-layer-taphold(alphas_table=colemakdhk, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \
<<table-layer-taphold(alphas_table=dvorak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \
<<table-layer-taphold(alphas_table=halmak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \
<<table-layer-taphold(alphas_table=workman, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \
<<table-layer-taphold(alphas_table=qwerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \
<<table-layer-taphold(alphas_table=qwertz, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY \
<<table-layer-taphold(alphas_table=azerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \
<<table-layer-taphold(alphas_table=beakl15)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \
<<table-layer-taphold(alphas_table=colemak)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \
<<table-layer-taphold(alphas_table=colemakdh)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \
<<table-layer-taphold(alphas_table=colemakdhk)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK \
<<table-layer-taphold(alphas_table=dvorak)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK \
<<table-layer-taphold(alphas_table=halmak)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \
<<table-layer-taphold(alphas_table=workman)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY \
<<table-layer-taphold(alphas_table=qwerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \
<<table-layer-taphold(alphas_table=qwertz)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15 \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV_VI \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_VI \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_VI \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NUM_FLIP \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NUM \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_SYM_FLIP \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_SYM \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_FUN_FLIP \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_FUN \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_BUTTON \
<<table-layer-full(current_layer_name="U_BUTTON", alphas_table=button, thumbs_table=button-thumbs)>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<layer-body>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
#pragma once
#if !defined (MIRYOKU_LAYER_LIST)
<<layer-names-list()>>
<<layer-names-defines(target="zmk")>>
#endif
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<table-layer-init(target="kmonad")>>
#pragma once
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \
<<table-layer-taphold(alphas_table=azerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \
<<table-layer-taphold(alphas_table=beakl15, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \
<<table-layer-taphold(alphas_table=colemak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \
<<table-layer-taphold(alphas_table=colemakdh, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \
<<table-layer-taphold(alphas_table=colemakdhk, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \
<<table-layer-taphold(alphas_table=dvorak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \
<<table-layer-taphold(alphas_table=halmak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \
<<table-layer-taphold(alphas_table=workman, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \
<<table-layer-taphold(alphas_table=qwerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \
<<table-layer-taphold(alphas_table=qwertz, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY \
<<table-layer-taphold(alphas_table=azerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \
<<table-layer-taphold(alphas_table=beakl15)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \
<<table-layer-taphold(alphas_table=colemak)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \
<<table-layer-taphold(alphas_table=colemakdh)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \
<<table-layer-taphold(alphas_table=colemakdhk)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK \
<<table-layer-taphold(alphas_table=dvorak)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK \
<<table-layer-taphold(alphas_table=halmak)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \
<<table-layer-taphold(alphas_table=workman)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY \
<<table-layer-taphold(alphas_table=qwerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \
<<table-layer-taphold(alphas_table=qwertz)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15 \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV_VI \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_VI \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_VI \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NUM_FLIP \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NUM \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_SYM_FLIP \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_SYM \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_FUN_FLIP \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_FUN \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_BUTTON \
<<table-layer-full(current_layer_name="U_BUTTON", alphas_table=button, thumbs_table=button-thumbs)>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<layer-body>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
#pragma once
#if !defined (MIRYOKU_LAYER_LIST)
<<layer-names-list()>>
#endif
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<table-layer-init(target="svg")>>
#pragma once
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \
<<table-layer-taphold(alphas_table=azerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \
<<table-layer-taphold(alphas_table=beakl15, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \
<<table-layer-taphold(alphas_table=colemak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \
<<table-layer-taphold(alphas_table=colemakdh, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \
<<table-layer-taphold(alphas_table=colemakdhk, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \
<<table-layer-taphold(alphas_table=dvorak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \
<<table-layer-taphold(alphas_table=halmak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \
<<table-layer-taphold(alphas_table=workman, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \
<<table-layer-taphold(alphas_table=qwerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \
<<table-layer-taphold(alphas_table=qwertz, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY \
<<table-layer-taphold(alphas_table=azerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \
<<table-layer-taphold(alphas_table=beakl15)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \
<<table-layer-taphold(alphas_table=colemak)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \
<<table-layer-taphold(alphas_table=colemakdh)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \
<<table-layer-taphold(alphas_table=colemakdhk)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK \
<<table-layer-taphold(alphas_table=dvorak)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK \
<<table-layer-taphold(alphas_table=halmak)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \
<<table-layer-taphold(alphas_table=workman)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY \
<<table-layer-taphold(alphas_table=qwerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \
<<table-layer-taphold(alphas_table=qwertz)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15 \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV_VI \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_VI \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_VI \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NUM_FLIP \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NUM \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_SYM_FLIP \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_SYM \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_FUN_FLIP \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_FUN \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_BUTTON \
<<table-layer-full(current_layer_name="U_BUTTON", alphas_table=button, thumbs_table=button-thumbs)>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<layer-body>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
#pragma once
#if !defined (MIRYOKU_LAYER_LIST)
<<layer-names-list(target="svg")>>
<<layer-names-defines(target="svg")>>
#endif
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<table-layer-init(target="kmk")>>
#pragma once
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \
<<table-layer-taphold(alphas_table=azerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \
<<table-layer-taphold(alphas_table=beakl15, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \
<<table-layer-taphold(alphas_table=colemak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \
<<table-layer-taphold(alphas_table=colemakdh, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \
<<table-layer-taphold(alphas_table=colemakdhk, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \
<<table-layer-taphold(alphas_table=dvorak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \
<<table-layer-taphold(alphas_table=halmak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \
<<table-layer-taphold(alphas_table=workman, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \
<<table-layer-taphold(alphas_table=qwerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \
<<table-layer-taphold(alphas_table=qwertz, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_BASE_AZERTY \
<<table-layer-taphold(alphas_table=azerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \
<<table-layer-taphold(alphas_table=beakl15)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \
<<table-layer-taphold(alphas_table=colemak)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \
<<table-layer-taphold(alphas_table=colemakdh)>>
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \
<<table-layer-taphold(alphas_table=colemakdhk)>>
#define MIRYOKU_ALTERNATIVES_BASE_DVORAK \
<<table-layer-taphold(alphas_table=dvorak)>>
#define MIRYOKU_ALTERNATIVES_BASE_HALMAK \
<<table-layer-taphold(alphas_table=halmak)>>
#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \
<<table-layer-taphold(alphas_table=workman)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTY \
<<table-layer-taphold(alphas_table=qwerty)>>
#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \
<<table-layer-taphold(alphas_table=qwertz)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs-flip)>>
#define MIRYOKU_ALTERNATIVES_TAP_AZERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=azerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15 \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=beakl15, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdh, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=colemakdhk, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_DVORAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=dvorak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_HALMAK \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=halmak, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=workman, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTY \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwerty, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ \
<<table-layer-full(current_layer_name="U_TAP", alphas_table=qwertz, thumbs_table=thumbs)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_FLIP \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV_VI \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NAV \
<<table-layer-half(current_layer_name="U_NAV", opposite_layer_name="U_NUM", half_table=nav-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_FLIP \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE_VI \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MOUSE \
<<table-layer-half(current_layer_name="U_MOUSE", opposite_layer_name="U_SYM", half_table=mouse-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l-invertedt, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_FLIP \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-l, mode="l", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-invertedt, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA_VI \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r-vi, mode="r")>>
#define MIRYOKU_ALTERNATIVES_MEDIA \
<<table-layer-half(current_layer_name="U_MEDIA", opposite_layer_name="U_FUN", half_table=media-r, mode="r")>>
#define MIRYOKU_ALTERNATIVES_NUM_FLIP \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_NUM \
<<table-layer-half(current_layer_name="U_NUM", opposite_layer_name="U_NAV", half_table=num-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_SYM_FLIP \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_SYM \
<<table-layer-half(current_layer_name="U_SYM", opposite_layer_name="U_MOUSE", half_table=sym-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_FUN_FLIP \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-r, mode="r", hold_table=hold-flip)>>
#define MIRYOKU_ALTERNATIVES_FUN \
<<table-layer-half(current_layer_name="U_FUN", opposite_layer_name="U_MEDIA", half_table=fun-l, mode="l")>>
#define MIRYOKU_ALTERNATIVES_BUTTON \
<<table-layer-full(current_layer_name="U_BUTTON", alphas_table=button, thumbs_table=button-thumbs)>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
<<layer-body>>
// Copyright 2022 Manna Harbour
// https://github.com/manna-harbour/miryoku
// generated -*- buffer-read-only: t -*-
#pragma once
#if !defined (MIRYOKU_LAYER_LIST)
<<layer-names-list()>>
<<layer-names-defines(target="kmk")>>
#endif