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

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


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


    В предыдущей статье про настройку док-станций, я упоминал как тяжко, в свое время, мне было пользоваться лаптопами «потребительского» сегмента. Отсутствие 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 и переделать ее в механику.
    Ваше отношение к трекпоинту:

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Метки:
    WestComp 27,33
    Компания
    Поделиться публикацией
    Комментарии 69
    • +5
      Интересный костыль, требующий использования, во-первых, двух рук, во-вторых, всех пальцев.
      А вот за список клавиатур с трекпойнтами — спасибо.
      • +4
        Так этот костыль и предназначен для тех, кто использует обе руки и все пальцы.
      • +3
        Уж извините, но я действительно не понимаю всех этих заморочек!
        Трекболы, управление мышью с клавиатуры, вертикальные мыши, изогнутые клавиатуры, трекпоинты, неудобство тачпада, туннельный синдром…
        Программирую последние 20 лет и ни разу не замечал проблем с этими вещами.
        На работе обычная клавиатура + мышь, дома ноутбук с тачпадом — руки «перестраиваются» автоматически, неудобств не замечаю, никогда ничего не болит. Может со мной что-то не так?
        • +5
          Это просто привычка.
          Вас вполне устраивает, что надо отрывать руки от клавиатуры, чтобы потыкать тачпад, потом вернуть их обратно и работать дальше. Это медленнее, но Вы так привыкли. Это кому-то, например мне, неудобно, но Вам так привычнее.
          На моем Thinkpad есть и тачпад, и трекпоинт, так вот тачпадом почти не пользуюсь, и никак не могу понять, почему многие производители перестали делать клавиатуры с трекпоинтами и перешли полностью на тачпады — ну вот реально неудобно…
          • –3
            Полагаю, дело в том, что вы свой опыт обобщаете на всех людей за компьютером :)
            Мне вот, например, тачпад сильно удобнее (если, он, конечно, нормального размера, а не с пятачок).
            • 0
              Я в свою очередь предпочитаю мышь, но когда ее нет использую трекпоинт, тачпад только когда нет ни того ни другого.
              И я тоже терпеть не могу потребительские лэптопы, сплошное недоразумение и понты в одном флаконе.
            • 0
              Каждому свое. Мне проблематично держать дополнительный столик под мышь, а тянуться за мышью на основном столе далеко и придется сильно менять положение (например, убрать со стола ногу).
              • 0
                Поиграйте как-нибудь в osu! месяцок на мыши.
                • 0
                  Зачем? Так-то для игрулек у меня есть геймпад.
                  • 0
                    На геймпаде в эту игру играть нельзя.

                    • 0
                      Ох, суровая игра. Пожалуй, не буду даже пробовать.
              • +9
                У меня Lenovo X220 и я оценил трекпоинт с самых первых дней. Тачпад выключил и не включал ни разу за три года.
                Мне кажется, нужно голосование вставить:
                * у меня нет трекпоинта и я не понимаю зачем он нужен
                * трекпоинта нет, очень страдаю
                * трекпоинт есть, но не использую
                * у меня есть трекпоинт и я его люблю
                • +1
                  Плюсую, но думаю, что безоговорочным лидером будет первый вариант.
                  • 0
                    А как вы скроллите текст при выключенном точпаде? Я вот к двум пальцам привык — удобно.
                    • +7
                      Большим пальцем зажимается средняя кнопка, а указательным тычется трекпоинт в нужном направлении.
                      • 0
                        Листать текст так неудобно. Я имею в виду, на большой скорости, когда двумя пальцами скребётся по точпаду с частотой 2-3 раза в секунду.
                        • +1
                          Листать трекпоинтом, когда можно листать с клавиатуры?
                          • 0
                            Не всюду и не всегда работает. Например, когда открывается хабр для коммента, у него курсор в поле ввода — pgup/pgdn не работают. А два пальца/колесо — работают.
                            • 0
                              Попробовал, действительно. Можно повесить еще пару хоткеев на эмуляцию скролла, но мне проще покинуть поле ввода, нажав один раз .
                          • +1
                            У вашего трекпоинта нет градации силы нажатия?
                            Я на своем thinkpad t430u могу и медленно проскроллить и от начала в конец за долю секунды перелететь и любую скорость пролистывания между этими двумя крайностями получить.
                          • 0
                            Круто! Может дадите ссылку на какой-нибудь список того что можно делать с трэкпоинтом?
                          • +2
                            Я скрою клавишами hjkl в браузере и m-hjkl в GTK-окружении.
                            • +2
                              У X220 тачпад ужасно неудобный, ИМХО. Он короткий по длине и пупырчатый (!). Ощущения не те. Да и нет привычки скроллить пальцами.
                              Зато средняя кнопка под большой палец ложится очень удобно, в то время как указательный на трекпоинте.
                              Уже после недели использования привыкаешь к трекпоинту так, что не понимаешь зачем вообще этот тачпад, который все время задеваешь ладонями случайно и курсор сбивается.

                              Надо сказать, что мышка, на мой взгляд — как устройство ввода удобнее. Но ей нужна ровная поверхность, а ее у меня рядом дефицит в 90% случаев. Да и, как правильно тут говорили, переносить руку с клавиатуры очень неудобно.
                              Я пробовал разные устройства, втч устройства типа "мышь на палец". Это совсем игрушки, как оказалось.

                              я уже сейчас уверен, что мой следующий ноутбук будет Lenovo именно как один из немногих, поддерживающих трекпоинт. Ну еще по многим причинам, но это один из важных.
                              • 0
                                Не мучайте так себя — тачпад в настройках отключается, после чего совершенно не мешает.
                            • +1
                              Вот скажите, как brother in arms — случайно у него не сталкивались с дрейфом курсора?
                              То есть, такое впечатление, что курсор тянет куда-то.
                              Мало того, что в одну сторону едет легче, чем в другую, так ещё и сам иногда плывёт после того, как отпускаю TP.
                              Может нужна какая-то калибровка?
                              А то я даже в результате купил маленькую мышку и перестал пользоваться TP, хотя очень нравился он мне.
                              • 0
                                Бывает такое. Наблюдалось на usb travel keyboard, на беспроводной, IBM'овской и лаптопах не сталкивался.
                                • 0
                                  Бывает, замечал. Пару раз покачать посильнее трекпоинт — и все нормально становится.
                                  Возможно датчик слишком чувствительный — там отклонения же чрезвычайно маленькие — вот и «залипает».
                                  Кстати, у обычных оптических мышей тоже такое замечал, когда мышка не плотно к поверхности прилегает.
                                  • +1
                                    Это ожидаемое поведение, которое много раз описывалось на форумах леново. После длительного удержания трекпойнта в одном положении (не нулевом — например, при продолжительном скролле) происходит дрейф курсора в противоположную сторону, это как-то связано с автокалибровкой трекпойнта.
                                    Хотя вот на T440 я такого поведения не припоминаю за год эксплуатации. На старых, в т.ч. домашнем X230, было.
                                • 0
                                  Я старый пользователь клавиатур Unicomp и мышек. Печатать учился ещё на печатной машинке, так что ударять с силой по клавишам привык с детства. Как кисть правой руки начала болеть, попробовал trackpoint, но потом перешёл на трекболы. Купил себе четыре разных трекбола, поигрался со всеми и выбрал Logitech Marble Mouse под левую руку.
                                  • +1
                                    Если не возражаете, приведу пример похожей настройки под мак (два первых пункта):

                                    Никогда не имел трекпоинт, но эмуляцию оценил, периодически пользуюсь.
                                    • 0
                                      Конечно не возражаю, картинку сохраню, пожалуй: вдруг когда-нибудь опять придется работать за маком.
                                    • +1
                                      Guru-board. Синяя механика да ещё и трекпоинт. Всё хорошо, только нет в продаже…
                                      • +1
                                        Ну да. Как и tex-yoda существует в единичных экземплярах.
                                      • +3
                                        Давно уже прешёл исключительно на ноуты, так что стенаний по поводу клавиатур не сильно понимаю. Сейчас у меня и тачпад и трекпоинт. Пользуюсь и тем и тем в зависимости от ситуации. Трекпоинт хорош в преодолении больших дистанций — это получается быстро и без «перехватов». Тачпад же при этом приходится «перехватывать» и «возюкать» по нему пропорционально расстоянию. С другой стороны тачпад хорош на коротких дистанциях — он позволяет быстро и точно спозиционировать курсор, а с трекпоинтом из-за регулировки скорости перемещения, а не позиции, приходится постоянно идти на компромис между скоростью и точностью позиционирования. Попробуйте трекпоинтом быстро нарисовать ровный круг и сравните с тачпадом. Ещё у тачпада есть костыли типа регулировки скорости перемещения курсора с помощью модификаторов, продолжение движения по достижении края, его даже можно превратить в «трекпад», заставив изменять не позицию, а скорость. Кроме того у тачпада есть скроллбары и жесты. А трекпоинт — штука не расширяемая, да ещё и «залипает» периодически, и тогда приходится несколько секунд теребонькать его, чтобы он не уводил курсор в угол. С другой стороны современные тачпады повадились делать нажимаемыми, без физических кнопок. Хочется найти того человека, что это придумал, и плюнуть ему в лицо. Но нынешний lenovo-thinkpad-yoga в смысле средств управления — шикарен. Тачпад хоть и нажимаемый, но рядом с ним и три мышиные кнопки есть, по середине клавы клитор, да ещё и по экрану можно пальцем елозить.
                                        • 0
                                          Его надо не «теребонькать несколько секунд», а оставить полностью в покое — тогда он за полсекунды в норму вернётся…
                                          • 0
                                            Если бы всё было так просто, я бы даже не заикнулся об этой проблеме :-) Меня больше другая напрягает — каждую секунду курсор затыкается. Что с тачпада, что с трекпоинта. Находил в инете похожие проблемы — там было это из-за какого-то сервиса от интел, но у меня такого нет.
                                        • +1
                                          Можно ещё заказать UHK, она будет управлять мышью на аппаратном уровне (и к ней будет дополнительный трекпоинт)
                                          • 0
                                            Что такое UHK?
                                            • +1
                                              • 0
                                                Охренительная идея (особенно с дополнительными модулями). Но блин, зачем они кнопки ступеньками сделали :(
                                                • +1
                                                  а это у них спрашивали уже
                                                  Говорят, если пойдёт хорошо, то могут и версию с typeMatrix раскладкой.
                                                  Из раздельных ещё ErgoDox, но без трекпоинта и собирать самому.
                                                  • 0
                                                    И не сделали беспроводной? Этот шнур по центру — ну архаизм же.
                                              • 0
                                                Думается, что у нее та же самая проблема, что у tex-yoda и guruboard: единичные экземпляры. В общем, кому хочется, надо ловить на массдропе. Но с нынешним курсом… А если учесть, что брать их, по-хорошему, нужно две: для работы и дома, то становится совсем грустно.

                                                А идея разделяемой модульной клавиатуры очень хороша.
                                                • 0
                                                  её ещё не сделали, так что можно присоединиться к заказу. Дорогая, конечно.
                                              • 0
                                                В конфиге не хватает эмуляции колесика (не плохо для прокрутки), а также режима выделения. Пойду посмотрю man по xdotool, реально ли такое. А так, я тоже использую i3, возможность оценил.
                                                • +1
                                                  Пользуюсь мембранкой с трекпоинтом от леновы. Не очень понимаю почему они так всем не нравятся.
                                                  • 0
                                                    ну это просто — если привык к механике, то мембранки не подходят. По себе скажу, что мне не нравится нажимать клавиши до упора для срабатывния.
                                                    • 0
                                                      Нет, не всё так просто.

                                                      Если брать такую, то там не нужно нажимать до упора для срабатывания. Там короткий ход и во время нажатия кнопку «уносит» в крайнее нажатое положение. Скорее надо постараться, чтобы нажать не до упора. У меня к ней 3 минуса: тактильный «клик» слишком сильный и отдаётся в палец; сам механизм туговатый, можно было бы помягче; расположение клавиш ступеньками. В остальном очень удобная. Я ей уже несколько лет пользуюсь.

                                                      Возможно, вы имеете в виду красные Cherry, там действительно можно умудриться нажать «не до упора». Мне лично нравятся коричневые Cherry с амортизирующими резинками — ход клавиш получается достаточно короткий, почти как у ноутбучных мембранок и очень лёгкий механизм с мягким тихим тактильным кликом.
                                                      • 0
                                                        У меня такая есть, с точки зрения хода это обычный "rubber dome". Он срабатывает в самом конце хода.
                                                        Мембранка — это не про ход, а про регистрацию срабатывания.

                                                        Я пользуюсь cherry brown switches на pok3r III и нажимаю их не до конца, а только до тактильного клика; так что клавиши не упираются в подложку. Поэтому я печатаю тише, чем коллеги на эппловских алюминьках.

                                                    • 0
                                                      У меня две клавиатуры от lenovo: беспроводная kt1255 и «консольная» travel-keyboard, видеть их можно на фото. Проблемы у них следующие: очень быстро отломались ноги (ладно, черт бы с ними), пластик вытерся не то, что до блеска а до стирания рисок на f и j. На проводной до блеска также стерся палмрест. На ней же появился заметный люфт клавиш в разные стороны. А самое грустное, что все это не лечится: износились клавиши, покупай новую клавиатуру вместо того, чтобы заменить кейкапы. Попала влага, выбрасывай всю клаву: лечить мембранку бесполезно. Такие дела.

                                                      На лаптопах, к слову, пластик гораздо лучше. Мой старенький X61T в куда более приличном состоянии.
                                                  • 0
                                                    Неплохой компромиссный вариант Rapoo E9080. Область справа — тачпад или тач-нампад.

                                                    image

                                                    Если когда-то умрет моя E9050, новая будет именно Е9080.
                                                    • 0
                                                      По-моему, ужасный вариант. Все минусы тачпада и необходимость переноса кисти.
                                                      • 0
                                                        Может по вашему и ужасный. По моему — нет. Кисть переносится ближе, чем к мышке, а иногда можно и безымянным-мизинцем елозить, перенос кисти минимальный, 3-4 клавиши, не многим дальше, чем к трекпоинту. А по поводу самого тачпада — дело привычки.

                                                        Однако, с такой клавиатурой пропадает необходимость держать на столе мышку дополнительно. Идея примерно равна этой:
                                                        image
                                                        • +3
                                                          Как писал выше, каждому свое. А так, то при использовании трекпоинта не требуется перенос кисти, двигается только указательный палец на расстояние как при наборе символа b, а с такой панелькой, рука однозначно будет покидать home-row.

                                                          Это все я вижу как основную проблему тачпадов: или перемещаем кисть, или выгибаем пальцы под неестественными углами. А при расположении под клавиатурой, еще и ложные срабатывания: самая жуткая пытка — это воспользоваться чужим лаптопом, где стоит неутапливаемый тачпад, но настроен «тап»: перескоки тестового курсора, спонтанная потеря фокуса окна — бесит до зубовного скрежета.

                                                          Если уж такое решение радует, могу посоветовать не вестись на «все в одном», а приобрести хорошую клавиатуру и отдельно wacom с функцией тачпада. Хотя, wacom вместе с клавой на коленки не положить, то да.
                                                          • 0
                                                            Ложные срабатывания более-менее фильтруются программно. Да и перемещение кисти почти как до бекспейса, хотя да, больше, чем к трекпоинту, но меньше, чем к мышке.

                                                            2 девайса низя, много и часто переезжаю, еще и ваком таскать с собой… нет. =)
                                                            • 0
                                                              Про бекспейс да. Я тут заметил, что практически им не пользуюсь, проще выжать ^h. Туда же всякие стрелочки, функциональные клавиши и, тем более, нампад. Так и пришел к 60% клавиатуре.
                                                              • 0
                                                                Наверняка в VIM код пишете? =)

                                                                Эти Рапушки хороши тем, что и есть 60% клавиатура, но вот только с трекпедом.

                                                                ^h хорошо, но не везде работает. А вспоминать каждый раз как в этом конкретном приложнении нужно удалять символ — мой мозг отказывается. Ему проще запомнить Backspace, даже если это более энергозатратно.
                                                                • +2
                                                                  Ага, и не только код — даже этот вот пост набираю в VIM'e, вызванном из браузера, как внешний редактор. Я вообще вимозависимый, первые две публикации на хабре были посвящены вимиизации рабочего окружения. В паре с тем же i3 и xdotool, можно сделать так:
                                                                  bindsym --release Ctrl+h exec xdotool key Backspace

                                                                  И сочетание будет работать во всех приложениях, выполняющихся внутри i3 (за редкими исключениями, вроде полноэкранной x2go-сессии).
                                                                  • 0
                                                                    1) Таки с редкими исключениями
                                                                    2) А как же я хистори буду открывать в Хроме?
                                                                    • 0
                                                                      О, вот насчет чего-чего, а про хром точно ничего не знаю. Думаю, там есть какой-нибудь аналог vimperator'a.
                                                                • 0
                                                                  та же самая история с 60%, но только vim я так много не использую, а просто pok3r III позволяет всем управлять аппаратно (и переназначать клавиши).
                                                                  • 0
                                                                    Кстати, а переназначаются там не только модификаторы, а вообще все и можно аппаратно забивать кастомные раскладки?
                                                                    • 0
                                                                      Там четыре слоя + FN, из них переназначаются три. Всё, кроме [m] [,] [.] [/] [fn] [pn] можно переназначить аппаратно. Не зависит от софта и ОС

                                                                      И на каждую клавишу можно вешать последовательность до 32 нажатий
                                                                      • 0
                                                                        Удобно. Я взял ducky, там переназначаются только модификаторы.
                                                                        • 0
                                                                          я купил просто то, что было из хорошего на местном амазоне
                                                      • 0
                                                        Маусроллеры есть жи, для тех кодеров что не могут припаять тензодатчик к ps/2 проводу

                                                        филиал /hw ¤ поехали
                                                        • +1
                                                          Предлагаю попробовать воспользоваться утилитой keynav.
                                                          • 0
                                                            Отличная утилитка, спасибо!

                                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                          Самое читаемое