Первое, что нам нужно сделать, это отключить мышь, но только в X. Для этого мы могли бы использовать xinput
.
Нам нужно обнаружить устройства ввода, которые подключены к компьютеру (к X-серверу):
pbm@tauri ~ $ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ A4Tech USB Mouse id=10 [slave pointer (2)]
⎜ ↳ Macintosh mouse button emulation id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
[...]
Устройство, которое нам нужно использовать, A4Tech USB Mouse
с id=10
. Далее нам нужно проверить свойства этого устройства:
pbm@tauri ~ $ xinput list-props "A4Tech USB Mouse"
Device 'A4Tech USB Mouse':
Device Enabled (121): 1
[....]
Чтобы выключить устройство, нам нужно изменить свойство Device Enabled
:
xinput set-prop DEV PROP STATE
xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0
Включить это:
xinput set-prop "A4Tech USB Mouse" "Device Enabled" 1
Следующее, что нужно сделать автоматически ...;) В этом примере мы будем отключать мышь с помощью сочетания клавиш и активировать ее, нажимая левую + правую кнопку мыши.
Для этого мы могли бы использовать actkbd - демон сочетания клавиш (но не только), работающий вне X-сервера.
Во- первых , мы должны создать пустой файл конфигурации для actkbd: touch /etc/actkbd.conf
. Следующее, что нужно для обнаружения устройств, подключенных к компьютеру:
pbm@tauri ~ $ cat /proc/bus/input/devices
I: Bus=0003 Vendor=046d Product=c312 Version=0110
N: Name="BTC USB Multimedia Keyboard"
P: Phys=usb-0000:00:1d.0-1.6/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.0/input/input6
U: Uniq=
H: Handlers=kbd event3
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7
I: Bus=0003 Vendor=09da Product=000a Version=0110
N: Name="A4Tech USB Mouse"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input8
U: Uniq=
H: Handlers=mouse1 event5
B: EV=17
B: KEY=ff0000 0 0 0 0
B: REL=343
B: MSC=10
[...]
В этой части наиболее интересными для использования являются имена и обработчики устройств клавиатуры и мыши.
Сначала мы осуществляем отключение мыши с помощью сочетания клавиш, поэтому нам нужно найти идентификаторы клавиш:
pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event3
Keys: 29+41+42 //we need to press keys that will turn off mouse, 29+41+42 is Ctrl + Shift + `
Когда мы знаем, что такое идентификаторы ключей, нам нужно поместить их в файл конфигурации ( /etc/actkbd.conf
):
29+41+42:::sudo -u pbm DISPLAY=:0 xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0
Чтобы проверить это, нам нужно запустить actkbd
в режиме демона:
pbm@tauri ~ $ sudo actkbd -d /dev/input/event3 -D
Точно так же нам нужно обработать событие включения:
- Проверьте обработчики устройства мыши
- Проверьте коды клавиш левой + правой кнопки мыши, используя
actkbd
- Поместите это в
actkbd.conf
- Запустите демон actkbd для мониторинга устройства ввода мыши
Запуск демонов может быть реализован как сценарий инициализации или сценарий автозапуска в среде.
Чтобы автоматически выключить мышь, мы могли бы контролировать устройство ввода ( cat /dev/input/event5
) и выключать его, когда нет ввода ...
Я надеюсь, что мое короткое вступление поможет вам ...;)
actkbd
! После публикации моего вопроса я уже решил использоватьxinput
, но я не узнал, как я могу снова включить мышь, нажимая кнопки мыши.