Зачем это нужно и как реализовать программно
Много рассуждений
В предыдущей статье про настройку док-станций, я упоминал как тяжко, в свое время, мне было пользоваться лаптопами «потребительского» сегмента. Отсутствие 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 и переделать ее в механику.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (64)
ova777
19.01.2016 11:13+3Уж извините, но я действительно не понимаю всех этих заморочек!
Трекболы, управление мышью с клавиатуры, вертикальные мыши, изогнутые клавиатуры, трекпоинты, неудобство тачпада, туннельный синдром…
Программирую последние 20 лет и ни разу не замечал проблем с этими вещами.
На работе обычная клавиатура + мышь, дома ноутбук с тачпадом — руки «перестраиваются» автоматически, неудобств не замечаю, никогда ничего не болит. Может со мной что-то не так?eaa
19.01.2016 11:25+5Это просто привычка.
Вас вполне устраивает, что надо отрывать руки от клавиатуры, чтобы потыкать тачпад, потом вернуть их обратно и работать дальше. Это медленнее, но Вы так привыкли. Это кому-то, например мне, неудобно, но Вам так привычнее.
На моем Thinkpad есть и тачпад, и трекпоинт, так вот тачпадом почти не пользуюсь, и никак не могу понять, почему многие производители перестали делать клавиатуры с трекпоинтами и перешли полностью на тачпады — ну вот реально неудобно…miga
19.01.2016 12:16-3Полагаю, дело в том, что вы свой опыт обобщаете на всех людей за компьютером :)
Мне вот, например, тачпад сильно удобнее (если, он, конечно, нормального размера, а не с пятачок).
Viacheslav01
19.01.2016 12:31Я в свою очередь предпочитаю мышь, но когда ее нет использую трекпоинт, тачпад только когда нет ни того ни другого.
И я тоже терпеть не могу потребительские лэптопы, сплошное недоразумение и понты в одном флаконе.
d7s2di
19.01.2016 13:36Каждому свое. Мне проблематично держать дополнительный столик под мышь, а тянуться за мышью на основном столе далеко и придется сильно менять положение (например, убрать со стола ногу).
baldr
19.01.2016 13:23+9У меня Lenovo X220 и я оценил трекпоинт с самых первых дней. Тачпад выключил и не включал ни разу за три года.
Мне кажется, нужно голосование вставить:
* у меня нет трекпоинта и я не понимаю зачем он нужен
* трекпоинта нет, очень страдаю
* трекпоинт есть, но не использую
* у меня есть трекпоинт и я его люблюamarao
19.01.2016 15:54А как вы скроллите текст при выключенном точпаде? Я вот к двум пальцам привык — удобно.
eaa
19.01.2016 15:55+7Большим пальцем зажимается средняя кнопка, а указательным тычется трекпоинт в нужном направлении.
amarao
19.01.2016 16:15Листать текст так неудобно. Я имею в виду, на большой скорости, когда двумя пальцами скребётся по точпаду с частотой 2-3 раза в секунду.
d7s2di
19.01.2016 16:27+1Листать трекпоинтом, когда можно листать с клавиатуры?
amarao
19.01.2016 16:48Не всюду и не всегда работает. Например, когда открывается хабр для коммента, у него курсор в поле ввода — pgup/pgdn не работают. А два пальца/колесо — работают.
d7s2di
19.01.2016 16:56Попробовал, действительно. Можно повесить еще пару хоткеев на эмуляцию скролла, но мне проще покинуть поле ввода, нажав один раз .
radiolok
20.01.2016 10:50+1У вашего трекпоинта нет градации силы нажатия?
Я на своем thinkpad t430u могу и медленно проскроллить и от начала в конец за долю секунды перелететь и любую скорость пролистывания между этими двумя крайностями получить.
alex_bel
20.01.2016 02:21Круто! Может дадите ссылку на какой-нибудь список того что можно делать с трэкпоинтом?
baldr
19.01.2016 21:57+2У X220 тачпад ужасно неудобный, ИМХО. Он короткий по длине и пупырчатый (!). Ощущения не те. Да и нет привычки скроллить пальцами.
Зато средняя кнопка под большой палец ложится очень удобно, в то время как указательный на трекпоинте.
Уже после недели использования привыкаешь к трекпоинту так, что не понимаешь зачем вообще этот тачпад, который все время задеваешь ладонями случайно и курсор сбивается.
Надо сказать, что мышка, на мой взгляд — как устройство ввода удобнее. Но ей нужна ровная поверхность, а ее у меня рядом дефицит в 90% случаев. Да и, как правильно тут говорили, переносить руку с клавиатуры очень неудобно.
Я пробовал разные устройства, втч устройства типа "мышь на палец". Это совсем игрушки, как оказалось.
я уже сейчас уверен, что мой следующий ноутбук будет Lenovo именно как один из немногих, поддерживающих трекпоинт. Ну еще по многим причинам, но это один из важных.
knagaev
21.01.2016 09:51+1Вот скажите, как brother in arms — случайно у него не сталкивались с дрейфом курсора?
То есть, такое впечатление, что курсор тянет куда-то.
Мало того, что в одну сторону едет легче, чем в другую, так ещё и сам иногда плывёт после того, как отпускаю TP.
Может нужна какая-то калибровка?
А то я даже в результате купил маленькую мышку и перестал пользоваться TP, хотя очень нравился он мне.d7s2di
21.01.2016 10:21Бывает такое. Наблюдалось на usb travel keyboard, на беспроводной, IBM'овской и лаптопах не сталкивался.
baldr
21.01.2016 13:51Бывает, замечал. Пару раз покачать посильнее трекпоинт — и все нормально становится.
Возможно датчик слишком чувствительный — там отклонения же чрезвычайно маленькие — вот и «залипает».
Кстати, у обычных оптических мышей тоже такое замечал, когда мышка не плотно к поверхности прилегает.
Fuzzyjammer
21.01.2016 13:58+1Это ожидаемое поведение, которое много раз описывалось на форумах леново. После длительного удержания трекпойнта в одном положении (не нулевом — например, при продолжительном скролле) происходит дрейф курсора в противоположную сторону, это как-то связано с автокалибровкой трекпойнта.
Хотя вот на T440 я такого поведения не припоминаю за год эксплуатации. На старых, в т.ч. домашнем X230, было.
mikhailian
19.01.2016 14:27Я старый пользователь клавиатур Unicomp и мышек. Печатать учился ещё на печатной машинке, так что ударять с силой по клавишам привык с детства. Как кисть правой руки начала болеть, попробовал trackpoint, но потом перешёл на трекболы. Купил себе четыре разных трекбола, поигрался со всеми и выбрал Logitech Marble Mouse под левую руку.
olegkrasnov
19.01.2016 14:35+1Если не возражаете, приведу пример похожей настройки под мак (два первых пункта):
Никогда не имел трекпоинт, но эмуляцию оценил, периодически пользуюсь.d7s2di
19.01.2016 15:29Конечно не возражаю, картинку сохраню, пожалуй: вдруг когда-нибудь опять придется работать за маком.
vintage
19.01.2016 22:32+3Давно уже прешёл исключительно на ноуты, так что стенаний по поводу клавиатур не сильно понимаю. Сейчас у меня и тачпад и трекпоинт. Пользуюсь и тем и тем в зависимости от ситуации. Трекпоинт хорош в преодолении больших дистанций — это получается быстро и без «перехватов». Тачпад же при этом приходится «перехватывать» и «возюкать» по нему пропорционально расстоянию. С другой стороны тачпад хорош на коротких дистанциях — он позволяет быстро и точно спозиционировать курсор, а с трекпоинтом из-за регулировки скорости перемещения, а не позиции, приходится постоянно идти на компромис между скоростью и точностью позиционирования. Попробуйте трекпоинтом быстро нарисовать ровный круг и сравните с тачпадом. Ещё у тачпада есть костыли типа регулировки скорости перемещения курсора с помощью модификаторов, продолжение движения по достижении края, его даже можно превратить в «трекпад», заставив изменять не позицию, а скорость. Кроме того у тачпада есть скроллбары и жесты. А трекпоинт — штука не расширяемая, да ещё и «залипает» периодически, и тогда приходится несколько секунд теребонькать его, чтобы он не уводил курсор в угол. С другой стороны современные тачпады повадились делать нажимаемыми, без физических кнопок. Хочется найти того человека, что это придумал, и плюнуть ему в лицо. Но нынешний lenovo-thinkpad-yoga в смысле средств управления — шикарен. Тачпад хоть и нажимаемый, но рядом с ним и три мышиные кнопки есть, по середине клавы клитор, да ещё и по экрану можно пальцем елозить.
constpetrov
20.01.2016 09:43+1Можно ещё заказать UHK, она будет управлять мышью на аппаратном уровне (и к ней будет дополнительный трекпоинт)
snp
20.01.2016 11:05Что такое UHK?
constpetrov
20.01.2016 11:15+1snp
20.01.2016 12:13Охренительная идея (особенно с дополнительными модулями). Но блин, зачем они кнопки ступеньками сделали :(
constpetrov
20.01.2016 12:29+1а это у них спрашивали уже
Говорят, если пойдёт хорошо, то могут и версию с typeMatrix раскладкой.
Из раздельных ещё ErgoDox, но без трекпоинта и собирать самому.
d7s2di
20.01.2016 16:10Думается, что у нее та же самая проблема, что у tex-yoda и guruboard: единичные экземпляры. В общем, кому хочется, надо ловить на массдропе. Но с нынешним курсом… А если учесть, что брать их, по-хорошему, нужно две: для работы и дома, то становится совсем грустно.
А идея разделяемой модульной клавиатуры очень хороша.constpetrov
20.01.2016 17:05её ещё не сделали, так что можно присоединиться к заказу. Дорогая, конечно.
viatoriche
20.01.2016 10:51В конфиге не хватает эмуляции колесика (не плохо для прокрутки), а также режима выделения. Пойду посмотрю man по xdotool, реально ли такое. А так, я тоже использую i3, возможность оценил.
tgz
20.01.2016 15:09+1Пользуюсь мембранкой с трекпоинтом от леновы. Не очень понимаю почему они так всем не нравятся.
constpetrov
20.01.2016 17:10ну это просто — если привык к механике, то мембранки не подходят. По себе скажу, что мне не нравится нажимать клавиши до упора для срабатывния.
snp
20.01.2016 19:15Нет, не всё так просто.
Если брать такую, то там не нужно нажимать до упора для срабатывания. Там короткий ход и во время нажатия кнопку «уносит» в крайнее нажатое положение. Скорее надо постараться, чтобы нажать не до упора. У меня к ней 3 минуса: тактильный «клик» слишком сильный и отдаётся в палец; сам механизм туговатый, можно было бы помягче; расположение клавиш ступеньками. В остальном очень удобная. Я ей уже несколько лет пользуюсь.
Возможно, вы имеете в виду красные Cherry, там действительно можно умудриться нажать «не до упора». Мне лично нравятся коричневые Cherry с амортизирующими резинками — ход клавиш получается достаточно короткий, почти как у ноутбучных мембранок и очень лёгкий механизм с мягким тихим тактильным кликом.constpetrov
20.01.2016 19:29У меня такая есть, с точки зрения хода это обычный "rubber dome". Он срабатывает в самом конце хода.
Мембранка — это не про ход, а про регистрацию срабатывания.
Я пользуюсь cherry brown switches на pok3r III и нажимаю их не до конца, а только до тактильного клика; так что клавиши не упираются в подложку. Поэтому я печатаю тише, чем коллеги на эппловских алюминьках.
d7s2di
20.01.2016 17:24У меня две клавиатуры от lenovo: беспроводная kt1255 и «консольная» travel-keyboard, видеть их можно на фото. Проблемы у них следующие: очень быстро отломались ноги (ладно, черт бы с ними), пластик вытерся не то, что до блеска а до стирания рисок на f и j. На проводной до блеска также стерся палмрест. На ней же появился заметный люфт клавиш в разные стороны. А самое грустное, что все это не лечится: износились клавиши, покупай новую клавиатуру вместо того, чтобы заменить кейкапы. Попала влага, выбрасывай всю клаву: лечить мембранку бесполезно. Такие дела.
На лаптопах, к слову, пластик гораздо лучше. Мой старенький X61T в куда более приличном состоянии.
prostosergik
20.01.2016 17:14Неплохой компромиссный вариант Rapoo E9080. Область справа — тачпад или тач-нампад.
Если когда-то умрет моя E9050, новая будет именно Е9080.d7s2di
20.01.2016 17:26По-моему, ужасный вариант. Все минусы тачпада и необходимость переноса кисти.
prostosergik
20.01.2016 17:30Может по вашему и ужасный. По моему — нет. Кисть переносится ближе, чем к мышке, а иногда можно и безымянным-мизинцем елозить, перенос кисти минимальный, 3-4 клавиши, не многим дальше, чем к трекпоинту. А по поводу самого тачпада — дело привычки.
Однако, с такой клавиатурой пропадает необходимость держать на столе мышку дополнительно. Идея примерно равна этой:
d7s2di
20.01.2016 17:47+3Как писал выше, каждому свое. А так, то при использовании трекпоинта не требуется перенос кисти, двигается только указательный палец на расстояние как при наборе символа b, а с такой панелькой, рука однозначно будет покидать home-row.
Это все я вижу как основную проблему тачпадов: или перемещаем кисть, или выгибаем пальцы под неестественными углами. А при расположении под клавиатурой, еще и ложные срабатывания: самая жуткая пытка — это воспользоваться чужим лаптопом, где стоит неутапливаемый тачпад, но настроен «тап»: перескоки тестового курсора, спонтанная потеря фокуса окна — бесит до зубовного скрежета.
Если уж такое решение радует, могу посоветовать не вестись на «все в одном», а приобрести хорошую клавиатуру и отдельно wacom с функцией тачпада. Хотя, wacom вместе с клавой на коленки не положить, то да.prostosergik
20.01.2016 17:50Ложные срабатывания более-менее фильтруются программно. Да и перемещение кисти почти как до бекспейса, хотя да, больше, чем к трекпоинту, но меньше, чем к мышке.
2 девайса низя, много и часто переезжаю, еще и ваком таскать с собой… нет. =)d7s2di
20.01.2016 18:01Про бекспейс да. Я тут заметил, что практически им не пользуюсь, проще выжать ^h. Туда же всякие стрелочки, функциональные клавиши и, тем более, нампад. Так и пришел к 60% клавиатуре.
prostosergik
20.01.2016 18:04Наверняка в VIM код пишете? =)
Эти Рапушки хороши тем, что и есть 60% клавиатура, но вот только с трекпедом.
^h хорошо, но не везде работает. А вспоминать каждый раз как в этом конкретном приложнении нужно удалять символ — мой мозг отказывается. Ему проще запомнить Backspace, даже если это более энергозатратно.d7s2di
20.01.2016 18:13+2Ага, и не только код — даже этот вот пост набираю в VIM'e, вызванном из браузера, как внешний редактор. Я вообще вимозависимый, первые две публикации на хабре были посвящены вимиизации рабочего окружения. В паре с тем же i3 и xdotool, можно сделать так:
bindsym --release Ctrl+h exec xdotool key Backspace
И сочетание будет работать во всех приложениях, выполняющихся внутри i3 (за редкими исключениями, вроде полноэкранной x2go-сессии).prostosergik
20.01.2016 18:141) Таки с редкими исключениями
2) А как же я хистори буду открывать в Хроме?d7s2di
20.01.2016 18:21О, вот насчет чего-чего, а про хром точно ничего не знаю. Думаю, там есть какой-нибудь аналог vimperator'a.
constpetrov
20.01.2016 19:34та же самая история с 60%, но только vim я так много не использую, а просто pok3r III позволяет всем управлять аппаратно (и переназначать клавиши).
d7s2di
21.01.2016 10:02Кстати, а переназначаются там не только модификаторы, а вообще все и можно аппаратно забивать кастомные раскладки?
constpetrov
21.01.2016 10:15Там четыре слоя + FN, из них переназначаются три. Всё, кроме [m] [,] [.] [/] [fn] [pn] можно переназначить аппаратно. Не зависит от софта и ОС
И на каждую клавишу можно вешать последовательность до 32 нажатий
ch0mb0r
25.01.2016 06:03Маусроллеры есть жи, для тех кодеров что не могут припаять тензодатчик к ps/2 проводу
филиал /hw ¤ поехали
radiolok
Интересный костыль, требующий использования, во-первых, двух рук, во-вторых, всех пальцев.
А вот за список клавиатур с трекпойнтами — спасибо.
d7s2di
Так этот костыль и предназначен для тех, кто использует обе руки и все пальцы.