Linux: Apple Wireless A1314 Fn-Taste nicht registriert, sieht nach einem Softwarefehler aus

Linux: Apple Wireless A1314 Fn-Taste nicht registriert, sieht nach einem Softwarefehler aus

Ich versuche, mein Apple Wireless Keyboard mit meinen Kubuntu-Systemen einzurichten. Dabei handelt es sich um PC-Hardware mit Intel Atom bzw. Intel i5. Die Tastatur hat ein US-Tastaturlayout und auf der Rückseite steht die Modellnummer A1314. Sie benötigt zwei AA-Batterien. Ich sage das, weil es anscheinend mehrere Typen des Modells A1314 gibt.

Ich habe dies auf einem 10.04-, 11.04-, 11.10- und 12.04-System ohne Erfolg versucht. Jedes Mal, wenn ein Bluetooth-Dongle und das KDE-Bluetooth-Benachrichtigungsleisten-Applet verwendet werden, kann die Tastatur angeschlossen werden. In beiden Fällen wird sie als „Apple Wireless Keyboard“ angezeigt.

Fast alles funktioniert wie erwartet, tatsächlich tippe ich gerade darauf. Aber eine Sache funktioniert nicht: Die Fn-Taste. Ich möchte Fn + Pfeil nach unten als PgDn / Bild ab verwenden, ich verstehe, dass dies das Standardverhalten auf Apple-Tastaturen ist. Und natürlich möchte ich dasselbe für Bild auf, Pos1 und Ende. In meinem Beispiel bleibe ich bei Bild ab.

Ich habe das Tool xev verwendet, um die Tastencodes anzuzeigen, die das System empfängt. Wenn ich Fn drücke, passiert nichts und es wird nichts registriert. Wenn ich Fn + Pfeil nach unten drücke, registriert xev nur den Pfeil nach unten. Hier ist die Ausgabe meines 11.04-Systems zur Veranschaulichung:

Nur die Fn-Taste drücken: keine Ausgabe

Pfeiltaste nach unten drücken: KeyPress-Ereignis, Seriennummer 36, synthetisch NEIN, Fenster 0x4400001, Root 0x15d, Subw 0x4400002, Zeit 2699773, (44,45), Root:(1352,298), Status 0x10, Tastencode 116 (Keysym 0xff54, Down), gleicher Bildschirm JA, XLookupString gibt 0 Bytes aus: XmbLookupString gibt 0 Bytes aus: XFilterEvent gibt zurück: False

KeyRelease event, serial 36, synthetic NO, window 0x4400001,
    root 0x15d, subw 0x4400002, time 2699860, (44,45), root:(1352,298),
    state 0x10, keycode 116 (keysym 0xff54, Down), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Drücken Sie gleichzeitig die Tasten Fn und Pfeil nach unten:

KeyPress event, serial 36, synthetic NO, window 0x4400001,
    root 0x15d, subw 0x4400002, time 2701548, (44,45), root:(1352,298),
    state 0x10, keycode 116 (keysym 0xff54, Down), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4400001,
    root 0x15d, subw 0x4400002, time 2701623, (44,45), root:(1352,298),
    state 0x10, keycode 116 (keysym 0xff54, Down), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Ich habe dieses Forum und andere Linux-bezogene Foren stundenlang durchsucht, aber noch immer keine Lösung gefunden. Ich habe hauptsächlich Ratschläge gefunden, wie ich das Problem beheben kann, wenn ich einen echten Apple-Laptop oder -Desktop verwende, aber das habe ich nicht. Sie sagten, ich solle etwas wie das Folgende versuchen

echo 2 > /sys/module/hid_apple/ ...Da auf meinen Systemen jedoch kein hid_apple-Verzeichnis vorhanden ist, musste ich dies modprobe hid_applezuerst tun. Das hat auch nicht geholfen.

Ich habe kein Problem damit, einige Konfigurationsdateien zu ändern oder meinen eigenen gepatchten Kernel zu kompilieren, falls das nötig ist.

Aktuell steht mir ein 10.04 und 12.04 System zum Testen zur Verfügung.

Das gleiche Problem tritt auf, wenn ich mit Windows 7 verbunden bin. Die Fn-Taste tut immer noch nichts, weder allein noch in Kombination mit anderen Tasten. Mit etwas Herumprobieren mit AutoHotkey konnte ich bestätigen, dass die Taste als gedrückt registriert, aber standardmäßig ignoriert wird. Ein benutzerdefiniertes AutoHotkey-Skript kann das beheben. Aber AutoHotkey ist nur für Windows, ich möchte mein Problem unter Linux beheben.

Angeschlossen an ein iPad 2 funktioniert es nur in Kombination mit den Tasten F1-F12. Nicht mit den Pfeiltasten. Wenn der Bildschirm des iPads ausgeschaltet ist und ich nur die Fn-Taste drücke, wird der Bildschirm eingeschaltet, sodass die Taste selbst als gedrückt registriert wird.

Um meine Frage zusammenzufassen: Kann mir irgendjemand helfen, die Bild-auf-, Bild-ab-, Pos1- und Ende-Tasten auf dieser Tastatur zum Laufen zu bringen, wenn ich dafür eine Fn-Taste verwenden muss, die derzeit nicht registriert ist?

