manna-harbour / miryoku_babel

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.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Miryoku Babel https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/miryoku-roa-32.png

https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/cover/miryoku-kle-cover-miryoku_babel.png

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.

Overview

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.

Tangling

Locally

Emacs, python, and org 9.4 or later are required.

Within Emacs

Initial Setup

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)
Tangle

Call org-babel-tangle (C-c C-v t).

Outside Emacs

See the Install Org and Tangle steps in .github/workflows/main.yml for example shell commands that can be run locally.

GitHub Actions Workflow

Initial Setup

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.

Tangle

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.

Layer Tables

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.

Base

Tap

Alphas
QWFPBJLUY
ARSTGMNEIO
ZXCDVKH,DOT/
Thumbs
U_NPU_NPESCSPCTABENTBSPCDELU_NPU_NP

Hold

BOOTDF(U_TAP)DF(U_EXTRA)DF(U_BASE)DF(U_BASE)DF(U_EXTRA)DF(U_TAP)BOOT
LGUILALTLCTLLSFTLSFTLCTLLALTLGUI
U_BUTTONALGRLOCK_OPPLOCK_CURLOCK_CURLOCK_OPPALGRU_BUTTON
U_NPU_NPU_MEDIAU_NAVU_MOUSEU_SYMU_NUMU_FUNU_NPU_NP

Nav

U_RDOU_PSTU_CPYU_CUTU_UND
CPSWRDLEFTDOWNUPRGHT
INSHOMEPGDNPGUPEND
ENTBSPCDELU_NPU_NP

Mouse

U_RDOU_PSTU_CPYU_CUTU_UND
MS_LMS_DMS_UMS_R
WH_LWH_DWH_UWH_R
BTN2BTN1BTN3U_NPU_NP

Button

U_UNDU_CUTU_CPYU_PSTU_RDOU_RDOU_PSTU_CPYU_CUTU_UND
LGUILALTLCTLLSFTLSFTLCTLLALTLGUI
U_UNDU_CUTU_CPYU_PSTU_RDOU_RDOU_PSTU_CPYU_CUTU_UND
U_NPU_NPBTN3BTN1BTN2BTN2BTN1BTN3U_NPU_NP

Media

RGB_TOGRGB_MODRGB_HUIRGB_SAIRGB_VAI
EP_TOGMPRVVOLDVOLUMNXT
OUT_TOGBT_SEL_0BT_SEL_1BT_SEL_2BT_SEL_3
MSTPMPLYMUTEU_NPU_NP

Num

[789]
;456=
`123\
U_NPU_NPDOT0MINS

Sym

{&*(}
:$%^+
~!@#PIPE
U_NPU_NP()_

Fun

F12F7F8F9PSCR
F11F4F5F6SLCK
F10F1F2F3PAUS
U_NPU_NPAPPSPCTAB

Alternative Layouts

Alphas

AZERTY

MIRYOKU_ALPHAS=AZERTY

AZERTYUIOP
QSDFGHJKLM
WXCVBN,DOT/
BEAKL-15

MIRYOKU_ALPHAS=BEAKL15

QHOUXGCRFZ
YIEADOTDSTNB
J/,KWMLPV
Colemak

MIRYOKU_ALPHAS=COLEMAK

QWFPGJLUY
ARSTDHNEIO
ZXCVBKM,DOT/
Colemak Mod-DHk

MIRYOKU_ALPHAS=COLEMAKDHK

QWFPBJLUY
ARSTGKNEIO
ZXCDVMH,DOT/
Dvorak

MIRYOKU_ALPHAS=DVORAK

,DOTPYFGCRL
AOEUIDHTNS
/QJKXBMWVZ
Halmak

MIRYOKU_ALPHAS=HALMAK

WLRBZQUDJ
SHNT,DOTAEOI
FMVC/GPXKY
Workman

MIRYOKU_ALPHAS=WORKMAN

QDRWBJFUP
ASHTGYNEOI
ZXMCVKL,DOT/
QWERTY

MIRYOKU_ALPHAS=QWERTY

QWERTYUIOP
ASDFGHJKL
ZXCVBNM,DOT/
QWERTZ

MIRYOKU_ALPHAS=QWERTZ

QWERTZUIOP
ASDFGHJKL
YXCVBNM,DOT/

Nav

vi-Style

MIRYOKU_NAV=VI

Not available with MIRYOKU_LAYERS=FLIP.

Nav
U_RDOU_PSTU_CPYU_CUTU_UND
LEFTDOWNUPRGHTCPSWRD
HOMEPGDNPGUPENDINS
ENTBSPCDELU_NPU_NP
Mouse
U_RDOU_PSTU_CPYU_CUTU_UND
MS_LMS_DMS_UMS_R
WH_LWH_DWH_UWH_R
BTN2BTN1BTN3U_NPU_NP
Media
RGB_MODRGB_HUIRGB_SAIRGB_VAIRGB_TOG
MPRVVOLDVOLUMNXTEP_TOG
BT_SEL_0BT_SEL_1BT_SEL_2BT_SEL_3OUT_TOG
MSTPMPLYMUTEU_NPU_NP
Inverted-T

MIRYOKU_NAV=INVERTEDT

Nav
INSHOMEUPENDPGUP
CPSWRDLEFTDOWNRGHTPGDN
U_RDOU_PSTU_CPYU_CUTU_UND
ENTBSPCDELU_NPU_NP
Mouse
WH_LMS_UWH_RWH_U
MS_LMS_DMS_RWH_D
U_RDOU_PSTU_CPYU_CUTU_UND
BTN2BTN1BTN3U_NPU_NP
Media
RGB_TOGRGB_MODVOLURGB_HUIRGB_SAI
EP_TOGMPRVVOLDMNXTRGB_VAI
OUT_TOGBT_SEL_0BT_SEL_1BT_SEL_2BT_SEL_3
MSTPMPLYMUTEU_NPU_NP

Layers

Flip

MIRYOKU_LAYERS=FLIP

Thumbs
U_NPU_NPDELBSPCENTTABSPCESCU_NPU_NP
Hold
BOOTDF(U_TAP)DF(U_EXTRA)DF(U_BASE)DF(U_BASE)DF(U_EXTRA)DF(U_TAP)BOOT
LGUILALTLCTLLSFTLSFTLCTLLALTLGUI
U_BUTTONALGRLOCK_OPPLOCK_CURLOCK_CURLOCK_OPPALGRU_BUTTON
U_NPU_NPU_FUNU_NUMU_SYMU_MOUSEU_NAVU_MEDIAU_NPU_NP
Num
[789]
=456;
\123`
MINS0DOTU_NPU_NP
Sym
{&*(}
+$%^:
PIPE!@#~
_()U_NPU_NP
Fun
PSCRF7F8F9F12
SLCKF4F5F6F11
PAUSF1F2F3F10
TABSPCAPPU_NPU_NP
Nav
DefaultNav
HOMEPGDNPGUPENDINS
LEFTDOWNUPRGHTCPSWRD
U_UNDU_CUTU_CPYU_PSTU_RDO
U_NPU_NPDELBSPCENT
Mouse
WH_LWH_DWH_UWH_R
MS_LMS_DMS_UMS_R
U_UNDU_CUTU_CPYU_PSTU_RDO
U_NPU_NPBTN3BTN1BTN2
Media
RGB_MODRGB_HUIRGB_SAIRGB_VAIRGB_TOG
MPRVVOLDVOLUMNXTEP_TOG
BT_SEL_0BT_SEL_1BT_SEL_2BT_SEL_3OUT_TOG
U_NPU_NPMUTEMPLYMSTP
Inverted-T

MIRYOKU_NAV=INVERTEDT

Nav
PGUPHOMEUPENDINS
PGDNLEFTDOWNRGHTCPSWRD
U_UNDU_CUTU_CPYU_PSTU_RDO
U_NPU_NPDELBSPCENT
Mouse
WH_UWH_LMS_UWH_R
WH_DMS_LMS_DMS_R
U_UNDU_CUTU_CPYU_PSTU_RDO
U_NPU_NPBTN3BTN1BTN2
Media
RGB_HUIRGB_SAIVOLURGB_VAIRGB_TOG
RGB_MODMPRVVOLDMNXTEP_TOG
BT_SEL_0BT_SEL_1BT_SEL_2BT_SEL_3OUT_TOG
U_NPU_NPMUTEMPLYMSTP

Scripts and Data

Common

layers

U_BASEBase
U_EXTRAExtra
U_TAPTap
U_BUTTONButton
U_NAVNav
U_MOUSEMouse
U_MEDIAMedia
U_NUMNum
U_SYMSym
U_FUNFun

symbol-names

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-names

Shifted mappings for use in tables.

GRVTILD
MINSUNDS
EQLPLUS
LBRCLCBR
RBRCRCBR
BSLSPIPE
SCLNCOLN
QUOTDQUO
COMMLT
DOTGT
SLSHQUES
1EXLM
2AT
3HASH
4DLR
5PERC
6CIRC
7AMPR
8ASTR
9LPRN
0RPRN
BT_SEL_0BT_CLR_0
BT_SEL_1BT_CLR_1
BT_SEL_2BT_CLR_2
BT_SEL_3BT_CLR_3
BT_SEL_4BT_CLR_4
CPSWRDCAPS
EP_TOGEP_OFF
OUT_TOGOUT_USB
RGB_HUIRGB_HUD
RGB_MODRGB_RMOD
RGB_SAIRGB_SAD
RGB_TOGRGB_OFF
RGB_VAIRGB_VAD

mods

Modifiers usable in hold table. Need to have the same name for KC_ and _T versions.

LSFTLCTLLALTLGUIALGR

keycode-translation

Source keycode to implementation equivalent (source, QMK, ZMK, KMonad, SVG, KMK).

AAAaAA
BBBbBB
CCCcCC
DDDdDD
EEEeEE
FFFfFF
GGGgGG
HHHhHH
IIIiII
JJJjJJ
KKKkKK
LLLlLL
MMMmMM
NNNnNN
OOOoOO
PPPpPP
QQQqQQ
RRRrRR
SSSsSS
TTTtTT
UUUuUU
VVVvVV
WWWwWW
XXXxXX
YYYyYY
ZZZzZZ
00N000N0
11N111N1
22N222N2
33N333N3
44N444N4
55N555N5
66N666N6
77N777N7
88N888N8
99N999N9
ALGRALGRRALTraltAltGrRALT
AMPRAMPRAMPS&&AMPR
APPAPPK_APPcompAppAPP
ASTRASTRASTRK**ASTR
ATATAT@@AT
BSLSBSLSBSLH\\BSLS
BSPCBSPCBSPCbspcBack SpaceBSPC
BOOTTD(U_TD_BOOT)U_BOOTU_BOOTU_BOOT
BT_CLR&bt BT_CLRBT Clear
BT_CLR_0BT 0 Clear
BT_CLR_1BT 1 Clear
BT_CLR_2BT 2 Clear
BT_CLR_3BT 3 Clear
BT_CLR_4BT 4 Clear
BT_SEL_0&u_bt_sel_0BT 0 Select
BT_SEL_1&u_bt_sel_1BT 1 Select
BT_SEL_2&u_bt_sel_2BT 2 Select
BT_SEL_3&u_bt_sel_3BT 3 Select
BT_SEL_4&u_bt_sel_4BT 4 Select
BTN1BTN1U_BTN1#(kp/ kp5)Left ButtonMB_LMB
BTN2BTN2U_BTN2#(kp- kp5)Right ButtonMB_RMB
BTN3BTN3U_BTN3#(kp* kp5)Middle ButtonMB_MMB
CAPSCAPSCAPScapsCaps LockCAPS
CIRCCIRCCARET^^CIRC
COLNCOLNCOLON::COLN
COMMCOMMCOMMAU_COMMS_COMMCOMM
CPSWRDCW_TOGG&u_caps_wordcapsCaps WordU_CW
DELDELDELdelDeleteDEL
DF(U_BASE)TD(U_TD_U_BASE)&u_to_U_BASEU_DF(U_BASE)U_DF(U_BASE)U_DF(U_BASE)
DF(U_EXTRA)TD(U_TD_U_EXTRA)&u_to_U_EXTRAU_DF(U_EXTRA)U_DF(U_EXTRA)U_DF(U_EXTRA)
DF(U_TAP)TD(U_TD_U_TAP)&u_to_U_TAPU_DF(U_TAP)U_DF(U_TAP)U_DF(U_TAP)
DLRDLRDLLR$$DLR
DOTDOTDOT..DOT
DOWNDOWNDOWNdownDownDOWN
DQUODQUODQTU_DQUO"DQUO
ENDENDENDendEndEND
ENTENTRETentEnterENT
EP_OFFEP OffPS_OFF
EP_TOGU_EP_TOGEP TogglePS_TOG
EQLEQLEQUAL==EQL
ESCESCESCescEscESC
EXLMEXLMEXCL!!EXLM
F1F1F1f1F1F1
F2F2F2f2F2F2
F3F3F3f3F3F3
F4F4F4f4F4F4
F5F5F5f5F5F5
F6F6F6f6F6F6
F7F7F7f7F7F7
F8F8F8f8F8F8
F9F9F9f9F9F9
F10F10F10f10F10F10
F11F11F11f11F11F11
F12F12F12f12F12F12
GRVGRVGRAVE``GRV
GTGTGT>>RABK
HASHHASHHASH##HASH
HOMEHOMEHOMEhomeHomeHOME
INSINSINSinsInsertINS
LALTLALTLALTaltAltLALT
LBRCLBRCLBKT[[LBRC
LCBRLCBRLBRC{{LCBR
LCTLLCTLLCTRLctlCtrlLCTL
LEFTLEFTLEFTleftLeftLEFT
LGUILGUILGUImetMetaLGUI
LPRNLPRNLPARU_LPRNS_LPRNLPRN
LSFTLSFTLSHFTsftShiftLSFT
LTLTLT<<LABK
MINSMINSMINUS--MINS
MNXTMNXTC_NEXTnextsongNextMNXT
MPLYMPLYC_PPplaypausePlay PauseMPLY
MPRVMPRVC_PREVprevioussongPrevMPRV
MS_DMS_DU_MS_Dkp2Mouse DownMS_DN
MS_LMS_LU_MS_Lkp4Mouse LeftMS_LT
MS_RMS_RU_MS_Rkp6Mouse RightMS_RT
MS_UMS_UU_MS_Ukp8Mouse UpMS_UP
MSTPMSTPC_STOPstopcdStopMSTP
MUTEMUTEC_MUTEmuteMuteMUTE
NONO&noneXXNO
OUT_TOGOU_AUTO&u_out_togOut ToggleHID
OUT_BTOU_BT&out OUT_BTOut BT
OUT_USBOU_USB&out OUT_USBOut USB
PAUSPAUSPAUSE_BREAKpausePause BreakPAUS
PERCPERCPRCNT%%PERC
PGDNPGDNPG_DNpgdnPage DownPGDN
PGUPPGUPPG_UPpgupPage UpPGUP
PIPEPIPEPIPEU_PIPES_PIPEPIPE
PLUSPLUSPLUS++PLUS
PSCRPSCRPSCRNsysrqPrtScn SysRqPSCR
QUESQUESQMARK??QUES
QUOTQUOTSQTU_QUOTQUOT
RBRCRBRCRBKT]]RBRC
RCBRRCBRRBRC}}RCBR
RESETQK_RBT&resetResetRESET
RGB_HUDRGB_HUDRGB Hue -U_RGB_HUD
RGB_HUIRGB_HUIU_RGB_HUIRGB Hue +U_RGB_HUI
RGB_MODRGB_MODU_RGB_EFFRGB Mode +U_RGB_MOD
RGB_RMODRGB_RMODRGB Mode -U_RGB_RMOD
RGB_OFFRGB OffU_RGB_OFF
RGB_SADRGB_SADRGB Sat -U_RGB_SAD
RGB_SAIRGB_SAIU_RGB_SAIRGB Sat +U_RGB_SAI
RGB_TOGRGB_TOGU_RGB_TOGRGB ToggleU_RGB_TOG
RGB_VADRGB_VADRGB Value -U_RGB_VAD
RGB_VAIRGB_VAIU_RGB_BRIRGB Value +U_RGB_VAI
RGHTRGHTRIGHTrightRightRGHT
RPRNRPRNRPARU_RPRNS_RPRNRPRN
SCLNSCLNSEMI;;SCLN
SLCKSCRLSLCKslckScroll LockSLCK
SLSHSLSHSLASH//SLSH
SPCSPCSPACEspcSpaceSPC
TABTABTABtabTabTAB
TILDTILDTILDE~~TILD
TRNSTRNS&trans_TransTRNS
UNDSUNDSUNDER\__UNDS
UPUPUPupUpUP
VOLDVOLDC_VOL_DNvoldVolume DownVOLD
VOLUVOLUC_VOL_UPvoluVolume UpVOLU
WH_DWH_DU_WH_DScroll DownMW_DN
WH_LWH_LU_WH_LScroll Left
WH_RWH_RU_WH_RScroll Right
WH_UWH_UU_WH_UScroll UpMW_UP

table-layer-init

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

table-layer-taphold

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

table-layer-half

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

table-layer-full

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

layer-body

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

layer-names-list

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

layer-names-defines

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

Miryoku QMK

nonkc

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-qmk

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/>.

Miryoku ZMK

nonkp

Keycodes that match any of these prefixes will not have &kp automatically prepended.

U_&

Miryoku SVG

nonquote

Keycodes that match any of these prefixes will not be automatically quoted.

U_

Miryoku KMK

nonkcdot

Keycodes that match any of these prefixes will not have KC. automatically prepended.

U_

Tangled Files

Miryoku QMK

// 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

Miryoku ZMK

// 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

Miryoku KMonad

// 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

Miryoku SVG

// 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

Miryoku KMK

// 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

https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/manna-harbour-boa-32.png

About

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.


Languages

Language:C 100.0%