🌍 🌏 🌎
Flag of Russia

ИМЯ

tapper — Включалка раскладок клавиатуры для Иксов и Вайланда.

СИНОПСИС

  tapper [опция]… [назначение]…

где назначение — это (в нотации РБНФ):

  назначение = клавиша, "=", [ действия ];
  действия = действие, { ",", действие };
  действие = клавиша | ( "@", раскладка );
  клавиша = код клавиши | название клавиши;
  раскладка = индекс раскладки | название раскладки;

ОПИСАНИЕ

Таппер работает в фоновом режиме, и при ударе по назначенной клавише Таппер включает соответствующую этой клавише раскладку клавиатуры. Назначенная клавиша всегда включает ту же самую раскладку: Таппер никогда не переключает раскладки, каждая раскладка должна иметь выделенную для её включения клавишу. Особенность Таппера заключается в использовании клавиш-модификаторов (таких, как Shift, Ctrl или Alt) для включения раскладок без потери функций модификаторов.

В дополнение к включению раскладок, Таппер умеет эмулировать удары по клавишам. Это позволяет делать некоторые полезные трюки.

Обычно Таппер настраивается путём его запуска с опцией --dconf-editor, и добавляется в автозапуск при помощи опции --autostart. Также Таппер может быть настроен при помощи командной строки с опцией --save-settings и добавлен в автостарт с использованием графических приложений: в Гноме — «Доп. настройки GNOME» (англ. GNOME Tweaks), в Кедах — «Параметры системы» (англ. System Settings).

Слухачи

Для того чтобы опознавать удары по клавишам, Таппер следит за событиями ввода (англ. input events) (клавиша нажата, клавиша отпущена, и т. д.). Компонент Таппера, который следит за событиями, называется «слухач» (англ. listener). Таппер имеет несколько слухачей:

libinput

libinput — это низкоуровневая библиотека для взаимодействия с устройствами ввода. Слухач «libinput» использует эту библиотеку и может работать как в Иксах, так и в Вайланде, но требует дополнительных разрешений (англ. permissions): процесс Таппера должен иметь input group identity. (Для выполнения этого условия Таппер должен быть правильным образом установлен.)

См. также раздел «Безопасность» ниже.

XRecord

XRecord — это расширение Иксов. Слухач «XRecord» использует это расширение и, очевидно, работает только в Иксах и не работает в Вайланде, но зато не требует дополнительных разрешений.

Auto

Это не настоящий слухач, а указание Тапперу выбрать подходящий слухач самостоятельно. Таппер проверяет переменную окружения XDG_SESSION_TYPE: если значение переменной равно x11, Таппер выбирает слухач «XRecord», иначе выбирает слухач «libinput».

Таппер имеет несколько слухачей, пречисленных выше, но для работы нужно выбрать один из них. Слухач выбирается либо ключом listener в настройках, либо опцией --listener в командной строке.

Раскладчики

Компонент Таппера, который управляет раскладками клавиатуры (выдаёт список раскладок, доступных для использования, включает указанную раскладку и т. д.) называется «раскладчик» (англ. layouter). Таппер имеет несколько раскладчиков:

GNOME

Этот раскладчик выдаёт команду Агизму (это расширение Гнома), Агизм, в свою очередь, вызывает методы Гнома для выполнения работы. На практике это означает, что раскладчик «GNOME» отлично работает в Гноме: обновляет индикатор раскладки клавиатуры и управляется со всеми раскладками, сконфигурированными в Гноме, сколько бы их не было.

Также раскладчик «GNOME» следит за сессией Гнома. Если сессия становится неактивной (например, когда пользователь переключается с текущей сессии на другую), раскладчик переводит Таппер в пассивный режим: Таппер продолжает слушать события ввода, но не выполняет никаких действий (не включает раскладки и не эмулирует удары по клавишам). Когда сессия становится активной опять, раскладчик переводит Таппер назад в обычный режим. Такое поведение предотвращает нежелательное воздействие одной сессии на другую (которое возможно в случае использования слухача «libinput» и/или ударника «libevdev»).

Важное замечаение: Раскладчик «GNOME» требует, чтобы Агизм (расширение Гнома) был установлен и включен.

KDE

Этот раскладчик взаимодействует с Кедами через шину D-Bus, собственно работу по включению раскладок делают сами Кеды.

