Про трекпоинт та емуляція миші

Навіщо це потрібно і як реалізувати програмно
Багато міркувань
У попередній статті про налаштування док-станцій, я згадував, як тяжко, в свій час, мені було користуватися лаптопами «споживчого сегмента. Відсутність docking-port'a і потреба щоразу по приходу додому або на роботу підключати купу кабелів — все це неприємно і дратувало, але що дійсно викликало страждання, так це відсутність трекпоинта: тієї самої «червоної пімпочку», яку можна зустріти на лаптоп від IBM/Lenovo (синя або сіра в разі HP і DELL). Детальніше можна почитати на тій же Вікіпедії.

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



Особливу нелюбов до використання миші створює звичка працювати на достатньому видаленні від монітора (до двох метрів), розташувавши клавіатуру на колінах. Тут на допомогу приходить чудовий міні-джойстик: для маніпуляцій графічним курсором, всієї кисті немає потреби залишати межі home row, потрібно перемістити лише вказівний палець правої або лівої руки, а клавіші знаходяться під великими пальцями. Для наочності наведу старий ролик від IBM:



Проблема в тому, що на даний момент знайти пристойну клавіатуру, оснащену таким пристроєм стає все важче: серійно їх виробляє тільки Unicomp, при цьому самі клавіатури досить громіздкі, з класичної 104-key розкладкою.

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



З трьох клавіатур виробництва IBM/Lenovo, найтепліші почуття викликає модель Space Saver 2: досить важка, шорсткий пластик, міцні ніжки і гумові вставки, які не відклеїлися за, приблизно, вісім років експлуатації. Недолік у даної клавіатури рівно один: вона теж мембранна з усіма витікаючими.

Дуже зручні при використанні в Unix-середовищі так званих 60% клавіатур з трекпоинтом буквально одиниці: Tex Yoda і Guru-board, так і ті, скоріше, є кастомами, ніж серійно виробляються.




Загалом, тяжко нині любителям трекпоинта: вибір дуже малий. Доведеться або шукати model M раритети від IBM, або купувати Unicomp, або задовольнятися ножничними мембранками від Lenovo (до речі, теж дуже не дешевими).



Таким чином і народилася думка, що непогано б це самий трекпоинт емулювати. Тобто керувати переміщеннями графічного курсору з клавіатури.

Мало налаштувань
Відразу згадалося, що в X-системі потрібний функціонал колись був: для управління графічним курсором можна використовувати нампад (активація по Shift+Numlock).

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

Є така утиліта: xdotool, дозволяє емулювати натискання клавіш і рухи миші. Годиться вона не тільки для імітації рухів миші, але і для автоматизації будь-яких мышинно-клавіатурних дій.

І так, сценарій простий: забиндить виклик xdotool з потрібними параметрами на хоткей, або ввести додатковий режим клавіатури.

Встановлюємо:
#apt-get install xdotool


Так як я користуюся віконним менеджером i3, покажу на прикладі. Створювати режими клавіатури, які можуть використовуватися як для кейчейнов, так і модифікованого введення, в цьому WM одне задоволення:
mode "name"{
bindsym <key> action
bindsym <key> mode "default" #для виходу
}
bindsym <key> mode "name" #для виклику режиму


Для того, щоб пересунути курсор миші на задану позицію щодо поточного місцезнаходження, потрібно виконати наступну команду:
xdotool mousemove_relative x y


Для емуляції кличу:
xdotool click [123]

Де 1 — ліва кнопка, 2 — середня, 3 — права.

А конфіг для i3 буде виглядати так:
mode "rat" {

bindsym f exec --no-startup-id xdotool click --delay 100 1
bindsym --release a exec --no-startup-id xdotool click --delay 100 3

bindsym --release i exec --no-startup-id xdotool key --clearmodifiers --delay 20 Shift+Insert

bindsym --release l exec --no-startup-id xdotool mousemove_relative 20 0
bindsym --release h exec --no-startup-id xdotool mousemove_relative -- -20 0
bindsym --release j exec --no-startup-id xdotool mousemove_relative 0 20
bindsym --release k exec --no-startup-id xdotool mousemove_relative 0 -20

bindsym Return exec --no-startup-id xdotool click --delay 100 1; mode "default"

bindsym Escape mode "default"
bindsym Mod1+Escape mode "default"
}

bindsym Mod1+Escape mode "rat"

Думаю, що конфіг зайвих коментарів не потребує: все, начебто, досить очевидно.

На жаль, реалізувати прискорення курсору навскидку не вдалося.

Для тих, хто користується іншими віконними менеджерами або DE, можу порекомендувати утиліту xbindkeys.

Трекпоинт, безумовно, набагато зручніше, але це все-таки краще, ніж кожен раз тягнутися за мишею.

У когось може виникнути запитання: якщо працюємо за лаптопом, то чому б не використовувати тачпад? По-перше, особисто мені використовувати його важко, аж до виникнення больових відчуттів: не відриваючи пальців від home row, управління здійснюється великим пальцем сильної руки, вивернутим під тупим кутом. У такому положенні палець досить швидко починає хворіти. Якщо тикати вказівним пальцем, то знову виникає проблема перенесення кисті і в цьому випадку значно простіше і логічніше взятися вже, врешті-решт, за мишу. Також страшенно дратували помилкові спрацьовування при наборі тексту, відключатися при наборі тачпади навчилися не так давно, та й то не всі.

На цьому поки все. Таке рішення цілком згодиться як тимчасовий захід. А в якості постійної, планую відновити IBM SpaceSaver 2 і переробити її в механіку.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.