Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout

Overview

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

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

Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout. Miryoku KMonad is the Miryoku implementation for KMonad.

This document describes Miryoku KMonad only. For Miryoku documentation, implementations, and discussions and support, see Miryoku.

Overview

Miryoku KMonad can be used on any keyboard connected to a Linux, Mac, or Windows host. Generate a personalised KMonad config file locally, or via GitHub Actions workflows without use of a local build environment and optionally without editing any files. Then run KMonad with the generated config file. Mappings for row-staggered keyboards can be selected to map an ortho split layout, with or without reverse column angle, or use the lite mapping to keep the traditional home positions and add only home row mods and the Nav layer. The Mouse layer is using mouse keys on the host. The implementation uses a macro processor to enhance the KMonad config file format, and the makefile can also be used with other keymaps.

Building

Generate a personalised KMonad config file.

Local Builds

Requires make, sh, cpp, and sed.

First cd to the src directory then build with make. The generated config file is src/build/miryoku.kbd.

To select alternative layout, mapping, and other options, append them to the make command line.

make # defaults
make MIRYOKU_ALPHAS=QWERTY MIRYOKU_NAV=INVERTEDT MIRYOKU_CLIPBOARD=WIN MIRYOKU_LAYERS=FLIP MIRYOKU_MAPPING=LITE MIRYOKU_KMONAD_OS=WIN # custom

Workflow Builds

A config file can be generated via GitHub Actions workflows without use of a local build environment.

First log in to GitHub, fork the Miryoku KMonad repository, and enable workflows.

To access a workflow, visit the Actions tab and select the workflow. To download the config file from a workflow run, select the workflow, select the workflow run, select the desired Artifacts, and unzip the downloaded zip file.

Workflow files are in .github/workflows.

Build Workflow

Copy the Build workflow file, edit the name value, and edit and add options and values as desired. Select Run workflow, select the Branch if desired, and activate Run workflow.

Options are specified in the with section and are of the following form.

option: '["value"]'

For multiple values per option use the following form, and a matrix build will be performed for each combination of values across all options.

option: '["value1","value2"]'

The alphas, nav, clipboard, and layers options correspond to the alternative layout options. The mapping option corresponds to the alternative mapping options. The kmonad_os option corresponds to the operating system option. Options are given in the documentation in the form MIRYOKU_OPTION=VALUE. To use here, convert to the form specified above. Use default to represent the default value. Values for these six options are case-insensitive. See the Build All workflow file for all supported values.

The rules and config options can be used to specify values to be appended to custom_rules.mk and custom_config.h, respectively. Separate multiple lines with \n.

The Test workflow is not applicable when using a Build workflow and should be prevented from running on push by deleting the push line in .github/workflows/test.yml.

Build Inputs Workflow

The Build Inputs workflow can be used without editing workflow files. Select Run workflow, select the Branch and fill out the form as desired, and activate Run workflow.

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.

The Miryoku Alphas, Miryoku Nav, Miryoku Clipboard, and Miryoku Layers options correspond to the alternative layout options. The Miryoku Mapping option corresponds to the alternative mapping options. The Miryoku KMonad OS option corresponds to the operating system option. Options are given in the documentation in the form MIRYOKU_OPTION=VALUE. To use here, enter the value in the corresponding Miryoku Option field. Use default to represent the default value. Values for these six options are case-insensitive.

The custom_rules.mk and custom_config.h options can be used to specify values to be appended to the corresponding files. Join multiple lines with \n.

Running KMonad

First install KMonad and generate the config file.

Note that the current binary release for linux (v0.4.1) does not support specifying the keyboard device on the command line. If using that release you will need to edit the config file to specify the keyboard device or create a symlink.

From the src/build directory, run KMonad with the generated config file as follows.

kmonad miryoku_kmonad.kbd # linux, edited config file or symlink
kmonad miryoku_kmonad.kbd -i 'device-file "DEVICE"' # linux, keyboard device DEVICE
kmonad miryoku_kmonad.kbd # mac, all keyboards
kmonad miryoku_kmonad.kbd -i 'iokit-name "PRODUCT"' # mac, keyboard with product string PRODUCT
kmonad miryoku_kmonad.kbd # windows

Mapping

Default

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

https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi.png

No Reverse Angle

MIRYOKU_MAPPING=NOREVERSEANGLE

As default but without the reverse column angle.

https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi-noreverseangle.png

Lite

MIRYOKU_MAPPING=LITE

This is a hybrid mapping keeping the traditional home positions. Only the 3x10 alphas plus space as primary thumb key are mapped. The remaining keys are the same as the native keyboard but with semicolon in place of quote. This enables the selection of alternative alphas, and use of home row mods and the finger part of the Nav layer. Other than with MIRYOKU_LAYERS=FLIP, backspace, enter, delete, tab, and escape are also mapped as the corresponding thumb keys.

Other Options

Operating System

Linux

This is the default.

Mac

MIRYOKU_KMONAD_OS=MAC

Windows

MIRYOKU_KMONAD_OS=WIN

Additional and Experimental Features

Mouse Keys

The Mouse layer is using mouse keys on the host.

Implementation

The config file source is src/miryoku_kmonad.kbd.cpp. The generated config file is src/build/miryoku_kmonad.kbd and is produced by src/makefile. The C preprocessor (cpp) is used to enhance the KMonad config file format, adding includes, conditionals, constants, and functions. Characters not preserved by cpp are substituted by sed.

Macros are included from src/miryoku.h. Layer data is generated by Miryoku Babel and included from files in src/miryoku_babel.

Use With Other Keymaps

The makefile can also be used with other keymaps. A file with a .kbd.cpp extension in src will be converted to the corresponding file with a .kbd extension under src/build. The following keycodes should be substituted in the source as indicated.

Keycode Substitute
U_QUOT
U_DQUO
, U_COMM
\( U_LPRN
\) U_RPRN

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

Owner
Manna Harbour
Manna Harbour
stacked acrylic gasket mounted ergonomic keyboard

Splay46 Build guide This keyboard requires soldering of really small smd components like USB Type C Receptacle(0.3mm pitch), Atmega32U4(0.8mm pitch),

kobakos 39 May 25, 2022
roost low profile ergonomic ortholinear hot-swappable kailh-choc keyboard

Roost keyboard Based off the Sweep v2.1, added 2mm or so horizontal space, added another set of keys and slots for a fat power switch. Moved battery c

Alksdeef 35 Jul 7, 2022
split89 keyboard - a 3d printed 89 key split TKL keyboard base powered by ATmega32U4 Pro Micro controllers with QMK Configurator support.

split89 keyboard - a 3d printed 89 key split TKL keyboard base powered by ATmega32U4 Pro Micro controllers with QMK Configurator support. This keyboar

null 43 Aug 7, 2022
Raw HID keyboard forwarder to turn the Pi 400 into a USB keyboard

Raspberry Pi 400 as a USB HID Keyboard Hook your Pi 400 up to your PC somehow, using a USB Type-C cable into the power port. Anker make good ones- I u

Philip Howard 157 Aug 7, 2022
Use Atari keyboard as USB keyboard with a Teensy 3.6

Atari Keyboard Convert an Atari 600/800/1200 XL into a USB keyboard. I bricked my Atari mainboard. My goal is to use the keyboard of the Atari on a Ra

Jos Koenis 2 Dec 3, 2021
Gesture-Detecting-Macro-Keyboard - Glorified Bluetooth macro keyboard with machine learning (TensorFlow Lite for Microcontrollers) running on an ESP32.

Gesture detection tldr; Glorified Bluetooth macro keyboard with machine learning (TensorFlow Lite for Microcontrollers) running on an ESP32. Main feat

Jakob Krantz 65 Jul 30, 2022
Simple ATTiny85 based PS/2 to Amiga keyboard protocol converter that fits inside the keyboard.

Simple ATTiny85 based PS/2 to Amiga keyboard protocol converter that fits inside the keyboard.

Jari Tulilahti 8 May 6, 2022
A fast and fun layout manager for FLTK

Fl_Flow A fast and fun layout manager for FLTK Fl_Flow is a layout manager for FLTK which works in a largely different manner to existing systems you

null 32 Jul 1, 2022
MK7_Speedometer - Sources used for the CTGP-7 speedometers, including the layout files and the C++ code

Mario Kart 7 Speedometer Here are the sources used in CTGP-7 to load extra UI elements. This sources can be used in a standaolne plugin as long as you

PabloMK7 4 Feb 8, 2022
Low profile hitbox-layout fightstick

Flatbox: Low profile hitbox-layout fightstick This repository contains 3D-printable models, PCB design files and Arduino code needed to make an arcade

Jacek Fedoryński 149 Aug 10, 2022
A simple website layout.

my_website A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

Alireza 2 Nov 16, 2021
This package contains the common algorithms in robotic arm, and I have developed it based on universal robot. It will be continuously updateing.

Robotic_Arm_Algorithms It contains the common algorithms in robotic arm, and will be recording the development as soon as I have completed the any one

Mingshan-Beal 57 Aug 3, 2022
Universal fix for Google SafetyNet on Android devices with hardware attestation and unlocked bootloaders.

Universal SafetyNet Fix This is a universal fix for SafetyNet on devices with hardware-backed attestation and unlocked bootloaders (or custom verified

Danny Lin 3.6k Aug 7, 2022
A simulation of Newton's law of universal gravitation

Newton's law of universal gravitation This simulation uses the famous equation of Isaac Newton

Long Nguyen 54 Feb 24, 2022
A universal way to create a noclip mod in Unity games (Mono/IIL2CPP)

Universal-Unity-NoClip This projects aim to show how a noclip mod can be created in any unity game, regardless if its using an il2cpp or mono backend.

Jonah 21 Jul 24, 2022
Universal State Monitor software for home automation input devices

Universal State Monitor Copyright 2019-2021 SuperHouse Automation Pty Ltd www.superhouse.tv A binary state monitor for DIY home automation projects. T

SuperHouse Automation 3 Aug 24, 2021
Universal binaries for Linux.

FatELF The latest information about FatELF can be found at https://icculus.org/fatelf/ What is this? FatELF is a simple file format that allows you to

Ryan C. Gordon 32 May 22, 2022
A Script to thin Universal Apps on macOS quickly

UBThinner A Script to thin Universal Apps on macOS quickly. It traverses through the given folder recursively, identifies any universal binaries and t

Arm 2 Dec 26, 2021
Somewhat Universal Widescreen Fix

SUWSF Somewhat Universal Widescreen Fix is intended to enable widescreen aspect ratios (e.g. 21:9, 32:9, 48:9) in games where it is unsupported. WARNI

Chris Yeninas 30 Jul 10, 2022