2016-04-05 Atreus Ponderings

I’m not happy with the keyboard. I don’t like the layout of the keys when I switch to a US layout, and I like it even less if I keep the default Swiss German layout. Now what should I do?

This is the default, with the operating system expecting a US layout:

+---+---+---+---+---+          +---+---+---+---+---+
|Q @|W @|E  |R {|T }|          |Z  |U &|I *|O (|P #|
|q !|w @|e ↑|r {|t }|          |z ⇞|u 7|i 8|o 9|p *|
+---+---+---+---+---+          +---+---+---+---+---+
|A #|S  |D  |F  |G $|          |H  |J $|K %|L ^|: !|
|a #|s ←|d ↓|f →|g $|          |h ⇟|j 4|k 5|l 6|; +|
+---+---+---+---+---+          +---+---+---+---+---+
|Y {|X }|C (|V )|B &|          |N ~|M !|< @|> #|? ||
|y [|x ]|c (|v )|b &|          |n `|m 1|, 2|. 3|/ \|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |   |   |  |   |   |   |_ >|" )|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |- .|' 0|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

I really need to start thinking about the layout I would like to have instead!

One thing I guess I already know: I don’t need the extra layers of the keyboard. If at all, I think I’ll want to use a compose key. An extra layer to shift in and out of only makes sense if you’ll keep using that layer for a while. To switch between the Swiss German and the US layout without having to tell the operating system, for example. I’m not sure I need that.

Perhaps the best way forward would be to just look at the default layout and eliminate the duplicates and use the newly available keys for the stuff I really need.

I don’t think I need function keys, for example. Well, maybe for Inkscape. 😄

​#Atreus ​#Keyboard

Comments

(Please contact me if you want to remove your comment.)

Things to consider:

RET being on a pinky finger is awkward. It’s more important than that. But where else should it go? Perhaps like this? It’s a weird place, but perhaps easier to reach.

+---+---+---+---+---+---+
|   |   |   |   |"  |_  |
|ALT|SPC|FN |RET|' 0|-  |
+---+---+---+---+---+---+

The minus key should also get EN DASH and EM DASH. I use them a lot.

SPC should also get NO-BREAK SPACE and maybe THIN SPACE.

All the function keys ought to map to the numbers, I guess. Here’s what it would look like assuming I didn’t move RET.

+---+---+---+
|U ƒ|I ƒ|O ƒ|
|u 7|i 8|o 9|
+---+---+---+
|J ƒ|K ƒ|L ƒ|
|j 4|k 5|l 6|
+---+---+---+
|M ƒ|< ƒ|> ƒ|
|m 1|, 2|. 3|
+---+---+---+
|   |_  |" ƒ|
|FN |-  |' 0|
+---+---+---+

We lost % and ^, all the others can be found elsewhere.

And we still have extra bindings we don’t need because there somewhere else, easier to reach. Here’s without the duplicates, to show where we still have space.

+---+---+---+---+---+          +---+---+---+---+---+
|Q  |W  |E  |R  |T  |          |Z  |U ƒ|I ƒ|O ƒ|P #|
|q  |w @|e ↑|r {|t }|          |z ⇞|u 7|i 8|o 9|p *|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G  |          |H  |J ƒ|K ƒ|L ƒ|: !|
|a  |s ←|d ↓|f →|g $|          |h ⇟|j 4|k 5|l 6|; +|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B  |          |N ~|M ƒ|< ƒ|> ƒ|? ||
|y [|x ]|c (|v )|b &|          |n `|m 1|, 2|. 3|/ \|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |   |   |  |   |   |   |_  |" ƒ|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |-  |' 0|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

Yikes, we are running out of keys after all! Use a second FN, if that is possible? I still dislike the idea of shifting into different layers.

– Alex Schroeder 2016-04-06 07:43 UTC

---

Ah, I see a possibility. The repository has a file called `keymap_qwerty_2fn.c` which advertises itself as «This keymap is based on the default one, but it has a momentary layer2 key on layer 1.» and there is a file called `keymap_qwerty_ml2.c` which advertises itself as «This keymap allows you to hold down fn+shift to hit keys on L2 momentarily, rather than switching layers in a “sticky” way.» – and it contains the following warning: «There is currently a bug in TMK where it works fine if you release shift first, but if you release fn first, the fn key remains stuck down until you tap fn again to release it.»

repository

Awkward! I still need to figure out whether the thing I had in mind is what `keymap_qwerty_ml2.c` had in mind? I’m not sure I really understand what the entire keyboard thing *is!*

Well, here’s what I’m going to try and do next:

1. install the necessary tools using Homebrew

2. try and compile it without making any changes

3. try and compile it using `keymap_qwerty_2fn.c`

Homebrew

But sadly:

alex@Megabombus:~/src/atreus$ brew install avr-libc
...
==> ../configure --prefix=/usr/local/Cellar/avr-gcc/4.8.3 --host=avr --build=x86_64-apple-darwin15.4.
==> make install
Error: Empty installation

So, `brew update` and `brew upgrade` and try again:

alex@Megabombus:~/src/atreus$ brew install avr-libc
==> Installing avr-libc from larsimmisch/avr
==> Downloading http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.8.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/avr-libc-1.8.1.tar.bz2
Warning: SHA1 support is deprecated and will be removed in a future version.
Please switch this formula to SHA256.
==> ../configure --prefix=/usr/local/Cellar/avr-gcc/4.8.3 --host=avr --build=x86_64-apple-darwin15.4.
==> make install
Error: Empty installation

Strangely enough, I was able to compile the firmware even though the above installation failed.

alex@Megabombus:~/src/atreus/tmk_keyboard/keyboard/atreus (atreus=)$ OPT_DEFS=-DPCBDOWN make buildKEYMAP=qwerty
...
Creating Symbol Table: atreus.sym
avr-nm -n atreus.elf > atreus.sym
alex@Megabombus:~/src/atreus/tmk_keyboard/keyboard/atreus (atreus=)$ ls -l *.hex
-rw-r--r--+ 1 alex staff 42015 Apr  8 13:52 atreus.hex

(Remember, I have the older keyboard and have to use PCBDOWN.)

Then hitting Fn + ESC + B and running `ls` for two or three seconds until the `cu.usbmodem` shows up:

alex@Megabombus:~/src/atreus/tmk_keyboard/keyboard/atreus (atreus=)$ ls /dev/cu.usbmodem*
/dev/cu.usbmodem641

OK, I’m ready!

Hitting Fn + ESC + B and running the following:

alex@Megabombus:~/src/atreus/tmk_keyboard/keyboard/atreus (atreus=)$ USB=/dev/cu.usbmodem641 make upload
...
avrdude done.  Thank you.

– Alex Schroeder 2016-04-08 11:03 UTC

---

OK, now I need to figure out what I want to do when a Swiss German keyboard layout is being used by the Operating System. I somehow expected there to be a way for me to specify each key, and the various modifiers, and some sort of Unicode character. But that’s not how it works, I’m afraid. OK, so now I’m off to read keycode.txt and keymap.md.

keycode.txt

keymap.md

Obviously, the driver only tells the operating system *what key was pressed*. The operating system then consults it’s layout table and figures out what the user intended based on the active layout that’s where the Unicode characters show up. How to make a custom keyboard layout in MacOS? If I want to change the fancy stuff – ie. if I’m happy with where the usual characters are on my keyboard (QWERTZ) and all I want to change is what happens when Alt + Q is pressed (right now: “œ”), then I need to change things at the operating system level.

How to make a custom keyboard layout in MacOS?

I need to figure out where the dividing line between Firmware and Operating System is. Clearly, most things can be done using both. I’m reading the tutorial for Ukulele, now.

Ukulele

– Alex Schroeder 2016-04-08 12:14 UTC

---

And don’t be afraid to put stuff on fn+…. After all, such combinations are as easy as pressing shift+letter, and we can probably agree that it is not hard at all. For example, you can have fn+g for TAB, with a high chance that it will end up being more comfortable than your current position for TAB (again, given that there is fn for your left hand).

After all, you can just try adapting my layout that I’ve mentioned a couple of times now (last time mentioned on Comments on 2016-03-23 Atreus) 😄 Ignore Dvorak (it’s something that I’ve just kept as is), just assume that the letters are in a qwerty arrangement.

Comments on 2016-03-23 Atreus

Here’s a good start:

| Q ☓ | W ⇤ | E ↑ | R ⇥ | T ↹ |  | Z : | U - | I } | O ] | P 」 |
| q ☓ | w ⇤ | e ↑ | r ⇥ | t ↹ |  | z ` | u ; | i { | o [ | p 「 |
| A ⏎ | S ← | D ↓ | F → | G ⌫ |  | H * | J ! | K ) | L + | – @ |
| a ⏎ | s ← | d ↓ | f → | g ⌫ |  | h $ | j ? | k ( | l " | ' = |
| Y � | X � | C � | V � | B ⌦ |  | N ^ | M ` | ~ % | … ” | \ ’ |
| y � | x � | c � | v � | b ⌦ |  | n & | m | | , _ | . “ | / ‘ |
| � | � | � | alt | ␣ ␠\\␣ ␠ | fn | fn | ⇧ | ctl | � | � | � |

☓ is ESC, ␣ is space, ␠ is no break space, other characters should be obvious. Also notice the difference between - and –.

Sure, that’s just a quick rearrangement to make it work on top of qwertz, it needs much more thought put into it. However, even at this point it looks very promising.

Personally I use:

| ␣ ␠ |
| ␣ ␣ |

Instead of:

| ␣ ␠ |
| ␣ ␠ |

The reason is that I don’t want to type no break space accidentally. But fn+shift+space is a bit too awkward (which is probably OK since I don’t use no break space too often, just about two or three times per day).

I’ve left **.** and **,** on their original places. This is very bad… but what else can you do on qwerty-like layouts?

fn+backspace takes some time to get used to. That’s not a good sign, so perhaps you should keep it on one of the thumb buttons (I don’t have so many of those so I can’t really tell what would be the best way). Also you probably want to keep two fn’s apart. On my keyboard that’s one key that can be pressed by any of the thumbs, but you don’t have such limitation, so you’re better off with something similar but different.

Anyway, hope you’ll find something useful in this mini “blog post” 😄

– AlexDaniel 2016-04-08 18:03 UTC

---

Definitely. I was wondering about those function keys. On a Mac, they are so hard to hot that I can never remember how to do it and need to fumble around whenever I need to. Luckily, all the tools I use on my Windows machine seem to handle C-w and C-q to close windows or quit applications.

