LINUX.ORG.RU

Включение/выключение тачпада срабатывает два раза

 , , , ,


0

1

Привет. Может кто даже сталкивался с такой проблемой.

Есть ноутбук (MSI), есть тачпад, есть кнопка включения/выключения тачпада на ноутбуке. Проблема в том что ноутбук сам умеет включать и выключать тачпад (аппаратно) и посылает событие включения/выключения системе, система (DE) реагирует на это событие и тоже включает/выключает тачпад (программно).

Случаются ситуации, когда аппаратно тачпад включен, но выключен программно. Нажимаем кнопку переключения: аппаратно тачпад выключается и включается программно. То есть включить тачпад никак нельзя.

С аппаратным переключателем вряд ли что-то получится сделать, а вот можно ли отключить реакцию системы на эту кнопку? В xev keycode не определяется, в DE не настраивается (ну или где-то далеко настраивается). Использую Fedora и Gnome 3. Гном запоминает состояние тачпада, а вот ноутбук нет. Получается после перезагрузки аппаратно тачпад включен, а программно может быть и выключен. Сейчас стоит костыль — в автозагрузке делается /usr/bin/gsettings set org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled true.

Хочется без костылей и в идеале хотелось бы чтобы состояние тачпада запоминалось. Помоги, ЛОР.

Ответ на: комментарий от NightSpamer

Да вот сам маленько разобрался. Выяснил что эта клавиша генерирует событие XF86TouchpadToggle. xmodmap -pke | grep XF86TouchpadToggle подсказал что мне нужен 199 keycode. Дальше в ~/.Xmodmap отключил кнопку:

$ echo 'keycode 199 =' >> ~/.Xmodmap
$ xmodmap ~/.Xmodmap
На первые 5 минут этого хватает, кнопка действительно больше не реагирует, а потом опять включается почему-то :( Ищу виновного вот.

Black_Roland ★★★★
() автор топика

Другой костыль сделал (рабочий), но легче от этого не стало.

diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 9604aed..95e81f8 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -2025,7 +2025,7 @@ do_action (GsdMediaKeysManager *manager,
 
         switch (type) {
         case TOUCHPAD_KEY:
-                do_touchpad_action (manager);
+                do_touchpad_osd_action (manager, TRUE);
                 break;
         case TOUCHPAD_ON_KEY:
                 do_touchpad_osd_action (manager, TRUE);

Black_Roland ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.