Здравствуйте.
При печати часто задеваю рукой тачпад, в результате чего курсор (каретка) перемещается в произвольное место документа, усложняя тем самым набор текста.
Возможно ли задать клавиатурную комбинацию, которая позволит мне отключать тачпад по желанию в любой произвольный момент?
Спасибо.
Ноутбук; тачпад Alps; стандартная комбинация отключения тачпада (Fn + F1) не работает.
Отключение тачпада с клавиатуры
http://linux.die.net/man/1/syndaemon — не подойдёт?
универсальный способ:
synclient TouchpadOff=1
надо подвесить это на какую-либо клавишу...
ИМХО самое красивое, где это можно повесить — в acpid
есть ещё и другие ДЕ-зависимые варианты...
...или, если нужно именно управление включением-отключением, с помощью xbindkeys «забиндить» команды:
— отключение
synclient TouchpadOff=1— включение
synclient TouchpadOff=0Fat-Zer, Lupo Alberto, спасибо за помощь. Однако, проблема в том, что у меня на ноутбуке тачпад Alps, а не Synaptics. Поэтому перечисленные вами утилиты не работают и, как следствие, нет возможности управлять тачпадом.
Вообще, изначально, после загрузки Linux'а тачпад всегда отключен. Давно уже где-то я нашел инструкцию, в соотвестствии с которой для включения тачпада Alps следует в настройках GRUB'а указать загрузочную опцию i8042.nopnp, т. е. GRUB_CMDLINE_LINUX="i8042.nopnp". Может быть для решения описанной мной проблемы можно воспользоваться данной опцией? Существует ли какой-либо механизм выгрузки изначально активных опций?
универсальный способ:
synclient TouchpadOff=1
надо подвесить это на какую-либо клавишу...
ИМХО самое красивое, где это можно повесить — в acpid
есть ещё и другие ДЕ-зависимые варианты...
на условии событий можно реализовать?
ну к примеру.. если бьешь по клаве, то тач сам отрубается на секунду например. ну или долю секунды. (если печатаешь быстро)
если бьешь по клаве, то тач сам отрубается на секунду например. ну или долю секунды. (если печатаешь быстро)
http://linux.die.net/man/1/syndaemon — не подойдёт?
[quote="moshell"]если бьешь по клаве, то тач сам отрубается на секунду например. ну или долю секунды. (если печатаешь быстро)
[/quote]http://linux.die.net/man/1/syndaemon — не подойдёт?
судя по описанию оно самое
После нескольких недель использования утилиты 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 на данный язык, я буду только рад.