Замечание: Ракладчик «KDE» не умеет издавать звуки, так что опция командной строки --bell не будет иметь эффекта, если выбран раскладчик «KDE».

Xkb

Xkb — расширение Иксов. Обратите внимание на ограничение: Xkb позволяет загрузить до 4 раскладок (в технической документации на Иксы они называются «группами») и затем включать одну из этих заранее загруженных раскладок (в технической документации это называется «залочить группу»).

Раскладчик «Xkb» использует Xkb, чтобы включить раскладку. Очевидно, что этот раскладчик зависит от Иксов и не работает в Вайланде. Однако, он работает в отличных от Гнома рабочих столах, запущенных в Иксах, например, в Корице (Циннамоне), и3, Кедах, ЛХДЕ, ЛХКт, Мате и Крысе (Хфце).

Dummy

Это заглушка, которая ничего не делает. Она выдаёт пустой список раскладок и не занимается их включением, не умеет издавать звуки. Заглушка полезна, когда управление раскладками не требуется.

Auto

Это не настоящий раскладчик, а указание Тапперу выбрать подходящий раскладчик самостоятельно. Если включать раскладки не требуется, Таппер выбирает раскладчик «dummy»; в противном случае Таппер проверяет переменную окружения XDG_SESSION_DESKTOP: если значение переменной равно gnome, gnome-classic, gnome-xorg, ubuntu или ubuntu-wayland, Таппер выбирает раскладчик «Гном», если значение равно KDE, Таппер выбирает раскладчик «KDE», иначе Таппер выбирает раскладчик «Xkb».

Замечание: В родном рабочем столе Убунты занчение переменной окружения XDG_SESSION_DESKTOP равно ubuntu, т. е. дистрибутив Убунту использует рабочий стол Убунту. Однако, рабочий стол Убунту на деле является Гномом с парой расширений, поэтому раскладчик «GNOME» пригоден для использования на рабочем столе Убунту.

Таппер имеет несколько раскладчиков, перечисленных выше, но для работы нужно выбрать один из них. Раскладчик выбирается ключом layouter в настройках и опцией --layouter в командной строке.

Ударники

Компонент Таппера, эмулирующий удары по клавишам (или, что то же самое, генерирующий события ввода), называется «ударник» (англ. emitter). Таппер имеет несколько ударников:

libevdev

libevdev — это низкоуровневая библиотека, которая управляет устройствами ввода. Ударник «libevdev» использует эту библиотеку, чтобы создать виртуальную клавиатуру и в дальнейшем генерировать события ввода, исходящие из этой клавиатуры. Этот ударник работает и в Иксах, и в Вайланде, но требует дополнительных разрешений (англ. permissions): процесс Таппера должен обладать root user identity. (Для выполнения этого условия Таппер должен быть правильным образом установлен.)

См. также раздел «Безопасность» ниже.

XTest

XTest — это расширение Иксов. Ударник «XTest» использует это расширение и, очевидно, требует Иксов и не работает в Вайланде, зато он не требует дополнительных разрешений.

Dummy

Это не настоящий ударник, а заглушка, которая ничего не делает. Она используется, когда эмуляция не требуется.

Auto

Это не настоящий ударник, а указание Тапперу выбрать подходящий ударник самому. Если эмуляция нажатия клавиш не требуется, Таппер выбирает ударник «dummy»; в противном случае Таппер анализирует переменную окружения XDG_SESSION_TYPE: если её значение равно x11, Таппер выбирает ударник «XTest», иначе выбирается ударник «libevdev».

Таппер имеет несколько ударников, перечисленных выше, но для работы нужно выбрать только один. Ударник выбирается ключом emitter в настройках и опцией --emitter в командной строке.

Клавиши

Клавиша может быть указана её кодом (целое число без знака, например, 29) или её символическим названием (например, LCTL или KEY_LEFTCTRL).

В качестве кодов клавиш Таппер всегда использует коды событий ввода ядра Линукса независимо от выбранного слухача и ударника.

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

Запустите Таппер с опцией --list-keys, чтобы увидеть список клавиш, известных автоматически выбранному слухачу. Используйте опцию --list-keys в комбинации с опцией --listener, чтобы получить список клавиш, известных указанному слухачу. Есть ещё один метод: Запустите Таппер с опцией --show-taps, и ударяйте по интересующим вас клавишам, чтобы узнать их коды и названия.

