October 31, 2010
Как включать/выключать тачпад в Линуксе на Dell Latitude

Мой новый Dell Latitude всем меня радует. Одна неприятность — когда печатаю текст, часто задеваю тачпад пальцами, что приводит к непредсказуемым перемещениям курсора, случайным выделениям текста и т.п. Отключать его совсем через BIOS я не хочу, потому что даже при наличии мыши часто пользуюсь тачпадом (точнее трекпоинтом) чтобы, например, быстро выделить текст не отрывая рук от клавиатуры.

Порывшись в Интернете, я нашел разные инструкции как в Ubuntu выключать и включать тачпад. Ubuntu видит тачпад моего ноутбука как мышь PS/2 Generic Mouse, поэтому в Pointing Devices закладка Touchpad отсутствует. Инструкция, приведенная на сайте Ubuntu, так же не помогла. Вариант, приведенный в форуме с использованием команд sudo modprobe -r psmouse для выключения и sudo modprobe psmouse для включения тачпада мне тоже не понравился.

Наконец, я нашел вариант, который меня устроил.

Для начала нужно открыть окно терминала и выполнить команду xinput --list и определить как в “Иксах” называется тачскрин:

~$ xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ PS/2 Generic Mouse                        id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_2M               id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=13   [slave  keyboard (3)]

Вон он — “PS/2 Generic Mouse”. Теперь я могу отключить тачпад командой xinput set-prop 'PS/2 Generic Mouse' 'Device Enabled' 0 и включить его обратно командой xinput set-prop 'PS/2 Generic Mouse' 'Device Enabled' 1. Можно эти команды “повесить” на какие-нибудь горячие клавиши, но мне захотелось чуть больше удобства — чтобы тачпад включался/выключался одной и той же комбинацией клавиш.

Нижеприведенный скрипт работает как переключатель — он выключает тачпад если он включен, и включает если выключен:

#!/bin/bash
LOCKFILE="/tmp/touchpad_off"
if [[ -f "$LOCKFILE" ]]
then
    xinput set-prop 'PS/2 Generic Mouse' 'Device Enabled' 1
    rm $LOCKFILE
else
    xinput set-prop 'PS/2 Generic Mouse' 'Device Enabled' 0
    touch -f $LOCKFILE
fi

При выключении тачпада скрипт создает лок-файл в каталоге /tmp, по наличию или отсутствию которого определяется состояние тачпада. В “исходном состоянии” после включения компьютера каталог /tmp пуст, а тачпад включен.

Этот скрипт я положил в каталог ~/bin, доступный по PATH (размуеется, сделав его исполняемым). Затем открыл окно Keyboard Shortcuts (меню System/Preferences/Keyboard Shortcuts), нажал кнопку Add внизу окна, ввел название: “Switch touchpad ON/OFF”, а в поле команды ввел название своего скрипта: switchtouchpad и назначил комбинацию клавиш Alt-F3 для его запуска.

  1. freekir said: А что там на счет отдельного блога, передумал?
  2. dmych posted this