Byta plats på Escape och Caps Lock

cPS LOCK ÄR EN FÖRBnnat störig tangent innan man lär sig låta bli den. Lyckligtvis går den att flytta på, utan att man för den sakens skull ska behöva pilla med själva tangentbordet.

Ett sätt att göra detta i X11 beskrev jag för ett drygt år sedan. Metoden fungerar dock inte längre, åtminstone inte i OpenBSD 5.2-current, så här kommer en uppdatering.

Utanför X11

All sin tid vid tangentbordet spenderar man ju inte i X11. I OpenBSD är det wscons (4) som mappar tangenter för konsolen, och därför är det wsconsctl.conf (5) som ska redigeras.

De här två raderna bakar kakan:

keyboard.map+="keycode 1 = Caps_Lock"
keyboard.map+="keycode 58 = Escape"

När det receptet är på plats i /etc/wsconsctl.conf växlas tangenterna från och med nästa uppstart. Kan du inte hålla dig till dess så ska du omedelbart mata wsconsctl (8) med samma rader:

$ wsconsctl keyboard.map+="keycode 1 = Caps_Lock"
$ wsconsctl keyboard.map+="keycode 58 = Escape"

Vill du göra samma sak i Linux, då får du vända dig till en sökmotor, till något lämpligt forum eller RTFM (om det finns någon). Gissningsvis körs tangentbordsmappningen någonstans i uppstartsprocessen, t.ex. /etc/init.d eller motsvarande, så din upptäcktsresa kan börja där.

Inuti X11

Ovanstående är dock till föga glädje när X11 väl startar. X11 mappar nämligen om tangentbordet vid uppstart. Till råga på allt känner OpenBSD:s X11 inte längre igen tangentbordet som ett svenskt sådant om ovanstående inställningar är gjorda, vilket innebär att man påtvingas ett engelskt tangentbord. (Egentligen är det wscons som rapporterar mappningen som "user" i stället för "sv" så snart den förändras.)

Ett steg framåt men två tillbaka.

Nå, vi ordnar först så att det svenska tangetbordet kommer tillbaka, genom att placera följande rad i ~/.xinitrc, förslagsvis mycket tidigt, men inte först, i filen:

/usr/X11R6/bin/setxkbmap se

Kör även kommandot i ett terminalfönster för att slippa starta om X11.

Nu har vi vårt svenska tangentbord tillbaka, men förtretligt nog sitter Escape och Caps lock precis där de brukar igen – X11 gör ju som sagt sin egen tangentbordsmappning. För att lägga oss i denna använder vi xmodmap (1).

Processen är enkel:

$ xmodmap -e 'clear Lock'
$ xmodmap -e 'keysym Escape = Caps_Lock'
$ xmodmap -e 'keycode 0x42 = Escape'

Nu vill man förstås inte gärna göra det där varje gång man startat X11, så vi permanentar inställningarna genom att lägga dem i filen ~/.Xmodmap, som vi sedan kör från ~/.xinitrc.

Eventuellt har du redan någon slags anordning i din ~/.xinitrc som använder .Xmodmap, .xmodmap eller i värsta fall någon helt annan fil. Kolla först detta, och utgå sedan från vad du redan har, om du har något.

Filen ~/.Xmodmap (eller motsvarande) ska innehålla följande:

I ~/.xinitrc ser det i stället ut så här:

Tänk på att tjo-pangen (dvs "#!/bin/sh") ska vara först i filen. Sedan har man förstås mycket mer i en vettig ~/.xinitrc, men om det ska jag skriva först i ett senare inlägg.

Om du inte hade någon ~/.xinitrc är det lämpligt att du skaffar en innan du ändrar i den. Det kan du göra genom att kopiera /etc/X11/xinit/xinitrc eller motsvarande till ~/.xinitrc.

Det var det hela. Nu har du Escape i samma kvarter som vänster lillfinger, och behöver knappt lyfta det för att stänga dialogrutor, avbryta sidladdningar eller använda en vettig texteditor. Gött!

(För säkerhets skull upprepar jag även tipset från mitt tidigare inlägg: I Windows kan man göra samma tangentbyte med SharpKeys.)