Удары

Термин «удар» (англ. tap) означает, что клавиша нажата и быстро отпущена, при этом:

Замечание: Оба условия должны быть выполнены. Если клавиша нажата в комбинации с любой другой клавишей (одной или несколькими), это не считается ударом. Если клавиша удерживалась в нажатом состоянии слишком долго (более половины секунды), это тоже не считается ударом.

Таппер обращается к выбранному раскладчику, чтобы узнать задержку автоповтора. Раскладчик «Гном» берёт задержку из настроек Гнома; раскладчик «KDE» читает конфигурационные файлы Кед; раскладчик «Xkb» берёт задержку из Иксов. Таппер определят задержку только однажды, в начале работы; если вы измените задержку после того, как Таппер начал работу, Таппер не будет использовать новую задержку. Вам нужно перезапустить Таппер, чтобы он использовал новое значение задержки.

Кнопки

Кнопка (англ. button) — это клавиша, расположенная на устройстве ввода, отличном от клавиатуры, например, мышь, джойстик, тачпад и т. д.

Таппер наблюдает и за клавишами, и за кнопками. Нужно это для того, чтобы корректно определять удары по клавишам. Например, давайте рассмотрим Ctrl+щелчок по левой кнопке мыши. Технически, это действие пользователя порождает 4 события ввода: (1) нажатие на клавишу Ctrl, (2) нажатие на левую кнопку мыши, (3) отпускание левой кнопки мыши, (4) отпускание клавиши Ctrl. Если Таппер не наблюдает за кнопками мыши, Таппер услышит только два события: нажатие на клавишу Ctrl и её последующее отпускание, что будет некорректно интерпретировано как удар по клавише Ctrl.

Таппер обрабатывает кнопки точно так же, как и клавиши (для примера, вы можете включать раскладки клавиатуры щелчками по кнопкам мыши). Опция --list-keys показывает кнопки в одном списке с клавишами. В случае раскладчика «libinput» названия клавиш начинаются с префикса KEY_, а названия кнопок начинаются с префикса BTN_. В случае раскладчика «XRecord» названия кнопок начинаются с префикса BTN.

Раскладки

Раскладка клавиатуры (англ. keyboard layout) может быть указана её индексом (целым числом без знака: 1, 2, 3, и т. д.) или её названием (например, Английская (США) или Русская (машинописная)).

Раскладки зависят от выбранного раскладчика. В случае, если выбран раскладчик «Гном», раскладки — это гномьи «источники ввода», в случае раскладчика «Xkb» раскладки — это иксовые «группы». Таппер нумерует раскладки начиная с индекса 1.

В самом начале работы Таппер преобразует названия раскладок в соответствующие им индексы, используя выбранный раскладчик, и в дальнейшем оперирует только с индексами. Если в командной строке указано неправильное название раскладки, это вызовет ошибку.

Запустите Таппер с опцией --list-layouts, чтобы увидеть список раскладок, доступных для использования автоматически выбраным раскладчиком. Используйте --list-layouts в комбинации с опцией --layouter, чтобы посмотреть список раскладок, известных указанному раскладчику.

Действия

Действие (англ. action) — это элементарная команда, которую Таппер может исполнить. Есть два типа действий:

@раскладка

Включить указанную раскладку. Таппер никогда не загружает раскладки в Гном, Кеды или Иксы, Таппер только включает (делает активной, или текущей) одну из уже загруженных раскладок. Говоря техническим языком, раскладчик «GNOME» посредством шины D-Bus вызывает метод из Агизма (расширения Гнома); раскладчик «KDE» посредством той же шины D-Bus вызывает метод из Кед; раксладчик «Xkb» вызывает функцию XkbLockGroup. (В свою очередь, Гном, работающий в Иксах, может (пере)загружать раскладки во время работы, чтобы преодолеть иксовое ограничение на 4 одновременно загруженных раскладки).

клавиша

Эмулировать удар по указанной клавише путём генерации двух событий ввода: нажатия на клавишу и её отпускания.

Заметьте, что индекс раскладки, используемый в действии, должен иметь префикс @, чтобы Таппер мог отличить индексы раскладок от кодов клавиш: 1 — это команда эмулировать удар по клавише Esc, в то время как @1 — это команда включить первую раскладку. Названия раскладок тоже должны иметь префикс: @Английская (США).

