Dusty

Dusty

Roughly a year ago, I found myself inwardly complaining about the fact that my 60% keyboard only had the Control key on one side. This minor inconvenience led me down a rabbit hole of keyboard optimization that is so deep I may never emerge :slight_smile: In any event, I have settled on a 36-key split as my daily driver—and in the course of optimizing the layout, it became clear to me that I could do very specific things to make the layout better for Elixir, which is a favorite of mine. After 8 years using Dvorak, followed by a few years back on QWERTY, I had settled into using Colemak DHm as my primary layout for the alpha keys. I wanted to apply the pleasant inward rolls that Colemak was giving me to the symbol layer as well, with some special attention to Elixir. For programming in general, I grouped inward-rolling pairs like +=, (), [], and {}, but I also discovered that by using the grouping: < | - >, I could make comfortable rolls for a number of Elixir conventions all at once (<>, <-, ->, |>). I could also put other commonly used symbols, like " or :, in positions that better reflect their Elixir-specific importance, and still have room for rolled pairings that serve other purposes (like ~/ for Unix file paths). Coupling these improvements with the power of QMK firmware (oneshot layers/modifiers, dual-function keys) has made for a really comfortable and enjoyable experience. I don’t have any idea how much overlap there might be between the various communities (Elixir, alt layout, mechanical keyboard), but I thought I would share it here since a lot of my thinking was inspired by Elixir syntax.

If this type of thing interests you, you can see the layout itself in the QMK repo (the symbol layer is towards the end).

If you’re wondering about my choice of alpha layout, I’ve written about that elsewhere.

There is always room for improvement—you’d be correct to point out that EEx openers (<%=) aren’t that smooth—but I’m relatively satisfied for now.

Anyway, thanks to the community for this awesome language. I’ve only just started my journey but it’s really a joy to use.

First Post!

axelson

axelson

Scenic Core Team

Sounds very interesting! Can you explain what you mean by “inward rolls”? I think I have an idea of what you mean but I’m not quite sure.

Most Liked

Dusty

Dusty OP

An inward roll would be the equivalent of typing SDF rapidly on QWERTY. This mimics the way we would normally tap our fingers on a table, rolling from 5th finger to 2nd finger. Try rolling the other direction (index to pinkie). It’s not so easy or comfortable. If you look at my 2nd link (the writeup on alternative keyboard layouts), I show the Colemak layout and give the examples of typing SENTENCE, FRIEND, or FIRST. This is why I paired the braces in the right half of the symbol layer in the opposite manner to the parentheses in the left hand. That way both sides roll inward.

sanswork

sanswork

I’ve been playing with my layouts again lately after a long break.

Is my current. I did try having an elixir specific layer but I have too much muscle memory for layer 2 already so I never used it. I ran a few of my codebases through a character counting script and put the most used near my index fingers(I’m also a vim user hence the qwerty hjkl on layer two and the ctrl-[.

I’m still not super happy with it but its a work in progress. Biggest problem is I became so accustomed to my last layout I’m struggling remapping my mental model of my secondary layer. But I have a print out of that layer I put on my laptop which is helping.

adkron

adkron

I use a keyboardio and love it. The thumb keys in one arc allows them all to be reached and usable. I created an Elixir pipe key, but I need to spend more time with my layout. The numbers I moved to the home row on another layer. The original number keys are shortcuts for switch tmux windows. My wrist pain went away completely. I love the keyboard. If you want to know more let me know. I also have a discount code for it. I get no kickbacks.

Last Post!

codeanpeace

codeanpeace

There’s a fun bit of trivia around how hjkl was chosen in case you were wondering.

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 94592 917
New
cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
caslu
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
heathen
Quite interesting article Google brought me. Didn’t find any mentions about it here. What do you think in general? Would you use togethe...
New
marciol
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New
durvia
Anyone running long-lived stateful processes on BEAM? We’re building an AI agent runtime and would love to compare notes. We’re a small ...
New

Other Trending Topics Top

marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge &amp; Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews