/ domm

I hack Perl for fun and
profit.

Follow me on twitter!
Atom Icom ... on Atom!
<<<<<<<<<<
17.10.2011: Fixing a non-broken search form
30.09.2011: How to get umlauts via AltGr using Debian and xkb

Or: "domm vs umlaut 1:0"

Even though I'm a German native speaker I prefer to type on a QWERTY keyboard. Most of my writing is source code, so I like to have easy access to the various brackets and special characters. Which isn't working on a German QWERTZ keyboard. But not all my writing is source code, and some is even in German, therefor I need to type umlaute from time to time.

I used to map stuff like ü to AltGr-u using xmodmap and something like keycode 30 = u U udiaeresis Udiaeresis. But this stopped working in recent Debian, because apparently xmodmap has been superseded by xkb. At least after an update AltGr-u would produce õ instead of ü.

After a lot of RTFMing, I figured out how to add some custom mappings to a so-called symbols file. I took the easy route and just copied the us file from /usr/share/X11/xkb/symbols/us to /usr/share/X11/xkb/symbols/domm and altered a few lines:

 key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
  key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };

I loaded the new mapping using setxkbmap domm but I still got the dreaded õ.

I kept trying to fix this for a few months, but never got it working, which was rather depressing. Also, I had to resolve to very annoying workarounds if I needed an Umlaut (like switching to a German keyboard layout and trying to remember which Umlaut was where; going to this page and copy'n'paste the damn letter; having MaKo type the letter in our IRC channel, and copy it from there...)

But yesterday I gave it another shot, and I figured it out!! I don't exactly remember the steps I took (because it was 1:30 in the morning..), and I still have not the slightest idea why AltGr-u produced õ, but the secret was to tell xkb to use the Right Alt Key (aka AltGr) as a Level 3 Switch:

setxkbmap domm -option lv3:ralt_switch

These were among the hardest 23 characters I've ever learned...

My complete setxkbmap command (loaded via @.xinitrc) is:

setxkbmap domm -option lv3:ralt_switch -option ctrl:nocaps

ctrl:nocaps turns off CAPS-LOCK (the most useless key on any keyboard) and replaces it with CTRL.

And now, I proudly present: üÜäÄöÖ߀

Comments (via disqus)

13.09.2011: Twin City Perl Workshop
08.09.2011: Note to self: Keep versions in sync
06.09.2011: My Perl-job-offer reply
20.08.2011: YAPC::Europe 2011
12.08.2011: Vienna.pm barbecue aka KAMEL-Grillen
09.08.2011: App::TimeTracker 2.008 released (finally!)
04.07.2011: Deploying a Dancer/Postgres app on dotCloud
04.09.2010: All following posts were imported from use.perl.org
>>>>>>>>>>