Назначения

Назначение (англ. assignment) выделяет клавишу для выполнения серии действий.

Назначения делаются ключом assignments в настройках и аргументами назначение в командной строке. Обратите внимание на разницу: в настройках нельзя использовать названия клавиш и раскладок, там допустимы только коды клавиш и индексы раскладок. Командная строка чуть более гибкая: в ней допускаются и коды/индексы, и названия.

Простые назначения

Серия действий состоит из одной команды включить раскладку (например, LCTL=@1). В таком случае, назначение выделяет клавишу для включения раскладки. Когда Таппер опозна́ет удар по этой клавише (LCTL), он включит соответствующую этой клавише раскладку (1).

Клавиша может быть назначена только однажды, использование клавиши повторно в другом назначении (например, LCTL=@1 LCTL=@2) является ошибкой. В противоположность этому, та же самая раскладка может быть привязана к нескольким разным клавишам (например, LCTL=@1 LFSH=@1), в этом случае раскладка будет включаться при ударе по любой из выделенных ей клавиш.

Пустой список действий (например, LCTL=) разрешается. Такое назначение освобождает клавишу. Это может быть использовано в командной строке, чтобы отменить назначения, сделанные в настройках.

Расширенные назначения

Серия действий может быть произвольной последовательностью разделённых запятыми действий (например, LCTL=@1,BTN1,BTN1,@2). Когда Таппер опозна́ет удар по этой клавише (LCTL), он выполнит все указанные действия в порядке их перечисления (включит первую раскладку, сэмулирует щелчок по первой клавише мыши (два раза), включит вторую раскладку).

Список действий может быть произвольной смесью команд включения раскладок и команд эмуляции ударов по клавишам, но есть ограничения:

  • Таппер не может скрыть события ввода от других программ. Для примера, давайте рассмотрим назначение LCTL=BTN1: когда Таппер опознает удар по левой клавише Ctrl, он эмулирует щелчок по первой кнопке мыши. Другие программы увидят (или услышат) и нажатие на левую клавишу Ctrl, и щелчок по первой кнопке мыши.

  • Генерируемые Таппером события ввода видимы всем программам, включая самого Таппера. Рекурсивные назначения вида LCTL=LCTL или LCTL=RCTL RCTL=LCTL вызовут бесконечный цикл, как только первый удар по клавише LCTL будет обнаружен Таппером. (Если вам повезёт, вы сможете убить процесс Таппера не повесив всю систему.)

  • Таппер инициирует включение раскладки, но само включение происходит асинхронно в Гноме, Кедах или Иксах. Примерно такие же дела происходят с событиями ввода: Таппер генерирует события, которые затем асинхронно направляются через ядро и/или Иксы. Из-за этой асинхронности результат действий разного типа может проявляться в порядке, отличном от исходного. Например, результат серии действий @1,30,@2,31 может быть таким же, как результат @1,@2,30,31, или @1,30,31,@2 или 30,31,@1,@2. Однако, результат действий одного типа должен появляться в порядке их следования: в предыдущем примере программы всегда будут видеть нажатие на клавишу с кодом 30 раньше, чем нажатие на клавишу с кодом 31.

Несмотря на эти ограничения, эмуляция нажатия клавиш позволяет проделывать полезные трюки, см. раздел “Расширенное использование” в секции “Примеры”.

Звуки

Таппер может издавать звук («звонить в колокольчик», англ. ring the bell) когда включает раскладку. Фактический звук зависит от настроек рабочего стола, может отсутствовать или даже иметь визуальный эффект.

Звук включается и выключается ключом bell в настройках и опциями --bell и --no-bell в командной строке.

Заметка: Раскладчик «KDE» не умеет издавать звуки, так что опция --bell не будет иметь эфекта если выбран раскладчик «KDE».

Настройки

Настройки (англ. settings) Таппера включают:

Таппер хранит настройки в базе GSettings.

По умолчанию Таппер загружает настройки; используйте опцию --no-load-settings, чтобы запретить загрузку настроек. Таппер объединяет загруженные настройки с опциями и назначениями из командной строки, чтобы получить конфигурацию для работы. В случае конфликтов, командная строка имеет приоритет над загруженными настройками. Если опция --save-settings присутствует в командной строке, Таппер сохраняет рабочую конфигурацию в базе GSettings и завершает работу.

