Вимкніть мишу (не тачпад!) У Xorg, коли простою


17

Я завзятий користувач клавіатури, але мені все-таки потрібна миша раз у раз. Щоб мінімізувати рух рук, у мене миша розташована нижче моєї клавіатури. (З іншого боку, використання миші таким чином відчуває себе більш природно для моєї руки.)

Наразі я використовую unclutter, щоб приховати покажчик, поки я не використовую мишу. На жаль, я натискаю його часом під час введення тексту, що призводить до появи вказівника. Іноді це перемістить вказівник на інше вікно, яке, в свою чергу, відводить фокус від мого поточного вікна. (Я використовую неохайний фокус, і змінити це не є можливим.)

Зараз я шукаю можливість не лише приховати вказівник через певний час простою, але й взагалі відключити мишку. Після натискання будь-якої кнопки миші або використання колеса миші слід знову ввімкнути мишу.

Відповіді:


16

Перше, що нам потрібно зробити, - це вимкнути мишу, але лише в 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

Таким же чином нам потрібно поводитись із подією "включити":

  1. Перевірте обробники пристрою миші
  2. Перевірте ключові коди лівої + правої кнопки миші за допомогою actkbd
  3. Покладіть його actkbd.conf
  4. Запустіть демона actkbd для контролю пристрою введення миші

Запуск демонів може бути реалізований як сценарій init або сценарій автозапуску в середовищі.

Для автоматичного відключення миші ми могли б контролювати пристрій введення ( cat /dev/input/event5) та вимикати його, коли немає входу ...

Я сподіваюся, що мій короткий вступ допоможе вам ...;)


Дякуємо за підказку actkbd! Опублікувавши своє запитання, я вже зрозумів, як його використовувати xinput, але не дізнався, як повторно включити мишу натисканням кнопок миші.
ігор

Це дуже добре написана відповідь.
pjc50

Дякуємо за цю інформацію, особливо за підказку з atkkbd

Замість використання опції --set-prop, поряд із властивістю "Увімкнено / вимкнено" пристрою, можна також використовувати параметри --enable та - deisable, наприклад xinput --enable [пристрій] та xinput - відключити [пристрій] .
thebodzio

1

Ви спробували аплет панелі Gnome на панелі "Захоплення вказівника" ?

Вказівник миші можна зафіксувати на ділянці екрану, щоб вказівний пристрій був вільним для інших завдань. Наприклад, ця можливість дозволяє користувачеві-кріслом керувати як кріслом, так і вказівником миші одним джойстиком для крісла

Аплет панелі «Захоплення вказівника» створює таку область на панелі, в яку користувач може заблокувати покажчик, поки не буде звільнено визначеним чином.

Аплет панелі Захоплення вказівника можна встановити, клацнувши правою кнопкою миші панель меню / панель системного робочого столу GNOME, вибравши Додати до панелі, обравши Захоплення покажчика та натиснувши кнопку Додати

Якщо опис з сайту gnome.org не зрозумілий, це створить область на панелі, куди, коли миша введе (або ви натиснете), курсор зникне і не з’явиться знову, поки не відбудеться визначена дія, наприклад a другий клацання. Звучить саме те, що вам потрібно?


Я використовував це, але створив деякі проблеми. Мені не вдалося Alt + F1відкрити меню програм. Я не знаю, що це спричинило. Я користувач ubuntu.
balki
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.