|
@@ -1,210 +1,320 @@
|
|
|
-Arsenik
|
|
|
-================================================================================
|
|
|
+<h1 align="center">Arsenik</h1>
|
|
|
|
|
|
-Configure your keyboard (even if it is not programmable) with a
|
|
|
-beginner-friendly, [Miryoku][1]-like approach to minimize finger movements!
|
|
|
+<div align="center">
|
|
|
+ ★ <strong>Ergonomics for any keyboard!</strong> ★
|
|
|
+</div>
|
|
|
|
|
|
-You can choose your options:
|
|
|
-- [angle-mod](https://colemakmods.github.io/ergonomic-mods/angle.html) (by
|
|
|
-default the only option activated)
|
|
|
-- 3 home-row mods (HRM) per hand for <kbd>Ctrl</kbd>, <kbd>Alt</kbd>, <kbd>Super</kbd>
|
|
|
-- 3 layer-tap keys under the thumbs: <kbd>Alt</kbd> (or <kbd>Shift</kbd> in
|
|
|
-HRM)/<kbd>Backspace</kbd>, <kbd>Navigation</kbd>/<kbd>Space</kbd>,
|
|
|
-<kbd>Symbol</kbd>/<kbd>Return</kbd>
|
|
|
+<br>
|
|
|
+
|
|
|
+<div align="center">
|
|
|
+ Configure your keyboard — even if it is not programmable — with a
|
|
|
+ beginner-friendly approach to minimize finger movements!
|
|
|
+</div>
|
|
|
+
|
|
|
+<br>
|
|
|
|
|
|