Таким образом, вы можете редактировать настройки Таппера при помощи опции --save-settings. Если вы предпочитаете графический интерфейс, используйте опцию --dconf-editor — Таппер откроет свои настройки в приложении «Редактор dconf» (англ. dconf Editor, команда dconf-editor). Настройки Таппера также могут быть просмотрены или отредактированы в приложениях gsettings и dconf. Схема (англ. schema) настроек Таппера — io.sourceforge.kbd-tapper, путь (англ. path) — /io/sourceforge/kbd-tapper/.

ОПЦИИ

Длинные опции можно сокращать до тех пор, пока сокращения остаются однозначными. Например, --save-options может быт сокращена до --save или даже до --sa (но не до --s, т. к. получится неоднозначность: --s может быть сокращением от --save-settings, --syslog или --show-taps).

Порядок опций в командной строке не имеет значения. Даже если вы напечатаете --save-settings --load-settings --bell, Таппер сначала загрузит настройки, потом включит звук, и только затем сохранит настройки.

Выбор слухача

--listener=слухач

Слухач, который будет использоваться при работе, один из: libinput, xrecord, auto (это выбор по умолчанию).

--libinput

То же, что и --listener=libinput.

--xrecord

То же, что и --listener=xrecord.

Выбор раскладчика

--layouter=раскладчик

Раскладчик, который будет использоваться, один из: gnome, kde, xkb, dummy, или auto (это выбор по умолчанию).

--gnome

То же, что и --layouter=gnome.

--kde

То же, что и --layouter=kde.

--xkb

То же, что и --layouter=xkb.

Выбор ударника

--emitter=ударник

Ударник, который будет использоваться при работе, один из: libevdev, xtest, dummy или auto (это выбор по умолчанию).

--libevdev

То же, что и --emitter=libevdev.

--xtest

То же, что и --emitter=xtest.

Выбор звука

--bell

Издавать звук при включении раскладок.

--no-bell

Не издавать звуков при включении раскладок (это выбор по умолчанию).

Управление настройками

--dconf-editor

Запустить приложение «Редактор dconf» для редактирования настроек и закончить работу.

--load-settings

Загрузить настройки из базы GSettings (это выбор по умолчанию).

--no-load-settings

Не загружать настройки из базы GSettings.

--reset-settings

Сбросить все настройки в начальные значения и закончить работу.

--save-settings

Сохранить рабочую конфигурацию в базе GSettings и закочить работу.

Прочие опции

--autostart

Организовать автозапуск Таппера при старте графической сессии и закончить работу. Опция работает для рабочих столов, соответствущих Desktop Application Autostart Specification.

--no-autostart

Отменить автозапуск Таппера при старте графической сессии и закончить работу.

--lay-off

Разобрать опции и назначения в командной строке, загрузить настройки (если не запрещено), распечатать рабочую конфигурацию и закончить работу. Опция существует для целей тестирования.

--no-default-assignments

Не использовать назначения по умолчанию. Таппер использует назначения по умолчанию, если никаких назначений не сделано ни в настройках (если загрузка настроек разрешена), ни в командной строке. Опция существует, главным образом, для целей тестирования.

--quiet

Не печатать начальное сообщение, содержащее копирайт и рабочую конфигурацию.

--syslog

Копировать ошибки и предупреждения в системный лог. (Ошибки, возникшие при разборе командной строки, в системный лог не копируются.)

--x

То же, что и --xrecord --xkb --xtest.

Справочные опции

--help

Распечатать справку и закончить работу.

--list-keys

Вывести список клавиш, известных выбранному слухачу, и закончить работу.

--list-layouts

Вывести список раскладок, известных выбранному раскладчику, и закончить работу.

--show-taps

Запустить Таппер в режиме показа ударов: как только удар будет обнаружен, Таппер напечатает код и название нажатой клавиши. Этот режим подразумевает опцию --emitter=dummy не разрешает делать назначения в командной строке, выбор ударника и назначения, сделанные в настройках, игнорируются.

--usage

Распечатать очень короткую справку и закончить работу.

--version

Вывести короткое сообщение, содержащее версию, копирайт и лицензию, и закончить работу.

