Как принудительно вызвать событие отпускания клавиши для fn + стрелки (home, end, pgup, pgdn)

Это та же проблема, о которой спрашивали ранее, но« решение »было примерно таким:« проблема исчезла после обновления и reboot », что было чистой случайностью, поскольку я попытался установить ту же версию дистрибутива с обновлениями, но ничего не изменилось. Проблема осталась без внимания.

После двух недель поиска ответов я думаю, что правильно сузил проблему, но я слишком новичок, чтобы понять, как кодировать решение.

Кто-нибудь может помочь?

  1. Я думаю, что проблема связана с загрузкой (BIOS), но я не знаю, как ее изменить (или действительно хочу рискнуть, исходя из того, что я прочитал). Таким образом, решением может быть ...

  2. Способ принудительного освобождения нажатия клавиш. Вот где я застреваю. Поскольку 18.04 заменил файлы "раскладки клавиатуры" файлами "hwdb" и "rules" в каталоге / etc / udev, я пробовал всевозможные варианты добавления строк во вновь созданный файл 70-keyboard-force-release.hwdb и то же, что и файл .rules, но безрезультатно.

SHOWKEY показывает скан и коды клавиш, я просто не знаю, что с ними делать. Я пробовал использовать другие подходящие пары в качестве шаблонов, но не могу понять.

Может ли кто-нибудь помочь мне подобрать правильный код?

ОПИСАНИЕ: Я только что установил LUBUNTU 18.04 LTS x86_64 на новом Dell Inspiron 11-3162, но функция «Home | End | PgUp | PgDn» не работает.

На этой конкретной клавиатуре вы должны нажать Fn + LeftArrow для Home или Fn + RightArrow для End, Fn + UpArrow для PgUp и Fn + DownArrow для PgDn. Самое безумное - это когда я впервые использую одну из этих функций, и она работает. Но если я попытаюсь вернуться «домой» или «закончить» второй раз, ничего не произойдет. Мне нужно перезагрузиться, чтобы сделать это снова в первый раз, а во второй раз ничего.

Кроме того, функциональная клавиша работает с другими функциями ... например, Fn + F2 и F3 увеличивают / увеличивают громкость; Fn + F12 увеличивает яркость экрана; Fn + F1 отключает звук.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Я забыл упомянуть свой дистрибутив: Lubuntu 18.04 на Inspiron 11-3162 с клавиатурой.

Распечатка описания клавиатуры: Keyboard description printout

ПРОБЛЕМА: Это сообщение об этой проблеме с «неразрешенным», которое я описал. Очень хорошее описание: Dell Inspiron 11-3162 Главная | Конец | PgUp | Ключи pgDn не работают

ЭТО BIOS? Другой пользователь с похожей проблемой, но заставляет меня думать, что это BIOS (из-за комментариев): Клавиша Fn залипает

BIOS ИЛИ GRUB? Другой пользователь с похожей проблемой, но из-за комментариев заставляет меня думать, что это BIOS или GRUB; Я пробовал решения здесь безрезультатно: Получение функциональных клавиш, работающих на ноутбуке Samsung RV510

НЕИСПРАВНОЕ РЕШЕНИЕ: Это то, что я считаю самой близкой попыткой, но я не могу заставить ее работать. https://github.com/arduino/dfu-utils-cross/blob/master/eudev-3.1.5/hwdb/60-keyboard.hwdb

Нечто подобное есть по адресу: https://www.dell.com / community / Linux-General / Dell-Inspiron-3179-keyboard-not-send-KEY-RELEASE-events-key-up / td-p / 5114299

Я пробовал:

IN etc / udev / hwdb :

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pn*Inspiron 11-3162:pvr*
KEYBOARD_KEY_c9=!pageup
KEYBOARD_KEY_d1=!pagedown
KEYBOARD_KEY_c7=!home
KEYBOARD_KEY_cf=!end

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pn*
KEYBOARD_KEY_0xe0 0x49=!pageup
KEYBOARD_KEY_0xe0 0x51=!pagedown
KEYBOARD_KEY_0xe0 0x47=!home
KEYBOARD_KEY_0xe0 0x4f=!end

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pn*
KEYBOARD_KEY_0x49=!pageup
KEYBOARD_KEY_0x51=!pagedown
KEYBOARD_KEY_0x47=!home
KEYBOARD_KEY_0x4f=!end

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pn*
KEYBOARD_KEY_0x49=!104
KEYBOARD_KEY_0x51=!109
KEYBOARD_KEY_0x47=!102
KEYBOARD_KEY_0x4f=!107

IN /etc/udev/rules.d:

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:prn*
KEYBOARD_KEY_c9=!104
KEYBOARD_KEY_d1=!109
KEYBOARD_KEY_c7=!102
KEYBOARD_KEY_cf=!107

Почти все остальное я помещаю ниже на случай, если какая-либо информация вам поможет. Как младенец Linux, я нашел это полезным, но, возможно, я просто гоняюсь за своим хвостом по кругу. Я думаю, мне нужно где-нибудь пройти курс, но это уже другая тема. В любом случае, вот еще кое-что, что я пробовал:

НЕУДАЧНОЕ РЕШЕНИЕ: Я попробовал решение здесь, но я настолько неграмотен, что не уверен, правильно ли я перевел «решение». https://github.com/lu-zero/udev/blob/master/src/keymap/95-keyboard-force-release.rules

Я пробовал: Отредактируйте / usr / lib / udev / rules. d / 70-keymap.rules, добавьте следующую строку к другим специфическим для Samsung строкам

ACTION=="remove", GOTO="force_release_end"
SUBSYSTEM!="serio", GOTO="force_release_end"
KERNEL!="serio*", GOTO="force_release_end"
DRIVER!="atkbd", GOTO="force_release_end"

ENV{DMI_VENDOR}=="[iI][nN][sS][pP][iI][rR][oO][nN]*", ATTR{[dmi/id]product_name}=="11-3162*", RUN+="keyboard-force-release.sh $devpath Inspiron 11-3162"

LABEL="force_release_end"

НЕУДАЧНОЕ РЕШЕНИЕ: Это была еще одна похожая статья, которую я безуспешно пытался использовать для другого решения. http://natjohan.info/linux-on-samsung-np900x3c.html

НЕУДАЧНОЕ РЕШЕНИЕ: Вот еще одно решение, которое я попробовал, называется xdotool. https://unix.stackexchange.com/questions/60007/how-to-force-release-of-a-keyboard-modifiers/64716 Я ничего не смог заставить работать после попытки:

sudo xdotool keyup
sudo xdotool keyup --clearmodifiers
sudo xdotool key --clearmodifiers
sudo xdotool --clearmodifiers

НЕИСПРАВНОЕ РЕШЕНИЕ: Попытка сделать что-то с раскладкой клавиатуры была пустой тратой, которую я понял, потому что она была заменена на / etc / udev / hwdb и / etc / udev / rules, но я попытался использовать некоторую информацию из этой статьи, чтобы придумать решение безрезультатно: https: //ask.fedoraproject.org / ru / question / 37598 / how-to-create-custom-keymaps-now-that-libudevkeymap-is going /

ПРЕДЫСТОРИЯ: Это была одна из самых полезных статей для меня, но я недостаточно знаю чтобы еще придумать правильный код. ПРЕДЫСТОРИЯ: Так как мой опыт работы с Linux составляет всего около 3 недель после того, как я был ведомым устройством Windows со времен DOS, я нашел полезными следующие статьи, которые в некоторой степени касаются проблемы. ЗАДНИЙ ПЛАН:Я использовал что-то под названием showkey, чтобы показать коды клавиш, которые показывают нажатия без выпуска:

showkey output: showkey output

Вы можете видеть, как происходит первое нажатие клавиши, но поскольку нет события отпускания, оно продолжается до тех пор, пока я не нажму любую другую клавишу. Последовательность попыток нажатия клавиш: fn + стрелка влево (home, код 102), fn + стрелка вправо (конец, код 107), fn + стрелка вверх (pgup, код 104) и fn + стрелка вниз (pgdn, код 109). Нижняя часть страницы вывода предназначена для нажатия только стрелок, чтобы показать, что у них разные коды и что у них есть события выпуска сразу после события печати. В том же порядке, что и выше (влево, вправо, вверх, вниз), коды 105,106,103,108 (это то же самое, что показано ниже в evtest)

