I’d like to use the Atreus again. The Workman layout is not working out for me. I just don’t get anything done. Plus, they say that different layouts don’t really improve your typing skill. So, back to QWERTY it is!
As my `qmk_firmware` tree was so out of date, it took me quite a while to discover what I needed to do:
~/src/qmk_firmware$ make PCBDOWN=yes atreus/astar_mirrored:alex
I remember, I have one of the really old models. If I forget `PCBDOWN=yes`, then Alt and Ctrl are swapped. If I forget the `mirrored`, then I get a POIUY keyboard instead of a QWERTY keyboard. Not good.
Also remember that the USB ports on the Purism laptop aren’t good enough to write the firmware. If I try, I’ll corrupt it, and then I have to unscrew the back and reset it by connecting two pins...
Anyway. This is the README:
This is the Alex layout for Atreus.
q w e r t || y u i o p a s d f g || h j k l ; z x c v b || n m , . / esc tab super shift bksp ctrl || alt space RS LW ' ret Raised layer (RS) ! @ { } | || - 7 8 9 * # $ ( ) ` || . 4 5 6 + % ^ [ ] ~ || & 1 2 3 \ menu caps < > del || _ 0 = Lower layer (LW) insert home up end pgup || vol+ F7 F8 F9 F10 del left down right pgdn || vol- F4 F5 F6 F11 || mute F1 F2 F3 F12 || – ¨ reset
A note on the EN DASH and DIARESIS mappings on the lower layer: these only work if you set up CAPS as your *Multi Key* because they effectively send `<CAPS> - - .` and `<CAPS> "`, respectively.
#define TAPPING_TOGGLE 1 #define ONESHOT_TAP_TOGGLE 1 #define PCBDOWN 1
#include QMK_KEYBOARD_H // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. #define _QW 0 #define _RS 1 #define _LW 2 #define OSM_SFT OSM(MOD_LSFT) /* In your system, make sure Caps Lock acts as the Compose Key, also known as the Multi Key. If so, then the quote on * the lower layer acts as macro to enter ¨ */ enum custom_keycodes { DIAERESIS = SAFE_RANGE, EN_DASH }; /* Basic layer (L0) * q w e r t || y u i o p * a s d f g || h j k l ; * z x c v b || n m , . / * esc tab super shift bksp ctrl || alt space RS LW ' ret */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QW] = LAYOUT( /* QWERTY */ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH , KC_ESC, KC_TAB, KC_LGUI, OSM_SFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, MO(_RS), MO(_LW), KC_QUOT, KC_ENT ), /* Raised layer (RS) * ! @ { } | || - 7 8 9 * * # $ ( ) ` || . 4 5 6 + * % ^ [ ] ~ || & 1 2 3 \ * menu caps < > del || _ 0 = */ [_RS] = LAYOUT( /* [> RAISE <] */ KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_MINS, KC_7, KC_8, KC_9, KC_ASTR, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_DOT, KC_4, KC_5, KC_6, KC_PLUS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_MENU, KC_CAPS, KC_LT, KC_GT, KC_DEL, KC_TRNS, KC_TRNS, KC_UNDS, KC_TRNS, KC_TRNS, KC_0, KC_EQL ), /* Lower layer (LW) * insert home up end pgup || vol+ F7 F8 F9 F10 * del left down right pgdn || vol- F4 F5 F6 F11 * || mute F1 F2 F3 F12 * || – ¨ reset */ [_LW] = LAYOUT( /* [> LOWER <] */ KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_F10, KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EN_DASH, KC_TRNS, KC_TRNS, DIAERESIS, RESET ) }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { switch(keycode) { case DIAERESIS: // assuming KC_CAPS is your Multi Key SEND_STRING(SS_TAP(X_CAPSLOCK)"\""); return false; case EN_DASH: // assuming KC_CAPS is your Multi Key SEND_STRING(SS_TAP(X_CAPSLOCK)"--."); return false; } } return true; };
#Keyboard #Atreus
(Please contact me if you want to remove your comment.)
⁂
For the future…
“home row mods” are about placing modifiers on the home row – A guide to home row mods
– Alex 2021-09-09 21:37 UTC
---
I am not happy and think one reason is that I use ctrl arrows, ctrl shift arrows, and the combos with page up and page down a lot. Furthermore, I do type in German every now and then and that’s why the compose “ a o u combo needs to be simple.
This is the Alex layout for Atreus.
q w e r t y u i o p a s d f g h j k l ; z x c v b n m , . / esc tab gui sft bksp ctl alt spc RS LW ' ret
Like, is the quote in the right position? is the slash in the right position? The Model 01 has also confused my fingers. Now I expect Return to be where h is, and Escape to be where b is. Annoying.
Raised layer (RS). What I discovered is that the number block layout does nothing for me. I hate it. I need a row of numbers. And I need the arrow keys a lot, switch control and shift being on the left. Therefore, the arrow keys themselves must be on the right. What better way than to use h j k l? This I also learned with the Model 01 keyboard.
One wonders how to use the punctuation atop the numbers efficiently. Maybe not at all.
I’d like diaresis to be easy: RS Caps Lock (for Compose), RS “, a o u – perhaps easy to type than RS Caps Lock, Shift ’, a o u. No switching of modifiers.
In these other layers, I should keep the modifiers where they are. Any other key reachable via the layer must be usable with a modifier (gui shift ctrl alt). All other keys, however, do not have the same protection. This, backspace turns to delete, return turns to menu, etc.
As for pulling apart basic math operators, I think I don’t use them often. I do use hyphens when writing text and lisp, path separators in file names, and control + and - for zooming and the like.
1 2 3 4 5 6 7 8 9 0 ! ^ # $ % left up down right + | @ * & = home pgup pgdn end - gui sft del ctl alt spc ∎∎ caps " menu
Lower layer (LS). Sadly, function keys remain important for programs such as mc and htop but also debuggers and the like.
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 vol+ ( ) [ ] F11 vol- < > { } F12 gui sft mute ctl alt ∎∎ ` menu
I’m going to try something like that, soon.
– Alex 2022-01-14 22:14 UTC
---
Not sure if I linked this before, but I described my process for coming up with several layouts here: https://www.keebtalk.com/t/my-layouts-for-minimal-keyboards/15145 — maybe it will give you some ideas?
https://www.keebtalk.com/t/my-layouts-for-minimal-keyboards/15145
– deshipu 2022-01-14 22:33 UTC
---
Also, do you have up and down swapped?
– deshipu 2022-01-14 22:34 UTC
---
Only because I’m not actually a vi-head! Thanks for pointing it out, and thanks for the link.
– Alex 2022-01-15 14:21 UTC
---
This video also has some fresh ideas: https://www.youtube.com/watch?v=WA_GUYS8UJg
https://www.youtube.com/watch?v=WA_GUYS8UJg
– deshipu 2022-01-15 14:29 UTC
---
Ugh, trying to remember how this works.
On the regular laptop:
cd ~/src/qmk_firmware make PCBDOWN=yes atreus/astar_mirrored:alex cp atreus_astar_mirrored_alex.hex /media/alex/USB_STICK
On the Mac:
cp /Volumes/USB_STICK/atreus_astar_mirrored_alex.hex . ls /dev > /tmp/off for n in $(seq 3600); do ls /dev > /tmp/on; diff /tmp/off /tmp/on; sleep 1; done
Now hit the reset key until you see messages such as these:
17a18 > cu.usbmodem641
Now you know the device. Prepare your command, hit the reset key again, and run your command. Repeat until it works.
avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_astar_mirrored_alex.hex -P /dev/cu.usbmodem641
Well, at least that’s the story after I got avrdude working. I was trying to get it installed but curl had some expired certificates or something and wouldn’t update. By sheer luck I stumbled over libusb (as I had decided I would need to compile avrdude from source) and that updated the certs!? How strange.
brew install libusb brew install avrdude
And that also gets me the dependencies for avrdude: m4, autoconf, automake, cmake, pkg-config, hidapi, libusb-compat, libftdi0, libhid and libelf (in addition to libusb which I just installed). cmake took forever to compile!
– Alex 2022-01-18 13:36 UTC
---
Updated the images, here:
https://alexschroeder.ch/pdfs/atreus-alex/
I’ll say that I already managed to type the password twice, so that’s a big win.
All of this because the keys for the Model 01 don’t actually work as well. i and . get lost, or duplicate, other keys as well. All the nice colours and the nice Linear A keycaps don’t help if the keys themselves don’t work as intended.
– Alex 2022-01-18 15:47 UTC
---
I noticed that I forgot the backslash on the keyboard. I think RS+esc would be a good place for it.
I should have listened to deshipu and use the standard distribution of punctuation. Now I can’t remember why I put ^ next to # – I guess originally I wanted a regexp mnemonic and have ^ next to $ or something like that? It just doesn’t make much sense, now.
Then I need to move the arrows somewhere else. I could move them to the lower layer, and the brackets can all go to the left side of the lower layer.
– Alex 2022-01-18 17:06 UTC
---
OK, revised layout. I switched the parentheses around a bit because the layer key is used with the thumb which ends up in the middle of the right half, and then the most common parenthesis are on the left part of the right half, necessitating a sort of crossing over of the index finger to the left. That’s not cool.
2022-01-21 New Keyboard Layout
– Alex 2022-01-21 21:30 UTC