|
|
|
|
|
|
-**Bring the keys to your fingers, rather than moving your fingers to the keys!**
|
|
|
+*Note: The keyboard layout presented here in the illustration is Qwerty but it
|
|
|
+works with other layouts as well — e.g. Azerty, Qwertz, Ergo‑L, Bépo…*
|
|
|
+
|
|
|
+--------------------------------------------------------------------------------
|
|
|
|
|
|
-- A long press on the <kbd>Return</kbd> key brings up the <kbd>Symbol</kbd>
|
|
|
-layer, where all programming symbols are arranged for comfort and efficiency.
|
|
|
-- A long press on the <kbd>Space</kbd> bar brings up the <kbd>Navigation</kbd>
|
|
|
-layer, with a numpad, cursor navigation (<kbd>ESDF</kbd>) and one-hand shortcuts.
|
|
|
|
|
|
-This is how modern ergonomic keyboards work — e.g. [Planck][47], [Atreus][44],
|
|
|
-[Corne][42], [Ferris][34]… The goal here is to propose an approach that works
|
|
|
-with any keyboard, including your laptop’s.
|
|
|
+Table of contents
|
|
|
+--------------------------------------------------------------------------------
|
|
|
|
|
|
-[47]: https://olkb.com/collections/planck
|
|
|
-[44]: https://atreus.technomancy.us
|
|
|
-[42]: https://github.com/foostan/crkbd
|
|
|
-[34]: https://github.com/pierrechevalier83/ferris
|
|
|
+- [Philosophy](#philosophy)
|
|
|
+- [Features](#pick-your-poison)
|
|
|
+ 1. [Angle mod](#1-angle-mod)
|
|
|
+ 2. [Mod-taps](#2-supercharge-your-thumbs-with-mod-taps)
|
|
|
+ 3. [Symbols layer](#3-symbols-layer)
|
|
|
+ 4. [Navigation layer](#4-navigation-layer)
|
|
|
+ 5. [Keyboard layout](#5-keyboard-layout)
|
|
|
+ 6. [Extra customization](#bonus-spice-it-up)
|
|
|
+- [Installation](#installation)
|
|
|
+- [Why “Arsenik”?](#why-arsenik)
|
|
|
+- [Join the community](#join-the-community)
|
|
|
|
|
|
|
|
|
-Main Benefits
|
|
|
+Philosophy
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
-- <kbd>Shift</kbd>, <kbd>Backspace</kbd>, <kbd>Return</kbd> under the thumbs!
|
|
|
-- all numbers and programming symbols in the comfortable 3×10 zone
|
|
|
-- symmetrical modifiers on the home row
|
|
|
-- easier left-hand shortcuts
|
|
|
-- works with any keyboard
|
|
|
+**Bring the keys to your fingers, rather than moving your fingers to the keys.**
|
|
|
|
|
|
-Unlike Miryoku which requires 6 thumb keys, Arsenik has been designed to work
|
|
|
-with standard ANSI/ISO/laptop keyboards, leveraging the spacebar and the two
|
|
|
-Alt/Cmd keys.
|
|
|
+Not sure if you should buy that expensive ergonomic keyboard?
|
|
|
+
|
|
|
+Download a ready-to-use Arsenik configuration for [Kanata], and enjoy on your
|
|
|
+regular keyboard features that were normally only accessible to programmable
|
|
|
+keyboard.
|
|
|
+
|
|
|
+*Note: You might benefit the most of Arsenik if you are [touch typing].*
|
|
|
|
|
|
|
|
|
Pick Your Poison!
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
-Adjusting to compact keyboard layouts isn’t easy, but Arsenik is designed for
|
|
|
-a step-by-step approach.
|
|
|
+Choose which Arsenik features to use from the following options:
|
|
|
+
|
|
|
+
|
|
|
+### 1. Angle mod
|
|
|
+
|
|
|
+On an ISO keyboard, it permutes the extra down-left key to ease the angle on
|
|
|
+your left wrist when typing.
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-### 1. Supercharge Your Thumbs
|
|
|
+
|
|
|
+### 2. Supercharge your thumbs with mod-taps
|
|
|
+
|
|
|
+#### First: layer-taps
|
|
|
|
|
|
If you’re new to mod-taps, we suggest to start by adding the “layer-tap” option
|
|
|
where only the thumbs are affected:
|
|
|
|
|
|
- the left thumb key remains a <kbd>Cmd</kbd> or <kbd>Alt</kbd> key when held,
|
|
|
but emits a <kbd>Backspace</kbd> when tapped;
|
|
|
-- the right thumb key brings the <kbd>Symbols</kbd> layer when held (similar to
|
|
|
-an <kbd>AltGr</kbd> key), and emits <kbd>Return</kbd> when tapped;
|
|
|
-- the spacebar brings the <kbd>Navigation</kbd> layer when held.
|
|
|
+- the right thumb key brings the <kbd>Symbols</kbd> layer when held (in blue)
|
|
|
+— where all programming symbols are arranged for comfort and efficiency — and
|
|
|
+emits <kbd>Return</kbd> when tapped;
|
|
|
+- the spacebar brings the <kbd>Navigation</kbd> layer when held (in orange).
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
Having <kbd>Backspace</kbd> and <kbd>Enter</kbd> under the thumbs is enough to
|
|
|
-reduce the pinky fatigue very significantly. And using the <kbd>Symbol</kbd>
|
|
|
-and <kbd>Navigation</kbd> layer further reduces hand and finger movements.
|
|
|
+reduce the pinky fatigue very significantly. And using the <kbd>Symbols</kbd>
|
|
|
+and <kbd>Navigation</kbd> layers further reduces hand and finger movements.
|
|
|
|
|
|
-### 2. Enable the Home-Row Mods
|
|
|
|
|
|
-When you are familiar with mod-taps, it’s time to enable them on the homerow
|
|
|
-with the “hrm” variants:
|
|
|
+#### Next level: enable the Home Row Mods
|
|
|
+
|
|
|
+When you are familiar with mod-taps, it’s time to enable them on the home row
|
|
|
+with the “HRM” variants:
|
|
|
|
|
|
- <kbd>FDS</kbd> and <kbd>JKL</kbd> become <kbd>Ctrl</kbd>, <kbd>Alt</kbd>,
|
|
|
<kbd>Super</kbd> when held long enough;
|
|
|
- the left thumb key can now emit a <kbd>Shift</kbd> rather than <kbd>Alt</kbd>
|
|
|
when held.
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+This is a very basic variant of the [Miryoku] principle: one layer on each
|
|
|
+thumb key, and symmetrical modifiers on the home row.
|
|
|
+
|
|
|
+
|
|
|
+### 3. Symbols layer
|
|
|
+
|
|
|
+For the <kbd>Symbols</kbd> layer you can keep <kbd>AltGr</kbd> as-is. It is
|
|
|
+useful for keyboard layouts that rely heavily on the <kbd>AltGr</kbd> key.
|
|
|
+
|
|
|
+But the real fun (especially for programmers) happens when we enable the
|
|
|
+“Lafayette” programmation layer!
|
|
|
|
|
|
-This is a very basic variant of the [Miryoku][1] principle: one layer on each
|
|
|
-thumb key, and symmetrical modifiers on the homerow.
|
|
|
+
|
|
|
|
|
|
-### 3. Spice It Up
|
|
|
|
|
|
-- the 300 ms delay before a key becomes a modifier has been chosen to be easy
|
|
|
-for beginners. Once used to mod-taps, you may want to reduce it so keyboard
|
|
|
-shortcuts can be done more quickly;
|
|
|
-- more layers available to enable (Vim-navigation, num-row, etc).
|
|
|
+#### Num row >> Num pad
|
|
|
+
|
|
|
+If enabled, in <kbd>Symbols</kbd> mode, pressing the left thumb key brings up
|
|
|
+the <kbd>NumRow</kbd> layer:
|
|
|
+
|
|
|
+- all digits are on the home row, in the order you already know
|
|
|
+- the upper row helps with <kbd>Shift</kbd>-digit shortcuts
|
|
|
+- the lower row has dash, comma, dot and slash signs to help with number / date
|
|
|
+inputs
|
|
|
+- <kbd>Space</kbd> becomes a narrow no-break space for layouts that supports it
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-#### A Vim-friendly mod:
|
|
|
+Even on keyboards that *do* have a physical number row, this `NumRow`layer can
|
|
|
+be interesting to use in order to minimize finger movements furthermore.
|
|
|
|
|
|
-- 3 home-row mods per hand for <kbd>Ctrl</kbd>, <kbd>Alt</kbd>, <kbd>Super</kbd>
|
|
|
-- 3 layer-tap keys under the thumbs: <kbd>Shift</kbd>/<kbd>Backspace</kbd>,
|
|
|
-<kbd>Navigation</kbd>/<kbd>Space</kbd>, <kbd>Symbol</kbd>/<kbd>Return</kbd>
|
|
|
|
|
|
-
|
|
|
+### 4. Navigation layer
|
|
|
|
|
|
-It uses 4 layers (instead of 3 for Arsenik), which makes it a natural fit
|
|
|
-for 34-key keyboards like the [Ferris][34].
|
|
|
+A basic <kbd>Navigation</kbd> layer has an arrow cluster on the left hand to
|
|
|
+move around and a num pad on the right hand.
|
|
|
|
|
|
-- Vim-like navigation in all apps, with any OS layout
|
|
|
+
|
|
|
+
|
|
|
+#### A superpowered Vim-friendly mod
|
|
|
+
|
|
|
+For those who like to move the cursor with <kbd>HJKL</kbd> in all apps with any
|
|
|
+keyboard layout, it is possible to enable a Vim-like <kbd>Navigation</kbd>
|
|
|
+layer.
|
|
|
+
|
|
|
+It also has:
|
|
|
- super-comfortable <kbd>Tab</kbd> and <kbd>Shift</kbd>-<kbd>Tab</kbd>
|
|
|
- mouse emulation: previous / next and mouse scroll
|
|
|
-- easy left-hand shortcuts
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
This <kbd>Navigation</kbd> layer has a few empty slots on purpose, so you can
|
|
|
add our own keys or layers.
|
|
|
|
|
|
+<kbd>NumPad</kbd> and <kbd>Fn</kbd> lock these layers: they remain active
|
|
|
+without holding the key until escaped with <kbd>Alt</kbd> or <kbd>AltGr</kbd>.
|
|
|
|
|
|
-#### NumRow >> NumPad
|
|
|
+
|
|
|
+<p align="center">
|
|
|
+ <em>NumPad layer toggled</em>
|
|
|
+</p>
|
|
|
|
|
|
-In <kbd>Symbol</kbd> mode, pressing the left thumb key brings up the
|
|
|
-<kbd>NumRow</kbd> layer:
|
|
|
+
|
|
|
+<p align="center">
|
|
|
+ <em>Fn layer toggled</em>
|
|
|
+</p>
|
|
|
|
|
|
-- all digits are on the home row, in the order you already know
|
|
|
-- the upper row helps with <kbd>Shift</kbd>-digit shortcuts
|
|
|
-- the lower row has dash, comma, dot and slash signs to help with number / date
|
|
|
-inputs
|
|
|
+### 5. Keyboard layout
|
|
|
|
|
|
-
|
|
|
+Choose your keyboard layout among the available ones for Arsenik to work
|
|
|
+properly.
|
|
|
|
|
|
-Even on keyboards that *do* have a physical number row, this <kbd>NumRow</kbd>
|
|
|
-layer can be interesting to use in order to minimize finger movements further
|
|
|
-more. And it makes it easier to mix symbols with numbers (e.g. `[0]`).
|
|
|
+If your layout is not on this list, feel free to open an issue or upvote an
|
|
|
+existing one.
|
|
|
|
|
|
+Here are some caveats for some specific layouts:
|
|
|
|
|
|
-Downloads
|
|
|
---------------------------------------------------------------------------------
|
|
|
+<details>
|
|
|
+<summary>Ergo‑L/Qwerty‑Lafayette/other Lafayette layouts</summary>
|
|
|
|
|
|
-### kanata
|
|
|
+Arsenik works out-of-the-box with Lafayette layouts because their
|
|
|
+<kbd>AltGr</kbd> layer already matches Arsenik’s <kbd>Symbols</kbd> layer.
|
|
|
+</details>
|
|
|
|
|
|
-[Non-programmable keyboards are supported through kanata.](kanata)
|
|
|
+<details>
|
|
|
+<summary>Qwerty/Colemak</summary>
|
|
|
|
|
|
-### QMK
|
|
|
+Qwerty/Colemak works out-of-the-box with the Lafayette <kbd>Symbols</kbd> layer
|
|
|
+because there isn’t other characters in <kbd>AltGr</kbd>.
|
|
|
+</details>
|
|
|
|
|
|
-The QMK implementation is a bit different:
|
|
|
+<details>
|
|
|
+<summary>Azerty</summary>
|
|
|
|
|
|
-- it takes advantage of the 4 thumb keys
|
|
|
-- the Navigation layer uses a mouse emulation on the left hand
|
|
|
+By using the Lafayette <kbd>Symbols</kbd> layer, you won’t have access to the
|
|
|
+<kbd>€</kbd> sign in <kbd>AltGr</kbd>. You might want to remap it elsewhere, or
|
|
|
+not using the Lafayette <kbd>Symbols</kbd> layer.
|
|
|
+</details>
|
|
|
|
|
|
-In fact, this is what I ended up with for my beloved Ferris in the first place,
|
|
|
-and Arsenik/Selenium is an attempt to fit most of this magic into my laptop keyboard.
|
|
|
+<details>
|
|
|
+<summary>Bépo</summary>
|
|
|
|
|
|
-
|
|
|
+By using the Lafayette <kbd>Symbols</kbd> layer, you won’t have access to the
|
|
|
+characters in <kbd>AltGr</kbd>. You might want to remap some of them elsewhere,
|
|
|
+or not using the Lafayette <kbd>Symbols</kbd> layer.
|
|
|
+</details>
|
|
|
|
|
|
-```bash
|
|
|
-# from the `qmk_firmware` root:
|
|
|
-make ferris/0_2/bling:1dk:flash
|
|
|
-```
|
|
|
+<details>
|
|
|
+<summary>Optimot</summary>
|
|
|
|
|
|
-### Others
|
|
|
+Do not enable angle mod for Optimot as it is already in angle mod with its
|
|
|
+driver.
|
|
|
|
|
|
-Other desktop implementations (kmonad, keyd…) would be nice to see as well.
|
|
|
+By using the Lafayette <kbd>Symbols</kbd> layer, you won’t have access to the
|
|
|
+characters in <kbd>AltGr</kbd>. You might want to remap some of them elsewhere,
|
|
|
+or not using the Lafayette <kbd>Symbols</kbd> layer.
|
|
|
+</details>
|
|
|
|
|
|
-Programmable keyboards should be trivial to configure with QMK, ZMK,
|
|
|
-Kaleidoscope, etc.
|
|
|
|
|
|
+### Bonus: Spice It Up
|
|
|
|
|
|
-Related Projects
|
|
|
+From there, you can edit the configuration to match your liking, even contribute
|
|
|
+to Arsenik!
|
|
|
+
|
|
|
+The 300 ms delay before a key becomes a modifier has been chosen to be easy for
|
|
|
+beginners. Once used to mod-taps, you may want to reduce it so keyboard
|
|
|
+shortcuts can be done more quickly.
|
|
|
+
|
|
|
+In the <kbd>NumRow</kbd> layer, you can edit the <kbd>dk1</kbd> to
|
|
|
+<kbd>dk5</kbd> shortcuts to put whatever seams useful to you, a lot of available
|
|
|
+keys are defined in [Kanata source code][Kanata keys].
|
|
|
+
|
|
|
+In the <kbd>Navigation</kbd> layer, you can put a command on top of the
|
|
|
+<kbd>P</kbd> key (in Qwerty), e.g. for an application launcher.
|
|
|
+
|
|
|
+Note that Kanata can also use the laptop’s trackpoint buttons (e.g. ThinkPad)
|
|
|
+as two additional thumb keys. :-)
|
|
|
+
|
|
|
+
|
|
|
+Installation
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
+Adjusting to compact keyboard layouts isn’t easy, but Arsenik is designed for
|
|
|
+a step-by-step approach:
|
|
|
+
|
|
|
+- load `kanata.kbd` with Kanata ([installation instructions](kanata))
|
|
|
+- enable each feature by un-commenting the related line (a commented line starts
|
|
|
+with `;;`), you must enable one and only one line per feature
|
|
|
+- live-reload the configuration with <kbd>Space</kbd>+<kbd>Backspace</kbd>
|
|
|
+(requires the layer-taps feature enabled)
|
|
|
+
|
|
|
+If you have a programmable keyboard you might want to take a look at the
|
|
|
+[QMK](qmk) version of Arsenik (work in progress).
|
|
|
+
|
|
|
+Other desktop implementations (kmonad, keyd, Karabiner…) would be nice to see as
|
|
|
+well.
|
|
|
+
|
|
|
+
|
|
|
+Why “Arsenik”?
|
|
|
+--------------------------------------------------------------------------------
|
|
|
+
|
|
|
+33 keys layout: the 33rd element of the periodic table.
|
|
|
+
|
|
|
+Unlike Miryoku which requires 6 thumb keys, Arsenik has been designed to work
|
|
|
+with standard ANSI/ISO/laptop keyboards, leveraging the spacebar and the two
|
|
|
+Alt/Cmd keys.
|
|
|
+
|
|
|
### Inspiration
|
|
|
|
|
|
-- [Miryoku][1] for the main idea of using modifiers on the homerow and layer
|
|
|
+- [Miryoku] for the main idea of using modifiers on the home row and layer
|
|
|
shifters under the thumbs;
|
|
|
-- [Lafayette][2] and [Ergo-L][3] for the <kbd>Symbol</kbd> layer, which has been
|
|
|
-blatantly taken *as is*;
|
|
|
-- [Extend][4], [Neo][5], [Shaka34][6] for the <kbd>Navigation</kbd> layer.
|
|
|
+- [Lafayette] and [Ergo-L] for the <kbd>Symbol</kbd> layer, which has been
|
|
|
+shamelessly taken *as is*;
|
|
|
+- [Extend], [Neo], [Shaka34] for the <kbd>Navigation</kbd> layer.
|
|
|
|
|
|
### Alternative Symbol Layers
|
|
|
|
|
|
-- [Neo][5]
|
|
|
-- [Seniply][7]
|
|
|
-- [Pascal Getreuer’s][8]
|
|
|
+- [Neo]
|
|
|
+- [Seniply]
|
|
|
+- [Pascal Getreuer’s]
|
|
|
|
|
|
### Non-Goals
|
|
|
|
|
|
-- being the most efficient 3×5 layout — [Miryoku][1] is probably the most
|
|
|
+- being the most efficient 3×5 layout — [Miryoku] is probably the most
|
|
|
advanced approach for that, at least on custom 36-key keyboards;
|
|
|
+- suiting every user out-of-the-box — Arsenik is proposed as a reasonable
|
|
|
+default configuration, but users are encouraged to customize it to suit their
|
|
|
+personal needs and preferences;
|
|
|
- fitting any OS layout — Arsenik works best if your OS layout has either no
|
|
|
AltGr layer at all (e.g. QWERTY, Colemak, Workman…), or an optimized AltGr layer
|
|
|
-([Lafayette][2], [Ergo-L][3]…).
|
|
|
+([Lafayette], [Ergo-L]…).
|
|
|
|
|
|
### Similar Projects
|
|
|
|
|
|
-- [Miryoku][1]: 36 keys, 6 layers
|
|
|
-- [Seniply][7]: 34 keys, 6 layers, no layer-taps (“Callum-style”)
|
|
|
-
|
|
|
-<!-- https://jasoncarloscox.com/writing/combo-mods/ -->
|
|
|
-
|
|
|
-[1]: https://github.com/manna-harbour/miryoku
|
|
|
-[2]: https://qwerty-lafayette.org/42
|
|
|
-[3]: https://ergol.org
|
|
|
-[4]: https://dreymar.colemak.org/layers-extend.html
|
|
|
-[5]: https://neo-layout.org
|
|
|
-[6]: https://github.com/lobre/shaka34
|
|
|
-[7]: https://stevep99.github.io/seniply/
|
|
|
-[8]: https://getreuer.info/posts/keyboards/symbol-layer/#my-symbol-layer
|
|
|
+- [Miryoku]: 36 keys, 6 layers
|
|
|
+- [Seniply]: 34 keys, 6 layers, no layer-taps (“Callum-style”)
|
|
|
|
|
|
|
|
|
-TODO
|
|
|
+Join the community
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
-- KMonad / Karabiner support
|
|
|
-- sample QMK / ZMK implementations for common keyboards
|
|
|
+French-speaking users may join the [Ergo-L Discord server] which hosts a
|
|
|
+channel to talk about Arsenik, keyboard, layouts and many more.
|
|
|
+
|
|
|
+Feel free to open an issue and/or a pull request if you encounter a bug or want
|
|
|
+to enhance the Arsenik experience!
|
|
|
+
|
|
|
+
|
|
|
+[Kanata]: https://github.com/jtroo/kanata
|
|
|
+[Miryoku]: https://github.com/manna-harbour/miryoku
|
|
|
+[touch typing]: https://en.wikipedia.org/wiki/Touch_typing
|
|
|
+[Lafayette]: https://qwerty-lafayette.org/42
|
|
|
+[Ergo-L]: https://ergol.org
|
|
|
+[Kanata keys]: https://github.com/jtroo/kanata/blob/main/parser/src/keys/mod.rs#L159
|
|
|
+[Extend]: https://dreymar.colemak.org/layers-extend.html
|
|
|
+[Neo]: https://neo-layout.org
|
|
|
+[Shaka34]: https://github.com/lobre/shaka34
|
|
|
+[Seniply]: https://stevep99.github.io/seniply/
|
|
|
+[Pascal Getreuer’s]: https://getreuer.info/posts/keyboards/symbol-layer/#my-symbol-layer
|
|
|
+[Ergo-L Discord server]: https://discord.gg/5xR5K3nAFX
|