När jag nyligen nyinstallerade FreeBSD på min bärbara till 8.1RC2 så fick jag förstås också rätt nya paket och däribland en ny X-server, som nu är version 1.7.5. Plötsligt fungerade inte min xmodmap för Happy Hacking Keyboard!

Jag upptäckte två problem:

  • Höger Meta genererade inte längre keycode 143. Den gav i stället 129 om jag undersökte med i xev(1).

  • Ordningen på Mode_switch och Shift spelade plötsligt roll!

Det första problemet var förstås lätt fixat. Jag ändrade helt enkelt koden i min xmodmap-fil för HHKB. Fixat!

Varför i hela friden X-servern plötsligt anser att just den tangenten har en ny keycode har jag ingen aning om. Om något stort gjorts i ändringen av keycode-hanteringen tycker jag mer saker än just min högra Meta-tangent borde gå sönder. Om någon vet vad det är fråga om får ni gärna berätta för mig.

Det andra problemet tog lite längre tid att lista ut: Jag har alltså Mode_switch på höger Alt på mitt HHKB. Jag trycker på höger Alt i kombination med åäö för att få }{| och med Shift för att få ][\. Jag trycker också på den tillsammans med några andra tangenter.

Plötsligt spelade det alltså roll om jag tryckte ner höger Alt eller Shift-tangenten först. Jag fick inte längre någon Mode_switch-funktion om jag tryckte ner Shift före Alt!

En xev-undersökning visade att höger Alt gav keysym NoSymbol om jag tryckte ner Shift först! Nämen! Jag har alltid sett Mode_switch som en modifier (knuten till Mod5 i mitt fall), ungefär som Control! De skall ju inte byta keysym om man trycker på dem tillsammans med Shift. Det har det i alla fall inte gjort tidigare.

Lösningen är att peta in Mode_shift även på Shift-platsen för xmodmap, resulterande i:

keycode 113 = Mode_switch Mode_switch

Det löste problemet. Enkelt, när jag tänker på det. Duh! Men varför har beteendet ändrats och när gjorde det det? Jag har inte sett något någonstans om det här. Någon?

Hur som helst kanske det här inlägget kan hjälpa andra i samma knipa.