Jeg har et Keychron K2 v2 mekanisk tastatur jeg stort sett er fornøyd med, men det er etpar ting som skaper friksjon.
Mappingen av Home/End/PgUp/PgDn til høyre på tastaturet.
Keychron fant ut at å ha dem arrangert vertikalt slik:
PgUp
PgDn
Home
End
Pil høyre
var en god idé. Jeg har i utgangspunktet ikke noe i mot denne arrangeringen, men når det ikke går an å få tak i keycaps som matcher profilen på de respektive radene, blir jeg opptrekt.
Løsningen var å remappe tastene slik at funksjonen blir den som er illustrert på keycapen. Jeg valgte derfor å remappe PgUp til Home, PgDn til End, Home til PgUp og End til PgDn. Nei, det blir ikke en uendelig loop av det.
For å slippe å gjøre dette manuelt hver gang jeg starter maskinen på nytt, laget jeg et script:
remap.sh
#!/bin/sh
/bin/xmodmap -e 'keycode 112 = Home'
/bin/xmodmap -e 'keycode 117 = End'
/bin/xmodmap -e 'keycode 110 = Page_Up'
/bin/xmodmap -e 'keycode 115 = Page_Down'
Og, for å slippe å måtte kjøre dette scriptet manuelt, la jeg det inn i en crontab, bare for å finne ut at det ikke funker siden xmodmap krever at en grafisk session er aktiv og innlogget.
Så da opprettet jeg en X-GNOME-Desktop-fil som kjører dette for meg:
.config/autostart/remapkeys.desktop
[Desktop Entry]
Type=Application
Name=Remap Home/End/PgUp/PgDn on Keychron K2V2
Exec=~/bin/remap.sh
Icon=system-run
X-GNOME-Autostart-enabled=true
Når maskinen starter på nytt kjøres da dette scriptet automatisk, remapper Home/End/PgUp/PgDn for meg slik at de fysiske tastene stemmer overens med hva som skjer.
Tastaturet mitt er et 75%, dvs ca laptopstørrelse og layout, med F-taster. Jeg vurderte et 60/65%, men kom frem til at jeg bruker F-tastene såpass mye at jeg ikke orker å måtte styre med layers og funksjonswitchtaster og sånt fjas. I etterpåklokskapens navn innser jeg at jeg burde kjøpt et TKL i stedet da jeg savner navigasjonsclusteret mer enn jeg trodde jeg ville, men det får bli neste gang.
Uansett - F-tastene fungerer ikke under Linux enten man trykker Fn eller ei, de fungerer bare som multimediekontrollertaster og slike ting.
Det viser seg dog at tastaturet identifiserer seg som et Apple-tastatur og Fn-tast-håndtering blir da deaktivert (uthevet):
[119989.902631] usb 1-10: new full-speed USB device number 10 using xhci_hcd
[119990.052334] usb 1-10: New USB device found, idVendor=05ac, idProduct=0250, bcdDevice= 1.02
[119990.052347] usb 1-10: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[119990.052353] usb 1-10: Product: Keychron K2
[119990.052358] usb 1-10: Manufacturer: Keychron
[119990.056455] input: Keychron Keychron K2 as /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/0003:05AC:0250.000B/input/input41
[119990.119365] apple 0003:05AC:0250.000B: input,hidraw4: USB HID v1.11 Keyboard [Keychron Keychron K2] on usb-0000:00:14.0-10/input0
[119990.120944] apple 0003:05AC:0250.000C: Fn key not found (Apple Wireless Keyboard clone?), disabling Fn key handling
[119990.121095] input: Keychron Keychron K2 as /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.1/0003:05AC:0250.000C/input/input42
[119990.179522] apple 0003:05AC:0250.000C: input,hiddev1,hidraw7: USB HID v1.11 Keyboard [Keychron Keychron K2] on usb-0000:00:14.0-10/input1
Og siden man da kan få Linux til å behandle det som et Appleprodukt, så kan dette fikses så enkelt som:
echo 0 | sudo tee /sys/module/hid_apple/parameters/fnmode
For å slippe å gjøre dette ved hver oppstart, kan man legge inn parameterne i en modprobe-config:
echo "options hid_apple fnmode=0" | sudo tee -a /etc/modprobe.d/hid_apple.conf