Клавиатура Apple не работает с Bluetooth, но работает с USB

Клавиатура Apple Magic (беспроводная) не работает правильно, клавиша Fn не работает, по умолчанию клавиши F1-F12 не являются медиа-клавишами.

Следующее не решает проблему: echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode

Я подумал, что он не использует один и тот же драйвер для USB и Bluetooth, и это действительно так:

  • USB использует: usbhid
  • Bluetooth использует: hid-generic

Я наткнулся на этот репозиторий водителя hid-apple, который, кажется, решает проблему, описанную в точности как тот, который у меня есть. Но это с 2011 года, и я не уверен, что это исправит это, потому что у меня уже есть это:

$ lsmod | grep hid_apple
hid_apple  16384  0
hid        122880  7 
hidp,usbhid,hid_apple,hid_generic,hid_logitech_dj,hid_logitech_hidpp

Таким образом, кажется, что Bluetooth должен использовать драйвер hid_apple или usbhid?

Если так: Как я могу настроить, какой драйвер использует моя клавиатура Bluetooth?

Я также обнаружил следующую ошибку, которая, кажется, была исправлена ​​в прошлом. https://bugzilla.kernel.org/show_bug.cgi?id=99881#c41

Я использую Ubuntu 18.04 с ядром 4.17.0-rc4 [+1121]. Я использую это ядро, потому что оно единственное, что делает мою функцию Bluetooth / Wi-Fi чипом Realtek 8822be.

2
задан 9 May 2018 в 01:38

3 ответа

Клавиша fn на Моя модель клавиатуры Apple bluetooth A1644 уменьшала яркость экрана (символ клавиш был XF86MonBrightnessDown). Меня интересовало изменение вкладок в Firefox с помощью Ctrl + PageDown и Ctrl + PageUp , что требует fn и стрелки вверх / вниз для ( PageUp / PageDown ). Решение (, вдохновленное этим обменом ) заключалось в замене fn на клавишу-модификатор ( Shift , AltGr или Shift + AltGr ), а затем установите соответствующий символ клавиш для стрелок вверх / вниз. Я использовал xev, чтобы выяснить, что код клавиши для fn - 232 (и 111 и 116 для стрелок вверх и вниз соответственно). Как упоминалось в ссылке, первый символ клавиши (имя символа или функциональной клавиши) после знака равенства - это тот, который соответствует пустой клавише, затем идет тот, который соответствует клавише с Shift , затем AltGr и, наконец, с помощью Shift + AltGr . Затем я использовал следующее для отображения и настройки модификатора:

xmodmap -e 'keycode 232 = Mode_switch'
xmodmap -e 'keycode 111 = Up Up Prior'
xmodmap -e 'keycode 116 = Down Down Next'

Вместо стрелок вверх (111) и вниз (116) вы можете использовать это для F1 - F12 .

0
ответ дан 20 March 2020 в 17:16

Ядро Linux 5.6 исправил это. Существует также сторонний модуль hid-apple-patched, который включает в себя исправление и предоставляет больше возможностей для замены ключей и может быть установлен на любое ядро.

0
ответ дан 1 April 2020 в 09:43

Следуя аналогичным шагам, упомянутым здесь, я обновил ядро ​​Ubuntu до версии 5.6.3 (5.6 имеет проблемы с подключением к Wi-Fi), и теперь моя клавиатура работает без сбоев.

Шаги, упомянутые в приведенной выше ссылке, следующие (для обновления до 5.6.3):

  • В зависимости от типа вашей ОС загрузите и установите пакеты по очереди:

    1. linux-headers-5.6.3-xxxxxx_all .deb
    2. linux-headers-5.6.3-xxx-generic(/lowlatency)_xxx_amd64.deb
    3. linux-modules-5.6.3-xxx-generic(/lowlatency)_xxx_amd64.deb
    4. linux-image -xxx-5.6.3-xxx-generic(/lowlatency)_xxx_amd64.deb

Выберите generic для обычной системы и lowlatency для системы с низкой задержкой (например, для записи аудио), amd64 для 64-битной системы или armhf, arm64 и т. д. для других типов ОС.


Кроме того, вы можете загрузить и установить бинарные файлы ядра с помощью команд терминала (открыть терминал с помощью Ctrl+Alt+T):

Для 64-битной ОС:

cd /tmp/

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.3/linux-headers-5.6.3-050603_5.6.3-050603.202004080837_all.deb

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.3/linux-headers-5.6.3-050603-generic_5.6.3-050603.202004080837_amd64.deb

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.3/linux-image-unsigned-5.6.3-050603-generic_5.6.3-050603.202004080837_amd64.deb

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.3/linux-modules-5.6.3-050603-generic_5.6.3-050603.202004080837_amd64.deb

sudo dpkg -i *.deb

Я использовал это для подписи мое ядро, потому что оно жаловалось на неверную подпись при загрузке (из-за активации безопасной загрузки). Аналогичная и более подробная инструкция по подписанию модулей была упомянута в блоге Ubuntu здесь.

-1
ответ дан 10 April 2020 в 23:26