aboutsummaryrefslogtreecommitdiff
path: root/docs/posts/lotus58/index.html
blob: c5691d098d0d283d00c45c1b71d3368c18e2ab37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="/style.css">
    <link rel="stylesheet" href="/syntax.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="initial-scale=1">
    <meta content="#ffffff" name="theme-color">
    <meta name="HandheldFriendly" content="true">
    <meta property="og:title" content="Lotus58">
    <meta property="og:type" content="website">
    <meta property="og:description" content="a static site {for, by, about} me ">
    <meta property="og:url" content="https://peppe.rs">
    <link rel="icon" type="image/x-icon" href="/favicon.png">
    <title>Lotus58 · peppe.rs</title>
    <body>
      <div class="posts">
        <div class="post">
          <a href="/" class="post-end-link">Home</a>
          <span>/</span>
          <a href="/posts" class="post-end-link">Posts</a>
          <span>/</span>
          <a class="post-end-link">Lotus58</a>
          <a class="stats post-end-link" href="https://git.peppe.rs/web/site/plain/posts/lotus58.md
">View Raw</a>
          <div class="separator"></div>
          <div class="date">
            13/06 — 2022
            <div class="stats">
              <span class="stats-number">
                53.95
              </span>
              <span class="stats-unit">cm</span>
              &nbsp
              <span class="stats-number">
                4.8
              </span>
              <span class="stats-unit">min</span>
            </div>
          </div>
          <h1>
            Lotus58
          </h1>
          <div class="post-text">
            <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>
<figure>
<img src="https://u.peppe.rs/i8k.jpg" alt="The finished product" />
<figcaption aria-hidden="true">The finished product</figcaption>
</figure>
<h2 id="sourcing-the-parts">Sourcing the parts</h2>
<p>If you, like me, live in India, you might find this section useful.
My approach to finding parts:</p>
<ul>
<li>Check reputed, local online stores</li>
<li>Check physical hardware stores</li>
<li>Import the part</li>
</ul>
<h3 id="pcbs">PCBs</h3>
<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>
<ul>
<li>Lion PCB: Capabilities did not meet my requirements</li>
<li>PCBPower: Capabilities did not meet my requirements</li>
<li>Circuitwala: Capabilities did not meet my requirements</li>
</ul>
<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>
<h3 id="case-material">Case material</h3>
<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>
<h3 id="electronics">Electronics</h3>
<p>You’ll need a few rather specific electronic components such as
hotswap sockets and TRRS mounts, the rest are commonly available:</p>
<ul>
<li>Hotswap sockets: StacksKB</li>
<li>TRRS mounts (PJ 320A): StacksKB</li>
<li>Diodes (1N4841): StacksKB</li>
<li>M2 screws: StacksKB</li>
<li>M2 spacers: ThinkRobotics</li>
<li>Arduino Pro Micro: Robu</li>
</ul>
<p>I skimped out on optional components such as OLEDs and rotary
encoders.</p>
<h3 id="switches-and-keycaps">Switches and Keycaps</h3>
<p>Arguably the most fun part of the build:</p>
<ul>
<li>Gateron Oil King switches: Rectangles</li>
<li>DSA blanks: Meckeys</li>
</ul>
<h2 id="building-the-keyboard">Building the keyboard</h2>
<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>
<ul>
<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>
<li>if an entire column or row activates on a single key-press, a
connection has been shorted</li>
<li>if only some of the keys on a given row actuate, a diode has been
soldered on the wrong way</li>
</ul>
<h2 id="the-typing-experience">The typing experience</h2>
<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>
<h3 id="colemak">Colemak</h3>
<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>
<h3 id="vim">Vim</h3>
<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>
<pre><code>default homerow:
H N E I

&quot;nav&quot; layer:
&lt; v ^ &gt;</code></pre>
<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>
<h3 id="cutting-down-to-34-keys">Cutting down to 34 keys</h3>
<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>
<h2 id="conclusion">Conclusion</h2>
<p>I have been bitten by the ergomech bug.</p>
<figure>
<img src="https://u.peppe.rs/XM3.jpg" alt="The Lotus58 in action" />
<figcaption aria-hidden="true">The Lotus58 in action</figcaption>
</figure>

          </div>
          
    <div class="intro">
        Hi. 
        <div class="hot-links">
            <a href="https://peppe.rs/index.xml" class="feed-button">Subscribe (RSS)</a>
        </div>
        <p>I'm Akshay, programmer and pixel-artist.</p>
        <p>
        I write <a href="https://git.peppe.rs">open-source stuff</a> to pass time. 
        I also design fonts: 
        <a href="https://git.peppe.rs/fonts/scientifica/about">scientifica</a>, 
        <a href="https://git.peppe.rs/fonts/curie/about">curie</a>.
        </p>
        <p>Send me a mail at [email protected] or a message at [email protected].</p>
    </div>
    
          <a href="/" class="post-end-link">Home</a>
          <span>/</span>
          <a href="/posts" class="post-end-link">Posts</a>
          <span>/</span>
          <a class="post-end-link">Lotus58</a>
          <a class="stats post-end-link" href="https://git.peppe.rs/web/site/plain/posts/lotus58.md
">View Raw</a>
        </div>
      </div>
    </body>
</html>