Skip to content

Instantly share code, notes, and snippets.

@jasonm23
Last active September 26, 2021 03:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jasonm23/8be41b52436d92c0672f5b4d38468ebb to your computer and use it in GitHub Desktop.
Save jasonm23/8be41b52436d92c0672f5b4d38468ebb to your computer and use it in GitHub Desktop.
Dell AT101W / Soarer's Converter config

Keyboard Config for my Dell AT101W

What's all this?

This is a config for my converted Dell AT101W This is a very good (and cheaply available) mechanical keyboard which uses ALPS switches (the same switch manufaturer as those used by vintage Apple and SGI (Silicon Graphics) keyboards.)

They are nice enough as is, but they can be upgraded relatively cheaply, as long as you don't mind learning some soldering and desoldering skills.

Modifications

I replaced the AT101W's factory installed Black ALPS SKCM switches, with Matias Quiet Click and added a Teensy 2.0 (USB controller) so I could hook it up to a Mac easily.

Soarer's Converter

An Englishman known only as Soarer. Was a regular on the keyboard community forum, Geekhack from 2010 to 2014. He then mysteryiously disappeared.

While he was a regular, he provided many people with a lot of help. He also wrote a keyboard firmware that converts IBM PC-XT, PC-AT, 122 key terminal and PS/2 (and compatible) keyboards, which he called simply Soarer's Converter.

While he didn't release the source code (apparently this was a plan that never materialized.) He paid a lot of attention to configurability.

Configuring the firmware

Soarer provided a number of tools and even created a DSL to allow easy reconfiguration of the firmware after it's been flashed to a Teensy, and installed in a keyboard.

The language is fairly easy to use and pretty well documented, (download the docs from this link)

You can even download the config from a previously flashed Soarer's Converter, and disassemble it back to text. (Great if you lose your original keymap config!)

Configurable features in a nutshell:

  • Remapping - Reassign the key codes triggered by a key, A can trigger B and so on... Useful if you want to use Colemak or Dvorak, make Caps Lock be a Ctrl or Esc key, or just flip Cmd and Alt on the Mac.

  • Macros - Macros basically allow a single key to trigger a sequence of keys.

  • Layers - alternative key functions organized in groups, think of Ctrl or Alt as layers, Soarer's Converter allows you to create custom modifier keys and remap keys when they're active.

My Config

I added a few features which I find useful, on the default layer I have Win and Alt swapped, Caps Lock as Control, and both left and right Shift keys together trigger Caps Lock.

Layer 0 (default)

Key Sends Notes
Win/Cmd/Super (both sides) Alt I use OSX/macOS most of the time so these two remaps save me having to configure the keyboard on any Mac I connect the keyboard to.
Alt (both sides) Win/Cmd/Super
Caps Lock Left Ctrl Very handy, probably essential for Emacs
Left and Right Shift combo Caps Lock I hardly use Caps Lock, but tapping both shift keys is a fairly intuitive and unobtrusive way to toggle it
App/Menu FN1 (Layer 1)

Layer 1 (hold App/Menu)

I have the App/Menu key set to activate Layer 1, which has a numpad for left hand use.

So when APP held down, we have these key changes:

Key Sends Notes
Z 1 Left hand numpad
X 2
C 3
A 4
S 5
D 6
Q 7
W 8
E 9
V 0
Left Cmd/Win Enter
R + PLUS
F / SLASH
T - MINUS
H * ASTERIX (sic)
B . PERIOD
1 A Hex helpers
2 B
3 C
4 D
5 E
6 F
remapblock
# Swap Alt/Opt with Gui/Super/Command/Win
RGUI RALT
RALT RGUI
LGUI LALT
LALT LGUI
# Caps lock is Control
CAPS_LOCK RCTRL
# Application/Menu is FN1
APP FN1
endblock
layerblock
FN1 1
endblock
remapblock
layer 1
# Set hex/numpad on Layer 1 / FN1 (App/Menu)
Q PAD_7 # Left Hand Numpad
W PAD_8
E PAD_9
A PAD_4
S PAD_5
D PAD_6
Z PAD_1
X PAD_2
C PAD_3
V PAD_0
R PAD_PLUS
F PAD_SLASH
T PAD_MINUS
G PAD_ASTERIX
B PAD_PERIOD
LALT PAD_ENTER
1 A # Hex helpers
2 B
3 C
4 D
5 E
6 F
endblock
macroblock
macro LSHIFT RSHIFT
PRESS CAPS_LOCK
endmacro
macro RSHIFT LSHIFT
PRESS CAPS_LOCK
endmacro
endblock
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment