aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay <[email protected]>2022-06-13 14:56:03 +0100
committerAkshay <[email protected]>2022-06-13 14:56:03 +0100
commitf8204c2525a070fa0f5abdecece4cf210f21cfb7 (patch)
treed963678c9ee070ed956036b00a63e530e3daaaed
parent6bb19fd2653a0d95d12e68fe6b46f635c012c7da (diff)
new post: lotus58
-rw-r--r--docs/index.html16
-rw-r--r--docs/index.xml70
-rw-r--r--docs/posts/index.html17
-rw-r--r--docs/posts/lotus58/index.html139
-rw-r--r--posts/lotus58.md135
5 files changed, 369 insertions, 8 deletions
diff --git a/docs/index.html b/docs/index.html
index 0c02387..70b5c06 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -42,15 +42,15 @@
42 <tr> 42 <tr>
43 <td class=table-post> 43 <td class=table-post>
44 <div class="date"> 44 <div class="date">
45 26/01 — 2022 45 13/06 — 2022
46 </div> 46 </div>
47 <a href="/posts/lightweight_linting" class="post-link"> 47 <a href="/posts/lotus58" class="post-link">
48 <span class="post-link">Lightweight Linting</span> 48 <span class="post-link">Lotus58</span>
49 </a> 49 </a>
50 </td> 50 </td>
51 <td class=table-stats> 51 <td class=table-stats>
52 <span class="stats-number"> 52 <span class="stats-number">
53 8.5 53 4.7
54 </span> 54 </span>
55 <span class=stats-unit>min</span> 55 <span class=stats-unit>min</span>
56 </td> 56 </td>
@@ -59,15 +59,15 @@
59 <tr> 59 <tr>
60 <td class=table-post> 60 <td class=table-post>
61 <div class="date"> 61 <div class="date">
62 05/10 — 2021 62 26/01 — 2022
63 </div> 63 </div>
64 <a href="/posts/novice_nix:_flake_templates" class="post-link"> 64 <a href="/posts/lightweight_linting" class="post-link">
65 <span class="post-link">Novice Nix: Flake Templates</span> 65 <span class="post-link">Lightweight Linting</span>
66 </a> 66 </a>
67 </td> 67 </td>
68 <td class=table-stats> 68 <td class=table-stats>
69 <span class="stats-number"> 69 <span class="stats-number">
70 5.5 70 8.5
71 </span> 71 </span>
72 <span class=stats-unit>min</span> 72 <span class=stats-unit>min</span>
73 </td> 73 </td>
diff --git a/docs/index.xml b/docs/index.xml
index c2ba3ca..e720103 100644
--- a/docs/index.xml
+++ b/docs/index.xml
@@ -12,6 +12,76 @@
12 <language>en-us</language> 12 <language>en-us</language>
13 <copyright>Creative Commons BY-NC-SA 4.0</copyright> 13 <copyright>Creative Commons BY-NC-SA 4.0</copyright>
14 <item> 14 <item>
15<title>Lotus58</title>
16<description>&lt;p&gt;Earlier this month, I decided that I would laugh at Indian customs in the face by building a split-ergo mechanical keyboard from scratch rather than purchasing a Moonlander.&lt;/p&gt;
17&lt;figure&gt;
18&lt;img src="https://u.peppe.rs/i8k.jpg" alt="The finished product" /&gt;&lt;figcaption aria-hidden="true"&gt;The finished product&lt;/figcaption&gt;
19&lt;/figure&gt;
20&lt;h2 id="sourcing-the-parts"&gt;Sourcing the parts&lt;/h2&gt;
21&lt;p&gt;If you, like me, live in India, you might find this section useful. My approach to finding parts:&lt;/p&gt;
22&lt;ul&gt;
23&lt;li&gt;Check reputed, local online stores&lt;/li&gt;
24&lt;li&gt;Check physical hardware stores&lt;/li&gt;
25&lt;li&gt;Import the part&lt;/li&gt;
26&lt;/ul&gt;
27&lt;h3 id="pcbs"&gt;PCBs&lt;/h3&gt;
28&lt;p&gt;This was by far the hardest component to procure. Fabrication services have certain &lt;em&gt;capabilities&lt;/em&gt;. Capabilities are the limitations of a fabrication service. For example, a service may be capable of drilling holes no smaller than 0.3mm in diameter. Most sites have a verification process to check if their capabilities meet your design’s requirements. I tried a few local PCB fabrication services:&lt;/p&gt;
29&lt;ul&gt;
30&lt;li&gt;Lion PCB: Capabilities did not meet my requirements&lt;/li&gt;
31&lt;li&gt;PCBPower: Capabilities did not meet my requirements&lt;/li&gt;
32&lt;li&gt;Circuitwala: Capabilities did not meet my requirements&lt;/li&gt;
33&lt;/ul&gt;
34&lt;p&gt;I settled for JLCPCB, a Chinese service. PCBs themselves were 16 USD, shipping was another 35 USD, and customs was another 3.5K INR (ouch).&lt;/p&gt;
35&lt;h3 id="case-material"&gt;Case material&lt;/h3&gt;
36&lt;p&gt;I don’t really have a case for the Lotus58, it is more of a “plastic sandwich”. I purchased acrylic plates from Robu. Cheap, fast, solid, and customizable. I cannot recommend Robu enough. A full set of plates (2 top plates and 2 bottom plates) cost me about 500 INR. I also bought a pair of laptop height raisers on Amazon to create a budget tenting setup.&lt;/p&gt;
37&lt;h3 id="electronics"&gt;Electronics&lt;/h3&gt;
38&lt;p&gt;You’ll need a few rather specific electronic components such as hotswap sockets and TRRS mounts, the rest are commonly available:&lt;/p&gt;
39&lt;ul&gt;
40&lt;li&gt;Hotswap sockets: StacksKB&lt;/li&gt;
41&lt;li&gt;TRRS mounts (PJ 320A): StacksKB&lt;/li&gt;
42&lt;li&gt;Diodes (1N4841): StacksKB&lt;/li&gt;
43&lt;li&gt;M2 screws: StacksKB&lt;/li&gt;
44&lt;li&gt;M2 spacers: ThinkRobotics&lt;/li&gt;
45&lt;li&gt;Arduino Pro Micro: Robu&lt;/li&gt;
46&lt;/ul&gt;
47&lt;p&gt;I skimped out on optional components such as OLEDs and rotary encoders.&lt;/p&gt;
48&lt;h3 id="switches-and-keycaps"&gt;Switches and Keycaps&lt;/h3&gt;
49&lt;p&gt;Arguably the most fun part of the build:&lt;/p&gt;
50&lt;ul&gt;
51&lt;li&gt;Gateron Oil King switches: Rectangles&lt;/li&gt;
52&lt;li&gt;DSA blanks: Meckeys&lt;/li&gt;
53&lt;/ul&gt;
54&lt;h2 id="building-the-keyboard"&gt;Building the keyboard&lt;/h2&gt;
55&lt;p&gt;The the build is extremely straightforward. Through hole components are easy to solder. Be wary of component placement and orientation. Check thrice, solder once. Few debugging tips:&lt;/p&gt;
56&lt;ul&gt;
57&lt;li&gt;if a single key does not actuate, check the hotswap for poor soldering (reflow the joint), and the switch pins for deformation during installation&lt;/li&gt;
58&lt;li&gt;if an entire column or row activates on a single key-press, a connection has been shorted&lt;/li&gt;
59&lt;li&gt;if only some of the keys on a given row actuate, a diode has been soldered on the wrong way&lt;/li&gt;
60&lt;/ul&gt;
61&lt;h2 id="the-typing-experience"&gt;The typing experience&lt;/h2&gt;
62&lt;p&gt;I decidede to give QWERTY the boot and learn Colemak along with the new keyboard. The first few weeks were terrible because I could neither type QWERTY nor Colemak, but I got the hang of it pretty quickly. Typing websites do help, but it is best to simply use it in your daily workflow. No site can help you get accustomed to the various things you use your keyboard for such as switching windows or navigating vim/tmux.&lt;/p&gt;
63&lt;h3 id="colemak"&gt;Colemak&lt;/h3&gt;
64&lt;p&gt;Alt layouts such as Colemak are definitely worth it. I find that Colemak reduces finger movement a lot, a good portion of the keys on the left hand are the same as QWERTY, it is fairly easy to pick up as well.&lt;/p&gt;
65&lt;h3 id="vim"&gt;Vim&lt;/h3&gt;
66&lt;p&gt;Using an alt layout means most programs with keyboard shortcuts are not going to work as expected, &lt;code&gt;HJKL&lt;/code&gt; on vim for movements being one of them. I took the short route out by creating a new layer with arrow keys on the home row:&lt;/p&gt;
67&lt;pre&gt;&lt;code&gt;default homerow:
68H N E I
69
70&amp;quot;nav&amp;quot; layer:
71&amp;lt; v ^ &amp;gt;&lt;/code&gt;&lt;/pre&gt;
72&lt;p&gt;The remaining commands in vim are largely mnemonics. Navigating with home-row arrow keys also means that I can use “HJKL” globally, to scroll a website, for example.&lt;/p&gt;
73&lt;h3 id="cutting-down-to-34-keys"&gt;Cutting down to 34 keys&lt;/h3&gt;
74&lt;p&gt;A couple months into my ergo journey, I realized that I could get away by moving my fingers even lesser. I moved modifiers such as &lt;code&gt;Super&lt;/code&gt;, &lt;code&gt;Ctrl&lt;/code&gt;, &lt;code&gt;Alt&lt;/code&gt; and &lt;code&gt;Shift&lt;/code&gt; to the home-row as QMK Mod Taps. The rest of the keys are cleverly placed in layers, not too much unlike the Miryoku layout. Even for someone that writes Rust (a symbol-heavy grammar), I find 34-keys to be sufficient.&lt;/p&gt;
75&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
76&lt;p&gt;I have been bitten by the ergomech bug.&lt;/p&gt;
77&lt;figure&gt;
78&lt;img src="https://u.peppe.rs/XM3.jpg" alt="The Lotus58 in action" /&gt;&lt;figcaption aria-hidden="true"&gt;The Lotus58 in action&lt;/figcaption&gt;
79&lt;/figure&gt;</description>
80<link>https://peppe.rs/posts/lotus58/</link>
81<pubDate>Mon, 13 Jun 2022 13:55:00 +0000</pubDate>
82<guid>https://peppe.rs/posts/lotus58/</guid>
83</item>
84<item>
15<title>Lightweight Linting</title> 85<title>Lightweight Linting</title>
16<description>&lt;p&gt;&lt;a href="https://tree-sitter.github.io/tree-sitter/using-parsers#pattern-matching-with-queries"&gt;Tree-sitter&lt;/a&gt; queries allow you to search for patterns in syntax trees, much like a regex would, in text. Combine that with some Rust glue to write simple, custom linters.&lt;/p&gt; 86<description>&lt;p&gt;&lt;a href="https://tree-sitter.github.io/tree-sitter/using-parsers#pattern-matching-with-queries"&gt;Tree-sitter&lt;/a&gt; queries allow you to search for patterns in syntax trees, much like a regex would, in text. Combine that with some Rust glue to write simple, custom linters.&lt;/p&gt;
17&lt;h3 id="tree-sitter-syntax-trees"&gt;Tree-sitter syntax trees&lt;/h3&gt; 87&lt;h3 id="tree-sitter-syntax-trees"&gt;Tree-sitter syntax trees&lt;/h3&gt;
diff --git a/docs/posts/index.html b/docs/posts/index.html
index 68d5d60..1b80e05 100644
--- a/docs/posts/index.html
+++ b/docs/posts/index.html
@@ -27,6 +27,23 @@
27 <tr> 27 <tr>
28 <td class=table-post> 28 <td class=table-post>
29 <div class="date"> 29 <div class="date">
30 13/06 — 2022
31 </div>
32 <a href="/posts/lotus58" class="post-link">
33 <span class="post-link">Lotus58</span>
34 </a>
35 </td>
36 <td class=table-stats>
37 <span class="stats-number">
38 4.7
39 </span>
40 <span class=stats-unit>min</span>
41 </td>
42 </tr>
43
44 <tr>
45 <td class=table-post>
46 <div class="date">
30 26/01 — 2022 47 26/01 — 2022
31 </div> 48 </div>
32 <a href="/posts/lightweight_linting" class="post-link"> 49 <a href="/posts/lightweight_linting" class="post-link">
diff --git a/docs/posts/lotus58/index.html b/docs/posts/lotus58/index.html
new file mode 100644
index 0000000..44a3c96
--- /dev/null
+++ b/docs/posts/lotus58/index.html
@@ -0,0 +1,139 @@
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <link rel="stylesheet" href="/style.css">
5 <link rel="stylesheet" href="/syntax.css">
6 <meta charset="UTF-8">
7 <meta name="viewport" content="initial-scale=1">
8 <meta content="#ffffff" name="theme-color">
9 <meta name="HandheldFriendly" content="true">
10 <meta property="og:title" content="Lotus58">
11 <meta property="og:type" content="website">
12 <meta property="og:description" content="a static site {for, by, about} me ">
13 <meta property="og:url" content="https://peppe.rs">
14 <link rel="icon" type="image/x-icon" href="/favicon.png">
15 <title>Lotus58 · peppe.rs</title>
16 <body>
17 <div class="posts">
18 <div class="post">
19 <a href="/" class="post-end-link">Home</a>
20 <span>/</span>
21 <a href="/posts" class="post-end-link">Posts</a>
22 <span>/</span>
23 <a class="post-end-link">Lotus58</a>
24 <a class="stats post-end-link" href="https://git.peppe.rs/web/site/plain/posts/lotus58.md
25">View Raw</a>
26 <div class="separator"></div>
27 <div class="date">
28 13/06 — 2022
29 <div class="stats">
30 <span class="stats-number">
31 53.95
32 </span>
33 <span class="stats-unit">cm</span>
34 &nbsp
35 <span class="stats-number">
36 4.7
37 </span>
38 <span class="stats-unit">min</span>
39 </div>
40 </div>
41 <h1>
42 Lotus58
43 </h1>
44 <div class="post-text">
45 <p>Earlier this month, I decided that I would laugh at Indian customs in the face by building a split-ergo mechanical keyboard from scratch rather than purchasing a Moonlander.</p>
46<figure>
47<img src="https://u.peppe.rs/i8k.jpg" alt="The finished product" /><figcaption aria-hidden="true">The finished product</figcaption>
48</figure>
49<h2 id="sourcing-the-parts">Sourcing the parts</h2>
50<p>If you, like me, live in India, you might find this section useful. My approach to finding parts:</p>
51<ul>
52<li>Check reputed, local online stores</li>
53<li>Check physical hardware stores</li>
54<li>Import the part</li>
55</ul>
56<h3 id="pcbs">PCBs</h3>
57<p>This was by far the hardest component to procure. Fabrication services have certain <em>capabilities</em>. Capabilities are the limitations of a fabrication service. For example, a service may be capable of drilling holes no smaller than 0.3mm in diameter. Most sites have a verification process to check if their capabilities meet your design’s requirements. I tried a few local PCB fabrication services:</p>
58<ul>
59<li>Lion PCB: Capabilities did not meet my requirements</li>
60<li>PCBPower: Capabilities did not meet my requirements</li>
61<li>Circuitwala: Capabilities did not meet my requirements</li>
62</ul>
63<p>I settled for JLCPCB, a Chinese service. PCBs themselves were 16 USD, shipping was another 35 USD, and customs was another 3.5K INR (ouch).</p>
64<h3 id="case-material">Case material</h3>
65<p>I don’t really have a case for the Lotus58, it is more of a “plastic sandwich”. I purchased acrylic plates from Robu. Cheap, fast, solid, and customizable. I cannot recommend Robu enough. A full set of plates (2 top plates and 2 bottom plates) cost me about 500 INR. I also bought a pair of laptop height raisers on Amazon to create a budget tenting setup.</p>
66<h3 id="electronics">Electronics</h3>
67<p>You’ll need a few rather specific electronic components such as hotswap sockets and TRRS mounts, the rest are commonly available:</p>
68<ul>
69<li>Hotswap sockets: StacksKB</li>
70<li>TRRS mounts (PJ 320A): StacksKB</li>
71<li>Diodes (1N4841): StacksKB</li>
72<li>M2 screws: StacksKB</li>
73<li>M2 spacers: ThinkRobotics</li>
74<li>Arduino Pro Micro: Robu</li>
75</ul>
76<p>I skimped out on optional components such as OLEDs and rotary encoders.</p>
77<h3 id="switches-and-keycaps">Switches and Keycaps</h3>
78<p>Arguably the most fun part of the build:</p>
79<ul>
80<li>Gateron Oil King switches: Rectangles</li>
81<li>DSA blanks: Meckeys</li>
82</ul>
83<h2 id="building-the-keyboard">Building the keyboard</h2>
84<p>The the build is extremely straightforward. Through hole components are easy to solder. Be wary of component placement and orientation. Check thrice, solder once. Few debugging tips:</p>
85<ul>
86<li>if a single key does not actuate, check the hotswap for poor soldering (reflow the joint), and the switch pins for deformation during installation</li>
87<li>if an entire column or row activates on a single key-press, a connection has been shorted</li>
88<li>if only some of the keys on a given row actuate, a diode has been soldered on the wrong way</li>
89</ul>
90<h2 id="the-typing-experience">The typing experience</h2>
91<p>I decidede to give QWERTY the boot and learn Colemak along with the new keyboard. The first few weeks were terrible because I could neither type QWERTY nor Colemak, but I got the hang of it pretty quickly. Typing websites do help, but it is best to simply use it in your daily workflow. No site can help you get accustomed to the various things you use your keyboard for such as switching windows or navigating vim/tmux.</p>
92<h3 id="colemak">Colemak</h3>
93<p>Alt layouts such as Colemak are definitely worth it. I find that Colemak reduces finger movement a lot, a good portion of the keys on the left hand are the same as QWERTY, it is fairly easy to pick up as well.</p>
94<h3 id="vim">Vim</h3>
95<p>Using an alt layout means most programs with keyboard shortcuts are not going to work as expected, <code>HJKL</code> on vim for movements being one of them. I took the short route out by creating a new layer with arrow keys on the home row:</p>
96<pre><code>default homerow:
97H N E I
98
99&quot;nav&quot; layer:
100&lt; v ^ &gt;</code></pre>
101<p>The remaining commands in vim are largely mnemonics. Navigating with home-row arrow keys also means that I can use “HJKL” globally, to scroll a website, for example.</p>
102<h3 id="cutting-down-to-34-keys">Cutting down to 34 keys</h3>
103<p>A couple months into my ergo journey, I realized that I could get away by moving my fingers even lesser. I moved modifiers such as <code>Super</code>, <code>Ctrl</code>, <code>Alt</code> and <code>Shift</code> to the home-row as QMK Mod Taps. The rest of the keys are cleverly placed in layers, not too much unlike the Miryoku layout. Even for someone that writes Rust (a symbol-heavy grammar), I find 34-keys to be sufficient.</p>
104<h2 id="conclusion">Conclusion</h2>
105<p>I have been bitten by the ergomech bug.</p>
106<figure>
107<img src="https://u.peppe.rs/XM3.jpg" alt="The Lotus58 in action" /><figcaption aria-hidden="true">The Lotus58 in action</figcaption>
108</figure>
109
110 </div>
111
112 <div class="intro">
113 Hi.
114 <div class="hot-links">
115 <a href="https://peppe.rs/index.xml" class="feed-button">Subscribe</a>
116 <a href="https://liberapay.com/nerdypepper/donate" class="donate-button">Donate</a>
117 </div>
118 <p>I'm Akshay, I go by nerd or nerdypepper on the internet.</p>
119 <p>
120 I am a compsci undergrad, Rust programmer and an enthusiastic Vimmer.
121 I write <a href="https://git.peppe.rs">open-source stuff</a> to pass time.
122 I also design fonts:
123 <a href="https://git.peppe.rs/fonts/scientifica">scientifica</a>,
124 <a href="https://git.peppe.rs/fonts/curie">curie</a>.
125 </p>
126 <p>Send me a mail at [email protected] or a message at [email protected].</p>
127 </div>
128
129 <a href="/" class="post-end-link">Home</a>
130 <span>/</span>
131 <a href="/posts" class="post-end-link">Posts</a>
132 <span>/</span>
133 <a class="post-end-link">Lotus58</a>
134 <a class="stats post-end-link" href="https://git.peppe.rs/web/site/plain/posts/lotus58.md
135">View Raw</a>
136 </div>
137 </div>
138 </body>
139</html>
diff --git a/posts/lotus58.md b/posts/lotus58.md
new file mode 100644
index 0000000..2a83872
--- /dev/null
+++ b/posts/lotus58.md
@@ -0,0 +1,135 @@
1Earlier this month, I decided that I would laugh at Indian
2customs in the face by building a split-ergo mechanical
3keyboard from scratch rather than purchasing a Moonlander.
4
5![The finished product](https://u.peppe.rs/i8k.jpg)
6
7## Sourcing the parts
8
9If you, like me, live in India, you might find this section
10useful. My approach to finding parts:
11
12 - Check reputed, local online stores
13 - Check physical hardware stores
14 - Import the part
15
16### PCBs
17
18This was by far the hardest component to procure.
19Fabrication services have certain _capabilities_.
20Capabilities are the limitations of a fabrication service.
21For example, a service may be capable of drilling holes no
22smaller than 0.3mm in diameter. Most sites have a
23verification process to check if their capabilities meet
24your design's requirements. I tried a few local PCB
25fabrication services:
26
27 - Lion PCB: Capabilities did not meet my requirements
28 - PCBPower: Capabilities did not meet my requirements
29 - Circuitwala: Capabilities did not meet my requirements
30
31I settled for JLCPCB, a Chinese service. PCBs themselves
32were 16 USD, shipping was another 35 USD, and customs was
33another 3.5K INR (ouch).
34
35
36### Case material
37
38I don't really have a case for the Lotus58, it is more of a
39"plastic sandwich". I purchased acrylic plates from Robu.
40Cheap, fast, solid, and customizable. I cannot recommend
41Robu enough. A full set of plates (2 top plates and 2 bottom
42plates) cost me about 500 INR. I also bought a pair of
43laptop height raisers on Amazon to create a budget tenting
44setup.
45
46### Electronics
47
48You'll need a few rather specific electronic components such
49as hotswap sockets and TRRS mounts, the rest are commonly
50available:
51
52- Hotswap sockets: StacksKB
53- TRRS mounts (PJ 320A): StacksKB
54- Diodes (1N4841): StacksKB
55- M2 screws: StacksKB
56- M2 spacers: ThinkRobotics
57- Arduino Pro Micro: Robu
58
59I skimped out on optional components such as OLEDs and
60rotary encoders.
61
62### Switches and Keycaps
63
64Arguably the most fun part of the build:
65
66- Gateron Oil King switches: Rectangles
67- DSA blanks: Meckeys
68
69## Building the keyboard
70
71The the build is extremely straightforward. Through hole
72components are easy to solder. Be wary of component
73placement and orientation. Check thrice, solder once. Few
74debugging tips:
75
76- if a single key does not actuate, check the hotswap for
77 poor soldering (reflow the joint), and the switch pins for
78 deformation during installation
79- if an entire column or row activates on a single
80 key-press, a connection has been shorted
81- if only some of the keys on a given row actuate, a diode
82 has been soldered on the wrong way
83
84## The typing experience
85
86I decidede to give QWERTY the boot and learn Colemak along
87with the new keyboard. The first few weeks were terrible
88because I could neither type QWERTY nor Colemak, but I got
89the hang of it pretty quickly. Typing websites do help, but
90it is best to simply use it in your daily workflow. No site
91can help you get accustomed to the various things you use
92your keyboard for such as switching windows or navigating
93vim/tmux.
94
95### Colemak
96
97Alt layouts such as Colemak are definitely worth it. I find
98that Colemak reduces finger movement a lot, a good portion
99of the keys on the left hand are the same as QWERTY, it
100is fairly easy to pick up as well.
101
102### Vim
103
104Using an alt layout means most programs with keyboard
105shortcuts are not going to work as expected, `HJKL` on vim for
106movements being one of them. I took the short route out by
107creating a new layer with arrow keys on the home row:
108
109```
110default homerow:
111H N E I
112
113"nav" layer:
114< v ^ >
115```
116
117The remaining commands in vim are largely mnemonics.
118Navigating with home-row arrow keys also means that I can
119use "HJKL" globally, to scroll a website, for example.
120
121### Cutting down to 34 keys
122
123A couple months into my ergo journey, I realized that I
124could get away by moving my fingers even lesser. I moved
125modifiers such as `Super`, `Ctrl`, `Alt` and `Shift` to the
126home-row as QMK Mod Taps. The rest of the keys are cleverly
127placed in layers, not too much unlike the Miryoku layout.
128Even for someone that writes Rust (a symbol-heavy grammar),
129I find 34-keys to be sufficient.
130
131## Conclusion
132
133I have been bitten by the ergomech bug.
134
135![The Lotus58 in action](https://u.peppe.rs/XM3.jpg)