LinuxForum.Fans
Тема

Отключение тачпада с клавиатуры

Автор: SamuelLinux 11 сообщений 5326 просмотров
#273029

Здравствуйте.

При печати часто задеваю рукой тачпад, в результате чего курсор (каретка) перемещается в произвольное место документа, усложняя тем самым набор текста.

Возможно ли задать клавиатурную комбинацию, которая позволит мне отключать тачпад по желанию в любой произвольный момент?

Спасибо.

Ноутбук; тачпад Alps; стандартная комбинация отключения тачпада (Fn + F1) не работает.

#273031

универсальный способ:
synclient TouchpadOff=1
надо подвесить это на какую-либо клавишу...
ИМХО самое красивое, где это можно повесить — в acpid

есть ещё и другие ДЕ-зависимые варианты...

#273032

...или, если нужно именно управление включением-отключением, с помощью xbindkeys «забиндить» команды:
— отключение

text
synclient TouchpadOff=1

— включение

text
synclient TouchpadOff=0
#273033

Fat-Zer, Lupo Alberto, спасибо за помощь. Однако, проблема в том, что у меня на ноутбуке тачпад Alps, а не Synaptics. Поэтому перечисленные вами утилиты не работают и, как следствие, нет возможности управлять тачпадом.

Вообще, изначально, после загрузки Linux'а тачпад всегда отключен. Давно уже где-то я нашел инструкцию, в соотвестствии с которой для включения тачпада Alps следует в настройках GRUB'а указать загрузочную опцию i8042.nopnp, т. е. GRUB_CMDLINE_LINUX="i8042.nopnp". Может быть для решения описанной мной проблемы можно воспользоваться данной опцией? Существует ли какой-либо механизм выгрузки изначально активных опций?

#273036
Fat-Zer написал:
универсальный способ:
synclient TouchpadOff=1
надо подвесить это на какую-либо клавишу...
ИМХО самое красивое, где это можно повесить — в acpid

есть ещё и другие ДЕ-зависимые варианты...

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

#273039
"moshell" написал:
если бьешь по клаве, то тач сам отрубается на секунду например. ну или долю секунды. (если печатаешь быстро)
"Lupo Alberto" написал:
http://linux.die.net/man/1/syndaemon — не подойдёт?
#273042

Lupo Alberto написал:
[quote="moshell"]если бьешь по клаве, то тач сам отрубается на секунду например. ну или долю секунды. (если печатаешь быстро)
"Lupo Alberto" написал:
http://linux.die.net/man/1/syndaemon — не подойдёт?
[/quote]
судя по описанию оно самое
#277963

После нескольких недель использования утилиты touchpad_disable, предложенной в качестве решения проблемы, описанной в данном топике, и блокирующей тачпад при вводе с клавиатуры, выявился существенный недостаток данного решения. Дело в том, что данная утилита принципиально не способна блокировать тачпад перед началом печати, а для меня это важно, так как я довольно часто задеваю тачпад именно в этот момент.

Как оказалось, в системе X window имеется возможность произвольно отключать устройства ввода. Для этого можно использовать утилиту xinput.

Каждое устройство, видимое системой, имеет свойcтво Device Enabled. Данное свойство может принимать значения 1 или 0, сигнализирующие о состоянии девайса. Получить значение описанного свойства можно с помощью команды xinput list-props <имя_девайса> и последующей выборки по регулярному выражению. Имя девайса можно получить из файла /proc/bus/input/devices. В моем случае это "PS/2 Generic Mouse".

Задать свойство девайса можно командой xinput set-prop <имя_девайса> <свойство> <значение_свойства>.

Учитывая вышесказанное, можно написать сценарий, определяющий состояние тачпада и изменяющий это состояние в зависимости от полученных данных:

[console]
#! /usr/bin/env ruby

DEVICE = 'PS/2 Generic Mouse'
PROPERTY = 'Device Enabled'

get_prop = -> { `xinput list-props '#{DEVICE}'`[/#{PROPERTY}.*(\d)/, 1] }

set_prop = -> { `xinput set-prop '#{DEVICE}' '#{PROPERTY}' '#{get_prop.call == '1' ? 0 : 1}'`}

set_prop.call
[/console]

Для написания сценария я использовал язык Ruby.

После написания сценария можно закрепить за ним определенную клавиатурную комбинацию. Для этого можно использовать утилиту xbindkeys. Я использую Compiz, в котором реализована нативная поддержка клавиатурных комбинаций, поэтому, в моем случае, необходимость использования вышеописанной утилиты отпадает.

Обращаюсь к знатокам языка командной оболочки. Если вдруг у вас появится желание переписать приведенный мной сценарий с Ruby на данный язык, я буду только рад.

Войдите или зарегистрируйтесь, чтобы ответить.