ПРЕДЫСТОРИЯ: Я использовал то, что называется evtest, чтобы показать коды клавиш и события: Порядок нажатия клавиш: fn + стрелка влево (home, код 105), fn + стрелка вправо (конец, код 106), fn + стрелка вверх (pgup, код 103) и fn + стрелка вниз (pgdn, код 108),

Вывод Евтеста: Evtest output

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: После просмотра видео на ytube: «3.3: События (mousePressed, keyPressed) - Учебное пособие по обработке» от The Coding Train, возможно, мне важно указать, что мне действительно нужна эта функциональность со стрелкой fn + для использования дома, end, pgup, pgdn в Excel и Word. Хотя было бы неплохо работать в таких вещах, как мой файловый менеджер, синаптика, Интернет и все остальное, мой приоритет - в Excel и Word.

ОБНОВЛЕНИЕ ИНФОРМАЦИИ: я забыл упомянуть еще одну причину, по которой, я думаю, это может быть проблема BIOS, заключается в том, что мой Inspiron 11-3162 имеет сертифицированный выпуск Ubuntu 14.04, но BIOS для него - 1.0, а мой - 2.2.Я попытался установить этот дистрибутив, но безуспешно. Я также где-то читал, что в BIOS есть инструкции по оборудованию, включая клавиатуру. ИТ-специалист, где я работаю (Emory Univ), сказал мне, что, возможно, BIOS либо не отправляет отпускание клавиш для стрелок fn +, потому что Windows это не нужно. Он также сказал мне, что возможно, что BIOS не загружается должным образом, если обнаруживает ОС, отличную от Windows (спасибо Microsoft за намеренное усложнение разрыва подчиненных цепочек Windows)

ОБНОВЛЕНИЕ ИНФОРМАЦИИ: извините за эти частые обновления, но Я делаю их в духе надежды, что они помогут кому-то в сообществе Linux ... особенно, поскольку я все еще пытаюсь решить эту проблему сам. Во всяком случае, вот ссылка на кого-то, кто намного более продвинут, чем я (это не сложно), у кого такая же проблема и кто пробовал многие из моих вещей - тоже безрезультатно.

1
задан 22 May 2018 в 14:28

2 ответа

Столкнулся с точно такой же проблемой на Lubuntu 20.04. И я пишу это, чтобы сообщить, что сработало для меня (спасибо https://www.dell.com/community/Linux-General/Dell-Inspiron-3179-keyboard-not-sends-KEY-RELEASE -events-key-up/mp/5114301/highlight/true#M15475)

Во-первых, много полезной информации можно почерпнуть из документации в /lib/udev/hwdb.d/60-keyboard. файл hwdb. Именно здесь я узнал о «клавиатуре AT» и списке кодов сканирования «принудительного выпуска», поддерживаемом клавиатурой AT (чтобы заставить драйвер синтезировать событие выпуска, когда этого нельзя ожидать от оборудования). .

Внесенные изменения:

  1. Создан файл /etc/udev/hwdb.d/70-keyboard.hwdb со следующим содержимым:
### for Dell Inspiron 11-3168

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*3168:pvr*
 KEYBOARD_KEY_c7=!home                              # Fn+Left Home
 KEYBOARD_KEY_cf=!end                               # Fn+Right End
 KEYBOARD_KEY_c9=!pageup                            # Fn+Up Page Up
 KEYBOARD_KEY_d1=!pagedown                          # Fn+Down Page Down
  1. Выполните следующие команды, чтобы активировать изменения:
# systemd-hwdb update
# udevadm trigger --verbose /dev/input/event4
  1. ]Перезагрузите компьютер (хотя не уверен, что это действительно необходимо)

Надеюсь, это поможет!

0
ответ дан 4 July 2020 в 03:57

Я думаю, что есть 2 способа сделать это:

  1. Использование командной строки: а) Получите вывод вашей карты ключей xkbcomp -xkb $DISPLAY xkbmap и найдите ключи, которые вы собираетесь обменять б) Затем замените код xcape -e 'Caps_Lock=Escape' (Caps_Lock и Escape даны в качестве примера)

  2. Используя приложение с графическим интерфейсом: а) Установите приложение из репозитория sudo apt install xbindkeys xbindkeys-config б) Запустите графический интерфейс xbindkeys-config и измените его соответствующим образом.

Надеюсь, это поможет

0
ответ дан 4 July 2020 в 05:15

Другие вопросы по тегам:

Похожие вопросы: