Designing the perfect keyboard - stub

I began writing this post in around 2022-3 and got deep into mechanical keyboards. For some reason I can't remember, I never finished it, and it stayed like that like many projects I do. I don't remember my thoughts from then, I only remember I hated the mechanical keyboard community with their 60%s, and it stayed here for some 3 years, so I'm posting it here for you to see, because I find it pretty funny now that I read it ^^. So here it is, word for word, perfect-keyboard.txt stub. Enjoy

Oh and by the way, I made the designs in keyboard layout editor. I referenced it in the text but since it's word for word i'm putting the links here. There is two full sizes because it was in my bookmarks so I don't know which one is final. The one without fn was named "full-size" and the one with fn was named "Keyboard Layout Editor" in the bookmark.


I'm using ABNT2 and ANSI 104 as reference.

New keys:
- Since the layout is ABNT2, there's some other keys that don't exist in english layouts.

Layout changes:

Key small changes:

https://xkcd.com/927

I don't know what was going in my head when i started doing this, i'm writing this after learning lots of stuff. so i'm gonna start with this: ISO and ABNT2 are kinda shitty layouts. Lots of buttons are badly placed, useless, or missing. It feels like it was made for idiots and by idiots. From looking at charts. ANSI layout doesn't seem so bad, but lacks keys.

So i'm going to try to design something a little better while still not breaking from the norm and appearing too alien. I'm going to use ABNT2 format as my primary reference, and got a few good things from other keyboards like the ANSI 104 standard and Symbolics keyboards.

Since i'm a heavy i3 user i might be biased but anyway, here's what i came up with: INSERT KEYBOARD LINK

First, some new keys which can be used for countless things:
- 2 new Meta keys in both sides. This is very useful for i3, and one of the reasons i like the ANSI 104 standard because it makes it much easier to Meta + Letter or Meta + Shift + Letter, but can have many other uses if you don't use a TWM. E.g. Shift Levels, Backspace, Open/Close brackets, Delete, Arrow Keys are only a couple i can get from my head.
- New Alt key. Why is there only one Alt in the very corner of standard keyboards? So useful yet so neglected. I added another Alt in the right side, now it's possible to Ctrl + Alt with your right hand.
- 5 Programmable keys. Not really necessary, i just didn't know what to put in that space. Can be used for macros, music controller, etc.

Second, some layout changes for better writability and comfort:
- Numpad in the left so the keyboard is more centralized. This is something i don't understand about keyboards, all of the less important keys are on the right plus the mouse, which can get very uncomfortable at times (having to constantly move them around or move your entire body). Also by being in the left, it makes the numpad closer to your hand and its function commands are more useful.
- Function keys in chunks of 3, making it easier to find yourself. I cannot count how many times i lost myself in the Function keys.
- Moved Menu to the far right. Useful for Firefox sometimes, but also just a consequence of moving the other keys around.
- Moved AltGr to the right of Right Shift. Makes it easier to use AltGr (and Shift + AltGr) without breaking your fingers. AltGr may seem useless but it's actually just in a horrible spot to be usable.
- Merged Escape into the main cluster and swapped Escape with Caps Lock. For Vim and many other stuff, pretty standard. Whoever made the decision to put Caps Lock here has, at the very least, serious brain damage.

And finally, some minor changes on the keys:
- Reduced the size of Spacebar. I could reduce more, but there's not much anything I can put in the bottom row that doesn't make it complicated.
- Increased the size of Ctrl and Alt. Again, I didn't have anything else to put in the bottom row, so yeah, this makes them stand out more too.
- Increased the size of Left Shift and decreased size of Escape (ISO Caps Lock), Tab and Enter to fit the new Meta keys. Also had to increase the keyboard size a little (2 columns).
- Homing on the Alts so it's easier to find yourself.
- HJKL arrows and LEDs in Lock Keys because it's cool.

I had some other ideas but they would be drastic changes which I don't want to mess with (too risky to guess if it works or not), like ortholinear layout.

This keyboard could work for gaming, typing, shortcutting, programming, maths, literaly anything works good, and it's more comfortable and easier to type on. It's not huge, but I also did an 80% layout if you live in a single square meter.

Now, if it isn't clear already, i'm only an architect and quite new to the art of keyboards. This will most probably never get out of the computer screen, but one can dream.

### Improvising, adapting, overcoming ###

While the perfect keyboard is not possible, we can adapt and improvise with what we have. What do I have? A cheap keyboard and a computer running Linux.

This is where you have to be creative, with X.org commands setxkbmap, xmodmap and xkbcomp you can remap keys to many interesting stuff. xkbcomp allows for much more customization but the other two can already do wonders. setxkbmap has many option presets to choose like swapping CapsLock with Escape, all documented in /usr/share/X11/xkb/. xmodmap can modify pretty much any key to whatever you want.

xkbcomp is just the backbones of setxkbmap so you can do anything with it.

There's also some programs which give different signals when you press vs hold like xcape.

Final thoughts

X.org sucks
ISO, and by extension ABNT, suck.
Mechanical Keyboard enthusiasts are obsessed with 60% keyboards and Cherry MX switches.
Somehow i'm the only one who hates the standards.
I'm increasingly convinced that we stopped progressing in the 80's