{"id":13573638,"url":"https://github.com/manna-harbour/miryoku_zmk","last_synced_at":"2025-05-14T03:07:26.394Z","repository":{"id":36987658,"uuid":"481505285","full_name":"manna-harbour/miryoku_zmk","owner":"manna-harbour","description":"Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout. Miryoku ZMK is the Miryoku implementation for ZMK.","archived":false,"fork":false,"pushed_at":"2025-02-19T05:29:11.000Z","size":572,"stargazers_count":504,"open_issues_count":6,"forks_count":2250,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-12T22:16:39.021Z","etag":null,"topics":["miryoku","zmk","zmk-config"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manna-harbour.png","metadata":{"files":{"readme":"readme.org","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["manna-harbour"]}},"created_at":"2022-04-14T07:18:05.000Z","updated_at":"2025-04-12T05:52:42.000Z","dependencies_parsed_at":"2024-03-16T13:08:55.085Z","dependency_job_id":"1822c923-c8df-4924-b37d-bc204eb75cee","html_url":"https://github.com/manna-harbour/miryoku_zmk","commit_stats":{"total_commits":340,"total_committers":16,"mean_commits":21.25,"dds":0.0676470588235294,"last_synced_commit":"a1f1eae0666b7b33ad789b10822297169754a349"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manna-harbour%2Fmiryoku_zmk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manna-harbour%2Fmiryoku_zmk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manna-harbour%2Fmiryoku_zmk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manna-harbour%2Fmiryoku_zmk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manna-harbour","download_url":"https://codeload.github.com/manna-harbour/miryoku_zmk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254059502,"owners_count":22007768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["miryoku","zmk","zmk-config"],"created_at":"2024-08-01T15:00:38.740Z","updated_at":"2025-05-14T03:07:26.336Z","avatar_url":"https://github.com/manna-harbour.png","language":"C","funding_links":["https://github.com/sponsors/manna-harbour"],"categories":["C","Community zmk-config user configurations"],"sub_categories":["Additional Resources"],"readme":"# Copyright 2023 Manna Harbour\n# https://github.com/manna-harbour/miryoku\n\n* Miryoku ZMK [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/miryoku-roa-32.png]]\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/cover/miryoku-kle-cover-miryoku_zmk.png]]\n\n[[https://github.com/manna-harbour/miryoku/][Miryoku]] is an ergonomic, minimal, orthogonal, and universal keyboard layout.  [[https://github.com/manna-harbour/miryoku_zmk][Miryoku ZMK]] is the Miryoku implementation for [[https://zmkfirmware.dev/][ZMK]].\n\nThis document describes Miryoku ZMK only.  For Miryoku documentation, implementations, and discussions and support, see [[https://github.com/manna-harbour/miryoku/][Miryoku]].\n\nSee the [[docs/quickstart][Miryoku ZMK Quickstart Guide]] to have a personalised build running on your keyboard in a few minutes without installing any software or editing any files.\n\n** Overview\n\n[[#building][Building]] can be performed [[#local-builds][locally]], or via GitHub Actions [[#workflow-builds][workflows]] without use of a local build environment.  Many keyboards are [[#supported-keyboards][supported]], and building out-of-tree keyboards is automatically supported by the workflows.\n\nWorkflow builds can be customised by copying and editing one of the [[#build-examples][example workflows]] or by filling out a [[#build-inputs][form]], and specifying [[#options][options]].  Local and workflow builds can be customised by editing a [[#config-file][config file]], and an [[#example-config-file][example]] is included.\n\nThe [[#keyboard-keymaps][keyboard keymaps]] are composed of the config file, a [[#mapping-macros][mapping]] for the physical layout, and the [[#miryoku-keymap][Miryoku keymap]].\n\n[[#additional-and-experimental-features][Additional and Experimental Features]] include\n[[#caps-word][caps word]],\n[[#customisation][customisation]],\n[[#double-tap-boot][double tap boot]],\n[[#global-shift-functions][global shift functions]],\n[[#key-emulation-combos][key emulation combos]],\n[[#mouse-keys][mouse keys]],\n[[#soft-off][soft off]],\n[[#tap-delay][tap delay]],\nand [[#𝑥MK][𝑥MK]].\nOpen [[#issues][issues]] are also noted.\n\n\n** Building\n\n\n*** Local Builds\n\nFirst [[https://zmk.dev/docs/development/setup][set up the ZMK build environment]] and [[https://zmk.dev/docs/development/build-flash][build and flash the default keymap for your keyboard]].\n\nClone this repository and set [[https://zmk.dev/docs/development/build-flash#building-from-zmk-config-folder][ZMK_CONFIG]] to the absolute path of the [[config]] subdirectory.  Use the [[#config-file][config file]] to select alternative layout and mapping options.\n\n\n*** Workflow Builds\n\nFirmware can be built via GitHub Actions workflows without use of a local build environment.\n\nFirst log in to GitHub, fork the Miryoku ZMK repository, and enable workflows.\n\nTo access a workflow, visit the Actions tab and select the workflow.  To download the firmware from a workflow run, select the workflow, select the workflow run, select the desired Artifacts, and unzip the downloaded zip file.\n\nSee the [[docs/quickstart][Miryoku ZMK Quickstart Guide]] for step by step instructions.\n\nWorkflow files are in [[.github/workflows]].\n\nTo enable Miryoku ZMK workflow debugging, set the following [[https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository][secret]] in the repository: ~MIRYOKU_DEBUG~ to ~MIRYOKU_DEBUG_TRUE~. Optionally also [[https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging][enable step debugging]].\n\n\n**** Build Examples\n\nCopy one of the included Build Example workflow files, edit the ~name~ value, edit and add options and values as desired, and push changes.  Access the workflow, select Run workflow, select the Branch if desired, and activate Run workflow.\n\nOptions are specified in the ~with~ section and are of the following form.\n: option: '[\"value\"]'\n\nFor multiple values per option use the following form, and a matrix build will be performed for each combination of values across all options.\n: option: '[\"value1\",\"value2\"]'\n\nSee [[#fields--options][Options]] below for a description of each option.\n\n\n**** Build Inputs\n\nThe Build Inputs workflow can be used without editing workflow files.  Access the workflow, Select Run workflow, select the Branch and fill out the form as desired, and activate Run workflow.\n\nMost options are specified by entering values directly in the corresponding field.  Multiple comma separated values can be entered per option and a matrix build will be performed for each combination of values across all options.\n\nValues for [[#miryoku-alternative-layout-and-mapping-options][Miryoku alternative layout options]] are selected from a list.  As multiple selection is not supported, matrix builds across multiple values are not possible for these options, and the Test Inputs or [[#build-examples][Build Example]] workflows should be used instead.\n\n\nSee [[#fields--options][Options]] below for a description of each option.\n\n\n**** Options\n\nAll [[#workflow-builds][workflow]] options are described below.\n\nThe [[#board][board]] option is required and all others are optional.\n\n\n***** Keyboard Selection\n\nSee [[#supported-keyboards][Supported Keyboards]] for details of supported keyboards.\n\n\n****** board\n\nSpecifies the ZMK board.\n\nFor onboard controller keyboards (keyboards with an integrated controller), enter the keyboard name, e.g. ~ahokore~, ~ble_chiffre~, ~technikable~, ~zaphod~.\n\nFor split onboard controller keyboards (keyboards with an integrated controller on each side), enter the keyboard side name, e.g. ~corneish_zen_v1_left~, ~corneish_zen_v1_right~.  To build both sides in the same run, enter both keyboard side names separated by a comma, e.g. ~corneish_zen_v1_left,corneish_zen_v1_right~.\n\nFor composite keyboards (keyboards with a separate controller), enter the controller name, e.g. ~nice_nano~, ~nice_nano_v2~, ~seeeduino_xiao~, ~seeeduino_xiao_ble~.  Also specify the [[#shield][shield]].\n\n\n****** shield\n\nSpecifies the ZMK shield.\n\nFor onboard controller keyboards (keyboards with an integrated controller), leave as ~default~.\n\nFor composite keyboards (keyboards with a separate controller), enter the keyboard name, e.g. ~absolem~, ~chocv~, ~eek~, ~osprette~.\n\nFor split composite keyboards (keyboards with a separate controller on each side), enter the keyboard side name, e.g. ~corne_left~, ~corne_right~, ~cradio_left~, ~cradio_right~.  To build both sides in the same run, enter both keyboard side names separated by a comma, e.g. ~corne_left,corne_right~, ~cradio_left,cradio_right~.\n\nAlso use to specify optional non-keyboard shields, e.g. ~nice_view~. To combine shields, separate with space, e.g. ~nice_view_adapter nice_view~, ~corne_left nice_view_adapter nice_view~. For multiple builds of combined shields in the same run, use both comma and space separators, e.g. ~corne_left nice_view_adapter nice_view,corne_right nice_view_adapter nice_view~.\n\n\n***** Miryoku Alternative Layout and Mapping Options\n\nThe ~alphas~, ~extra~, ~tap~, ~nav~, ~clipboard~, and ~layers~ options correspond to the Miryoku alternative layout options.  See the [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#layers][default layers]] and [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layouts]] documentation for details.  See the [[.github/workflows/test-all-configs.yml][Test All Configs]] workflow file for a list of all supported values.\n\nThe ~mapping~ option corresponds to the alternative [[#mapping-macros][mapping]] options.\n\nAlternative layout and mapping options are given in the documentation in the form ~MIRYOKU_OPTION=VALUE~, e.g. ~MIRYOKU_ALPHAS=QWERTY~.  To use here, use the value with the corresponding option.  Use ~default~ to represent the default value.  Values for these five options are case-insensitive.\n\n\n****** alphas\n\nSelect an alternative alphas layout, e.g. ~colemak~, ~dvorak~, ~halmak~, ~qwerty~.  For Colemak Mod-DH, leave as ~default~.\n\n\n****** nav\n\nSelect an alternative Nav layout, e.g. ~invertedt~, ~vi~.  For home position line nav, leave as ~default~.\n\n\n****** layers\n\nSelect an alternative layers layout, e.g. ~flip~.  For right hand Nav, leave as ~default~.\n\n\n****** mapping\n\nSelect an alternative mapping, e.g. ~extended_thumbs~, ~pinkie_stagger~.  For the default mapping, leave as ~default~.\n\n\n***** custom_config\n\nAppends to the [[#config-file][config]] file, e.g. ~#define MIRYOKU_CLIPBOARD_WIN~. Join multiple lines with ~\\n~, e.g. ~#define MIRYOKU_EXTRA_DVORAK\\n#define MIRYOKU_TAP_QWERTY\\n#define MIRYOKU_CLIPBOARD_WIN~. For no additional config, leave as ~default~.\n\n\n***** Additional Options\n\nThese options are not available in the [[#build-inputs][Build Inputs]] workflow due to platform limitations.  Use the [[#custom_config][custom_config]] option instead.\n\n\n****** extra\n\nSelect an alternative alphas layout for the Extra layer, e.g. ~colemak~, ~dvorak~, ~halmak~, ~qwerty~.  For QWERTY, leave as ~default~.\n\n\n****** tap\n\nSelect an alternative alphas layout for the Tap layer, e.g. ~colemak~, ~dvorak~, ~halmak~, ~qwerty~.  For Colemak Mod-DH, leave as ~default~.\n\n\n****** clipboard\n\nSelect an alternative clipboard type, e.g. ~mac~, ~win~.  For CUA bindings, leave as ~default~.\n\n\n***** ZMK Options\n\n\n****** kconfig\n\nAppends to [[#kconfig-configuration][Kconfig configuration]].  Join multiple lines with ~\\n~.  For no additional config, leave as ~default~.\n\n\n****** branches\n\nUsed to select an alternative ZMK branch for building, and to merge branches into ZMK at build time.\n\nBranches are specified in the form ~\u003cuser\u003e/\u003crepo\u003e/\u003cbranch\u003e~.  E.g. the default ZMK branch would be specified as ~zmkfirmware/zmk/main~.\n\nMultiple space separated branches can be specified.  The first branch specified is used as an alternative ZMK branch for building.  Any additional branches will be merged.  Automatic merging is only possible where there are no conflicts.  If there are conflicts, build from the branch directly, or request a rebase from the branch maintainer.\n\nFor no changes, leave as ~default~.\n\n\n****** modules\n\nUsed to build with external modules.\n\nModules are specified in the form ~\u003cuser\u003e/\u003crepo\u003e/\u003cbranch\u003e~.\n\nMultiple space separated modules can be specified.\n\nFor no changes, leave as ~default~.\n\n\n** Supported Keyboards\n\nIn-tree keyboards are maintained as part of ZMK. See the [[https://zmk.dev/docs/hardware/][ZMK Supported Hardware]] documentation for details.\n\nSupporting an in-tree keyboard in Miryoku ZMK requires only adding the [[#keyboard-keymaps][keyboard keymap]] and [[#mapping-macros][mapping]] files.\n\nOut-of-tree keyboards are *not* maintained as part of ZMK or Miryoku ZMK. Keyboard definitions for out-of-tree keyboards are located in separate repositories. Some keyboards also require ZMK forks or external modules. Keyboard definitions, ZMK forks, and external modules are maintained by the maintainers of those repositories.\n\nTo build an out-of-tree keyboard the repositories need be checked out and used appropriately. For [[#local-builds][local builds]] these steps must be performed manually. For [[#workflow-builds][workflow builds]] the Miryoku ZMK build workflows perform these steps automatically at build time using [[#Outboards][outboards]].\n\nSupporting an out-of-tree keyboard in Miryoku ZMK requires adding the keymap, mapping, and outboards files.\n\nSee the Test All Controllers, Boards, and Shields [[#workflow-builds][workflow files]] for lists of supported keyboards.\n\nSee outboards for details of supported out-of-tree keyboards.\n\nSee https://github.com/manna-harbour/miryoku/discussions/81 for available and supported in-tree and out-of-tree keyboards.\n\n\n*** Outboards\n\nOutboards are files containing out-of-tree board and shield definition metadata.\n\nFiles are at [[.github/workflows/outboards]]. Outboards for boards and shields are contained in the corresponding subdirectories. Files are named after the base board or shield name (i.e. without revision or ~_left~ / ~_right~ suffixes).\n\nOutboards contain Bourne shell variable assignments. Supported variables are described below. See the files for samples.\n\n\n**** Repository and Symlink Variables\n\nBoard or shield definitions stored in an external repository are cloned and symlinked at build time according to the following variables. All are required.\n\n\n***** outboard_repository\n\nThe repository containing the board or shield definition. For GitHub repositories, the ~https://github.com/~ prefix can be omitted.\n\n\n***** outboard_ref\n\nThe name of the branch containing the board or shield definition.\n\n\n***** outboard_from\n\nThe path to the directory containing the board or shield definition.\n\n\n***** outboard_to\n\nThe path to the directory below ~config/~ where the board or shield definition should be located.\n\n\n**** outboard_branches\n\nSpecify if the board or shield requires or is defined in one or more ZMK forks. Use is the same as for the workflow [[#branches][branches]] option. \n\nIf the board or shield definition is contained in a specified branch, [[#Repository-and-Symlink-Variables][repository and symlink variables]] are not required.\n\nIf branches are also specified via the workflow ~branches~ option or in other outboards, all branches will be used.\n\n\n**** outboard_modules\n\nSpecify if the board or shield requires or is defined in one or more external modules. Use is the same as for the workflow [[#modules][modules]] option. \n\nIf the board or shield definition is contained in a specified module, [[#Repository-and-Symlink-Variables][repository and symlink variables]] are not required.\n\nIf modules are also specified via the workflow ~modules~ option or in other outboards, all modules will be used.\n\n\n*** Notes\n\nNotes are provided below for individual keyboards where required.\n\n\n**** Corne-ish Zen\n\nFor Corne-ish Zen v1 (GB R1 and R2) build with board ~corneish_zen_v1_left,corneish_zen_v1_right~, and for Corne-ish Zen v2 (GB R3) build with board ~corneish_zen_v2_left,corneish_zen_v2_right~.\n\nA custom branch is also available at https://github.com/caksoylar/zmk/tree/caksoylar/zen-v1+v2 that includes additional display improvements and options. Documentation is at https://gist.github.com/caksoylar/c411313990978e1903c244f03039187a. Options can be selected with [[#kconfig-configuration][Kconfig configuration]]. For [[#workflow-builds][workflow builds]] using the [[#build-inputs][Build Inputs]] workflow, use ~caksoylar/zmk/caksoylar/zen-v1+v2~ with the ~branches~ option. For workflow builds using [[#build-examples][Build Example]] workflows, see the [[.github/workflows/build-example-corneish_zen-custom.yml][Build Example Corne-ish Zen Custom]] workflow. For local builds, make the changes locally.\n\n\n** Config File\n\nThe config file is used to specify [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layout]] and [[#mapping-macros][mapping]] options for [[#Local-Builds][local builds]].  Options are given in the documentation in the form ~MIRYOKU_OPTION=VALUE~.  Convert to the form ~#define MIRYOKU_OPTION_VALUE~ and add to the config file.\n\nThe config file can also be used to set default alternative layout and mapping options for [[#workflow-builds][workflow builds]], as an alternative to using the corresponding [[#miryoku-alternative-layout-and-mapping-options][alternative layout and mapping workflow options]].  In this case setting different values for the same option in the config file and in the workflow options may lead to undefined behaviour.\n\nThe config file can also be used to set other Miryoku ZMK configuration options for local and workflow builds.\n\nConfig file entries can also be specified in the [[#custom_config][custom_config]] option for workflow builds.\n\nThe file is [[miryoku/custom_config.h]].  See the [[#example-config-file][example config file]].  The config file is included into the keyboard's keymap file before the mapping with:\n\n#+BEGIN_SRC C :tangle no\n#include \"../miryoku/custom_config.h\"\n#+END_SRC\n\n\n*** Example Config File\n\nBelow is an example [[#config-file][config file]] with the following alternative layout and mapping options:\n\n- ~MIRYOKU_ALPHAS=QWERTY~\n- ~MIRYOKU_TAP=QWERTY~\n- ~MIRYOKU_EXTRA=COLEMAKDH~\n- ~MIRYOKU_NAV=INVERTEDT~\n- ~MIRYOKU_CLIPBOARD=WIN~\n- ~MIRYOKU_LAYERS=FLIP~\n- ~MIRYOKU_MAPPING=EXTENDED_THUMBS~\n\n#+BEGIN_SRC C :tangle no\n// Copyright 2022 Manna Harbour\n// https://github.com/manna-harbour/miryoku\n\n#define MIRYOKU_ALPHAS_QWERTY\n#define MIRYOKU_TAP_QWERTY\n#define MIRYOKU_EXTRA_COLEMAKDH\n#define MIRYOKU_NAV_INVERTEDT\n#define MIRYOKU_CLIPBOARD_WIN\n#define MIRYOKU_LAYERS_FLIP\n#define MIRYOKU_MAPPING_EXTENDED_THUMBS\n#+END_SRC\n\n\n** Miryoku Keymap\n\nThe Miryoku keymap is a ZMK DT keymap file using C preprocessor macros for [[#config-file][configuration options]] and to abstract the physical layout.  The Miryoku keymap file is [[miryoku/miryoku.dtsi]].  The file is included into the [[#keyboard-keymaps][keyboard's keymap]] after the config file and mapping with:\n\n#+BEGIN_SRC C :tangle no\n#include \"../miryoku/miryoku.dtsi\"\n#+END_SRC\n\nMacros are included from [[miryoku/miryoku.h]].  Layer data is generated by [[https://github.com/manna-harbour/miryoku_babel][Miryoku Babel]] and is included from files in the [[miryoku/miryoku_babel]] directory.\n\n\n** Mapping Macros\n\nThe keymap is mapped onto keyboards with different physical layouts.  The keymap is specified in terms of the ~MIRYOKU_MAPPING~ macro.  The macro is defined in a C header file for each physical layout.  Unused keys are mapped to ~\u0026none~.  The files are below [[miryoku/mapping/]].  The mapping file is included into the [[#keyboard-keymaps][keyboard keymap]] file before the [[#miryoku-keymap][Miryoku keymap]] with e.g.\n\n#+BEGIN_SRC C :tangle no\n#include \"../miryoku/mapping/36/minidox.h\"\n#+END_SRC\n\nOn each hand, only the main alpha block of 3 rows by 5 columns and the 3 most appropriate thumb keys are used.\n\n\n*** Notes\n\nNotes or diagrams are provided below where the selection of keys is not obvious or where alternatives are provided via mapping configuration options.\n\n\n**** 30/hummingbird\n\n[[#bottom-row-combos][Bottom row combos]] and [[#thumb-combos][thumb combos]] are enabled.\n\n\n**** 34/ferris\n\n[[#thumb-combos][Thumb combos]] are enabled.\n\n\n**** 36/willis\n\n***** Bruce\n\n~MIRYOKU_MAPPING=2X2U~\n\nSupports Bruce/Le Chiffre 2x2u configuration.\n[[#thumb-combos][Thumb combos]] are enabled.\n\n***** Minidox\n\nDefault.\n3x1U thumb keys.\n\n\n**** 38/draculad\n\n\n***** PIM447 Right\n\n~MIRYOKU_MAPPING=PIM447RIGHT~\n\nFor use with PIM447 installed in the right secondary thumb key position. The right tertiary thumb key is replaced with the secondary and [[#thumb-combos][thumb combos]] are enabled. Note that the right secondary thumb key is in the opposite position from usual, relative to the primary.\n\n\n**** 38/totem\n\nThe outer pinkie column key can be used as an alternative to the top row pinkie column key.\n\n\n**** 41/reviung41\n\nThe thumbs keys, from left to right, are as follows: left secondary, left primary, right secondary, right primary, right tertiary. [[#thumb-combos][Thumb combos]] are enabled for the left thumbs. The left thumb keys are also duplicated on the left outer pinkie column, from top to bottom, as follows: primary, tertiary, secondary. Note that the left secondary thumb key is in the opposite position from usual, relative to the primary. For ~MIRYOKU_LAYERS=FLIP~, substitute left and right above.\n\n\n**** 44/technikable\n\nThe middle 2 columns are unused.\n\n\n***** Default\n\nSupports ortho and MIT configurations.\n\n\n***** 2x2u\n\n~MIRYOKU_MAPPING=2X2U~\n\nSupports 2x2u configuration.\n\n\n***** Extended Thumbs\n\n~MIRYOKU_MAPPING=EXTENDED_THUMBS~\n\nThe thumb keys are moved 1u to extend the thumbs.  Supports ortho configuration.\n\n\n**** 48/planck\n\n\n***** Default\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12.png]]\n\n\n***** Extended Thumbs\n\n~MIRYOKU_MAPPING=EXTENDED_THUMBS~\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-extended_thumbs.png]]\n\n\n**** 48/lets_split\n\n\n***** Default\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-extended_thumbs.png]]\n\n\n***** Pinkie Stagger\n\n~MIRYOKU_MAPPING=PINKIE_STAGGER~\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-split.png]]\n\n\n**** 50/kyria\n\n\n***** Default\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria.png]]\n\n\n***** Extend Thumbs\n\n~MIRYOKU_MAPPING=EXTENDED_THUMBS~\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria-extended_thumbs.png]]\n\n\n**** 61/60_ansi\n\n\n***** Default\n\nAn angled ortho split layout is mapped onto the row-staggered keyboard.  The rows are moved up to better position the thumb keys, the hands are separated as much as possible, and the left hand column angle is reversed to reduce ulnar deviation of the wrists.\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi.png]]\n\n\n***** No Reverse Angle\n\n~MIRYOKU_MAPPING=NOREVERSEANGLE~\n\nAn alternative subset mapping is also provided without reverse column angle.\n\n[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi-noreverseangle.png]]\n\n\n***** Lite\n\n~MIRYOKU_MAPPING=LITE~\n\nAnother alternative subset mapping is provided mapping only the 3x10 alphas, plus spacebar for space / Nav, with the remainder being the default keymap with semicolon in place of quote.\n\n\n** Keyboard Keymaps\n\nThe keyboard keymaps include the [[#config-file][config file]], a [[#mapping-macros][mapping]] for the physical layout, and the [[#miryoku-keymap][Miryoku keymap]].  Keyboard keymap files are in [[config]].\n\n\n** Kconfig Configuration\n\n[[https://zmk.dev/docs/config][Kconfig keyboard configuration options]] can be set in ~config/\u003ckeyboard\u003e.conf~ as usual for [[#local-builds][local]] and [[#workflow-builds][workflow]] builds.\nExamples include ~CONFIG_ZMK_SLEEP=y~, ~CONFIG_ZMK_DISPLAY=y~, ~CONFIG_BT_CTLR_TX_PWR_PLUS_8=y~.\nAlso see the default ~\u003ckeyboard\u003e.conf~ included in the keyboard definition, e.g. [[https://github.com/zmkfirmware/zmk/blob/main/app/boards/shields/corne/corne.conf][corne.conf]].\n\nKconfig configuration can also be specified in the [[#kconfig][kconfig option]] for workflow builds.\n\n\n** Additional and Experimental Features\n\n\n*** Caps Word\n\n[[https://zmk.dev/docs/behaviors/caps-word][Caps word]] is used in place of ~Caps Lock~.  Combine with ~Shift~ for ~Caps Lock~.\n\n\n*** Customisation\n\nSee https://github.com/manna-harbour/miryoku/discussions/85.\n\n\n*** Double Tap Boot\n\nDouble tap is used with [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#additional-features][Additional features]]. Double tap for the bootloader behavior is not supported in ZMK on split keyboards. See https://github.com/zmkfirmware/zmk/issues/1494. By default, double tap for bootloader is disabled. Use a single tap instead.\n\nDouble tap for bootloader can be enabled for use with non-split keyboards. For [[#local-builds][local builds]], add ~#define MIRYOKU_KLUDGE_DOUBLETAPBOOT~ to the [[#config-file][config file]]. For [[#workflow-builds][workflow builds]], use ~#define MIRYOKU_KLUDGE_DOUBLETAPBOOT~ with the ~custom_config~ option.\n\nUse with split keyboards will result in the bootloader function only taking effect on the central side. Use a reset button to enter the bootloader on the peripheral side.\n\n\n*** Global Shift Functions\n\nShift functions are used on [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#media][Media]]. Shift functions are not supported in ZMK for RGB and EP behaviors on split keyboards. See https://github.com/zmkfirmware/zmk/issues/1494. By default, shift functions for RGB and EP are disabled. Only the unshifted functions are available.\n\nShift functions for RGB and EP can be enabled for use with non-split keyboards. For [[#local-builds][local builds]], add ~#define MIRYOKU_KLUDGE_GLOBALSHIFTFUNCTIONS~ to the [[#config-file][config file]]. For [[#workflow-builds][workflow builds]], use ~#define MIRYOKU_KLUDGE_GLOBALSHIFTFUNCTIONS~ with the ~custom_config~ option.\n\nUse with split keyboards will result in the shifted as well as the unshifted functions for RGB and EP only taking effect on the central side.\n\n\n*** Key Emulation Combos\n\nEmulate a key with a combo of two other keys.  Enabled automatically on keyboards with a missing key.  Can be enabled on other keyboards for use with hard to reach keys, or for compatibility.\n\nSee https://github.com/manna-harbour/miryoku/issues/56.\n\n\n**** Top Row Combos\n\nOn the top row on each hand, combo the ring and middle finger keys to emulate the pinkie key, and combo the middle and index finger keys to emulate the inner index key.\n\nRequires ~CONFIG_ZMK_COMBO_MAX_COMBOS_PER_KEY=16~ [[#kconfig-configuration][Kconfig configuration]].\n\n\n**** Bottom Row Combos\n\nOn the bottom row on each hand, combo the ring and middle finger keys to emulate the pinkie key, and combo the middle and index finger keys to emulate the inner index key.\n\nRequires ~CONFIG_ZMK_COMBO_MAX_COMBOS_PER_KEY=16~ [[#kconfig-configuration][Kconfig configuration]].\n\n\n**** Thumb Combos\n\nOn each hand, combo the primary and secondary thumb keys to emulate the tertiary thumb key.  Requires suitable keycaps to enable the thumb to press both keys simultaneously.\n\n\n*** Mouse Keys\n\n[[https://zmk.dev/docs/behaviors/mouse-emulation][ZMK supports mouse buttons only]].\n\n**** Mouse Keys on Host\n\nMouse movement requires [[https://en.wikipedia.org/wiki/Mouse_keys][enabling mouse keys on the host]].  Mouse scroll is not supported.\n\n- [[https://linuxreviews.org/HOWTO_use_the_numeric_keyboard_keys_as_mouse_in_XOrg][X11]]\n- [[https://support.apple.com/en-au/guide/mac-help/mh27469/mac][Mac]]\n- [[https://support.microsoft.com/en-us/windows/use-mouse-keys-to-move-the-mouse-pointer-9e0c72c8-b882-7918-8e7b-391fd62adf33][Windows]]\n\n\n**** Mousekeys PR\n\nMouse movement and scroll is supported with https://github.com/petejohanson/zmk/tree/feat/pointers-move-scroll from https://github.com/zmkfirmware/zmk/pull/2027.\n\nTo build, add ~#define MIRYOKU_KLUDGE_MOUSEKEYSPR~ to the [[#config-file][config file]], add ~CONFIG_ZMK_MOUSE=y~ to the [[#kconfig-configuration][Kconfig configuration]], and switch to or merge the mousekeys branch.\n\nFor [[#workflow-builds][workflow builds]] using the [[#build-inputs][Build Inputs]] workflow, use ~#define MIRYOKU_KLUDGE_MOUSEKEYSPR~ with the ~custom_config~ option, ~CONFIG_ZMK_MOUSE=y~ with the ~kconfig~ option, and ~petejohanson/zmk/feat/pointers-move-scroll~ with the ~branches~ option. Alternatively, use ~zmkfirmware/zmk/main petejohanson/zmk/feat/pointers-move-scroll~ to attempt an automatic [[#branches][merge]] of the branch into ZMK main.\n\nFor workflow builds using [[#build-examples][Build Example]] workflows, see the [[.github/workflows/build-example-mousekeyspr.yml][Build Example mousekeyspr]] workflow.\n\nFor local builds, make the changes locally.\n\n\n*** Soft Off\n\nSupport for [[https://zmk.dev/docs/features/soft-off][soft off]] can be enabled.\n\nSoft off takes the place of the [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#additional-features][boot]] key.\n\nFor [[#local-builds][local builds]], add ~#define MIRYOKU_KLUDGE_SOFT_OFF~ to the [[#config-file][config file]] and ~CONFIG_ZMK_PM_SOFT_OFF=y~ to the [[#kconfig-configuration][Kconfig configuration]].\n\nFor [[#workflow-builds][workflow builds]] using the [[#build-inputs][Build Inputs]] workflow, use ~#define MIRYOKU_KLUDGE_SOFT_OFF~ with the ~custom_config~ option, and ~CONFIG_ZMK_PM_SOFT_OFF=y~ with the ~kconfig~ option.\n\nFor workflow builds using [[#build-examples][Build Example]] workflows, see the [[.github/workflows/build-example-soft_off.yml][Build Example soft_off]] workflow.\n\n\n*** Tap Delay\n\nAdds a delay between press and release of hold-tap taps, as a work around for https://github.com/zmkfirmware/zmk/issues/1444.\n\nFor [[#local-builds][local builds]], add ~#define MIRYOKU_KLUDGE_TAPDELAY~ to the [[#config-file][config file]]. For [[#workflow-builds][workflow builds]], use ~#define MIRYOKU_KLUDGE_TAPDELAY~ with the ~custom_config~ option.\n\n\n*** 𝑥MK\n\nUse Miryoku ZMK with any keyboard with [[https://github.com/manna-harbour/xmk][𝑥MK]].\n\n\n**** xmk Shield\n\nFor [[#local-builds][local builds]], first switch to or merge https://github.com/zmkfirmware/zmk/pull/1318. Add https://github.com/manna-harbour/xmk/tree/main/zmk/boards/shields/xmk as ~config/boards/shields/xmk~. Build with shield ~xmk~ and the appropriate board.\n\nFor [[#workflow-builds][workflow builds]] using the [[#build-inputs][Build Inputs]] workflow, use ~xmk~ with the ~shield~ option, the appropriate board with the ~board~ option, and ~petejohanson/zmk/shell/tap-command~ with the ~branches~ option.  Alternatively, use ~zmkfirmware/zmk/main petejohanson/zmk/shell/tap-command~ to attempt an automatic [[#branches][merge]] of the branch into ZMK main.\n\nFor workflow builds using [[#build-examples][Build Example]] workflows, see the [[.github/workflows/build-example-xmk-xmk.yml][Build Example 𝑥MK xmk]] workflow.\n\n\n**** native_posix_64 Board\n\nFor [[#local-builds][local builds]], first switch to or merge https://github.com/zmkfirmware/zmk/pull/1318. Add ~#define MIRYOKU_KLUDGE_TAPDELAY~ to the config file. Build with board ~native_posix_64~.\n\nFor [[#workflow-builds][workflow builds]] using the [[#build-inputs][Build Inputs]] workflow, use ~native_posix_64~ with the ~board~ option, ~#define MIRYOKU_KLUDGE_TAPDELAY~ with the ~custom_config~ option, and ~petejohanson/zmk/shell/tap-command~ with the ~branches~ option.  Alternatively, use ~zmkfirmware/zmk/main petejohanson/zmk/shell/tap-command~ to attempt an automatic [[#branches][merge]] of the branch into ZMK main.\n\nFor workflow builds using [[#build-examples][Build Example]] workflows, see the [[.github/workflows/build-example-xmk-native_posix_64.yml][Build Example 𝑥MK native_posix_64]] workflow.\n\n\n** Issues\n\n\n*** No Current Layer Lock\n\n[[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#additional-features][Current layer lock]] is not supported in ZMK. Use opposite layer lock with the opposite hand instead. See https://github.com/zmkfirmware/zmk/issues/1299.\n\n\n** \n\n[[https://github.com/manna-harbour][https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/manna-harbour-boa-32.png]]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanna-harbour%2Fmiryoku_zmk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanna-harbour%2Fmiryoku_zmk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanna-harbour%2Fmiryoku_zmk/lists"}