Cover Image

Keychron K2 v2 mekanisk tastatur i Linux

 Wed 2023-06-07    Linux

Jeg har et Keychron K2 v2 mekanisk tastatur jeg stort sett er fornøyd med, men det er etpar ting som skaper friksjon.

Problem 1

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.

Problem 2

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