КОДЫ ВЫХОДА

ПРИМЕРЫ

Получение информации

Вывести список клавиш, известных автоматически выбранному слухачу:

$ tapper --list-keys

Вывести список клавиш, известных слухачу «libinput»:

$ tapper --libinput --list-keys

Узнать коды клавиш (ударяйте по интресующим вас клавишам, потом нажмите Ctrl+C, чтобы остановить Таппер):

$ tapper --show-taps

Вывести список раскладок, известных автоматически выбранному раскладчику:

$ tapper --list-layouts

Вывести список раскладок, известных раскладчику «GNOME»:

$ tapper --gnome --list-layouts

Вывести список раскладок, известных раскладчику «KDE»:

$ tapper --kde --list-layouts

Простое использование

По умолчанию, если настройки не были изменены, удар по левой клавише Ctrl включает первую раскладку, а удар по правой клавише Ctrl включает вторую раскладку:

$ tapper

То же самое + включить звук:

$ tapper --bell

В дополнение к назначениям из настроек (левая и правая клавиши Ctrl, удар по левой клавише Shift включает третью раскладку, а удар по правой клавише Shift — четвёртую (подразумеваются Иксы):

$ tapper LFSH=@3 RTSH=@4

То же самое, но клавиши указаны кодами вместо названий, так что это годится и для Иксов, и для Вайланда:

$ tapper 42=@3 54=@4

Освободить назначенные в настройках клавиши Ctrl, и вместо них использовать левую клавишу Shift для включения первой раскладки, и правую клавишу Shift — для второй:

$ tapper LCTL= RCTL= LFSH=@1 RTSH=@2

Редактирование настроек

Полностью игнорировать существующие настройки, если они есть, и указать новую конфигурацию: левая клавиша Shift включает первую раскладку, правая клавиша Shift — вторую. Остальные настройки сброшены в состояние по умолчанию: слухач, раскладчик и ударник выбираются автоматически, звук выключен. Эта команда предназначена для Иксов, т. к. используются иксовые названия клавиш:

$ tapper --no-load-settings LFSH=@1 RTSH=@2 --save-settings

То же самое для Вайланда:

$ tapper --no-load-settings KEY_LEFTSHIFT=@1 KEY_RIGHTSHIFT=@2 --save-settings

То же самое, но используются коды клавиш вместо имён, поэтому команда годится и для Иксов, и для Вайланда:

$ tapper --no-load-settings 42=@1 54=@2 --save-settings

Включить звук:

$ tapper --bell --save-settings

Сбросить все настройки в исходное состояние:

$ tapper --reset-settings

Проверить настройки с помощью программы gsettings:

$ gsettings list-recursively io.sourceforge.kbd-tapper

Редактировать настройки Таппера в графическом приложении «Редактор dconf» (англ. dconf Editor):

$ tapper --dconf-editor

Запуск Таппера

Запустить Таппер, использовать настройки:

$ tapper

Запустить Таппер с сохранёнными настройками, но выключить звук:

$ tapper --no-bell

Организовать автоматический запуск Таппера при старте графической сессии:

$ tapper --autostart

Расширенное использование

Клавиша альтернативных символов и клавиша Compose

Клавиша-модификатор вроде клавиши Ctrl выполняет свою функцию только будучи нажатой вместе с другой клавишей (одной или несколькими): нажатие модификатора самого по себе не имеет эффекта. Таппер даёт клавишам-модификаторам вторую функцию: удар по назначенному модификатору приобретает смысл — это включает раскладку клавиатуры.

Давайте рассмотрим клавишу альтернативных символов (англ. Alternate Characters Key) и клавишу Compose. («Клавиша альтернативных символов» — это термин Гнома, в Иксах это называется «клавиша выбора третьего уровня» (или регистра).) И клавиша альтернативных символов и клавиша Compose — это названия функций, а не реальные клавиши на клавиатуре. Функция «клавиша альтернативных символов» часто назначается на правую клавишу Alt, «клавиша Compose» — на Menu. Клавиша альтернативных символов является модификатором: она имеет значение только если нажата в комбинации с другой клавишей, нажатие на клавишу альтернативных символов саму по себе эффекта не имеет. Давайте назначим обе функции, и клавишу альтернативных символов, и клавишу Compose на клавишу Menu:

  1. Сконфигурируйте ваш рабочий стол, чтобы использовать клавишу Menu как клавишу альтернативных символов.

  2. Выберите клавишу, отсутствующую на вашей клавиатуре (например, F14 с кодом 184), и сконфигурируйте ваш рабочий стол, чтобы использовать её как клавишу Compose.

  3. Запустите Таппер:

    $ tapper 127=184    # 127 — это код клавиши Menu

Вуаля! Клавиша Menu, нажатая в комбинации с другой клавишей, исполняет роль клавиши альтернативных символов, удар по клавише Menu выполняет роль клавиши Compose; теперь правая клавиша Alt освободилась и вы можете использовать её как обычную клавишу Alt, чтобы иметь две симметричных клавиши (подобно клавишам Shift и Ctrl).

Другой вариант — использовать правую клавишу Alt как клавишу альтернативных символов и клавишу Compose, а клавише Menu вернуть её исходную функцию — показывать контекстное меню.

Клавиша для не-англоязычных вимеров

(Вернее, для тех вимеров, у которых письменность родного языка не основана на латинице.)

Сначала сконфигурируйте ваш рабочий стол, чтобы освободить клавишу Caps Lock, затем:

$ tapper 58=1,@1    # 58 — код клавиши Caps Lock, 1 — код Esc

Теперь удар по клавише Caps Lock эмулирует удар по клавише Esc, который включает нормальный режим в Виме, и включает первую раскладку (предполагается, что это Английская (США)), т. к. большинство команд Вима набираются латинскими буквами.

Кеды в Вайланде

Замечание: С появлением в Таппере раскладчика «KDE» этот трюк устарел, но он (трюк) демонстрирует технику, которая может с успехом применяться в других случаях.

Кеды позволяют выделить клавишу (или комбинацию клавиш) для включения раскладки, но Кеды не позволяют использовать для включения раскладок клавиши-модификаторы, наример, Ctrl. Таппер может помочь обойти это ограничение:

$ tapper KEY_LEFTCTRL=KEY_F14 KEY_RIGHTCTRL=KEY_F15

Теперь запустите приложение «Параметры системы» (англ. System Settings), проследуйте по цепочке «Устройства ввода» (англ. Input Devices) → «Клавиатура» (англ. Keyboard) → «Раскладки» (англ. Layouts) и добавьте клавиши для раскладок, используя левую и правую клавиши Ctrl — но теперь при помощи Таппера они будут опознаваться Кедами как клавиши «Launch (7)» и «Launch (8)».

БЕЗОПАСНОСТЬ

Важное замечание: Использование Таппера в многопользовательской среде может быть небезопасно, см. детали ниже. Не устанавливайте отладочную версию Таппера, так как она может быть использована в качестве кейлоггера (англ. key logger) (программы, записывающей все нажимаемые пользователем клавиши; такие программы могут использоваться для кражи аккаунтов и паролей).

Слухач «libinput» читает файлы устройств в каталоге /dev/input. Эти файлы не могут быть прочитаны обычным пользователем, только члены группы input (и пользователь root) могут делать это. Ударник «libevdev» имеет ещё бо́льшие требования: он пишет в файл устройства /dev/uinput, такие действия разрешены только пользователю root.

Таким образом, чтобы выполнять все свои заявленные функции, Таппер must be run with the root user identity. Вплоть до версии 0.7.0, это достигалось установкой бита set-user-id на исполняемый файл Таппера, принадлежащего пользователю root. Однако, Тапперу не нужны все способности (англ. capabilities) пользователя root, для работы вполне достаточно двух способностей: cap_setuid и cap_setgid. Этот подход с урезанием способностей Таппера был реализован в версии 0.7.1.

В любом случае, Таппер всё ещё имеет очень много власти в системе: слухач «libinput» слышит все события ввода (нажатия и отпускания клавиш, перемещения мыши, и т. д.) в системе, даже если эти события исходят от другого пользователя. Например, один пользователь может не завершить, а только запереть («залочить», англ. to lock) свою сессию, а другой пользователь в это время может начать свою сессию, но запущенный первым пользователем Таппер будет слышать всё, что вводит второй пользователь (а отладочная версия Таппера ещё и покажет все события первому пользователю). Генерируемые ударником «libevdev» события ввода влияют на всех пользователей системы.

Однако, Таппер стремится вести себя ответственно:

Также, Таппер — свободная программа, её исходные коды доступны. Вы можете изучить их, чтобы убедиться что Таппер вас не обманывает.

ПРЕДОСТЕРЕЖЕНИЯ

Раскладчик «GNOME» не работает

Раскладчик «GNOME» в Таппере 0.5.0 (и более ранних версиях) использует метод Eval из Гнома, чтобы управлять раскладками. В Гноме 41 метод Eval признан небезопасным (вполне обоснованно) и выключен: метод всё ещё присутствует может быть вызван, но ничего не делает. Соответственно, Таппер не может включать раскладки.

В качестве временного костыля вы можете установить одно из перечисленных расширений Гнома:

Эти расширения включают «небезопасный режим» (англ. Unsafe Mode) в Гноме, после чего метод Eval начинает работать. Оба расширения считаются небезопасными и исключены из GNOME Shell Extensions, так что вам придётся загружать и устанавливать их самостоятельно.

Раскладчик «GNOME» в Таппере 0.6.0 (и более поздних версиях) не использует метод Eval. Вместо него используется Агизм, расширение Гнома, которое даёт приложениям возможность управлять раскладками в Гноме. Агизм должен быть установлен и включен, чтобы Таппер работал. Агизм работает в любой версии Гнома, начиная с 3.28.

Раскладчик «Xkb» не работает в Гноме

Раскладчик «Xkb» не работает в Гноме 3.18 (поставлялся в Федоре 23). Строго говоря, раскладчик работает — он включает требуемую раскладку, но Муттер (гномий оконный менеждер) немедленно переключает её обратно. Такое поведение было добавлено в Муттер разработчиками Убунты, чтобы починить переключение раскладок в Убунте… и сломать переключение раскладок в Федоре. Детали можно найти здесь:

Сломанный Муттер был починен в Федоре 24, но потом сломанный Муттер опять появился в Федоре. Сломанный Муттер может поставляться и в других дистртбутивах ГНУ/Линукса.

Однако, сейчас это уже не важно: Просто не используйте раскладчик «Xkb» в Гноме, используйте раскладчик «GNOME», сделанный специально для Гнома.

Раскладчик «Xkb» ведёт себя странно в Гноме

Если даже Муттер не сломан (например, в Федоре 24), раскладчик «Xkb» может вести себя в Гноме странно:

Решение этой проблемы простое: Не используйте раскладчик «Xkb» в Гноме, используйте раскладчик «GNOME», сделанный специально для Гнома.

BUGS

If you are a newbie, read Simon Tatham’s essay “How to Report Bugs Effectively”. The essay is available in several languages.

A bug report or help request must include:

  1. Brief description of your system. Run the following commands and show me their exact output:

    $ cat /etc/os-release
    $ uname -m
  2. How you installed Tapper:

    1. If you downloaded a prebuilt RPM from Tapper’s Copr repository: Provide the exact name of the RPM package: rpm -q tapper.
    2. If you built a binary RPM from source RPM: Provide the exact name of the source RPM package.
    3. If you built Tapper from sources: Provide the exact name of the source tarball.
  3. In case of build problem: Exact build commands and their exact output.

  4. In case of run time problem: Run the following commands and show me their exact output (omit the third command in case of non-GNOME desktop (Ubuntu is the GNOME desktop)):

    $ echo $XDG_SESSION_TYPE
    $ echo $XDG_SESSION_DESKTOP
    $ gnome-extensions show agism@agism.sourceforge.io
    $ gsettings list-recursively io.sourceforge.kbd-tapper

    Then run Tapper from the terminal and show me exact command you type and its exact output; also describe your actions, the actual Tapper behavior, and your expectations.

Collect all the requested information and send the bug report to .

КОПИРАЙТ И ЛИЦЕНЗИЯ

Copyright 🄯 2014, 2016—2017, 2019—2023 Van de Bugger. Лицензия GPLv3+: GNU GPL версии 3 или новее https://gnu.org/licenses/gpl.html.
Это свободное ПО: вы можете изменять и распространять его. Нет НИКАКИХ ГАРАНТИЙ в пределах действующего законодательства.

СМОТРИТЕ ТАКЖЕ

0.7.4-0.vdb.1
Source Forge
2023-02-01