Про трекпоинт и эмуляцию мыши

в 7:38, , рубрики: i3, linux, thinkpad, trackpoint, xdotool, Блог компании WestComp, Настройка Linux

Зачем это нужно и как реализовать программно

Много рассуждений

В предыдущей статье про настройку док-станций, я упоминал как тяжко, в свое время, мне было пользоваться лаптопами «потребительского» сегмента. Отсутствие docking-port'a и необходимость каждый раз по приходу домой или на работу подключать кучу кабелей — все это неприятно и раздражало, но что действительно вызывало страдания, так это отсутствие трекпоинта: той самой «красной пимпочки», которую можно встретить на лаптопах от IBM/Lenovo (синяя или серая в случае HP и DELL). Подробней можно почитать на той же Википедии.

Зачем он нужен? Когда большая часть операций производится с клавиатуры, будь то написание кода, либо работа в командной оболочке, необходимость переместить руку на мышь дабы переместить графический курсор и что-нибудь там кликнуть не вызывает особой радости.

Про трекпоинт и эмуляцию мыши - 1

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

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

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

Про трекпоинт и эмуляцию мыши - 2

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

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

Про трекпоинт и эмуляцию мыши - 3
Про трекпоинт и эмуляцию мыши - 4

В общем, тяжко нынче любителям трекпоинта: выбор очень мал. Придется либо искать model M раритеты от IBM, либо приобретать Unicomp, либо довольствоваться ножничными мембранками от Lenovo (кстати, тоже весьма не дешевыми).

Про трекпоинт и эмуляцию мыши - 5

Таким образом и родилась мысль, что неплохо бы это самый трекпоинт эмулировать. То есть управлять перемещениями графического курсора с клавиатуры.

Мало настроек

Сразу вспомнилось, что в 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 и переделать ее в механику.

Автор: WestComp

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js