Клавиши F1-F12 не работают

Я купил компактную клавиатуру. F1 = Fn + 1 и F2 = Fn + 2 … введите описание изображения здесь Но клавиши F1-F12 не работают на моем Ubuntu 16.04. Например, F1 делает яркость. Я проверил коды клавиш F1-F12, и они недействительны. Таким образом F1 возвращает 232 keycode (вместо 67).

Я попытался исправить это, используя: xmodmap -e "keycode 232 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1" Но это не помогло. F1 по-прежнему меняет яркость. Я попробовал переназначить другие клавиши F1-F12 и никаких результатов. Xmodmap работает только для не-функциональных клавиш.

Можно ли исправить ключи F1-F12? (Обмен ключами?)

Xmodmap настроен правильно, но F1 все еще меняет яркость :

 $ xmodmap -e "keycode 232 = F1 F1 F1 XF86Switch_VT_1" # IT DON'T HELP!! $ xmodmap -pke # everything is OK! keycode 67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1 F1 F1 XF86Switch_VT_1 keycode 232 = F1 F1 F1 XF86Switch_VT_1 $xev # take a look: XKeysymToKeycode = 67... F1... everything is OK again... KeyRelease event, serial 40, synthetic NO, window 0x5000001, root 0xf5, subw 0x0, time 921326, (236,-87), root:(236,403), state 0x0, keycode 232 (keysym 0xffbe, F1), same_screen YES, XKeysymToKeycode returns keycode: 67 XLookupString gives 0 bytes: XFilterEvent returns: False $sudo evtest Event: time 1497517949.369064, -------------- SYN_REPORT ------------ Event: time 1497517949.458895, type 1 (EV_KEY), code 224 (KEY_BRIGHTNESSDOWN), value 0 $ setxkbmap -print xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete+ledscroll(group_lock)" }; xkb_symbols { include "pc+us+inet(evdev)+capslock(swapescape)" }; xkb_geometry { include "pc(pc105)" }; }; 

PS Также F1-F12 работает нормально в Windows.

Обновить:

Спасибо @dirkt. Пожалуйста, взгляните на детали:

  1. Я использую Ubuntu 16.04.1 LTS Unity
  2. /dev/input/event11: RK61 Bluetooth keyboard
  3. sudo lsof /dev/input/event11 output: acpid , Xorg
  4. evtest --grab /dev/input/eventX результат: вы правы, потому что яркость экрана ноутбука остается неизменной (я нажал Fn + 1 => F1)!

Попытка убить процесс:

  1. sudo kill 757 // убийство процесса
  2. sudo lsof /dev/input/event11 output: Xorg // OK, убитый
  3. Нажатие F1 -> Яркость меняется! // ПОТЕРПЕТЬ НЕУДАЧУ

Вот мой файл rdesc: https://pastebin.com/vxDvwMwr

Вот hexdump: https: // pastebin.com/eT9mNnGV

Также я попытался изменить xkbcomp через xkbcomp и это не поможет.

Пожалуйста, напишите любые мысли. Спасибо!

  • Xmodmap на bashrc не работает
  • выполнять команду по движению указателя, ждать и возвращаться?
  • Больше не удается переключиться на консоль после использования Alt_R в качестве mod4
  • Связь раскладки клавиатуры и xmodmap
  • Странная проблема. Моя левая клавиша со стрелкой не работает и иногда заглушает звук
  • Как изменить неиспользуемый ключ клавиатуры в ключ-модификатор
  • xmodmap для комбинации клавиш - как переключить поведение Fn?
  • Глобальная vim-подобная (hjkl) навигация с numlock & xmodmap?
  • One Solution collect form web for “Клавиши F1-F12 не работают”

    Частичный ответ: отображение xmodmap действительно работает правильно. Как показывает xev , вы получаете keysym 0xffbe который является F1 , как и должно быть.

    Поэтому возникает вопрос (1), почему он все еще меняет яркость и (2) почему он возвращает код ключа 232 (для KEY_BRIGHTNESSDOWN ) вместо клавиши F1 (67).

    Для (1) я подозреваю, что Ubuntu запускает что-то по умолчанию, читает непосредственно из /dev/input вместо обработки X-событий, и это обрабатывает ключ независимо от того, что говорит xmodmap . Вы не сказали, какую рабочую среду вы используете (Gnome?). Вы можете посмотреть lsof для процесса, который напрямую читает источник /dev/input/eventX (у вас есть номер X от evtest , цифры могут меняться при загрузке). Вы также можете протестировать эту теорию, запустив evtest --grab /dev/input/eventX : это сделает эксклюзивной эксклюзивную программу для обработки событий, поэтому, когда вы нажимаете Fn + F1, она все равно должна показывать KEY_BRIGHTNESSDOWN , но яркость вашего Экран ПК / ноутбука должен оставаться неизменным.

    Что касается (2), то по названию бренда это означает, что это клавиатура Bluetooth. Это означает, что это, скорее всего, устройство HID. Вы можете отлаживать, просматривая dmesg чтобы определить соответствующий hidraw устройства hidraw и идентификатор Bluetooth. Тогда сделайте

     mount -t debugfs none /sys/kernel/debug 

    как root, и посмотрите на sys/kernel/debug/hid/*/rdesc для правильного устройства (посмотрите доступные подкаталоги). Если вы не можете понять это, поместите его в pastebin и отредактируйте вопрос по ссылке. Кроме того, выгружайте необработанные события HID с помощью hexdump -C /dev/hidrawX , несколько раз нажимая Fn и F1, F2 и т. Д. Это должно дать вам понять, почему ядро ​​переводит это так, как оно.

    редактировать

    Глядя на дамп hidraw, клавиатура правильно создает сканноды 3a , 3b и т. Д. Для функциональных клавиш, как описано в дескрипторе HID.

    Таким образом, проблема должна быть в слое перевода HID-to-input.

    Вы можете опросить этот слой через ioctls. Для этого я ничего не знаю, но я могу поставить его на github, когда это будет сделано.

    Единственный способ установить это сопоставление, которое я знаю, – через hwdb данных udev hwdb как описано здесь .

    Поэтому я бы догадался, у кого есть установленный пакет, который предоставляет запись в базе данных для сопоставления F1 с контролем яркости, а также программа, которая реагирует на это путем прямого мониторинга /dev/input/event* . Попробуйте посмотреть, можете ли вы найти его в своей системе. lsof может помочь.

    Linux и Unix - лучшая ОС в мире.