Bearbeitung 4. Juli 2012: Immer noch kein Glück. Dachte, vielleicht stört KDE etwas, aber hier in XFCE besteht das Problem weiterhin.

Hier ist eine Ausgabe von Syslog:

Jul  4 13:15:31 comp kernel: [ 1561.377849] usb 1-1.4: new full-speed USB device number 8 using ehci_hcd
Jul  4 13:15:31 comp kernel: [ 1561.449864] usb 1-1.4: device descriptor read/64, error -32
Jul  4 13:15:31 comp kernel: [ 1561.629402] usb 1-1.4: device descriptor read/64, error -32
Jul  4 13:15:32 comp kernel: [ 1561.805100] usb 1-1.4: new full-speed USB device number 9 using ehci_hcd
Jul  4 13:15:32 comp bluetoothd[911]: HCI dev 0 registered
Jul  4 13:15:32 comp bluetoothd[911]: Listening for HCI events on hci0
Jul  4 13:15:33 comp bluetoothd[911]: HCI dev 0 up
Jul  4 13:15:33 comp bluetoothd[911]: Adapter /org/bluez/911/hci0 has been enabled
Jul  4 13:15:44 comp kernel: [ 1573.712323] input: Apple Wireless Keyboard as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/bluetooth/hci0/hci0:42/input8
Jul  4 13:15:44 comp kernel: [ 1573.712569] generic-bluetooth 0005:05AC:0255.0006: input,hidraw3: BLUETOOTH HID v0.50 Keyboard [Apple Wireless Keyboard] on 00:09:DD:50:75:A1

Antwort1

Ich habe die FN-Taste endlich zum Laufen gebracht! Dazu musste ich mein eigenes Kernelmodul kompilieren. Ich glaube, ich hätte es einfacher lösen können, aber so habe ich es gemacht:

Ich habe diesen Fehler gefunden:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/942184

Der allererste Patch, der auf dieser Seite gepostet wurde, enthielt meine Lösung:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/942184/+attachment/2788714/+files/alu2011.patch

Dann habe ich meine Module gemäß dem Artikel und dem ersten Kommentar auf http://www.codewhirl.com/2012/04/how-to-compile-a-single-module-in-ubuntu-linux/

Ich habe nicht den gesamten Patch angewendet, sondern nur die Zeilen USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSImit der ID 0x0255, da diese ID in den Kernelquellen fehlte, die ich erhalten habe. Ich habe dies versucht, weil mir zuvor die Nummer 0255 im Syslog aufgefallen war:generic-bluetooth 0005:05AC:0255.0006: input,hi...

Ich verstehe nicht ganz, wie ich das gemacht habe, aber es funktioniert!

Hier ist eine Xev-Ausgabe beim Drücken der linken Pfeiltaste, zuerst mit und dann ohne Fn-Taste:

KeyPress event, serial 34, synthetic NO, window 0x3000001,
    root 0x15d, subw 0x3000002, time 1502136, (40,28), root:(1235,427),
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x3000001,
    root 0x15d, subw 0x3000002, time 1502635, (40,28), root:(1235,427),
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x3000001,
    root 0x15d, subw 0x3000002, time 1504023, (40,28), root:(1235,427),
    state 0x0, keycode 113 (keysym 0xff51, Left), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x3000001,
    root 0x15d, subw 0x3000002, time 1504235, (40,28), root:(1235,427),
    state 0x0, keycode 113 (keysym 0xff51, Left), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Die Fn-Taste ist nicht als separate Taste registriert, mit der ich beim Xmodmapping Spaß haben kann, aber für meine Ziele reicht das aus, nämlich eine Apple-Tastatur durch Neuzuordnung einiger Tasten in eine Happy-Hacking-ähnliche Tastatur zu verwandeln.

Es scheint, dass dies alles ein bekannter Fehler ist:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911064

Antwort2

Meine Tastatur ist die gleiche. Hier ist der Patch, den ich für den Linux-Kernel 3.4 erstellt habe, damit die Taste „fn“ funktioniert.

diff -aur linux-3.4.pristine/drivers/hid/hid-apple.c linux-3.4.new/drivers/hid/hid-apple.c
--- linux-3.4.pristine/drivers/hid/hid-apple.c  2012-07-15 04:45:54.489209371 -0300
+++ linux-3.4.new/drivers/hid/hid-apple.c   2012-07-15 04:41:46.986193078 -0300
@@ -455,6 +455,8 @@
    { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO),
        .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
            APPLE_ISO_KEYBOARD },
+   { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI),
+       .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
    { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO),
        .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
            APPLE_ISO_KEYBOARD },
diff -aur linux-3.4.pristine/drivers/hid/hid-core.c linux-3.4.new/drivers/hid/hid-core.c
--- linux-3.4.pristine/drivers/hid/hid-core.c   2012-07-15 04:45:54.489209371 -0300
+++ linux-3.4.new/drivers/hid/hid-core.c    2012-07-15 04:41:46.986193078 -0300
@@ -1382,6 +1382,7 @@
    { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
    { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
    { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
+   { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI) },
    { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO) },
    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },

verwandte Informationen