Перше, що нам потрібно зробити, - це вимкнути мишу, але лише в 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 + `
Коли ми знаємо, що таке ідентифікатори ключів, нам потрібно поставити їх у config file ( /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 для контролю пристрою введення миші
Запуск демонів може бути реалізований як сценарій init або сценарій автозапуску в середовищі.
Для автоматичного відключення миші ми могли б контролювати пристрій введення ( cat /dev/input/event5
) та вимикати його, коли немає входу ...
Я сподіваюся, що мій короткий вступ допоможе вам ...;)
actkbd
! Опублікувавши своє запитання, я вже зрозумів, як його використовуватиxinput
, але не дізнався, як повторно включити мишу натисканням кнопок миші.