I actually use ESC quite a lot because some Emacs key bindings are a bit tricky to get right, depending on how things are set up. On my Mac, the command key acts as Meta within Emacs, and thus Cmd-q refills paragraphs and Cmd-w acts on words. But when I’m using a terminal and ssh to work elsewhere, Cmd-q and Cmd-w will quit applications and close Windows. That’s my fingers often use ESC.

Your note about not wanting to accidentally add non-breaking spaces is apt. I probably add many unnecessary non-breaking spaces all over the place.

I definitely like your idea of putting matching closing parenthesis and quotes on the same key, but shifted. The current layout has a ton of free bindings above the parenthesis, which is bad, and the idea is not new. On my Mac, that’s exact how “…” and «…» and ‘…’ work.

– Alex Schroeder 2016-04-09 09:35 UTC

---

I think I’m running out of space. Numbers and function keys on top:

+---+---+---+---+---+          +---+---+---+---+---+
|Q ƒ|W ƒ|E ƒ|R ƒ|T ƒ|          |Z ƒ|U ƒ|I ƒ|O ƒ|P ƒ|
|q 1|w 2|e 3|r 4|t 5|          |z 6|u 7|i 8|o 9|p 0|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G  |          |H }|J )|K ]|L >|* ?|
|a ⇞|s ⇤|d ↑|f ⇥|g  |          |h {|j (|k [|l <|+ !|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B  |          |N ^|M 」|; »|:  |_ —|
|y ⇟|x ←|c ↓|v →|b  |          |n ~|m 「|, «|. …|- –|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |DEL|   |  |   |   |   |´ ’|` ”|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |' ‘|" “|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

Stuff I'd like the see:
., ;: !? +- _= */|\&%$@#
() [] {} <> «» ‘’ “” 「」
'" ´ ˆ ` ˜

Truly, those function keys need to go to a separate layer. Now, if I keep the numbers in a row, one wonders what I would put on top of the numbers. A random array of ASCII punctuation? Better not. I could aim for the following: when pressing Fn, I get the numbers above and then I should be able to find all the math operations without letting go of Fn (`+ - * / =`). So Shift+Fn still remains open... thus, for all those parenthesis, perhaps? I see you have `( )` on the home row. I don’t know...

– Alex Schroeder 2016-04-09 11:41 UTC

---

Numbers and math on Fn, no function keys, minus key appears twice (used both as hypen and minus). I would have liked to put `< > « »` all on the same key, but `< >` just don’t seem important enough. On the Swiss German keyboard we get `< > ≤ ≥`. Interesting, but useless, I fear.

+---+---+---+---+---+          +---+---+---+---+---+
|Q $|W <|E >|R (|T )|          |Z {|U }|I [|O ]|P €|
|q 1|w 2|e 3|r 4|t 5|          |z 6|u 7|i 8|o 9|p 0|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G &|          |H ˉ|J  |K  |L ×|? \|
|a ⇞|s ⇤|d ↑|f ⇥|g @|          |h ¨|j +|k -|l *|! /|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B %|          |N ^|M 」|; »|: ||_ —|
|y ⇟|x ←|c ↓|v →|b #|          |n ~|m 「|, «|. …|- –|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |DEL|   |  |   |   |   |´ ’|` ”|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |' ‘|" “|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

Stuff I'd like the see:
., ;: !? +- _= */ |\&%$@#
() [] {} <> «» ‘’ “” 「」
'" ¨ ´ ˆ ` ˜

– Alex Schroeder 2016-04-09 12:49 UTC

---

By the way, one idea about the numbers. On original dvorak layout, these were mangled: https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/KB_DSKtypewriter.svg/900px-KB_DSKtypewriter.svg.png

https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/KB_DSKtypewriter.svg/900px-KB_DSKtypewriter.svg.png

This makes sense… well, kinda, sorta. It is also interesting that even and odd numbers are separated. I haven’t tried this yet, but somehow I doubt that I will like it. But I still don’t like the fact that 0 1 and 9 are in very uncomfortable positions. So, what about this?

`6 7 8 9 0 1 2 3 4 5`

This is probably easier to learn, yet it leaves more common digits on places that are easier to reach. Perhaps it’s not worth doing given that your digits are right above your home row, but still something to consider.

Thumbs up for underscore on **shift + -**. That’s something I forgot about when I was converting the layout. WILL_BE_HANDY_SOMETIMES!

Here are more unicode characters to consider. You don’t really have to put them on your layout, compose key works too. But just make sure that you have a way of entering these (I’ve never thought that I would use these so frequently):

And that’s it, you already have everything else.

The way your layout looks now is pretty good, but here are some other things that I’ve noticed:

And & on the current position of $.

– AlexDaniel 2016-04-09 17:25 UTC

---

Well, on the Swiss German Layout, both ! and ? are shifted keys, so I didn’t think too much about it. When I write text, I feel like I use more exclamation marks than question marks.

Actually, I should be able to simply count occurrences on this blog. For science! ¹ Strangely enough, it’s a close call:

¹

alex@kallobombus:~/alexschroeder/raw$ grep -ro '!' . | wc -l
9444
alex@kallobombus:~/alexschroeder/raw$ grep -ro '?' . | wc -l
8327

You are right about $. Perhaps I was hypnotized by the symmetry with €. I also thought about putting ^ close to $. But then again, I thought that ^ was an accent, right? And then again, I rarely write French and Portuguese, so I could do without ^ and ` – ´ is common for names such as André. Perhaps I can think of something.

As for the numbers, I don’t type numbers all that often and I usually need to pause and think about numbers when I write, so I don’t think it’s worth the relearning. Do you really think that the numbers 0 and 1 are more important?

alex@kallobombus:~/alexschroeder/raw$ for i in 1 2 3 4 5 6 7 8 9 0; do grep -ro "$i" . | wc -l; done
54733
56863
31750
26692
29131
25038
23113
25792
23370
80048

Oops, looks like you’re right! I guess it’s all those round numbers that get zeroes added at the end. Hm. I hadn’t thought of that. Perhaps ​## 6 7 8 9 0 1 2 3 4 5​## is in fact preferable.

What I do know, however, is that I almost never use subscript and superscript. When I do, markup will do – or `C-x 8 RET` in Emacs. 😄

Well, now that I think about it, what happens when I hit Shift + Fn. Can I move to a different layer? I guess that’s the bug they mentioned. If I could without the bug, then putting the arrows above the movement keys and the subscripts and superscripts above the numbers would be very cool.

Yikes, you are right about =. Added to my “calculator layer”.

The reason I like @ on Fn + g is that on the Swiss German layout, @ is on AltGr + g.

You are right about the combinations. I wonder whether I could feed my texts to a program that would figure out the digraphs I use most of the time. What I do know is that putting the closing thing of something on the shifted something or next to something. That works once you remembered how to open something, you’ll remember how to close it. Which is why I don’t like putting the parenthesis on Shift + Fn. Gaah.

I think I really need to start making some changes and *do* something. Right now the keyboard is always plugged in and I never use it. Bad!

+---+---+---+---+---+          +---+---+---+---+---+
|Q  |W <|E >|R (|T )|          |Z {|U }|I [|O ]|P €|
|q 1|w 2|e 3|r 4|t 5|          |z 6|u 7|i 8|o 9|p 0|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G $|          |H ^|J &|K =|L ×|? \|
|a ⇞|s ⇤|d ↑|f ⇥|g @|          |h =|j +|k -|l *|! /|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B %|          |N ~|M 」|; »|: ||_ —|
|y ⇟|x ←|c ↓|v →|b #|          |n ¨|m 「|, «|. …|- –|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |DEL|   |  |   |   |   |´ ’|` ”|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |' ‘|" “|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

Another thing to consider is that a Mac laptop keyboard has no home end page up and page down: cmd + up and fn + left is beginning of the document; Cmd + down and fn + right is end of the document; cmd + left is home, cmd + right is end; fn + up is page up, fn + down is page down. It’s confusing but it’s possible, I guess?

– Alex Schroeder 2016-04-09 19:53 UTC

---

And now you have two **=** ? 😄 By the way, some degree of redundancy is OK, especially if it is about modifiers.

“I think I really need to start making some changes and do something.”

Take your time! I’ve relearned three times before I got to my final layout, and I’m pretty sure that I am going to make more changes in a year or so.

Also, it was totally worth it. I couldn’t be happier right now.

Hmmm, looking at it right now, I’d say that it would make sense to switch `!` with `'`. Apostrophe is often encountered in English (it’s great to type `'` without getting distracted by modifiers), and is even more common in programming languages, so I guess that would make sense. Again, check out your stats.

`「」` are cool and I use them a lot, but not more often than `“”`, so perhaps switching those is a good idea?

And while you are looking at your stats, what’s more common `4` + `5` or `(` + `)`? Or what about the whole `<>(){}[]€` row versus `1234567890` ?

– AlexDaniel 2016-04-09 20:23 UTC

---

Also, check out this: http://xahlee.info/comp/computer_language_char_distribution.html

http://xahlee.info/comp/computer_language_char_distribution.html

– AlexDaniel 2016-04-09 20:25 UTC

---

OK, so for a moment I thought that I didn’t need to change the firmware to switch my keyboard layout. I started going through the keyboard and realized that the Fn key on my keyboard doesn’t register for Ukulele, the keyboard layout editing program. Hm.

– Alex Schroeder 2016-04-10 08:20 UTC

---

Getting into the flow! At the moment I’m trying to make changes to get some idea of what I need to do using firmware updates and what I need to do on the operating system side (all the non-ASCII characters, I guess).

cd src/atreus/tmk_keyboard/keyboard/atreus/
OPT_DEFS=-DPCBDOWN make build KEYMAP=alex
USB=/dev/cu.usbmodem641 make upload

And then press Fn + Esc + B for a second.

The layout I want, without a duplication of the equal sign:

+---+---+---+---+---+          +---+---+---+---+---+
|Q  |W <|E >|R (|T )|          |Z {|U }|I [|O ]|P €|
|q 1|w 2|e 3|r 4|t 5|          |z 6|u 7|i 8|o 9|p 0|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G $|          |H ^|J &|K  |L ×|? \|
|a ⇞|s ⇤|d ↑|f ⇥|g @|          |h =|j +|k -|l *|! /|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B %|          |N ~|M 」|; »|: ||_ —|
|y ⇟|x ←|c ↓|v →|b #|          |n ¨|m 「|, «|. …|- –|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |DEL|   |  |   |   |   |´ ’|` ”|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |' ‘|" “|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

What I have right now, with the operating system set to a Swiss German layout:

+---+---+---+---+---+          +---+---+---+---+---+
|Q &|W /|E (|R )|T =|          |Z +|U "|I *|O ç|P %|
|q 1|w 2|e 3|r 4|t 5|          |z 6|u 7|i 8|o 9|p 0|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G "|          |H `|J `|K ?|L (|é _|
|a ⇞|s ⇤|d ↑|f ⇥|g "|          |h ^|j `|k '|l (|ö -|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B *|          |N >|M +|; "|: *|_ £|
|y ⇟|x ←|c ↓|v →|b *|          |n <|m 1|, 2|. 3|- $|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |BCK|   |  |   |   |   |? à|à à|RET|
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |' ä|ä à|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

So, slowly getting there... 😄

As for your points, you are definitely right when it comes to quotes:

alex@kallobombus:~/alexschroeder/raw$ for i in '!' "'" '\"' '\,' '\.' '\-'; do grep -ro "$i" . | wc -l; done
9444     # !
27621    # '
20271    # "
76731    # ,
146628   # .
91092    # -

I guess I just liked the symmetry of keeping single and double quotes next to each other. But these numbers beg me to rearrange the keys. Home row is good, and no pinky is good, and we want `. - , ' " !` – and maybe a mnemonic effect or two. Must think some more. But right now the sun is shining and I need to get out. 😄

– Alex Schroeder 2016-04-10 09:08 UTC

---

Actually, the correct invocation seems to be:

make clean
OPT_DEFS=-DPCBDOWN KEYMAP=alex USB=/dev/cu.usbmodem641 make upload

And then pressing the magic combo Fn + ESC + b.

OK, refined what I want with the dot on the home row and minus going one up.

+---+---+---+---+---+          +---+---+---+---+---+
|Q  |W <|E >|R (|T )|          |Z {|U }|I [|O ]|P €|
|q 1|w 2|e 3|r 4|t 5|          |z 6|u 7|i 8|o 9|p 0|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G $|          |H ^|J &|K  |L ×|: ||
|a ⇞|s ⇤|d ↑|f ⇥|g @|          |h =|j +|k -|l *|. …|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B %|          |N ~|M 」|_ —|´ ’|` ”|
|y ⇟|x ←|c ↓|v →|b #|          |n ¨|m 「|- –|' ‘|" “|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |DEL|   |  |   |   |   |? \|; »|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |! /|, «|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

What I have right now, with the operating system set to a Swiss German layout:

+---+---+---+---+---+          +---+---+---+---+---+
|Q &|W /|E (|R )|T =|          |Z +|U "|I *|O ç|P %|
|q 6|w 7|e 8|r 9|t 0|          |z 1|u 2|i 3|o 4|p 5|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G ,|          |H `|J `|K ?|L (|é ’|
|a ⇞|s ⇤|d ↑|f ⇥|g @|          |h ^|j `|k '|l (|ö ‘|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B *|          |N >|M +|? Æ|à ÷|à ”|
|y ⇟|x ←|c ↓|v →|b *|          |n <|m 1|' æ|ä …|à “|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |BCK|   |  |   |   |   |_ à|; à|RET|
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |- ä|, à|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

Slowly... I guess?

– Alex Schroeder 2016-04-10 15:16 UTC

---

I really want to have a firmware where I can do the following two things in addition to what I currently know how to do:

1. provide a Unicode character to emit instead of a key code that gets retranslated by the operating system

2. allows me to determine what shifted characters emit

Gah!

– Alex Schroeder 2016-04-10 17:20 UTC

---

OK, using Ukulele I got basically the following:

+---+---+---+---+---+          +---+---+---+---+---+
|Q  |W <|E >|R (|T )|          |Z {|U }|I [|O ]|P €|
|q 6|w 7|e 8|r 9|t 0|          |z 1|u 2|i 3|o 4|p 5|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G $|          |H ^|J &|K  |L ×|: ||
|a  |s  |d  |f  |g @|          |h =|j +|k -|l *|. …|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B %|          |N ~|M 」|_ —|´ ’|` ”|
|y  |x  |c  |v  |b #|          |n ¨|m 「|- –|' ‘|" “|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |DEL|   |  |   |   |   |? \|; »|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |! /|, «|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

I used just Ukulele to configure this layout. Thus it does not use the Fn key at all! All the interesting bindings are in fact on the Alt key!

This also means no weird firmware on the keyboard and the default bindings on Fn, the important ones being these:

+---+---+---+---+---+          +---+---+---+---+---+
|   |   |   |   |   |          |   |   |   |   |   |
|   |   |  ↑|   |   |          |  ⇞|   |   |   |   |
+---+---+---+---+---+          +---+---+---+---+---+
|   |   |   |   |   |          |   |   |   |   |   |
|   |  ←|  ↓|  →|   |          |  ⇟|   |   |   |   |
+---+---+---+---+---+          +---+---+---+---+---+
|   |   |   |   |   |          |   |   |   |   |   |
|   |   |   |   |   |          |   |   |   |   |   |
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |   |   |  |   |   |   |   |   |   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |   |   |RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

– Alex Schroeder 2016-04-10 18:22 UTC

---

And I already switched the keys for comma and exclamation point, as the one that is closer to the center is easy to hit with the thumb. 😄

+---+---+---+---+---+          +---+---+---+---+---+
|Q  |W <|E >|R (|T )|          |Z {|U }|I [|O ]|P €|
|q 6|w 7|e 8|r 9|t 0|          |z 1|u 2|i 3|o 4|p 5|
+---+---+---+---+---+          +---+---+---+---+---+
|A  |S  |D  |F  |G $|          |H ^|J &|K  |L ×|: ||
|a  |s  |d  |f  |g @|          |h =|j +|k -|l *|. …|
+---+---+---+---+---+          +---+---+---+---+---+
|Y  |X  |C  |V  |B %|          |N ~|M 」|_ —|´ ’|` ”|
|y  |x  |c  |v  |b #|          |n ¨|m 「|- –|' ‘|" “|
+---+---+---+---+---+---+  +---+---+---+---+---+---+
|   |   |   |   |DEL|   |  |   |   |   |; »|? \|   |
|ESC|TAB|SUP|SH |BCK|CTR|  |ALT|SPC|FN |, «|! /|RET|
+---+---+---+---+---+---+  +---+---+---+---+---+---+

– Alex Schroeder 2016-04-10 19:42 UTC

---

Tomorrow: Remapping the keyboard for the Windows machine in the office. I hope to find something as easy to use as Ukulele for OSX.

– Alex Schroeder 2016-04-10 20:53 UTC

---

Downloading Microsoft Keyboard Layout Creator 1.4.

Microsoft Keyboard Layout Creator 1.4

– Alex Schroeder 2016-04-11 07:03 UTC

---

OK, I think it mostly worked. The only problem I have is that the Microsoft thing thinks AltGr is Alt+Ctrl and so I have to press both modifiers to reach all the extra key bindings. We’ll see how annoying this turns out to be.

– Alex Schroeder 2016-04-11 07:53 UTC