├── .github ├── FUNDING.yml └── workflows │ ├── build.yml │ ├── test.yml │ ├── build-example-klor.yml │ ├── test-all-mappings.yml │ ├── test-all-keyboards.yml │ ├── test-all-configs.yml │ ├── test-inputs.yml │ ├── build-inputs.yml │ └── main.yml ├── src ├── custom_config.h ├── custom_rules.mk ├── makefile ├── mapping │ ├── 36 │ │ └── minidox.h │ ├── 40 │ │ └── ortho_4x10.h │ ├── 41 │ │ └── splaytoraid.h │ ├── 42 │ │ └── crkbd.h │ ├── 44 │ │ ├── pico.h │ │ └── klor.h │ ├── 45 │ │ └── ffkb.h │ ├── 48 │ │ ├── planck.h │ │ └── lets_split.h │ ├── 50 │ │ └── kyria.h │ ├── 52 │ │ └── ergo_travel.h │ ├── 56 │ │ └── iris.h │ ├── 58 │ │ └── lily58.h │ ├── 60 │ │ ├── preonic.h │ │ └── sofle.h │ ├── 62 │ │ ├── atreus62.h │ │ └── lulu.h │ ├── 64 │ │ └── helix.h │ └── 70 │ │ └── zodiark.h ├── miryoku_babel │ ├── miryoku_layer_list.h │ ├── miryoku_layer_selection.h │ └── miryoku_layer_alternatives.h ├── post_rules.mk ├── main.py.cpp ├── keyboards.h ├── miryoku.h └── build │ └── main.py └── readme.org /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [manna-harbour] 2 | -------------------------------------------------------------------------------- /src/custom_config.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | -------------------------------------------------------------------------------- /src/custom_rules.mk: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Build' 5 | on: 6 | - workflow_dispatch 7 | jobs: 8 | test: 9 | uses: ./.github/workflows/main.yml 10 | with: 11 | mode: '["build"]' 12 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Test' 5 | on: 6 | - push 7 | - pull_request 8 | - workflow_dispatch 9 | jobs: 10 | test: 11 | uses: ./.github/workflows/main.yml 12 | with: 13 | mode: '["test"]' 14 | -------------------------------------------------------------------------------- /.github/workflows/build-example-klor.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Build Example KLOR' 5 | on: 6 | - workflow_dispatch 7 | jobs: 8 | build: 9 | uses: ./.github/workflows/main.yml 10 | with: 11 | mode: '["build"]' 12 | keyboard: '["klor"]' 13 | -------------------------------------------------------------------------------- /src/makefile: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | source := $(wildcard *.py.cpp) 5 | 6 | all: $(source:%.py.cpp=build/%.py) 7 | 8 | build/%.py: %.py.cpp *.h *.mk makefile miryoku_babel/* 9 | cpp -P $(OPT_DEFS) $< | \ 10 | sed \ 11 | -e 's/U_HASH/#/g' \ 12 | -e 's/[ ]*U_LF[ ]*/\n/g' \ 13 | -e 's/[ ]*U_TAB[ ]*/\t/g' \ 14 | > $@ 15 | 16 | include custom_rules.mk 17 | 18 | include post_rules.mk 19 | 20 | -------------------------------------------------------------------------------- /.github/workflows/test-all-mappings.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Test All Mappings' 5 | on: 6 | - workflow_dispatch 7 | jobs: 8 | build: 9 | if: github.repository_owner == 'manna-harbour' 10 | uses: ./.github/workflows/main.yml 11 | with: 12 | mode: '["build"]' 13 | keyboard: '[ 14 | "Keebio_Levinson", 15 | "Kyria", 16 | ]' 17 | mapping: '[ 18 | "extended_thumbs", 19 | "pinkie_stagger", 20 | ]' 21 | -------------------------------------------------------------------------------- /src/mapping/36/minidox.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_MINIDOX) 5 | 6 | #define MIRYOKU_LAYOUTMAPPING_MINIDOX( \ 7 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 8 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 9 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 10 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 11 | ) \ 12 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, U_LF \ 13 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, U_LF \ 14 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, U_LF \ 15 | K32, K33, K34, K35, K36, K37 U_LF 16 | 17 | #endif 18 | 19 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_MINIDOX 20 | -------------------------------------------------------------------------------- /src/mapping/40/ortho_4x10.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_ORTHO_4X10) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_ORTHO_4X10( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, U_LF \ 15 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, U_LF \ 16 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, U_LF \ 17 | XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX U_LF 18 | 19 | #endif 20 | 21 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_ORTHO_4X10 22 | -------------------------------------------------------------------------------- /src/miryoku_babel/miryoku_layer_list.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | // generated -*- buffer-read-only: t -*- 4 | 5 | #pragma once 6 | 7 | #if !defined (MIRYOKU_LAYER_LIST) 8 | 9 | #define MIRYOKU_LAYER_LIST \ 10 | MIRYOKU_X(BASE, "Base") \ 11 | MIRYOKU_X(EXTRA, "Extra") \ 12 | MIRYOKU_X(TAP, "Tap") \ 13 | MIRYOKU_X(BUTTON, "Button") \ 14 | MIRYOKU_X(NAV, "Nav") \ 15 | MIRYOKU_X(MOUSE, "Mouse") \ 16 | MIRYOKU_X(MEDIA, "Media") \ 17 | MIRYOKU_X(NUM, "Num") \ 18 | MIRYOKU_X(SYM, "Sym") \ 19 | MIRYOKU_X(FUN, "Fun") 20 | 21 | #define U_BASE 0 22 | #define U_EXTRA 1 23 | #define U_TAP 2 24 | #define U_BUTTON 3 25 | #define U_NAV 4 26 | #define U_MOUSE 5 27 | #define U_MEDIA 6 28 | #define U_NUM 7 29 | #define U_SYM 8 30 | #define U_FUN 9 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/mapping/48/planck.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_PLANCK) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_PLANCK( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, U_LF \ 15 | K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, U_LF \ 16 | K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, U_LF \ 17 | XXX, XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX, XXX U_LF 18 | 19 | #endif 20 | 21 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_PLANCK 22 | -------------------------------------------------------------------------------- /src/mapping/42/crkbd.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_CRKBD) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_CRKBD( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 15 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 16 | XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, U_LF \ 17 | K32, K33, K34, K35, K36, K37 U_LF 18 | 19 | #endif 20 | 21 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_CRKBD 22 | -------------------------------------------------------------------------------- /src/mapping/44/pico.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_PICO) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_PICO( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 15 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 16 | XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, U_LF \ 17 | XXX, K32, K33, K34, K35, K36, K37, XXX U_LF 18 | 19 | #endif 20 | 21 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_PICO 22 | -------------------------------------------------------------------------------- /src/mapping/45/ffkb.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_FFKB) 5 | 6 | #define XXX &KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_FFKB( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 15 | XXX, K10, K11, K12, K13, K14, XXX, K15, K16, K17, K18, K19, XXX, U_LF \ 16 | XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, U_LF \ 17 | XXX, K32, K33, K34, K35, K36, K37, XXX U_LF 18 | 19 | #endif 20 | 21 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_FFKB 22 | -------------------------------------------------------------------------------- /src/mapping/41/splaytoraid.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_SPLAYTORAID) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_SPLAYTORAID( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 15 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 16 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, U_LF \ 17 | K32, K33, K34, XXX, K35, K36, K37 U_LF 18 | 19 | #endif 20 | 21 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_SPLAYTORAID 22 | -------------------------------------------------------------------------------- /src/mapping/60/preonic.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_PREONIC) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_PREONIC( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, U_LF \ 15 | K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, U_LF \ 16 | K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, U_LF \ 17 | K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, U_LF \ 18 | XXX, XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX, XXX U_LF 19 | 20 | #endif 21 | 22 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_PREONIC 23 | -------------------------------------------------------------------------------- /.github/workflows/test-all-keyboards.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Test All Keyboards' 5 | on: 6 | - workflow_dispatch 7 | jobs: 8 | build: 9 | if: github.repository_owner == 'manna-harbour' 10 | uses: ./.github/workflows/main.yml 11 | with: 12 | mode: '["build"]' 13 | keyboard: '[ 14 | "default", 15 | "Atreus62", 16 | "Boardsource_4x12", 17 | "Boardsource_5x12", 18 | "Boardsource_Lulu", 19 | "Boardsource_Microdox", 20 | "CRKBD", 21 | "Crowboard", 22 | "Ergo_Travel", 23 | "FFKB", 24 | "Helix", 25 | "Keebio_Iris", 26 | "Keebio_Levinson", 27 | "Keebio_Nyquist", 28 | "KLOR", 29 | "Kyria", 30 | "Lily58", 31 | "Lunakey_Pico", 32 | "Rhymestone", 33 | "Sofle", 34 | "Splaytoraid", 35 | "Zodiark", 36 | ]' 37 | -------------------------------------------------------------------------------- /src/mapping/52/ergo_travel.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_ERGO_TRAVEL) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_ERGO_TRAVEL( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, U_LF \ 15 | XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, U_LF \ 16 | XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, U_LF \ 17 | XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX U_LF 18 | 19 | #endif 20 | 21 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_ERGO_TRAVEL 22 | -------------------------------------------------------------------------------- /src/mapping/44/klor.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_KLOR) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_KLOR( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, U_LF \ 15 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 16 | XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, U_LF \ 17 | K32, K33, K34, XXX, XXX, K35, K36, K37, U_LF \ 18 | XXX, U_LF \ 19 | XXX, U_LF \ 20 | XXX, U_LF \ 21 | XXX U_LF 22 | 23 | #endif 24 | 25 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_KLOR 26 | -------------------------------------------------------------------------------- /src/mapping/62/atreus62.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_ATREUS) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_ATREUS( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ 15 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ 16 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ 17 | XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ 18 | XXX, XXX, XXX, XXX, K32, K33, K36, K37, XXX, XXX, XXX, XXX, \ 19 | XXX, XXX, XXX, XXX, XXX, K34, K35, XXX, XXX, XXX, XXX, XXX 20 | 21 | #endif 22 | 23 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_ATREUS 24 | -------------------------------------------------------------------------------- /src/mapping/56/iris.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_IRIS) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_IRIS( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, U_LF \ 15 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 16 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 17 | XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, U_LF \ 18 | K32, K33, K34, K35, K36, K37 U_LF 19 | 20 | #endif 21 | 22 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_IRIS 23 | -------------------------------------------------------------------------------- /.github/workflows/test-all-configs.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Test All Configs' 5 | on: 6 | - workflow_dispatch 7 | jobs: 8 | build: 9 | if: github.repository_owner == 'manna-harbour' 10 | uses: ./.github/workflows/main.yml 11 | with: 12 | mode: '["build"]' 13 | rgb: '[ 14 | "default", 15 | "LED", 16 | "PEG", 17 | "RGB", 18 | ]' 19 | alphas: '[ 20 | "default", 21 | "azerty", 22 | "beakl15", 23 | "colemak", 24 | "colemakdhk", 25 | "dvorak", 26 | "halmak", 27 | "workman", 28 | "qwerty", 29 | "qwertz", 30 | "workman" 31 | ]' 32 | nav: '[ 33 | "default", 34 | "invertedt" 35 | "vi" 36 | ]' 37 | clipboard: '[ 38 | "default", 39 | "fun", 40 | "mac", 41 | "win" 42 | ]' 43 | layers: '[ 44 | "default", 45 | "flip" 46 | ]' 47 | -------------------------------------------------------------------------------- /src/mapping/62/lulu.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_LULU) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_LULU( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, U_LF \ 15 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 16 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 17 | XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, U_LF \ 18 | XXX, K32, K33, K34, K35, K36, K37, XXX, U_LF \ 19 | XXX, U_LF \ 20 | XXX, U_LF \ 21 | XXX, U_LF \ 22 | XXX U_LF 23 | 24 | #endif 25 | 26 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_LULU 27 | -------------------------------------------------------------------------------- /src/mapping/64/helix.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_HELIX) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_HELIX( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ 15 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ 16 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ 17 | XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ 18 | XXX, XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, XXX 19 | 20 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_LEFT 55 56 21 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_RIGHT 57 58 22 | 23 | #endif 24 | 25 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_HELIX 26 | -------------------------------------------------------------------------------- /src/mapping/58/lily58.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_LILY58) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_LILY58( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, U_LF \ 15 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 16 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 17 | XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, U_LF \ 18 | XXX, K32, K33, K34, K35, K36, K37, XXX U_LF 19 | 20 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_LEFT 52 53 21 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_RIGHT 54 55 22 | 23 | #endif 24 | 25 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_LILY58 26 | -------------------------------------------------------------------------------- /src/mapping/60/sofle.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_SOFLE) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_SOFLE( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX U_LF \ 15 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX U_LF \ 16 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX U_LF \ 17 | XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX U_LF \ 18 | XXX, XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX, XXX U_LF 19 | 20 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_LEFT 53 54 21 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_RIGHT 55 56 22 | 23 | #endif 24 | 25 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_SOFLE 26 | -------------------------------------------------------------------------------- /src/mapping/70/zodiark.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_ZODIARK) 5 | 6 | #define XXX KC.NO 7 | 8 | #define MIRYOKU_LAYOUTMAPPING_ZODIARK( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 12 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 13 | ) \ 14 | XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, U_LT \ 15 | XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, U_LT \ 16 | XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, U_LT \ 17 | XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, U_LT \ 18 | XXX, XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, XXX U_LT 19 | 20 | #endif 21 | 22 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_ZODIARK 23 | -------------------------------------------------------------------------------- /src/post_rules.mk: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | 5 | # create macro with value appended 6 | 7 | ifneq ($(strip $(MIRYOKU_ALPHAS)),) 8 | OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS) 9 | endif 10 | 11 | ifneq ($(strip $(MIRYOKU_EXTRA)),) 12 | OPT_DEFS += -DMIRYOKU_EXTRA_$(MIRYOKU_EXTRA) 13 | endif 14 | 15 | ifneq ($(strip $(MIRYOKU_TAP)),) 16 | OPT_DEFS += -DMIRYOKU_TAP_$(MIRYOKU_TAP) 17 | endif 18 | 19 | ifneq ($(strip $(MIRYOKU_NAV)),) 20 | OPT_DEFS += -DMIRYOKU_NAV_$(MIRYOKU_NAV) 21 | endif 22 | 23 | ifneq ($(strip $(MIRYOKU_CLIPBOARD)),) 24 | OPT_DEFS += -DMIRYOKU_CLIPBOARD_$(MIRYOKU_CLIPBOARD) 25 | endif 26 | 27 | ifneq ($(strip $(MIRYOKU_LAYERS)),) 28 | OPT_DEFS += -DMIRYOKU_LAYERS_$(MIRYOKU_LAYERS) 29 | endif 30 | 31 | ifneq ($(strip $(MIRYOKU_MAPPING)),) 32 | OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING) 33 | endif 34 | 35 | ifneq ($(strip $(KMK_KEYBOARD)),) 36 | OPT_DEFS += -DKMK_KEYBOARD_$(KMK_KEYBOARD) 37 | endif 38 | 39 | ifneq ($(strip $(KMK_RGB)),) 40 | OPT_DEFS += -DKMK_RGB_$(KMK_RGB) 41 | endif 42 | 43 | 44 | # create macro with value 45 | 46 | ifneq ($(strip $(KMK_KCP)),) 47 | OPT_DEFS += -DKMK_KCP=$(KMK_KCP) 48 | endif 49 | 50 | -------------------------------------------------------------------------------- /src/mapping/48/lets_split.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_LETS_SPLIT) 5 | 6 | #define XXX KC.NO 7 | 8 | #if defined MIRYOKU_MAPPING_PINKIE_STAGGER 9 | #define MIRYOKU_LAYOUTMAPPING_LETS_SPLIT(\ 10 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 11 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 12 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 13 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 14 | ) \ 15 | XXX, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, XXX, U_LF \ 16 | K00, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K09, U_LF \ 17 | K10, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K19, U_LF \ 18 | K20, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, K29 U_LF 19 | #else 20 | #define MIRYOKU_LAYOUTMAPPING_LETS_SPLIT(\ 21 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 22 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 23 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 24 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 25 | ) \ 26 | K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, U_LF \ 27 | K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, U_LF \ 28 | K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, U_LF \ 29 | XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX U_LF 30 | #endif 31 | 32 | #endif 33 | 34 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_LETS_SPLIT 35 | -------------------------------------------------------------------------------- /src/main.py.cpp: -------------------------------------------------------------------------------- 1 | U_HASH Copyright 2022 Manna Harbour 2 | U_HASH github.com/manna-harbour/miryoku 3 | U_HASH generated 4 | 5 | #include "miryoku.h" 6 | 7 | from kb import KMKKeyboard; keyboard = KMKKeyboard(KMK_KCP) 8 | from kmk.keys import KC 9 | from kmk.modules.layers import Layers; keyboard.modules.append(Layers()) 10 | from kmk.modules.modtap import ModTap; keyboard.modules.append(ModTap()) 11 | from kmk.modules.mouse_keys import MouseKeys; keyboard.modules.append(MouseKeys()) 12 | from kmk.modules.power import Power; keyboard.modules.append(Power()) 13 | from kmk.modules.tapdance import TapDance; keyboard.modules.append(TapDance()) 14 | from kmk.extensions.media_keys import MediaKeys; keyboard.extensions.append(MediaKeys()) 15 | from kmk.modules.capsword import CapsWord; keyboard.modules.append(CapsWord()) // must come after modtap 16 | 17 | #if defined (KMK_RGB_RGB) 18 | U_HASH from kmk.extensions.RGB import RGB; keyboard.extensions.append(RGB(pixel_pin=EDIT, num_pixels=EDIT)) 19 | #elif defined (KMK_RGB_PEG) 20 | U_HASH from kmk.extensions.peg_rgb_matrix import Rgb_matrix,Rgb_matrix_data,Color; keyboard.extensions.append(Rgb_matrix(EDIT)) 21 | #elif defined (KMK_RGB_LED) 22 | U_HASH from kmk.extensions.LED import LED; keyboard.extensions.append(LED(EDIT)) 23 | #endif 24 | 25 | U_LF 26 | 27 | keyboard.keymap = [ 28 | #define MIRYOKU_X(LAYER, STRING) \ 29 | U_HASH LAYER U_LF \ 30 | [ U_LF \ 31 | U_MACRO_VA_ARGS(U_MACRO_EXPAND(MIRYOKU_LAYERMAPPING_##LAYER), MIRYOKU_LAYER_##LAYER)\ 32 | ], U_LF 33 | MIRYOKU_LAYER_LIST 34 | #undef MIRYOKU_X 35 | ] U_LF 36 | 37 | layer_names_list = [ 38 | #define MIRYOKU_X(LAYER, STRING) \ 39 | STRING, 40 | MIRYOKU_LAYER_LIST 41 | #undef MIRYOKU_X 42 | ] U_LF 43 | 44 | if __name__ == '__main__': 45 | print('starting Miryoku KMK') 46 | keyboard.go() 47 | -------------------------------------------------------------------------------- /src/keyboards.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #pragma once 5 | 6 | #if defined (KMK_KEYBOARD_ATREUS62) 7 | #include "mapping/62/atreus62.h" 8 | #elif defined (KMK_KEYBOARD_BOARDSOURCE_4X12) 9 | #include "mapping/48/planck.h" 10 | #elif defined (KMK_KEYBOARD_BOARDSOURCE_5X12) 11 | #include "mapping/60/preonic.h" 12 | #elif defined (KMK_KEYBOARD_BOARDSOURCE_LULU) 13 | #include "mapping/62/lulu.h" 14 | #elif defined (KMK_KEYBOARD_BOARDSOURCE_MICRODOX) 15 | #include "mapping/36/minidox.h" 16 | #elif defined (KMK_KEYBOARD_CRKBD) 17 | #include "mapping/42/crkbd.h" 18 | #elif defined (KMK_KEYBOARD_CROWBOARD) 19 | #include "mapping/40/ortho_4x10.h" 20 | #elif defined (KMK_KEYBOARD_ERGO_TRAVEL) 21 | #include "mapping/52/ergo_travel.h" 22 | #elif defined (KMK_KEYBOARD_FFKB) 23 | #include "mapping/45/ffkb.h" 24 | #elif defined (KMK_KEYBOARD_HELIX) 25 | #include "mapping/64/helix.h" 26 | #elif defined (KMK_KEYBOARD_KEEBIO_IRIS) 27 | #include "mapping/56/iris.h" 28 | #elif defined (KMK_KEYBOARD_KEEBIO_LEVINSON) 29 | #include "mapping/48/lets_split.h" 30 | #elif defined (KMK_KEYBOARD_KEEBIO_NYQUIST) 31 | #include "mapping/60/preonic.h" 32 | #elif defined (KMK_KEYBOARD_KLOR) 33 | #include "mapping/44/klor.h" 34 | #elif defined (KMK_KEYBOARD_KYRIA) 35 | #include "mapping/50/kyria.h" 36 | #elif defined (KMK_KEYBOARD_LILY58) 37 | #include "mapping/58/lily58.h" 38 | #elif defined (KMK_KEYBOARD_LUNAKEY_PICO) 39 | #include "mapping/44/pico.h" 40 | #elif defined (KMK_KEYBOARD_RHYMESTONE) 41 | #include "mapping/40/ortho_4x10.h" 42 | #elif defined (KMK_KEYBOARD_SOFLE) 43 | #include "mapping/60/sofle.h" 44 | #elif defined (KMK_KEYBOARD_SPLAYTORAID) 45 | #include "mapping/41/splaytoraid.h" 46 | #else 47 | #include "mapping/36/minidox.h" 48 | #endif 49 | -------------------------------------------------------------------------------- /src/mapping/50/kyria.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #if !defined (MIRYOKU_LAYOUTMAPPING_KYRIA) 5 | 6 | #define XXX KC.NO 7 | 8 | #if defined MIRYOKU_MAPPING_EXTENDED_THUMBS 9 | #define MIRYOKU_LAYOUTMAPPING_KYRIA(\ 10 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 11 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 12 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 13 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 14 | )\ 15 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 16 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 17 | XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, U_LF \ 18 | XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX U_LF 19 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_LEFT 43 44 20 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_RIGHT 45 46 21 | #else 22 | #define MIRYOKU_LAYOUTMAPPING_KYRIA(\ 23 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ 24 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ 25 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ 26 | N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ 27 | )\ 28 | XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, U_LF \ 29 | XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, U_LF \ 30 | XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, U_LF \ 31 | XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX U_LF 32 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_LEFT 42 43 33 | #define MIRYOKU_KLUDGE_THUMBCOMBOS_RIGHT 46 47 34 | #endif 35 | 36 | #endif 37 | 38 | #define MIRYOKU_MAPPING MIRYOKU_LAYOUTMAPPING_KYRIA 39 | -------------------------------------------------------------------------------- /src/miryoku.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | 4 | #pragma once 5 | 6 | #include "custom_config.h" 7 | 8 | #include "keyboards.h" 9 | 10 | #include "miryoku_babel/miryoku_layer_selection.h" 11 | #include "miryoku_babel/miryoku_layer_list.h" 12 | 13 | #define U_MACRO_VA_ARGS(MACRO, ...) MACRO(__VA_ARGS__) 14 | #define U_MACRO_EXPAND(...) __VA_ARGS__ 15 | #define U_STRINGIFY(x) #x 16 | 17 | #define U_NP KC.NO // key is not present 18 | #define U_NA KC.NO // present but not available for use 19 | #define U_NU KC.NO // available but not used 20 | 21 | #define U_TAPPING_TERM 200 22 | 23 | #define U_MT(TAP, HOLD) KC.MT(TAP, HOLD, prefer_hold=False, tap_interrupted=True, tap_time=U_TAPPING_TERM) 24 | #define U_LT(HOLD, TAP) KC.LT(HOLD, TAP, prefer_hold=True, tap_interrupted=False, tap_time=U_TAPPING_TERM) 25 | #define U_DF(LAYER) KC.TD(KC.NO, KC.DF(LAYER), tap_time=U_TAPPING_TERM) 26 | 27 | #define U_CW KC.TD(KC.CW, KC.CAPS, tap_time=U_TAPPING_TERM) 28 | #define U_BOOT KC.TD(KC.NO, KC.RELOAD, tap_time=U_TAPPING_TERM) 29 | 30 | #if !defined (KMK_KCP) 31 | #define KMK_KCP 32 | #endif 33 | 34 | #if defined (MIRYOKU_CLIPBOARD_FUN) 35 | #define U_RDO KC.NO 36 | #define U_PST KC.NO 37 | #define U_CPY KC.NO 38 | #define U_CUT KC.NO 39 | #define U_UND KC.NO 40 | #elif defined (MIRYOKU_CLIPBOARD_MAC) 41 | #define U_RDO KC.LSFT(KC.LGUI(KC.Z)) 42 | #define U_PST KC.LGUI(KC.V) 43 | #define U_CPY KC.LGUI(KC.C) 44 | #define U_CUT KC.LGUI(KC.X) 45 | #define U_UND KC.LGUI(KC.Z) 46 | #elif defined (MIRYOKU_CLIPBOARD_WIN) 47 | #define U_RDO KC.LCTL(KC.Y) 48 | #define U_PST KC.LCTL(KC.V) 49 | #define U_CPY KC.LCTL(KC.C) 50 | #define U_CUT KC.LCTL(KC.X) 51 | #define U_UND KC.LCTL(KC.Z) 52 | #else 53 | #define U_RDO KC.NO 54 | #define U_PST KC.LSFT(KC.INS) 55 | #define U_CPY KC.LCTL(KC.INS) 56 | #define U_CUT KC.LSFT(KC.DEL) 57 | #define U_UND KC.NO 58 | #endif 59 | 60 | #if defined (KMK_RGB_RGB) 61 | #define U_RGB_HUD KC.RGB_HUD 62 | #define U_RGB_HUI KC.RGB_HUI 63 | #define U_RGB_MOD KC.NO 64 | #define U_RGB_RMOD KC.NO 65 | #define U_RGB_OFF KC.NO 66 | #define U_RGB_SAD KC.RGB_SAD 67 | #define U_RGB_SAI KC.RGB_SAI 68 | #define U_RGB_TOG KC.RGB_TOG 69 | #define U_RGB_VAD KC.RGB_VAD 70 | #define U_RGB_VAI KC.RGB_VAI 71 | #elif defined (KMK_RGB_PEG) 72 | #define U_RGB_HUD KC.NO 73 | #define U_RGB_HUI KC.NO 74 | #define U_RGB_MOD KC.NO 75 | #define U_RGB_RMOD KC.NO 76 | #define U_RGB_OFF KC.NO 77 | #define U_RGB_SAD KC.NO 78 | #define U_RGB_SAI KC.NO 79 | #define U_RGB_TOG KC.RGB_TOG 80 | #define U_RGB_VAD KC.RGB_BRD 81 | #define U_RGB_VAI KC.RGB_BRI 82 | #elif defined (KMK_RGB_LED) 83 | #define U_RGB_HUD KC.NO 84 | #define U_RGB_HUI KC.NO 85 | #define U_RGB_MOD KC.NO 86 | #define U_RGB_RMOD KC.NO 87 | #define U_RGB_OFF KC.NO 88 | #define U_RGB_SAD KC.NO 89 | #define U_RGB_SAI KC.NO 90 | #define U_RGB_TOG KC.LED_TOG() 91 | #define U_RGB_VAD KC.LED_DEC() 92 | #define U_RGB_VAI KC.LED_INC() 93 | #else 94 | #define U_RGB_HUD KC.NO 95 | #define U_RGB_HUI KC.NO 96 | #define U_RGB_MOD KC.NO 97 | #define U_RGB_RMOD KC.NO 98 | #define U_RGB_OFF KC.NO 99 | #define U_RGB_SAD KC.NO 100 | #define U_RGB_SAI KC.NO 101 | #define U_RGB_TOG KC.NO 102 | #define U_RGB_VAD KC.NO 103 | #define U_RGB_VAI KC.NO 104 | #endif 105 | -------------------------------------------------------------------------------- /.github/workflows/test-inputs.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Test Inputs' 5 | on: 6 | workflow_dispatch: 7 | inputs: 8 | keyboard: 9 | description: 'KMK Keyboard' 10 | required: false 11 | default: 'default' 12 | rgb: 13 | description: 'KMK RGB' 14 | required: false 15 | default: 'default' 16 | alphas: 17 | description: 'Miryoku Alphas' 18 | required: false 19 | default: 'default' 20 | nav: 21 | description: 'Miryoku Nav' 22 | required: false 23 | default: 'default' 24 | clipboard: 25 | description: 'Miryoku Clipboard' 26 | required: false 27 | default: 'default' 28 | layers: 29 | description: 'Miryoku Layers' 30 | required: false 31 | default: 'default' 32 | mapping: 33 | description: 'Miryoku Mapping' 34 | required: false 35 | default: 'default' 36 | rules: 37 | description: 'custom_rules.mk' 38 | required: false 39 | default: 'default' 40 | custom_config: 41 | description: 'custom_custom_config.h' 42 | required: false 43 | default: 'default' 44 | jobs: 45 | process-inputs: 46 | runs-on: ubuntu-latest 47 | outputs: 48 | keyboard: ${{ steps.process-inputs.outputs.keyboard }} 49 | rgb: ${{ steps.process-inputs.outputs.rgb }} 50 | alphas: ${{ steps.process-inputs.outputs.alphas }} 51 | nav: ${{ steps.process-inputs.outputs.nav }} 52 | clipboard: ${{ steps.process-inputs.outputs.clipboard }} 53 | layers: ${{ steps.process-inputs.outputs.layers }} 54 | mapping: ${{ steps.process-inputs.outputs.mapping }} 55 | rules: ${{ steps.process-inputs.outputs.rules }} 56 | custom_config: ${{ steps.process-inputs.outputs.custom_config }} 57 | steps: 58 | - name: Process inputs 59 | id: process-inputs 60 | run: | 61 | set-output() 62 | { 63 | json=`echo "$2" | jq -cnR 'inputs | split(",";"")'` 64 | echo "$1=$json" >> $GITHUB_OUTPUT 65 | } 66 | set-output "keyboard" "${{ github.event.inputs.keyboard }}" 67 | set-output "rgb" "${{ github.event.inputs.rgb }}" 68 | set-output "alphas" "${{ github.event.inputs.alphas }}" 69 | set-output "nav" "${{ github.event.inputs.nav }}" 70 | set-output "clipboard" "${{ github.event.inputs.clipboard }}" 71 | set-output "layers" "${{ github.event.inputs.layers }}" 72 | set-output "mapping" "${{ github.event.inputs.mapping }}" 73 | set-output "rules" "${{ github.event.inputs.rules }}" 74 | set-output "custom_config" "${{ github.event.inputs.custom_config }}" 75 | build: 76 | uses: ./.github/workflows/main.yml 77 | needs: process-inputs 78 | with: 79 | mode: '["build"]' 80 | keyboard: ${{ needs.process-inputs.outputs.keyboard }} 81 | rgb: ${{ needs.process-inputs.outputs.rgb }} 82 | alphas: ${{ needs.process-inputs.outputs.alphas }} 83 | nav: ${{ needs.process-inputs.outputs.nav }} 84 | clipboard: ${{ needs.process-inputs.outputs.clipboard }} 85 | layers: ${{ needs.process-inputs.outputs.layers }} 86 | mapping: ${{ needs.process-inputs.outputs.mapping }} 87 | rules: ${{ needs.process-inputs.outputs.rules }} 88 | custom_config: ${{ needs.process-inputs.outputs.custom_config }} 89 | -------------------------------------------------------------------------------- /.github/workflows/build-inputs.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Build Inputs' 5 | on: 6 | workflow_dispatch: 7 | inputs: 8 | keyboard: 9 | description: 'KMK Keyboard' 10 | required: false 11 | default: 'default' 12 | type: choice 13 | options: 14 | - "default" 15 | - "Atreus62" 16 | - "Boardsource_4x12" 17 | - "Boardsource_5x12" 18 | - "Boardsource_Lulu" 19 | - "Boardsource_Microdox" 20 | - "CRKBD" 21 | - "Crowboard" 22 | - "Ergo_Travel" 23 | - "FFKB" 24 | - "Helix" 25 | - "Keebio_Iris" 26 | - "Keebio_Levinson" 27 | - "Keebio_Nyquist" 28 | - "KLOR" 29 | - "Kyria" 30 | - "Lily58" 31 | - "Lunakey_Pico" 32 | - "Rhymestone" 33 | - "Sofle" 34 | - "Splaytoraid" 35 | - "Zodiark" 36 | rgb: 37 | description: 'KMK RGB' 38 | required: false 39 | default: 'default' 40 | type: choice 41 | options: 42 | - "default" 43 | - "LED" 44 | - "PEG" 45 | - "RGB" 46 | alphas: 47 | description: 'Miryoku Alphas' 48 | required: false 49 | default: 'default' 50 | type: choice 51 | options: 52 | - "default" 53 | - "AZERTY" 54 | - "BEAKL15" 55 | - "Colemak" 56 | - "ColemakDHK" 57 | - "Dvorak" 58 | - "Halmak" 59 | - "QWERTY" 60 | - "QWERTZ" 61 | - "Workman" 62 | nav: 63 | description: 'Miryoku Nav' 64 | required: false 65 | default: 'default' 66 | type: choice 67 | options: 68 | - "default" 69 | - "invertedT" 70 | - "vi" 71 | clipboard: 72 | description: 'Miryoku Clipboard' 73 | required: false 74 | default: 'default' 75 | type: choice 76 | options: 77 | - "default" 78 | - "fun" 79 | - "Mac" 80 | - "Win" 81 | layers: 82 | description: 'Miryoku Layers' 83 | required: false 84 | default: 'default' 85 | type: choice 86 | options: 87 | - "default" 88 | - "flip" 89 | mapping: 90 | description: 'Miryoku Mapping' 91 | required: false 92 | default: 'default' 93 | type: choice 94 | options: 95 | - "default" 96 | - "Extended_Thumbs" 97 | - "Pinkie_Stagger" 98 | rules: 99 | description: 'custom_rules.mk' 100 | required: false 101 | default: 'default' 102 | custom_config: 103 | description: 'custom_config.h' 104 | required: false 105 | default: 'default' 106 | jobs: 107 | process-inputs: 108 | runs-on: ubuntu-latest 109 | outputs: 110 | keyboard: ${{ steps.process-inputs.outputs.keyboard }} 111 | rgb: ${{ steps.process-inputs.outputs.rgb }} 112 | alphas: ${{ steps.process-inputs.outputs.alphas }} 113 | nav: ${{ steps.process-inputs.outputs.nav }} 114 | clipboard: ${{ steps.process-inputs.outputs.clipboard }} 115 | layers: ${{ steps.process-inputs.outputs.layers }} 116 | mapping: ${{ steps.process-inputs.outputs.mapping }} 117 | rules: ${{ steps.process-inputs.outputs.rules }} 118 | custom_config: ${{ steps.process-inputs.outputs.custom_config }} 119 | steps: 120 | - name: Process inputs 121 | id: process-inputs 122 | run: | 123 | set-output() 124 | { 125 | json=`echo "$2" | jq -cnR 'inputs | split(",";"")'` 126 | echo "$1=$json" >> $GITHUB_OUTPUT 127 | } 128 | set-output "keyboard" "${{ github.event.inputs.keyboard }}" 129 | set-output "rgb" "${{ github.event.inputs.rgb }}" 130 | set-output "alphas" "${{ github.event.inputs.alphas }}" 131 | set-output "nav" "${{ github.event.inputs.nav }}" 132 | set-output "clipboard" "${{ github.event.inputs.clipboard }}" 133 | set-output "layers" "${{ github.event.inputs.layers }}" 134 | set-output "mapping" "${{ github.event.inputs.mapping }}" 135 | set-output "rules" "${{ github.event.inputs.rules }}" 136 | set-output "custom_config" "${{ github.event.inputs.custom_config }}" 137 | build: 138 | uses: ./.github/workflows/main.yml 139 | needs: process-inputs 140 | with: 141 | mode: '["build"]' 142 | keyboard: ${{ needs.process-inputs.outputs.keyboard }} 143 | rgb: ${{ needs.process-inputs.outputs.rgb }} 144 | alphas: ${{ needs.process-inputs.outputs.alphas }} 145 | nav: ${{ needs.process-inputs.outputs.nav }} 146 | clipboard: ${{ needs.process-inputs.outputs.clipboard }} 147 | layers: ${{ needs.process-inputs.outputs.layers }} 148 | mapping: ${{ needs.process-inputs.outputs.mapping }} 149 | rules: ${{ needs.process-inputs.outputs.rules }} 150 | custom_config: ${{ needs.process-inputs.outputs.custom_config }} 151 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | name: 'Main' 5 | on: 6 | workflow_call: 7 | inputs: 8 | mode: 9 | type: string 10 | keyboard: 11 | type: string 12 | default: '["default"]' 13 | rgb: 14 | type: string 15 | default: '["default"]' 16 | alphas: 17 | type: string 18 | default: '["default"]' 19 | nav: 20 | type: string 21 | default: '["default"]' 22 | clipboard: 23 | type: string 24 | default: '["default"]' 25 | layers: 26 | type: string 27 | default: '["default"]' 28 | mapping: 29 | type: string 30 | default: '["default"]' 31 | rules: 32 | type: string 33 | default: '["default"]' 34 | custom_config: 35 | type: string 36 | default: '["default"]' 37 | jobs: 38 | main: 39 | runs-on: ubuntu-latest 40 | strategy: 41 | matrix: 42 | mode: ${{ fromJSON(inputs.mode) }} 43 | keyboard: ${{ fromJSON(inputs.keyboard) }} 44 | rgb: ${{ fromJSON(inputs.rgb) }} 45 | alphas: ${{ fromJSON(inputs.alphas) }} 46 | nav: ${{ fromJSON(inputs.nav) }} 47 | clipboard: ${{ fromJSON(inputs.clipboard) }} 48 | layers: ${{ fromJSON(inputs.layers) }} 49 | mapping: ${{ fromJSON(inputs.mapping) }} 50 | rules: ${{ fromJSON(inputs.rules) }} 51 | custom_config: ${{ fromJSON(inputs.custom_config) }} 52 | steps: 53 | - name: Checkout 54 | uses: actions/checkout@v3 55 | - name: Process inputs 56 | id: inputs 57 | run: | 58 | artifacts_dir="artifacts" 59 | mkdir "$artifacts_dir" 60 | src='src' 61 | build="$src/build" 62 | rules="$src/custom_rules.mk" 63 | config="$src/custom_config.h" 64 | artifact_build_name='miryoku_kmk' 65 | for option in "keyboard=${{ matrix.keyboard }}" "rgb=${{ matrix.rgb }}" 66 | do 67 | if ! expr "$option" : '.*=default$' 68 | then 69 | artifact_build_name="$artifact_build_name "`echo "$option" | tr '=/' '__'` 70 | option=`echo "KMK_$option" | tr 'a-z' 'A-Z'` 71 | echo "$option" >> "$rules" 72 | fi 73 | done 74 | for option in "alphas=${{ matrix.alphas }}" "nav=${{ matrix.nav }}" "clipboard=${{ matrix.clipboard }}" "layers=${{ matrix.layers }}" "mapping=${{ matrix.mapping }}" 75 | do 76 | if ! expr "$option" : '.*=default$' 77 | then 78 | artifact_build_name="$artifact_build_name "`echo "$option" | tr '=/' '__'` 79 | option=`echo "MIRYOKU_$option" | tr 'a-z' 'A-Z'` 80 | echo "$option" >> "$rules" 81 | fi 82 | done 83 | if [ -n "${{ matrix.rules }}" -a "${{ matrix.rules }}" != 'default' ] 84 | then 85 | artifact_build_name="$artifact_build_name rules_"`echo "${{ matrix.rules }}" | md5sum | cut -d ' ' -f 1` 86 | echo "${{ matrix.rules }}" >> "$rules" 87 | fi 88 | if [ -n "${{ matrix.custom_config }}" -a "${{ matrix.custom_config }}" != 'default' ] 89 | then 90 | artifact_build_name="$artifact_build_name config_"`echo "${{ matrix.custom_config }}" | md5sum | cut -d ' ' -f 1` 91 | echo "${{ matrix.custom_config }}" >> "$config" 92 | fi 93 | cp "$rules" "$config" "$artifacts_dir" 94 | artifact_build_name=`echo $artifact_build_name | tr ' ' '-'` 95 | echo "artifact_dir=$artifacts_dir" >> $GITHUB_OUTPUT 96 | echo "artifact_build_name=$artifact_build_name" >> $GITHUB_OUTPUT 97 | echo "src=src" >> $GITHUB_OUTPUT 98 | echo "build=$build" >> $GITHUB_OUTPUT 99 | - name: Remove Build 100 | if: ${{ matrix.mode == 'test' }} 101 | run: | 102 | rm -r "${{ steps.inputs.outputs.build }}" 103 | mkdir "${{ steps.inputs.outputs.build }}" 104 | git status -s "${{ steps.inputs.outputs.build }}" 105 | - name: Build 106 | run: cd "${{ steps.inputs.outputs.src }}" && make 107 | - name: Copy config 108 | if: ${{ matrix.mode == 'build' }} 109 | run: | 110 | for file in "${{ steps.inputs.outputs.build }}"/* 111 | do 112 | if [ -f "$file" ] 113 | then 114 | cp "$file" "${{ steps.inputs.outputs.artifact_dir }}" 115 | fi 116 | done 117 | - name: Diff 118 | if: ${{ matrix.mode == 'test' }} 119 | run: | 120 | git status -s "${{ steps.inputs.outputs.build }}" 121 | git diff --exit-code "${{ steps.inputs.outputs.build }}" 122 | - name: Archive Artifacts 123 | if: ${{ matrix.mode == 'build' }} 124 | uses: actions/upload-artifact@v3 125 | with: 126 | name: ${{ steps.inputs.outputs.artifact_build_name }} 127 | path: ${{ steps.inputs.outputs.artifact_dir }} 128 | -------------------------------------------------------------------------------- /src/build/main.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Manna Harbour 2 | # github.com/manna-harbour/miryoku 3 | # generated 4 | 5 | 6 | 7 | 8 | 9 | from kb import KMKKeyboard; keyboard = KMKKeyboard() 10 | from kmk.keys import KC 11 | from kmk.modules.layers import Layers; keyboard.modules.append(Layers()) 12 | from kmk.modules.modtap import ModTap; keyboard.modules.append(ModTap()) 13 | from kmk.modules.mouse_keys import MouseKeys; keyboard.modules.append(MouseKeys()) 14 | from kmk.modules.power import Power; keyboard.modules.append(Power()) 15 | from kmk.modules.tapdance import TapDance; keyboard.modules.append(TapDance()) 16 | from kmk.extensions.media_keys import MediaKeys; keyboard.extensions.append(MediaKeys()) 17 | from kmk.modules.capsword import CapsWord; keyboard.modules.append(CapsWord()) 18 | 19 | 20 | keyboard.keymap = [ 21 | # BASE 22 | [ 23 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, 24 | KC.MT(KC.A, KC.LGUI, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.R, KC.LALT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.S, KC.LCTL, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.T, KC.LSFT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.G, KC.M, KC.MT(KC.N, KC.LSFT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.E, KC.LCTL, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.I, KC.LALT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.O, KC.LGUI, prefer_hold=False, tap_interrupted=True, tap_time=200), 25 | KC.LT(3, KC.Z, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.MT(KC.X, KC.RALT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.C, KC.D, KC.V, KC.K, KC.H, KC.COMM, KC.MT(KC.DOT, KC.RALT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.LT(3, KC.SLSH, prefer_hold=True, tap_interrupted=False, tap_time=200), 26 | KC.LT(6, KC.ESC, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(4, KC.SPC, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(5, KC.TAB, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(8, KC.ENT, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(7, KC.BSPC, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(9, KC.DEL, prefer_hold=True, tap_interrupted=False, tap_time=200) 27 | ], 28 | # EXTRA 29 | [ 30 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, 31 | KC.MT(KC.A, KC.LGUI, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.S, KC.LALT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.D, KC.LCTL, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.F, KC.LSFT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.G, KC.H, KC.MT(KC.J, KC.LSFT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.K, KC.LCTL, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.L, KC.LALT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.MT(KC.QUOT, KC.LGUI, prefer_hold=False, tap_interrupted=True, tap_time=200), 32 | KC.LT(3, KC.Z, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.MT(KC.X, KC.RALT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.MT(KC.DOT, KC.RALT, prefer_hold=False, tap_interrupted=True, tap_time=200), KC.LT(3, KC.SLSH, prefer_hold=True, tap_interrupted=False, tap_time=200), 33 | KC.LT(6, KC.ESC, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(4, KC.SPC, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(5, KC.TAB, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(8, KC.ENT, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(7, KC.BSPC, prefer_hold=True, tap_interrupted=False, tap_time=200), KC.LT(9, KC.DEL, prefer_hold=True, tap_interrupted=False, tap_time=200) 34 | ], 35 | # TAP 36 | [ 37 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, 38 | KC.A, KC.R, KC.S, KC.T, KC.G, KC.M, KC.N, KC.E, KC.I, KC.O, 39 | KC.Z, KC.X, KC.C, KC.D, KC.V, KC.K, KC.H, KC.COMM, KC.DOT, KC.SLSH, 40 | KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL 41 | ], 42 | # BUTTON 43 | [ 44 | KC.NO, KC.LSFT(KC.DEL), KC.LCTL(KC.INS), KC.LSFT(KC.INS), KC.NO, KC.NO, KC.LSFT(KC.INS), KC.LCTL(KC.INS), KC.LSFT(KC.DEL), KC.NO, 45 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, KC.NO, KC.NO, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, 46 | KC.NO, KC.LSFT(KC.DEL), KC.LCTL(KC.INS), KC.LSFT(KC.INS), KC.NO, KC.NO, KC.LSFT(KC.INS), KC.LCTL(KC.INS), KC.LSFT(KC.DEL), KC.NO, 47 | KC.MB_MMB, KC.MB_LMB, KC.MB_RMB, KC.MB_RMB, KC.MB_LMB, KC.MB_MMB 48 | ], 49 | # NAV 50 | [ 51 | KC.TD(KC.NO, KC.RELOAD, tap_time=200), KC.TD(KC.NO, KC.DF(2), tap_time=200), KC.TD(KC.NO, KC.DF(1), tap_time=200), KC.TD(KC.NO, KC.DF(0), tap_time=200), KC.NO, KC.NO, KC.LSFT(KC.INS), KC.LCTL(KC.INS), KC.LSFT(KC.DEL), KC.NO, 52 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, KC.NO, KC.TD(KC.CW, KC.CAPS, tap_time=200), KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, 53 | KC.NO, KC.RALT, KC.TD(KC.NO, KC.DF(7), tap_time=200), KC.TD(KC.NO, KC.DF(4), tap_time=200), KC.NO, KC.INS, KC.HOME, KC.PGDN, KC.PGUP, KC.END, 54 | KC.NO, KC.NO, KC.NO, KC.ENT, KC.BSPC, KC.DEL 55 | ], 56 | # MOUSE 57 | [ 58 | KC.TD(KC.NO, KC.RELOAD, tap_time=200), KC.TD(KC.NO, KC.DF(2), tap_time=200), KC.TD(KC.NO, KC.DF(1), tap_time=200), KC.TD(KC.NO, KC.DF(0), tap_time=200), KC.NO, KC.NO, KC.LSFT(KC.INS), KC.LCTL(KC.INS), KC.LSFT(KC.DEL), KC.NO, 59 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, KC.NO, KC.NO, KC.MS_LT, KC.MS_DN, KC.MS_UP, KC.MS_RT, 60 | KC.NO, KC.RALT, KC.TD(KC.NO, KC.DF(8), tap_time=200), KC.TD(KC.NO, KC.DF(5), tap_time=200), KC.NO, KC.NO, KC.NO, KC.MW_DN, KC.MW_UP, KC.NO, 61 | KC.NO, KC.NO, KC.NO, KC.MB_RMB, KC.MB_LMB, KC.MB_MMB 62 | ], 63 | # MEDIA 64 | [ 65 | KC.TD(KC.NO, KC.RELOAD, tap_time=200), KC.TD(KC.NO, KC.DF(2), tap_time=200), KC.TD(KC.NO, KC.DF(1), tap_time=200), KC.TD(KC.NO, KC.DF(0), tap_time=200), KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, 66 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, KC.NO, KC.PS_TOG, KC.MPRV, KC.VOLD, KC.VOLU, KC.MNXT, 67 | KC.NO, KC.RALT, KC.TD(KC.NO, KC.DF(9), tap_time=200), KC.TD(KC.NO, KC.DF(6), tap_time=200), KC.NO, KC.HID, KC.NO, KC.NO, KC.NO, KC.NO, 68 | KC.NO, KC.NO, KC.NO, KC.MSTP, KC.MPLY, KC.MUTE 69 | ], 70 | # NUM 71 | [ 72 | KC.LBRC, KC.N7, KC.N8, KC.N9, KC.RBRC, KC.NO, KC.TD(KC.NO, KC.DF(0), tap_time=200), KC.TD(KC.NO, KC.DF(1), tap_time=200), KC.TD(KC.NO, KC.DF(2), tap_time=200), KC.TD(KC.NO, KC.RELOAD, tap_time=200), 73 | KC.SCLN, KC.N4, KC.N5, KC.N6, KC.EQL, KC.NO, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, 74 | KC.GRV, KC.N1, KC.N2, KC.N3, KC.BSLS, KC.NO, KC.TD(KC.NO, KC.DF(7), tap_time=200), KC.TD(KC.NO, KC.DF(4), tap_time=200), KC.RALT, KC.NO, 75 | KC.DOT, KC.N0, KC.MINS, KC.NO, KC.NO, KC.NO 76 | ], 77 | # SYM 78 | [ 79 | KC.LCBR, KC.AMPR, KC.ASTR, KC.LPRN, KC.RCBR, KC.NO, KC.TD(KC.NO, KC.DF(0), tap_time=200), KC.TD(KC.NO, KC.DF(1), tap_time=200), KC.TD(KC.NO, KC.DF(2), tap_time=200), KC.TD(KC.NO, KC.RELOAD, tap_time=200), 80 | KC.COLN, KC.DLR, KC.PERC, KC.CIRC, KC.PLUS, KC.NO, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, 81 | KC.TILD, KC.EXLM, KC.AT, KC.HASH, KC.PIPE, KC.NO, KC.TD(KC.NO, KC.DF(8), tap_time=200), KC.TD(KC.NO, KC.DF(5), tap_time=200), KC.RALT, KC.NO, 82 | KC.LPRN, KC.RPRN, KC.UNDS, KC.NO, KC.NO, KC.NO 83 | ], 84 | # FUN 85 | [ 86 | KC.F12, KC.F7, KC.F8, KC.F9, KC.PSCR, KC.NO, KC.TD(KC.NO, KC.DF(0), tap_time=200), KC.TD(KC.NO, KC.DF(1), tap_time=200), KC.TD(KC.NO, KC.DF(2), tap_time=200), KC.TD(KC.NO, KC.RELOAD, tap_time=200), 87 | KC.F11, KC.F4, KC.F5, KC.F6, KC.SLCK, KC.NO, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, 88 | KC.F10, KC.F1, KC.F2, KC.F3, KC.PAUS, KC.NO, KC.TD(KC.NO, KC.DF(9), tap_time=200), KC.TD(KC.NO, KC.DF(6), tap_time=200), KC.RALT, KC.NO, 89 | KC.APP, KC.SPC, KC.TAB, KC.NO, KC.NO, KC.NO 90 | ], 91 | 92 | ] 93 | 94 | layer_names_list = [ 95 | "Base", "Extra", "Tap", "Button", "Nav", "Mouse", "Media", "Num", "Sym", "Fun", 96 | ] 97 | 98 | if __name__ == '__main__': 99 | print('starting Miryoku KMK') 100 | keyboard.go() 101 | -------------------------------------------------------------------------------- /readme.org: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Manna Harbour 2 | # https://github.com/manna-harbour/miryoku 3 | 4 | # M-x org-make-toc to update TOC 5 | # https://github.com/alphapapa/org-make-toc 6 | 7 | * Miryoku KMK [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/miryoku-roa-32.png]] 8 | :PROPERTIES: 9 | :TOC: :include descendants :depth 1 10 | :END: 11 | 12 | [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/cover/miryoku-kle-cover-miryoku_kmk.png]] 13 | 14 | [[https://github.com/manna-harbour/miryoku/][Miryoku]] is an ergonomic, minimal, orthogonal, and universal keyboard layout. 15 | [[https://github.com/manna-harbour/miryoku_kmk][Miryoku KMK]] is the Miryoku implementation for [[https://github.com/KMKfw/kmk_firmware][KMK]]. 16 | 17 | This document describes Miryoku KMK only. 18 | For Miryoku documentation, implementations, and discussions and support, see [[https://github.com/manna-harbour/miryoku/][Miryoku]]. 19 | 20 | :CONTENTS: 21 | - [[#configuration-options][Configuration Options]] 22 | - [[#building][Building]] 23 | - [[#installation][Installation]] 24 | - [[#additional-and-experimental-features][Additional and Experimental Features]] 25 | - [[#issues][Issues]] 26 | :END: 27 | 28 | ** Configuration Options 29 | :PROPERTIES: 30 | :TOC: :include descendants :depth 1 :local depth 31 | :END: 32 | :CONTENTS: 33 | - [[#keyboard][Keyboard]] 34 | - [[#rgb][RGB]] 35 | - [[#miryoku-alternative-layout-options][Miryoku Alternative Layout Options]] 36 | - [[#mapping][Mapping]] 37 | :END: 38 | 39 | **** Keyboard 40 | 41 | Select the mapping of Miryoku keymap layout onto keyboard keymap layout by specifying the keyboard. 42 | Where more keys are available, on each hand only the main alpha block of 3 rows by 5 columns and the 3 most appropriate thumb keys are used. 43 | The default is for a split 3x5+3 keyboard keymap layout. 44 | 45 | - ~KMK_KEYBOARD=ATREUS62~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/atreus62. 46 | - ~KMK_KEYBOARD=BOARDSOURCE_4X12~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/boardsource/4x12. See [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12.png][diagram]]. 47 | - ~KMK_KEYBOARD=BOARDSOURCE_5X12~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/boardsource/5x12. 48 | - ~KMK_KEYBOARD=BOARDSOURCE_LULU~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/boardsource/Lulu. 49 | - ~KMK_KEYBOARD=BOARDSOURCE_MICRODOX~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/boardsource/microdox. 50 | - ~KMK_KEYBOARD=CRKBD~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/crkbd. 51 | - ~KMK_KEYBOARD=CROWBOARD~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/crowboard. 52 | - ~KMK_KEYBOARD=ERGO_TRAVEL~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/ergo_travel. 53 | - ~KMK_KEYBOARD=FFKB~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/fingerpunch/ffkb. 54 | - ~KMK_KEYBOARD=HELIX~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/helix. 55 | - ~KMK_KEYBOARD=KEEBIO_IRIS~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/keebio/iris. 56 | - ~KMK_KEYBOARD=KEEBIO_LEVINSON~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/keebio/levinson. See [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-extended_thumbs.png][diagram]]. 57 | - ~KMK_KEYBOARD=KEEBIO_NYQUIST~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/keebio/nyquist. 58 | - ~KMK_KEYBOARD=KLOR~ https://github.com/moritz-john/kmk-config-klor. 59 | - ~KMK_KEYBOARD=KYRIA~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/kyria. See [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria.png][diagram]]. 60 | - ~KMK_KEYBOARD=LILY58~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/lily58. 61 | - ~KMK_KEYBOARD=LUNAKEY_PICO~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/lunakey_pico. 62 | - ~KMK_KEYBOARD=RHYMESTONE~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/rhymestone. 63 | - ~KMK_KEYBOARD=SOFLE~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/sofle. 64 | - ~KMK_KEYBOARD=SPLAYTORAID~ https://github.com/moritz-john/kmk-config-splaytoraid. 65 | - ~KMK_KEYBOARD=ZODIARK~ https://github.com/KMKfw/kmk_firmware/tree/master/boards/zodiark. 66 | 67 | **** RGB 68 | 69 | Select the RGB keycodes. 70 | The default is no RGB keycodes. 71 | Requires manual module configuration according to the KMK documentation. 72 | 73 | - ~KMK_RGB=LED~ https://github.com/KMKfw/kmk_firmware/blob/master/docs/en/led.md. 74 | - ~KMK_RGB=PEG~ https://github.com/KMKfw/kmk_firmware/blob/master/docs/en/peg_rgb_matrix.md. 75 | - ~KMK_RGB=RGB~ https://github.com/KMKfw/kmk_firmware/blob/master/docs/en/rgb.md. 76 | 77 | **** Miryoku Alternative Layout Options 78 | 79 | See [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][Alternative Layouts in the Miryoku Reference Manual]]. 80 | 81 | **** Mapping 82 | 83 | Alternative mapping options are available for some keyboards. 84 | 85 | - ~MIRYOKU_MAPPING=EXTENDED_THUMBS~ The thumb keys are moved 1u to extend the thumbs. Only available with ~KMK_KEYBOARD=KYRIA~. See [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria-extended_thumbs.png][diagram]]. 86 | - ~MIRYOKU_MAPPING=PINKIE_STAGGER~ The pinkie columns are moved down one row to add pinkie stagger. Only available with ~KMK_KEYBOARD=KEEBIO_LEVINSON~ See [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-split.png][diagram]]. 87 | ** Building 88 | :PROPERTIES: 89 | :TOC: :include descendants :depth 1 :local depth 90 | :END: 91 | 92 | Generate a personalised Miryoku KMK keymap file in ~main.py~ format. 93 | 94 | :CONTENTS: 95 | - [[#local-builds][Local Builds]] 96 | - [[#workflow-builds][Workflow Builds]] 97 | :END: 98 | 99 | *** Local Builds 100 | 101 | Requires ~make~, ~sh~, ~cpp~, and ~sed~. 102 | 103 | First ~cd~ to the [[src]] directory then build with ~make~. 104 | The generated file is [[src/build/main.py]]. 105 | 106 | To select [[#configuration-options][configuration options]], append them to the ~make~ command line. 107 | 108 | #+BEGIN_SRC sh :tangle no 109 | make -B # defaults 110 | make -B KMK_KEYBOARD=KEEBIO_LEVINSON KMK_RGB=RGB MIRYOKU_ALPHAS=QWERTY MIRYOKU_EXTRA=COLEMAKDH MIRYOKU_TAP=QWERTY MIRYOKU_NAV=INVERTEDT MIRYOKU_CLIPBOARD=WIN MIRYOKU_LAYERS=FLIP MIRYOKU_MAPPING=PINKIE_STAGGER # options 111 | #+END_SRC 112 | 113 | *** Workflow Builds 114 | :PROPERTIES: 115 | :TOC: :include descendants :depth 1 :local depth 116 | :END: 117 | 118 | A keymap file can be generated via GitHub Actions workflows without use of a local build environment. 119 | 120 | First log in to GitHub, fork the Miryoku KMK repository, and enable workflows. 121 | 122 | To access a workflow, visit the Actions tab and select the workflow. 123 | To download the keymap file from a workflow run, select the workflow, select the workflow run, select the desired Artifacts, and unzip the downloaded zip file. 124 | 125 | Workflow files are in [[.github/workflows]]. 126 | 127 | :CONTENTS: 128 | - [[#build-inputs-workflow][Build Inputs Workflow]] 129 | :END: 130 | 131 | **** Build Inputs Workflow 132 | 133 | The Build Inputs workflow can be used without editing workflow files. 134 | Select Run workflow, select the Branch and fill out the form with the desired [[#configuration-options][configuration options]], and activate Run workflow. 135 | 136 | ** Installation 137 | 138 | - [[https://github.com/KMKfw/kmk_firmware/blob/master/docs/en/Getting_Started.md][Install KMK]]. 139 | - Install the keyboard definition and default keymap for your keyboard. 140 | - Test your keyboard. 141 | - [[#building][Generate the Miryoku KMK keymap file]]. 142 | - Install the keymap file on your keyboard. 143 | 144 | The generated [[src/build/main.py]] can be used as-is with a ~kb.py~ that contains all of the hardware configuration. 145 | If the default ~main.py~ supplied with ~kb.py~ contains hardware configuration, it will need to be manually added to the generated [[src/build/main.py]] or moved into the supplied ~kb.py~. 146 | For an example of a ~kb.py~ containing all of the hardware configuration, see https://github.com/moritz-john/kmk-config-klor. 147 | 148 | ** Additional and Experimental Features 149 | :PROPERTIES: 150 | :TOC: :include descendants :depth 1 :local depth 151 | :END: 152 | :CONTENTS: 153 | - [[#caps-word][Caps Word]] 154 | - [[#customisation][Customisation]] 155 | - [[#𝑥mk][𝑥MK]] 156 | :END: 157 | 158 | *** Caps Word 159 | 160 | [[https://github.com/KMKfw/kmk_firmware/blob/master/docs/en/capsword.md][Caps Word]] takes the place of Caps Lock on Nav. 161 | Double tap for Caps Lock. 162 | 163 | *** Customisation 164 | 165 | See https://github.com/manna-harbour/miryoku/discussions/85. 166 | 167 | *** 𝑥MK 168 | 169 | Use Miryoku KMK with any keyboard with [[https://github.com/manna-harbour/xmk][𝑥MK]]. 170 | 171 | [[#building][Build]] with the default [[#keyboard][keyboard]]. 172 | 173 | Use the generated Miryoku KMK ~main.py~ in place of the KMK ~boards/xmk/main.py~. 174 | 175 | ** Issues 176 | :PROPERTIES: 177 | :TOC: :include descendants :depth 1 :local depth 178 | :END: 179 | :CONTENTS: 180 | - [[#hold-tap-behaviour][Hold-Tap Behaviour]] 181 | - [[#missing-functions][Missing Functions]] 182 | :END: 183 | 184 | *** Hold-Tap Behaviour 185 | 186 | Hold-Tap configuration options in KMK are limited and the behaviour of dual-function keys in Miryoku KMK does not match other Miryoku implementations. 187 | *** Missing Functions 188 | :PROPERTIES: 189 | :TOC: :include descendants :depth 1 :local depth 190 | :END: 191 | 192 | Some keycodes and keymap features included in the Miryoku documentation and in other Miryoku implementations are not supported in KMK and so are missing in Miryoku KMK. 193 | 194 | :CONTENTS: 195 | - [[#bluetooth][Bluetooth]] 196 | - [[#external-power][External Power]] 197 | - [[#fun-cluster][Fun Cluster]] 198 | - [[#horizontal-mouse-scroll][Horizontal Mouse Scroll]] 199 | - [[#rgb][RGB]] 200 | - [[#shift-functions][Shift Functions]] 201 | :END: 202 | 203 | **** Bluetooth 204 | 205 | No Bluetooth keycodes are present in KMK, see https://github.com/KMKfw/kmk_firmware/issues/452. 206 | 207 | # Direct Bluetooth profile selection is not supported in KMK. 208 | # Next / Prev are used instead. 209 | # See the Media layer in the generated keymap for details. 210 | 211 | **** External Power 212 | 213 | External power control is not supported in KMK. 214 | 215 | **** Fun Cluster 216 | 217 | Fun Cluster [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#clipboard][clipboard]] keycodes are not supported in KMK. 218 | 219 | **** Horizontal Mouse Scroll 220 | 221 | Horizontal mouse scroll is not supported in KMK. 222 | 223 | **** RGB 224 | 225 | KMK uses different keycodes for each RGB implementation, and each implementation supports a different subset of features. 226 | The RGB keycodes included in the Miryoku KMK keymap will depend on the [[#RGB][RGB]] option. 227 | For the corresponding keycodes, see [[src/miryoku.h]]. 228 | 229 | **** Shift Functions 230 | 231 | Shift functions as used on Media are not supported in KMK, see https://github.com/KMKfw/kmk_firmware/issues/409. 232 | Only the unshifted functions are included. 233 | 234 | * 235 | 236 | [[https://github.com/manna-harbour][https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/manna-harbour-boa-32.png]] 237 | 238 | 239 | -------------------------------------------------------------------------------- /src/miryoku_babel/miryoku_layer_selection.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | // generated -*- buffer-read-only: t -*- 4 | 5 | #pragma once 6 | 7 | #include "miryoku_layer_alternatives.h" 8 | 9 | #if !defined(MIRYOKU_LAYER_BASE) 10 | #if defined (MIRYOKU_LAYERS_FLIP) 11 | #if defined (MIRYOKU_ALPHAS_AZERTY) 12 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP 13 | #elif defined (MIRYOKU_ALPHAS_BEAKL15) 14 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP 15 | #elif defined (MIRYOKU_ALPHAS_COLEMAK) 16 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP 17 | #elif defined (MIRYOKU_ALPHAS_COLEMAKDH) 18 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP 19 | #elif defined (MIRYOKU_ALPHAS_COLEMAKDHK) 20 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP 21 | #elif defined (MIRYOKU_ALPHAS_DVORAK) 22 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP 23 | #elif defined (MIRYOKU_ALPHAS_HALMAK) 24 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP 25 | #elif defined (MIRYOKU_ALPHAS_WORKMAN) 26 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP 27 | #elif defined (MIRYOKU_ALPHAS_QWERTY) 28 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP 29 | #elif defined (MIRYOKU_ALPHAS_QWERTZ) 30 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP 31 | #else 32 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP 33 | #endif 34 | #else 35 | #if defined (MIRYOKU_ALPHAS_AZERTY) 36 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_AZERTY 37 | #elif defined (MIRYOKU_ALPHAS_BEAKL15) 38 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_BEAKL15 39 | #elif defined (MIRYOKU_ALPHAS_COLEMAK) 40 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAK 41 | #elif defined (MIRYOKU_ALPHAS_COLEMAKDH) 42 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH 43 | #elif defined (MIRYOKU_ALPHAS_COLEMAKDHK) 44 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK 45 | #elif defined (MIRYOKU_ALPHAS_DVORAK) 46 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_DVORAK 47 | #elif defined (MIRYOKU_ALPHAS_HALMAK) 48 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_HALMAK 49 | #elif defined (MIRYOKU_ALPHAS_WORKMAN) 50 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_WORKMAN 51 | #elif defined (MIRYOKU_ALPHAS_QWERTY) 52 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTY 53 | #elif defined (MIRYOKU_ALPHAS_QWERTZ) 54 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTZ 55 | #else 56 | #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH 57 | #endif 58 | #endif 59 | #endif 60 | #if !defined(MIRYOKU_LAYERMAPPING_BASE) 61 | #define MIRYOKU_LAYERMAPPING_BASE MIRYOKU_MAPPING 62 | #endif 63 | 64 | #if !defined(MIRYOKU_LAYER_EXTRA) 65 | #if defined (MIRYOKU_LAYERS_FLIP) 66 | #if defined (MIRYOKU_EXTRA_AZERTY) 67 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP 68 | #elif defined (MIRYOKU_EXTRA_BEAKL15) 69 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP 70 | #elif defined (MIRYOKU_EXTRA_COLEMAK) 71 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP 72 | #elif defined (MIRYOKU_EXTRA_COLEMAKDH) 73 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP 74 | #elif defined (MIRYOKU_EXTRA_COLEMAKDHK) 75 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP 76 | #elif defined (MIRYOKU_EXTRA_DVORAK) 77 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP 78 | #elif defined (MIRYOKU_EXTRA_HALMAK) 79 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP 80 | #elif defined (MIRYOKU_EXTRA_WORKMAN) 81 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP 82 | #elif defined (MIRYOKU_EXTRA_QWERTY) 83 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP 84 | #elif defined (MIRYOKU_EXTRA_QWERTZ) 85 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP 86 | #else 87 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP 88 | #endif 89 | #else 90 | #if defined (MIRYOKU_EXTRA_AZERTY) 91 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_AZERTY 92 | #elif defined (MIRYOKU_EXTRA_BEAKL15) 93 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_BEAKL15 94 | #elif defined (MIRYOKU_EXTRA_COLEMAK) 95 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAK 96 | #elif defined (MIRYOKU_EXTRA_COLEMAKDH) 97 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH 98 | #elif defined (MIRYOKU_EXTRA_COLEMAKDHK) 99 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK 100 | #elif defined (MIRYOKU_EXTRA_DVORAK) 101 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_DVORAK 102 | #elif defined (MIRYOKU_EXTRA_HALMAK) 103 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_HALMAK 104 | #elif defined (MIRYOKU_EXTRA_WORKMAN) 105 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_WORKMAN 106 | #elif defined (MIRYOKU_EXTRA_QWERTY) 107 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY 108 | #elif defined (MIRYOKU_EXTRA_QWERTZ) 109 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTZ 110 | #else 111 | #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY 112 | #endif 113 | #endif 114 | #endif 115 | #if !defined(MIRYOKU_LAYERMAPPING_EXTRA) 116 | #define MIRYOKU_LAYERMAPPING_EXTRA MIRYOKU_MAPPING 117 | #endif 118 | 119 | #if !defined(MIRYOKU_LAYER_TAP) 120 | #if defined (MIRYOKU_LAYERS_FLIP) 121 | #if defined (MIRYOKU_TAP_AZERTY) 122 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP 123 | #elif defined (MIRYOKU_TAP_BEAKL15) 124 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP 125 | #elif defined (MIRYOKU_TAP_COLEMAK) 126 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP 127 | #elif defined (MIRYOKU_TAP_COLEMAKDH) 128 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP 129 | #elif defined (MIRYOKU_TAP_COLEMAKDHK) 130 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP 131 | #elif defined (MIRYOKU_TAP_DVORAK) 132 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP 133 | #elif defined (MIRYOKU_TAP_HALMAK) 134 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP 135 | #elif defined (MIRYOKU_TAP_WORKMAN) 136 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP 137 | #elif defined (MIRYOKU_TAP_QWERTY) 138 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP 139 | #elif defined (MIRYOKU_TAP_QWERTZ) 140 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP 141 | #else 142 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP 143 | #endif 144 | #else 145 | #if defined (MIRYOKU_TAP_AZERTY) 146 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_AZERTY 147 | #elif defined (MIRYOKU_TAP_BEAKL15) 148 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_BEAKL15 149 | #elif defined (MIRYOKU_TAP_COLEMAK) 150 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAK 151 | #elif defined (MIRYOKU_TAP_COLEMAKDH) 152 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH 153 | #elif defined (MIRYOKU_TAP_COLEMAKDHK) 154 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK 155 | #elif defined (MIRYOKU_TAP_DVORAK) 156 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_DVORAK 157 | #elif defined (MIRYOKU_TAP_HALMAK) 158 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_HALMAK 159 | #elif defined (MIRYOKU_TAP_WORKMAN) 160 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_WORKMAN 161 | #elif defined (MIRYOKU_TAP_QWERTY) 162 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTY 163 | #elif defined (MIRYOKU_TAP_QWERTZ) 164 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTZ 165 | #else 166 | #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH 167 | #endif 168 | #endif 169 | #endif 170 | #if !defined(MIRYOKU_LAYERMAPPING_TAP) 171 | #define MIRYOKU_LAYERMAPPING_TAP MIRYOKU_MAPPING 172 | #endif 173 | 174 | #if !defined(MIRYOKU_LAYER_BUTTON) 175 | #define MIRYOKU_LAYER_BUTTON MIRYOKU_ALTERNATIVES_BUTTON 176 | #endif 177 | #if !defined(MIRYOKU_LAYERMAPPING_BUTTON) 178 | #define MIRYOKU_LAYERMAPPING_BUTTON MIRYOKU_MAPPING 179 | #endif 180 | 181 | #if !defined(MIRYOKU_LAYER_NAV) 182 | #if defined (MIRYOKU_LAYERS_FLIP) 183 | #if defined (MIRYOKU_NAV_INVERTEDT) 184 | #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP 185 | #else 186 | #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_FLIP 187 | #endif 188 | #else 189 | #if defined (MIRYOKU_NAV_INVERTEDT) 190 | #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_INVERTEDT 191 | #elif defined (MIRYOKU_NAV_VI) 192 | #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_VI 193 | #else 194 | #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV 195 | #endif 196 | #endif 197 | #endif 198 | #if !defined(MIRYOKU_LAYERMAPPING_NAV) 199 | #define MIRYOKU_LAYERMAPPING_NAV MIRYOKU_MAPPING 200 | #endif 201 | 202 | #if !defined(MIRYOKU_LAYER_MOUSE) 203 | #if defined (MIRYOKU_LAYERS_FLIP) 204 | #if defined (MIRYOKU_NAV_INVERTEDT) 205 | #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP 206 | #else 207 | #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_FLIP 208 | #endif 209 | #else 210 | #if defined (MIRYOKU_NAV_INVERTEDT) 211 | #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT 212 | #elif defined (MIRYOKU_NAV_VI) 213 | #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_VI 214 | #else 215 | #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE 216 | #endif 217 | #endif 218 | #endif 219 | #if !defined(MIRYOKU_LAYERMAPPING_MOUSE) 220 | #define MIRYOKU_LAYERMAPPING_MOUSE MIRYOKU_MAPPING 221 | #endif 222 | 223 | #if !defined(MIRYOKU_LAYER_MEDIA) 224 | #if defined (MIRYOKU_LAYERS_FLIP) 225 | #if defined (MIRYOKU_NAV_INVERTEDT) 226 | #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP 227 | #else 228 | #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_FLIP 229 | #endif 230 | #else 231 | #if defined (MIRYOKU_NAV_INVERTEDT) 232 | #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT 233 | #elif defined (MIRYOKU_NAV_VI) 234 | #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_VI 235 | #else 236 | #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA 237 | #endif 238 | #endif 239 | #endif 240 | #if !defined(MIRYOKU_LAYERMAPPING_MEDIA) 241 | #define MIRYOKU_LAYERMAPPING_MEDIA MIRYOKU_MAPPING 242 | #endif 243 | 244 | #if !defined(MIRYOKU_LAYER_NUM) 245 | #if defined (MIRYOKU_LAYERS_FLIP) 246 | #define MIRYOKU_LAYER_NUM MIRYOKU_ALTERNATIVES_NUM_FLIP 247 | #else 248 | #define MIRYOKU_LAYER_NUM MIRYOKU_ALTERNATIVES_NUM 249 | #endif 250 | #endif 251 | #if !defined(MIRYOKU_LAYERMAPPING_NUM) 252 | #define MIRYOKU_LAYERMAPPING_NUM MIRYOKU_MAPPING 253 | #endif 254 | 255 | #if !defined(MIRYOKU_LAYER_SYM) 256 | #if defined (MIRYOKU_LAYERS_FLIP) 257 | #define MIRYOKU_LAYER_SYM MIRYOKU_ALTERNATIVES_SYM_FLIP 258 | #else 259 | #define MIRYOKU_LAYER_SYM MIRYOKU_ALTERNATIVES_SYM 260 | #endif 261 | #endif 262 | #if !defined(MIRYOKU_LAYERMAPPING_SYM) 263 | #define MIRYOKU_LAYERMAPPING_SYM MIRYOKU_MAPPING 264 | #endif 265 | 266 | #if !defined(MIRYOKU_LAYER_FUN) 267 | #if defined (MIRYOKU_LAYERS_FLIP) 268 | #define MIRYOKU_LAYER_FUN MIRYOKU_ALTERNATIVES_FUN_FLIP 269 | #else 270 | #define MIRYOKU_LAYER_FUN MIRYOKU_ALTERNATIVES_FUN 271 | #endif 272 | #endif 273 | #if !defined(MIRYOKU_LAYERMAPPING_FUN) 274 | #define MIRYOKU_LAYERMAPPING_FUN MIRYOKU_MAPPING 275 | #endif 276 | -------------------------------------------------------------------------------- /src/miryoku_babel/miryoku_layer_alternatives.h: -------------------------------------------------------------------------------- 1 | // Copyright 2022 Manna Harbour 2 | // https://github.com/manna-harbour/miryoku 3 | // generated -*- buffer-read-only: t -*- 4 | // target: kmk 5 | 6 | #pragma once 7 | 8 | 9 | #define MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \ 10 | KC.A, KC.Z, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, \ 11 | U_MT(KC.Q,KC.LGUI),U_MT(KC.S,KC.LALT),U_MT(KC.D,KC.LCTL),U_MT(KC.F,KC.LSFT),KC.G, KC.H, U_MT(KC.J,KC.LSFT),U_MT(KC.K,KC.LCTL),U_MT(KC.L,KC.LALT),U_MT(KC.M,KC.LGUI),\ 12 | U_LT(U_BUTTON,KC.W),U_MT(KC.X,KC.RALT),KC.C, KC.V, KC.B, KC.N, KC.COMM, KC.DOT, U_MT(KC.SLSH,KC.RALT),U_LT(U_BUTTON,KC.QUOT),\ 13 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 14 | 15 | #define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \ 16 | KC.Q, KC.H, KC.O, KC.U, KC.X, KC.G, KC.C, KC.R, KC.F, KC.Z, \ 17 | U_MT(KC.Y,KC.LGUI),U_MT(KC.I,KC.LALT),U_MT(KC.E,KC.LCTL),U_MT(KC.A,KC.LSFT),KC.DOT, KC.D, U_MT(KC.S,KC.LSFT),U_MT(KC.T,KC.LCTL),U_MT(KC.N,KC.LALT),U_MT(KC.B,KC.LGUI),\ 18 | U_LT(U_BUTTON,KC.J),U_MT(KC.SLSH,KC.RALT),KC.COMM, KC.K, KC.QUOT, KC.W, KC.M, KC.L, U_MT(KC.P,KC.RALT),U_LT(U_BUTTON,KC.V),\ 19 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 20 | 21 | #define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \ 22 | KC.Q, KC.W, KC.F, KC.P, KC.G, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 23 | U_MT(KC.A,KC.LGUI),U_MT(KC.R,KC.LALT),U_MT(KC.S,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.D, KC.H, U_MT(KC.N,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.I,KC.LALT),U_MT(KC.O,KC.LGUI),\ 24 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.C, KC.V, KC.B, KC.K, KC.M, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 25 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 26 | 27 | #define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \ 28 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 29 | U_MT(KC.A,KC.LGUI),U_MT(KC.R,KC.LALT),U_MT(KC.S,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.G, KC.M, U_MT(KC.N,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.I,KC.LALT),U_MT(KC.O,KC.LGUI),\ 30 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.C, KC.D, KC.V, KC.K, KC.H, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 31 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 32 | 33 | #define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \ 34 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 35 | U_MT(KC.A,KC.LGUI),U_MT(KC.R,KC.LALT),U_MT(KC.S,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.G, KC.K, U_MT(KC.N,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.I,KC.LALT),U_MT(KC.O,KC.LGUI),\ 36 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.C, KC.D, KC.V, KC.M, KC.H, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 37 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 38 | 39 | #define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \ 40 | KC.QUOT, KC.COMM, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, \ 41 | U_MT(KC.A,KC.LGUI),U_MT(KC.O,KC.LALT),U_MT(KC.E,KC.LCTL),U_MT(KC.U,KC.LSFT),KC.I, KC.D, U_MT(KC.H,KC.LSFT),U_MT(KC.T,KC.LCTL),U_MT(KC.N,KC.LALT),U_MT(KC.S,KC.LGUI),\ 42 | U_LT(U_BUTTON,KC.SLSH),U_MT(KC.Q,KC.RALT),KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, U_MT(KC.V,KC.RALT),U_LT(U_BUTTON,KC.Z),\ 43 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 44 | 45 | #define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \ 46 | KC.W, KC.L, KC.R, KC.B, KC.Z, KC.QUOT, KC.Q, KC.U, KC.D, KC.J, \ 47 | U_MT(KC.S,KC.LGUI),U_MT(KC.H,KC.LALT),U_MT(KC.N,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.COMM, KC.DOT, U_MT(KC.A,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.O,KC.LALT),U_MT(KC.I,KC.LGUI),\ 48 | U_LT(U_BUTTON,KC.F),U_MT(KC.M,KC.RALT),KC.V, KC.C, KC.SLSH, KC.G, KC.P, KC.X, U_MT(KC.K,KC.RALT),U_LT(U_BUTTON,KC.Y),\ 49 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 50 | 51 | #define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \ 52 | KC.Q, KC.D, KC.R, KC.W, KC.B, KC.J, KC.F, KC.U, KC.P, KC.QUOT, \ 53 | U_MT(KC.A,KC.LGUI),U_MT(KC.S,KC.LALT),U_MT(KC.H,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.G, KC.Y, U_MT(KC.N,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.O,KC.LALT),U_MT(KC.I,KC.LGUI),\ 54 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.M, KC.C, KC.V, KC.K, KC.L, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 55 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 56 | 57 | #define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \ 58 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, \ 59 | U_MT(KC.A,KC.LGUI),U_MT(KC.S,KC.LALT),U_MT(KC.D,KC.LCTL),U_MT(KC.F,KC.LSFT),KC.G, KC.H, U_MT(KC.J,KC.LSFT),U_MT(KC.K,KC.LCTL),U_MT(KC.L,KC.LALT),U_MT(KC.QUOT,KC.LGUI),\ 60 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 61 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 62 | 63 | #define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \ 64 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Z, KC.U, KC.I, KC.O, KC.P, \ 65 | U_MT(KC.A,KC.LGUI),U_MT(KC.S,KC.LALT),U_MT(KC.D,KC.LCTL),U_MT(KC.F,KC.LSFT),KC.G, KC.H, U_MT(KC.J,KC.LSFT),U_MT(KC.K,KC.LCTL),U_MT(KC.L,KC.LALT),U_MT(KC.QUOT,KC.LGUI),\ 66 | U_LT(U_BUTTON,KC.Y),U_MT(KC.X,KC.RALT),KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 67 | U_NP, U_NP, U_LT(U_FUN,KC.DEL),U_LT(U_NUM,KC.BSPC),U_LT(U_SYM,KC.ENT),U_LT(U_MOUSE,KC.TAB),U_LT(U_NAV,KC.SPC),U_LT(U_MEDIA,KC.ESC),U_NP, U_NP 68 | 69 | #define MIRYOKU_ALTERNATIVES_BASE_AZERTY \ 70 | KC.A, KC.Z, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, \ 71 | U_MT(KC.Q,KC.LGUI),U_MT(KC.S,KC.LALT),U_MT(KC.D,KC.LCTL),U_MT(KC.F,KC.LSFT),KC.G, KC.H, U_MT(KC.J,KC.LSFT),U_MT(KC.K,KC.LCTL),U_MT(KC.L,KC.LALT),U_MT(KC.M,KC.LGUI),\ 72 | U_LT(U_BUTTON,KC.W),U_MT(KC.X,KC.RALT),KC.C, KC.V, KC.B, KC.N, KC.COMM, KC.DOT, U_MT(KC.SLSH,KC.RALT),U_LT(U_BUTTON,KC.QUOT),\ 73 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 74 | 75 | #define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \ 76 | KC.Q, KC.H, KC.O, KC.U, KC.X, KC.G, KC.C, KC.R, KC.F, KC.Z, \ 77 | U_MT(KC.Y,KC.LGUI),U_MT(KC.I,KC.LALT),U_MT(KC.E,KC.LCTL),U_MT(KC.A,KC.LSFT),KC.DOT, KC.D, U_MT(KC.S,KC.LSFT),U_MT(KC.T,KC.LCTL),U_MT(KC.N,KC.LALT),U_MT(KC.B,KC.LGUI),\ 78 | U_LT(U_BUTTON,KC.J),U_MT(KC.SLSH,KC.RALT),KC.COMM, KC.K, KC.QUOT, KC.W, KC.M, KC.L, U_MT(KC.P,KC.RALT),U_LT(U_BUTTON,KC.V),\ 79 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 80 | 81 | #define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \ 82 | KC.Q, KC.W, KC.F, KC.P, KC.G, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 83 | U_MT(KC.A,KC.LGUI),U_MT(KC.R,KC.LALT),U_MT(KC.S,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.D, KC.H, U_MT(KC.N,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.I,KC.LALT),U_MT(KC.O,KC.LGUI),\ 84 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.C, KC.V, KC.B, KC.K, KC.M, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 85 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 86 | 87 | #define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \ 88 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 89 | U_MT(KC.A,KC.LGUI),U_MT(KC.R,KC.LALT),U_MT(KC.S,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.G, KC.M, U_MT(KC.N,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.I,KC.LALT),U_MT(KC.O,KC.LGUI),\ 90 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.C, KC.D, KC.V, KC.K, KC.H, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 91 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 92 | 93 | #define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \ 94 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 95 | U_MT(KC.A,KC.LGUI),U_MT(KC.R,KC.LALT),U_MT(KC.S,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.G, KC.K, U_MT(KC.N,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.I,KC.LALT),U_MT(KC.O,KC.LGUI),\ 96 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.C, KC.D, KC.V, KC.M, KC.H, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 97 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 98 | 99 | #define MIRYOKU_ALTERNATIVES_BASE_DVORAK \ 100 | KC.QUOT, KC.COMM, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, \ 101 | U_MT(KC.A,KC.LGUI),U_MT(KC.O,KC.LALT),U_MT(KC.E,KC.LCTL),U_MT(KC.U,KC.LSFT),KC.I, KC.D, U_MT(KC.H,KC.LSFT),U_MT(KC.T,KC.LCTL),U_MT(KC.N,KC.LALT),U_MT(KC.S,KC.LGUI),\ 102 | U_LT(U_BUTTON,KC.SLSH),U_MT(KC.Q,KC.RALT),KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, U_MT(KC.V,KC.RALT),U_LT(U_BUTTON,KC.Z),\ 103 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 104 | 105 | #define MIRYOKU_ALTERNATIVES_BASE_HALMAK \ 106 | KC.W, KC.L, KC.R, KC.B, KC.Z, KC.QUOT, KC.Q, KC.U, KC.D, KC.J, \ 107 | U_MT(KC.S,KC.LGUI),U_MT(KC.H,KC.LALT),U_MT(KC.N,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.COMM, KC.DOT, U_MT(KC.A,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.O,KC.LALT),U_MT(KC.I,KC.LGUI),\ 108 | U_LT(U_BUTTON,KC.F),U_MT(KC.M,KC.RALT),KC.V, KC.C, KC.SLSH, KC.G, KC.P, KC.X, U_MT(KC.K,KC.RALT),U_LT(U_BUTTON,KC.Y),\ 109 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 110 | 111 | #define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \ 112 | KC.Q, KC.D, KC.R, KC.W, KC.B, KC.J, KC.F, KC.U, KC.P, KC.QUOT, \ 113 | U_MT(KC.A,KC.LGUI),U_MT(KC.S,KC.LALT),U_MT(KC.H,KC.LCTL),U_MT(KC.T,KC.LSFT),KC.G, KC.Y, U_MT(KC.N,KC.LSFT),U_MT(KC.E,KC.LCTL),U_MT(KC.O,KC.LALT),U_MT(KC.I,KC.LGUI),\ 114 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.M, KC.C, KC.V, KC.K, KC.L, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 115 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 116 | 117 | #define MIRYOKU_ALTERNATIVES_BASE_QWERTY \ 118 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, \ 119 | U_MT(KC.A,KC.LGUI),U_MT(KC.S,KC.LALT),U_MT(KC.D,KC.LCTL),U_MT(KC.F,KC.LSFT),KC.G, KC.H, U_MT(KC.J,KC.LSFT),U_MT(KC.K,KC.LCTL),U_MT(KC.L,KC.LALT),U_MT(KC.QUOT,KC.LGUI),\ 120 | U_LT(U_BUTTON,KC.Z),U_MT(KC.X,KC.RALT),KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 121 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 122 | 123 | #define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \ 124 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Z, KC.U, KC.I, KC.O, KC.P, \ 125 | U_MT(KC.A,KC.LGUI),U_MT(KC.S,KC.LALT),U_MT(KC.D,KC.LCTL),U_MT(KC.F,KC.LSFT),KC.G, KC.H, U_MT(KC.J,KC.LSFT),U_MT(KC.K,KC.LCTL),U_MT(KC.L,KC.LALT),U_MT(KC.QUOT,KC.LGUI),\ 126 | U_LT(U_BUTTON,KC.Y),U_MT(KC.X,KC.RALT),KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, U_MT(KC.DOT,KC.RALT),U_LT(U_BUTTON,KC.SLSH),\ 127 | U_NP, U_NP, U_LT(U_MEDIA,KC.ESC),U_LT(U_NAV,KC.SPC),U_LT(U_MOUSE,KC.TAB),U_LT(U_SYM,KC.ENT),U_LT(U_NUM,KC.BSPC),U_LT(U_FUN,KC.DEL),U_NP, U_NP 128 | 129 | 130 | #define MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP \ 131 | KC.A, KC.Z, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, \ 132 | KC.Q, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.M, \ 133 | KC.W, KC.X, KC.C, KC.V, KC.B, KC.N, KC.COMM, KC.DOT, KC.SLSH, KC.QUOT, \ 134 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 135 | 136 | #define MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP \ 137 | KC.Q, KC.H, KC.O, KC.U, KC.X, KC.G, KC.C, KC.R, KC.F, KC.Z, \ 138 | KC.Y, KC.I, KC.E, KC.A, KC.DOT, KC.D, KC.S, KC.T, KC.N, KC.B, \ 139 | KC.J, KC.SLSH, KC.COMM, KC.K, KC.QUOT, KC.W, KC.M, KC.L, KC.P, KC.V, \ 140 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 141 | 142 | #define MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP \ 143 | KC.Q, KC.W, KC.F, KC.P, KC.G, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 144 | KC.A, KC.R, KC.S, KC.T, KC.D, KC.H, KC.N, KC.E, KC.I, KC.O, \ 145 | KC.Z, KC.X, KC.C, KC.V, KC.B, KC.K, KC.M, KC.COMM, KC.DOT, KC.SLSH, \ 146 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 147 | 148 | #define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP \ 149 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 150 | KC.A, KC.R, KC.S, KC.T, KC.G, KC.M, KC.N, KC.E, KC.I, KC.O, \ 151 | KC.Z, KC.X, KC.C, KC.D, KC.V, KC.K, KC.H, KC.COMM, KC.DOT, KC.SLSH, \ 152 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 153 | 154 | #define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP \ 155 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 156 | KC.A, KC.R, KC.S, KC.T, KC.G, KC.K, KC.N, KC.E, KC.I, KC.O, \ 157 | KC.Z, KC.X, KC.C, KC.D, KC.V, KC.M, KC.H, KC.COMM, KC.DOT, KC.SLSH, \ 158 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 159 | 160 | #define MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP \ 161 | KC.QUOT, KC.COMM, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, \ 162 | KC.A, KC.O, KC.E, KC.U, KC.I, KC.D, KC.H, KC.T, KC.N, KC.S, \ 163 | KC.SLSH, KC.Q, KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, KC.V, KC.Z, \ 164 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 165 | 166 | #define MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP \ 167 | KC.W, KC.L, KC.R, KC.B, KC.Z, KC.QUOT, KC.Q, KC.U, KC.D, KC.J, \ 168 | KC.S, KC.H, KC.N, KC.T, KC.COMM, KC.DOT, KC.A, KC.E, KC.O, KC.I, \ 169 | KC.F, KC.M, KC.V, KC.C, KC.SLSH, KC.G, KC.P, KC.X, KC.K, KC.Y, \ 170 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 171 | 172 | #define MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP \ 173 | KC.Q, KC.D, KC.R, KC.W, KC.B, KC.J, KC.F, KC.U, KC.P, KC.QUOT, \ 174 | KC.A, KC.S, KC.H, KC.T, KC.G, KC.Y, KC.N, KC.E, KC.O, KC.I, \ 175 | KC.Z, KC.X, KC.M, KC.C, KC.V, KC.K, KC.L, KC.COMM, KC.DOT, KC.SLSH, \ 176 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 177 | 178 | #define MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP \ 179 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, \ 180 | KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.QUOT, \ 181 | KC.Z, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, \ 182 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 183 | 184 | #define MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP \ 185 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Z, KC.U, KC.I, KC.O, KC.P, \ 186 | KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.QUOT, \ 187 | KC.Y, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, \ 188 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, KC.TAB, KC.SPC, KC.ESC, U_NP, U_NP 189 | 190 | #define MIRYOKU_ALTERNATIVES_TAP_AZERTY \ 191 | KC.A, KC.Z, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, \ 192 | KC.Q, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.M, \ 193 | KC.W, KC.X, KC.C, KC.V, KC.B, KC.N, KC.COMM, KC.DOT, KC.SLSH, KC.QUOT, \ 194 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 195 | 196 | #define MIRYOKU_ALTERNATIVES_TAP_BEAKL15 \ 197 | KC.Q, KC.H, KC.O, KC.U, KC.X, KC.G, KC.C, KC.R, KC.F, KC.Z, \ 198 | KC.Y, KC.I, KC.E, KC.A, KC.DOT, KC.D, KC.S, KC.T, KC.N, KC.B, \ 199 | KC.J, KC.SLSH, KC.COMM, KC.K, KC.QUOT, KC.W, KC.M, KC.L, KC.P, KC.V, \ 200 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 201 | 202 | #define MIRYOKU_ALTERNATIVES_TAP_COLEMAK \ 203 | KC.Q, KC.W, KC.F, KC.P, KC.G, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 204 | KC.A, KC.R, KC.S, KC.T, KC.D, KC.H, KC.N, KC.E, KC.I, KC.O, \ 205 | KC.Z, KC.X, KC.C, KC.V, KC.B, KC.K, KC.M, KC.COMM, KC.DOT, KC.SLSH, \ 206 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 207 | 208 | #define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH \ 209 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 210 | KC.A, KC.R, KC.S, KC.T, KC.G, KC.M, KC.N, KC.E, KC.I, KC.O, \ 211 | KC.Z, KC.X, KC.C, KC.D, KC.V, KC.K, KC.H, KC.COMM, KC.DOT, KC.SLSH, \ 212 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 213 | 214 | #define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK \ 215 | KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.QUOT, \ 216 | KC.A, KC.R, KC.S, KC.T, KC.G, KC.K, KC.N, KC.E, KC.I, KC.O, \ 217 | KC.Z, KC.X, KC.C, KC.D, KC.V, KC.M, KC.H, KC.COMM, KC.DOT, KC.SLSH, \ 218 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 219 | 220 | #define MIRYOKU_ALTERNATIVES_TAP_DVORAK \ 221 | KC.QUOT, KC.COMM, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, \ 222 | KC.A, KC.O, KC.E, KC.U, KC.I, KC.D, KC.H, KC.T, KC.N, KC.S, \ 223 | KC.SLSH, KC.Q, KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, KC.V, KC.Z, \ 224 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 225 | 226 | #define MIRYOKU_ALTERNATIVES_TAP_HALMAK \ 227 | KC.W, KC.L, KC.R, KC.B, KC.Z, KC.QUOT, KC.Q, KC.U, KC.D, KC.J, \ 228 | KC.S, KC.H, KC.N, KC.T, KC.COMM, KC.DOT, KC.A, KC.E, KC.O, KC.I, \ 229 | KC.F, KC.M, KC.V, KC.C, KC.SLSH, KC.G, KC.P, KC.X, KC.K, KC.Y, \ 230 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 231 | 232 | #define MIRYOKU_ALTERNATIVES_TAP_WORKMAN \ 233 | KC.Q, KC.D, KC.R, KC.W, KC.B, KC.J, KC.F, KC.U, KC.P, KC.QUOT, \ 234 | KC.A, KC.S, KC.H, KC.T, KC.G, KC.Y, KC.N, KC.E, KC.O, KC.I, \ 235 | KC.Z, KC.X, KC.M, KC.C, KC.V, KC.K, KC.L, KC.COMM, KC.DOT, KC.SLSH, \ 236 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 237 | 238 | #define MIRYOKU_ALTERNATIVES_TAP_QWERTY \ 239 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, \ 240 | KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.QUOT, \ 241 | KC.Z, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, \ 242 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 243 | 244 | #define MIRYOKU_ALTERNATIVES_TAP_QWERTZ \ 245 | KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Z, KC.U, KC.I, KC.O, KC.P, \ 246 | KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.QUOT, \ 247 | KC.Y, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, \ 248 | U_NP, U_NP, KC.ESC, KC.SPC, KC.TAB, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 249 | 250 | 251 | #define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP \ 252 | KC.PGUP, KC.HOME, KC.UP, KC.END, KC.INS, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 253 | KC.PGDN, KC.LEFT, KC.DOWN, KC.RGHT, U_CW, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 254 | U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_DF(U_NAV), U_DF(U_NUM), KC.RALT, U_NA, \ 255 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, U_NA, U_NA, U_NA, U_NP, U_NP 256 | 257 | #define MIRYOKU_ALTERNATIVES_NAV_FLIP \ 258 | KC.HOME, KC.PGDN, KC.PGUP, KC.END, KC.INS, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 259 | KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, U_CW, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 260 | U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_DF(U_NAV), U_DF(U_NUM), KC.RALT, U_NA, \ 261 | U_NP, U_NP, KC.DEL, KC.BSPC, KC.ENT, U_NA, U_NA, U_NA, U_NP, U_NP 262 | 263 | #define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT \ 264 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, KC.INS, KC.HOME, KC.UP, KC.END, KC.PGUP, \ 265 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, U_CW, KC.LEFT, KC.DOWN, KC.RGHT, KC.PGDN, \ 266 | U_NA, KC.RALT, U_DF(U_NUM), U_DF(U_NAV), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ 267 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 268 | 269 | #define MIRYOKU_ALTERNATIVES_NAV_VI \ 270 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ 271 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, U_CW, \ 272 | U_NA, KC.RALT, U_DF(U_NUM), U_DF(U_NAV), U_NA, KC.HOME, KC.PGDN, KC.PGUP, KC.END, KC.INS, \ 273 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 274 | 275 | #define MIRYOKU_ALTERNATIVES_NAV \ 276 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ 277 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, U_CW, KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, \ 278 | U_NA, KC.RALT, U_DF(U_NUM), U_DF(U_NAV), U_NA, KC.INS, KC.HOME, KC.PGDN, KC.PGUP, KC.END, \ 279 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.ENT, KC.BSPC, KC.DEL, U_NP, U_NP 280 | 281 | 282 | #define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP \ 283 | KC.MW_UP, U_NU, KC.MS_UP, U_NU, U_NU, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 284 | KC.MW_DN, KC.MS_LT, KC.MS_DN, KC.MS_RT, U_NU, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 285 | U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_DF(U_MOUSE), U_DF(U_SYM), KC.RALT, U_NA, \ 286 | U_NP, U_NP, KC.MB_MMB, KC.MB_LMB, KC.MB_RMB, U_NA, U_NA, U_NA, U_NP, U_NP 287 | 288 | #define MIRYOKU_ALTERNATIVES_MOUSE_FLIP \ 289 | U_NU, KC.MW_DN, KC.MW_UP, U_NU, U_NU, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 290 | KC.MS_LT, KC.MS_DN, KC.MS_UP, KC.MS_RT, U_NU, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 291 | U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_DF(U_MOUSE), U_DF(U_SYM), KC.RALT, U_NA, \ 292 | U_NP, U_NP, KC.MB_MMB, KC.MB_LMB, KC.MB_RMB, U_NA, U_NA, U_NA, U_NP, U_NP 293 | 294 | #define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT \ 295 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, U_NU, U_NU, KC.MS_UP, U_NU, KC.MW_UP, \ 296 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, U_NU, KC.MS_LT, KC.MS_DN, KC.MS_RT, KC.MW_DN, \ 297 | U_NA, KC.RALT, U_DF(U_SYM), U_DF(U_MOUSE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ 298 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.MB_RMB, KC.MB_LMB, KC.MB_MMB, U_NP, U_NP 299 | 300 | #define MIRYOKU_ALTERNATIVES_MOUSE_VI \ 301 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ 302 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, KC.MS_LT, KC.MS_DN, KC.MS_UP, KC.MS_RT, U_NU, \ 303 | U_NA, KC.RALT, U_DF(U_SYM), U_DF(U_MOUSE), U_NA, U_NU, KC.MW_DN, KC.MW_UP, U_NU, U_NU, \ 304 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.MB_RMB, KC.MB_LMB, KC.MB_MMB, U_NP, U_NP 305 | 306 | #define MIRYOKU_ALTERNATIVES_MOUSE \ 307 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ 308 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, U_NU, KC.MS_LT, KC.MS_DN, KC.MS_UP, KC.MS_RT, \ 309 | U_NA, KC.RALT, U_DF(U_SYM), U_DF(U_MOUSE), U_NA, U_NU, U_NU, KC.MW_DN, KC.MW_UP, U_NU, \ 310 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.MB_RMB, KC.MB_LMB, KC.MB_MMB, U_NP, U_NP 311 | 312 | 313 | #define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP \ 314 | U_RGB_HUI, U_RGB_SAI, KC.VOLU, U_RGB_VAI, U_RGB_TOG, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 315 | U_RGB_MOD, KC.MPRV, KC.VOLD, KC.MNXT, KC.PS_TOG, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 316 | U_NU, U_NU, U_NU, U_NU, KC.HID, U_NA, U_DF(U_MEDIA), U_DF(U_FUN), KC.RALT, U_NA, \ 317 | U_NP, U_NP, KC.MUTE, KC.MPLY, KC.MSTP, U_NA, U_NA, U_NA, U_NP, U_NP 318 | 319 | #define MIRYOKU_ALTERNATIVES_MEDIA_FLIP \ 320 | U_RGB_MOD, U_RGB_HUI, U_RGB_SAI, U_RGB_VAI, U_RGB_TOG, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 321 | KC.MPRV, KC.VOLD, KC.VOLU, KC.MNXT, KC.PS_TOG, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 322 | U_NU, U_NU, U_NU, U_NU, KC.HID, U_NA, U_DF(U_MEDIA), U_DF(U_FUN), KC.RALT, U_NA, \ 323 | U_NP, U_NP, KC.MUTE, KC.MPLY, KC.MSTP, U_NA, U_NA, U_NA, U_NP, U_NP 324 | 325 | #define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT \ 326 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, U_RGB_TOG, U_RGB_MOD, KC.VOLU, U_RGB_HUI, U_RGB_SAI, \ 327 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, KC.PS_TOG, KC.MPRV, KC.VOLD, KC.MNXT, U_RGB_VAI, \ 328 | U_NA, KC.RALT, U_DF(U_FUN), U_DF(U_MEDIA), U_NA, KC.HID, U_NU, U_NU, U_NU, U_NU, \ 329 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.MSTP, KC.MPLY, KC.MUTE, U_NP, U_NP 330 | 331 | #define MIRYOKU_ALTERNATIVES_MEDIA_VI \ 332 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, U_RGB_MOD, U_RGB_HUI, U_RGB_SAI, U_RGB_VAI, U_RGB_TOG, \ 333 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, KC.MPRV, KC.VOLD, KC.VOLU, KC.MNXT, KC.PS_TOG, \ 334 | U_NA, KC.RALT, U_DF(U_FUN), U_DF(U_MEDIA), U_NA, U_NU, U_NU, U_NU, U_NU, KC.HID, \ 335 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.MSTP, KC.MPLY, KC.MUTE, U_NP, U_NP 336 | 337 | #define MIRYOKU_ALTERNATIVES_MEDIA \ 338 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, U_RGB_TOG, U_RGB_MOD, U_RGB_HUI, U_RGB_SAI, U_RGB_VAI, \ 339 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, KC.PS_TOG, KC.MPRV, KC.VOLD, KC.VOLU, KC.MNXT, \ 340 | U_NA, KC.RALT, U_DF(U_FUN), U_DF(U_MEDIA), U_NA, KC.HID, U_NU, U_NU, U_NU, U_NU, \ 341 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.MSTP, KC.MPLY, KC.MUTE, U_NP, U_NP 342 | 343 | 344 | #define MIRYOKU_ALTERNATIVES_NUM_FLIP \ 345 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, KC.LBRC, KC.N7, KC.N8, KC.N9, KC.RBRC, \ 346 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, KC.EQL, KC.N4, KC.N5, KC.N6, KC.SCLN, \ 347 | U_NA, KC.RALT, U_DF(U_NAV), U_DF(U_NUM), U_NA, KC.BSLS, KC.N1, KC.N2, KC.N3, KC.GRV, \ 348 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.MINS, KC.N0, KC.DOT, U_NP, U_NP 349 | 350 | #define MIRYOKU_ALTERNATIVES_NUM \ 351 | KC.LBRC, KC.N7, KC.N8, KC.N9, KC.RBRC, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 352 | KC.SCLN, KC.N4, KC.N5, KC.N6, KC.EQL, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 353 | KC.GRV, KC.N1, KC.N2, KC.N3, KC.BSLS, U_NA, U_DF(U_NUM), U_DF(U_NAV), KC.RALT, U_NA, \ 354 | U_NP, U_NP, KC.DOT, KC.N0, KC.MINS, U_NA, U_NA, U_NA, U_NP, U_NP 355 | 356 | 357 | #define MIRYOKU_ALTERNATIVES_SYM_FLIP \ 358 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, KC.LCBR, KC.AMPR, KC.ASTR, KC.LPRN, KC.RCBR, \ 359 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, KC.PLUS, KC.DLR, KC.PERC, KC.CIRC, KC.COLN, \ 360 | U_NA, KC.RALT, U_DF(U_MOUSE), U_DF(U_SYM), U_NA, KC.PIPE, KC.EXLM, KC.AT, KC.HASH, KC.TILD, \ 361 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.UNDS, KC.LPRN, KC.RPRN, U_NP, U_NP 362 | 363 | #define MIRYOKU_ALTERNATIVES_SYM \ 364 | KC.LCBR, KC.AMPR, KC.ASTR, KC.LPRN, KC.RCBR, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 365 | KC.COLN, KC.DLR, KC.PERC, KC.CIRC, KC.PLUS, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 366 | KC.TILD, KC.EXLM, KC.AT, KC.HASH, KC.PIPE, U_NA, U_DF(U_SYM), U_DF(U_MOUSE), KC.RALT, U_NA, \ 367 | U_NP, U_NP, KC.LPRN, KC.RPRN, KC.UNDS, U_NA, U_NA, U_NA, U_NP, U_NP 368 | 369 | 370 | #define MIRYOKU_ALTERNATIVES_FUN_FLIP \ 371 | U_BOOT, U_DF(U_TAP), U_DF(U_EXTRA), U_DF(U_BASE), U_NA, KC.PSCR, KC.F7, KC.F8, KC.F9, KC.F12, \ 372 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NA, KC.SLCK, KC.F4, KC.F5, KC.F6, KC.F11, \ 373 | U_NA, KC.RALT, U_DF(U_MEDIA), U_DF(U_FUN), U_NA, KC.PAUS, KC.F1, KC.F2, KC.F3, KC.F10, \ 374 | U_NP, U_NP, U_NA, U_NA, U_NA, KC.TAB, KC.SPC, KC.APP, U_NP, U_NP 375 | 376 | #define MIRYOKU_ALTERNATIVES_FUN \ 377 | KC.F12, KC.F7, KC.F8, KC.F9, KC.PSCR, U_NA, U_DF(U_BASE), U_DF(U_EXTRA), U_DF(U_TAP), U_BOOT, \ 378 | KC.F11, KC.F4, KC.F5, KC.F6, KC.SLCK, U_NA, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 379 | KC.F10, KC.F1, KC.F2, KC.F3, KC.PAUS, U_NA, U_DF(U_FUN), U_DF(U_MEDIA), KC.RALT, U_NA, \ 380 | U_NP, U_NP, KC.APP, KC.SPC, KC.TAB, U_NA, U_NA, U_NA, U_NP, U_NP 381 | 382 | 383 | #define MIRYOKU_ALTERNATIVES_BUTTON \ 384 | U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ 385 | KC.LGUI, KC.LALT, KC.LCTL, KC.LSFT, U_NU, U_NU, KC.LSFT, KC.LCTL, KC.LALT, KC.LGUI, \ 386 | U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ 387 | U_NP, U_NP, KC.MB_MMB, KC.MB_LMB, KC.MB_RMB, KC.MB_RMB, KC.MB_LMB, KC.MB_MMB, U_NP, U_NP 388 | --------------------------------------------------------------------------------