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.

Showing Posts 1 to 10

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.

dsissitka

dsissitka

Another IGNORE_MOD_TAP_INTERRUPT user with modifiers on the home row! QMK is great.

I think I switch between languages too often to optimize for a particular language but my symbol layer was designed with ease of access and frequency of use in mind.

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.

Dusty

Dusty OP

I love home row mods, but in the README you’ll see my explanation for wanting 2 sets of Shift keys. I only use the home row shifts for selection and keycuts. But yes, it’s life changing—without QMK there is absolutely no way I would be comfortable on 36 keys, but with it I feel the sky’s the limit :slight_smile:.

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.

Dusty

Dusty OP

It’s really interesting, because either consciously or subconsciously you’ve put a lot of the paired symbols in the left hand, where they happen to be inward rolls if placed in their usual order. I think for Colemakers this sort of thing becomes irresistible once you experience it on the alphas. Anyway, a very nice layout—my hands are not big enough for Ergodox thumb cluster reaches, which is a shame, because it’s a great community.

sanswork

sanswork

My hands aren’t big enough either and I’ve been looking at https://shop.keyboard.io/ for that reason.

On mine the two big buttons on the thumb clusters are the only ones used regularly. The outer are just media keys and the small upper inside ones I almost never use.

I also find the inner row hard to reach so its usually blank though in this case I stuck a \ in there which I’m still not sure on.

dsissitka

dsissitka

Do you do anything to speed up the process of learning a new layout? I’ve found a couple of things that work well for me.

  1. I add the layout to my wallpaper. That way when I’m having trouble remembering where a key is I can hit Win + D once to show my layout and again to restore my work space.
  2. One of the things I make when learning a new language is this silly little program that helps me learn new layouts.
sanswork

sanswork

The ergodox ez configuration stuff lets you print out a layout sheet. I have one of those on my laptop keyboard and I’m forcing myself to look at it if I don’t 100% know the character so I don’t make mistakes. It’s working but its slow going. The left pinky finger keys are the hardest at the moment. I might move them to index finger area on the number layer soon.

dimitarvp

dimitarvp

Are you experiencing problems typing on the classic QWERTY keyboards after using those like the ErgoDox for a while?

I’m seriously considering the ErgoDox Glow – I like its idea, configurability and design a lot – but I really don’t want to lose productivity for no more than 1-2 weeks.

Where Next? Top

Trending in Discussions Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
axelson
Hi there! :wave: @frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New
achempion
I’ve been using Emacs as my main code editor for more than a two years. It’s a custom build version although I’ve tried doom emacs and sp...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New
jtormey
Lately I’ve been thinking about how to organize components as a LiveView application grows. One of the pain points I’ve found (for myself...
New
Null-logic-0
What IDE or editor are you using for Elixir development? Personally, I use Zed, and I really like it, but sometimes I wish there were a ...
New

Other Trending Topics Top

bartblast
Hologram v0.12.1 has been released. Bug Fixes Fix the browser painting a frame between an action and a next action it puts with no dela...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
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
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
kip
In 2021 I started a new library called Tempo with the objective of modelling time as a set of intervals - not as instants. In 2022 I gave...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews