Как я могу изменить действия клавиш на клавиатуре? (Как я могу создать пользовательские команды клавиатуры / сочетания клавиш?)
Я хочу изменить привязки клавиш на некоторых клавишах на моей клавиатуре. Я хочу, чтобы некоторые запускали команды, а другие активировали разные ключи.
Какие приложения я могу использовать для этого?
Индекс:
Настройки клавиатуры и ярлыков по умолчанию (в настройках системы)
- ХКВ
Я все еще ищу ответы, используя dconf и любой другой метод.
13 ответов
xbindkeys..
sudo apt-get install xbindkeys
Xbindkeys - очень универсальная программа, которая позволяет очень легко переназначать ключи. Он использует конфигурационный файл, мой по умолчанию, расположенный в вашем домашнем каталоге, чтобы изменить привязки клавиш на определенные команды.
Для создания файла конфигурации по умолчанию вы используете команду:
xbindkeys --defaults
Который печатает файл конфигурации по умолчанию. Поэтому, если вы хотите создать файл, содержащий значения по умолчанию, вы должны использовать:
xbindkeys --defaults > $HOME/.xbindkeysrc
Который печатает значения по умолчанию в скрытый файл с именем .xbindkeysrc
находится в доме (~
).
Теперь, чтобы реально изменить привязки клавиш, нам сначала нужно узнать, как называется или называется ключ этих клавиш. xbindkeys
позволяет нам использовать -k
дескриптор, чтобы найти имя ключа или комбинации клавиш. Бежать:
xbindkeys -k
И нажмите клавишу или комбинацию клавиш. Ваш вывод будет выглядеть примерно так (при нажатии пробела):
"NoCommand"
m:0x10 + c:65
Mod2 + space
"No Command"
говорит нам, что в настоящее время ни одна команда не связана с клавишей пробела.
m:0x10 + c:65
Mod2 + space
Имя клавиши / комбинации клавиш.
файл конфигурации..
Позволяет открыть файл конфигурации, который вы сделали ранее:
gedit .xbindkeysrc
Вот выдержка из файла конфигурации по умолчанию:
#
# A list of keys is in /usr/include/X11/keysym.h and in
# /usr/include/X11/keysymdef.h
# The XK_ is not needed.
#
# List of modifier:
# Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
# Mod3 (CapsLock), Mod4, Mod5 (Scroll).
#
# The release modifier is not a standard X modifier, but you can
# use it if you want to catch release events instead of press events
# By defaults, xbindkeys does not pay attention with the modifiers
# NumLock, CapsLock and ScrollLock.
# Uncomment the lines above if you want to pay attention to them.
#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable
# Examples of commands:
"xbindkeys_show"
control+shift + q
Каждая строка начинается с #
комментарий и не будет прочитан или запущен xbindkeys
,
Пока единственная строка, которая не закомментирована:
"xbindkeys_show"
control+shift + q
Этот отрывок показывает основной синтаксис xbindkeys
команды:
"Command to run (in quotes)"
key to associate with command (no quotes)
Итак, как вы можете видеть:
"xbindkeys_show"
control+shift + q
Запускает команду xbindkeys_show
когда вы нажимаете Ctrl + Shift + q.
привязать ключи к командам..
Теперь попробуем связать несколько ключей. Я рекомендую очистить весь файл по умолчанию, чтобы он был пустым. Он содержит предустановленные привязки клавиш, которые вы, вероятно, не хотите.
Теперь предположим, что вы хотите использовать Ctrl + B, чтобы открыть браузер. Во-первых, вам нужно узнать, как называется Ctrl + b или как его называют. Как уже упоминалось ранее, вы можете использовать xbindkeys -k
найти название ключа или ключей, но есть более простой способ. Для простых комбинаций, таких как Ctrl + B, вы можете просто использовать:
Control+b
Намного проще, не правда ли!
Теперь найдите команду для вашего любимого браузера:
Для Firefox:
firefox
Для хрома:
chromium-browser
Для Оперы:
opera
Помните синтаксис из ранее? xbindkeys
Команда для запуска Firefox (или другого вашего любимого браузера) при нажатии Ctrl + b:
"firefox"
Control+b
Теперь поместите это в ваш конфигурационный файл и сохраните. Теперь вы можете заметить, что ваша команда еще не работает, потому что xbindkeys
не работает Для начала просто запустите xbindkeys
из терминала. Теперь ваш Ctrl + b должен запустить ваш браузер!
привязать ключи к другим ключам..
Если вы хотите, чтобы клавиша на клавиатуре вызывала другую клавишу на клавиатуре, вам понадобится дополнительное программное обеспечение, как xbindkeys
не поддерживает это самостоятельно. Я знаю две программы, которые мы можем использовать, xdotool
а также xte
, я предпочитаю xte
так что я собираюсь использовать это.
Установите это:
sudo apt-get install xautomation
Синтаксис для xte
это так:
xte 'command key/mousebutton/xyCoordinates'
Примеры:
Для вызова одной клавиши нажмите:
xte 'key keyName'
Чтобы вызвать комбинацию клавиш:
xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName
Чтобы вызвать кнопку мыши:
xte 'mouseclick buttonNumber'
(Мы обсудим поиск номеров кнопок чуть позже)Чтобы переместить мышь:
xte 'mousemove xCoordinate yCoordinate'
И больше! Читать
man xte
Теперь, когда вы знаете команду для имитации нажатий клавиш, вы можете вызывать ее из xbindkeys
Сценарий, как это:
"xte 'key b'"
Control+b
Как вы можете догадаться, это вызывает xte 'key b'
когда мы нажимаем Ctrl + b, это вводит b в любой документ, над которым вы сейчас работаете.
Однако стоит отметить, что xbindkeys
а также xte
не всегда хорошо работают вместе. Иногда вам нужно нажимать клавиши одновременно, чтобы получить вывод, в других случаях он работает просто отлично. Это может или не может иметь отношение к конфигурации системы и / или оборудования.. Я не уверен. Посмотрите ответ Maggotbrain для более надежного способа привязки ключей к другим ключам.
привязать кнопки мыши к командам..
Вы также можете использовать xbindkeys
привязать кнопки мыши к командам (и, следовательно, сочетания клавиш, см. выше). Базовый формат кнопок мыши должен быть вам знаком:
" [command to run] "
b:n
куда [command to run]
это команда, которую вы хотите запустить и n
номер кнопки мыши, которую вы хотите использовать для этой команды.
Если вы не знаете номер своей кнопки мыши, вы можете использовать xev
чтобы узнать что это такое:
xev | grep button
Вывод будет примерно таким:
user@host:~$ xev | grep button
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
state 0x10, button 2, same_screen YES
state 0x210, button 2, same_screen YES
state 0x10, button 3, same_screen YES
state 0x410, button 3, same_screen YES
Когда я нажимаю каждую из моих кнопок мыши.
Например:
" firefox "
b:2
Запускает Firefox, когда я нажимаю среднюю кнопку мыши.
Xev и xmodmap
Изменение привязок клавиш с помощью xev
а также xmodmap
,
Оба приложения командной строки доступны по умолчанию, поэтому нет необходимости устанавливать дополнительное программное обеспечение.
Xev "создает окно, а затем просит X-сервер отправлять ему события всякий раз, когда с окном происходит что-либо (например, его перемещение, изменение размера, ввод, нажатие и т. Д.)". xev man page
xmodmap - это "программа, используемая для редактирования и отображения карты модификаторов клавиатуры и таблицы клавиш, которые используются клиентскими приложениями для преобразования кодов событий в ключевые символы". Страница руководства xmodmap
Следующий пример переназначит клавишу Caps_Lock на поведение клавиши Esc (многие пользователи vi/vim считают это полезным сопоставлением клавиатуры).
Использование xev
Начать xev
приложение из окна терминала (Ctrl - Alt - t).
Приложение инициализируется, отображает количество строк и запускает пустое окно. Держать xev
Окно приложения в фокусе, и нажмите клавишу, свойства / поведение которой вы хотите использовать.
- Нажмите клавишу ESC
В окне терминала вы увидите несколько строк вывода. Запишите 3-ую строку. Он будет содержать имя свойства, которое вы хотите переместить на другой ключ.
KeyPress event, serial 32, synthetic NO, window 0x3e00001,
root 0x256, subw 0x0, time 16245388, (616,73), root:(1487,535),
state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
XLookupString gives 1 bytes: (1b) ""
В этом случае клавиша Esc (код клавиши 9) использует имя "Escape".
- Нажмите клавишу Caps Lock
На этот раз мы ищем код ключа, который использует Caps Lock.
Снова обратите внимание на 3-ю строку:
KeyRelease event, serial 32, synthetic NO, window 0x4c00001,
root 0x256, subw 0x0, time 94702774, (862,151), root:(1733,613),
state 0x10, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
XKeysymToKeycode returns keycode: 9
XLookupString gives 1 bytes: (1b) ""
Использование xmodmap
Теперь, когда мы получили информацию о ключах, которые мы хотим изменить xev
, мы будем использовать xmodmap
изменить раскладки клавиш. В командном терминале (Ctrl + Alt + t) выполните следующие команды:
Эта команда изменяет Caps Lock, чтобы использовать то же поведение, что и Esc
xmodmap -e "keycode 66 = Escape"
Эта опция печатает таблицу раскладок в виде выражений в файл
~/.Xmodmap
xmodmap -pke > ~/.Xmodmap
Активируйте изменения (только для этого сеанса входа в систему) с помощью следующей команды:
xmodmap ~/.Xmodmap
Делать изменения постоянными при перезагрузке:
Если он не существует, создайте файл в вашей домашней папке с именем
.xinitrc
,touch .xinitrc
Поместите следующую строку в файл и сохраните файл:
xmodmap ~/.Xmodmap
Модификация ключей с различным поведением состояний
(например, Num Lock)
Получите таблицу раскладок для клавиш-модификаторов (здесь вывод сокращен)
$ xmodmap -pm shift Shift_L (0x32), Shift_R (0x3e) mod2 Num_Lock (0x4d)
Если вы хотите изменить, например, поведение точки на клавише Del / Period на цифровой клавиатуре на запятую, используйте следующую команду:
xmodmap -e "keycode 91 mod2 = KP_Delete comma"
Обратите внимание, что это использует mod2
сопоставление клавиш для изменения поведения клавиш при нажатии модификатора Num Lock. Синтаксис для этого:
xmodmap -e "<KEYCODE> <MODIFIER> = <behaviour> <behaviour_with_modifier>"
По умолчанию (это просто дополнение к отличному ответу Сета), Ubuntu (в этом примере я использую 16.04) имеет 2 категории, которые по умолчанию входят в Системные настройки:
Чтобы перейти к настройкам системы, в правом верхнем углу щелкните значок шестеренки:
Затем выберите Системные настройки:
Здесь вы найдете 2 варианта, которые могут отправить вас в раздел "Создание ярлыка".
Если вы выберете " Ввод текста", вам нужно будет выбрать ссылку " Настройки клавиатуры" в правом нижнем углу, которая перенаправит вас прямо к опциям "Ярлыки".
Если вы выберете опцию " Клавиатура", вам нужно будет щелкнуть вкладку " Ярлыки".
После перехода на вкладки "Ярлыки" выберите " Ярлыки пользователя" внизу списка с левой стороны:
А затем нажмите на знак "плюс" внизу, чтобы начать создавать свой собственный ярлык:
С этого момента, вы просто добавляете имя ярлыка (не путайте имя ярлыка, поскольку имя действующей команды вы будете выполнять). А ниже, в поле "Команды", вы указываете, какая команда будет выполняться для этого ярлыка. В следующем примере я назвал ярлык "Sublime Text 3", чтобы узнать, к чему относится этот ярлык. И в поле команды я добавил фактическую команду, которая subl
,
В результате вы увидите следующее на экране, которое показывает, что, поскольку ярлыку еще не назначена клавиша или комбинация клавиш, по умолчанию он отключен:
Затем мы должны нажать на сообщение "Отключено", чтобы добавить к нему комбинацию клавиш:
В этой части я назначаю комбинацию клавиш SHIFT + CTRL + S, чтобы при нажатии этой комбинации открывалось приложение Sublime Text.
После этого вы можете просто проверить свою комбинацию, нажав соответствующую комбинацию клавиш и увидев, что приложение открыто:
ПРИМЕЧАНИЕ. Для специальных комбинаций, таких как комбинация для уничтожения X-сервера, я предлагаю посетить следующую ссылку: Как включить Ctrl-Alt-Backspace для уничтожения X-сервера?
Перейдите в " Настройки системы" → " Keboard", выберите вкладку " Ярлыки " и добавьте новый пользовательский ярлык для своего браузера. Если ваш браузер по умолчанию - Firefox, используйте firefox
в поле команды; если ваш браузер по умолчанию - Firefox, используйте chromium-browser
, и так далее:
Вы можете создавать сложные (многоключевые) сочетания клавиш, установив AutoKey из центра программного обеспечения. В отличие от xmodmap, AutoKey не привязывает реальные клавиши на вашей клавиатуре; он работает в фоновом режиме и перехватывает определенные вами сочетания клавиш, а затем отправляет имитированные нажатия клавиш в ваши приложения.
При первом запуске AutoKey служба запускается в фоновом режиме (значок уведомления не обновлялся для единства, поэтому визуальной индикации нет). Как только он запустится, вы можете вызвать интерфейс конфигурации, снова запустив панель запуска:
Теперь откройте "Правка"> "Настройки" и выберите "Автоматически запускать AutoKey при входе в систему", чтобы убедиться, что ваши ярлыки работают при каждом входе в систему.
Сопоставление сочетания клавиш с другим сочетанием клавиш
- Выберите "Файл"> "Создать"> "Фраза".
- Убедитесь, что "Вставить с помощью" установлен на "Клавиатура".
Введите ключи, которые вы хотите сопоставить в текстовом поле.
- Специальные (не символьные) ключи представлены с кодами, документированными здесь.
- Если вы введете несколько ключей, они будут отправлены последовательно, если вы не введете
+
между ними (например,<ctrl>+c
будет копировать в большинстве приложений;<ctrl>+c<ctrl>+n<ctrl>+v
создаст новый документ, содержащий выбор;<shift>+ubuntu
напечатал бы текст "Ubuntu")
Нажмите кнопку "Установить" рядом с "Горячей клавишей". Это вызовет диалог, который позволит вам определить комбинацию клавиш, с которой вы хотите сопоставить:
Выберите Файл> Сохранить
Пример завершенной конфигурации (которая отправляет <enter>
когда вы нажимаете <ctrl>+m
) выглядит так:
Попробуй это:
Установите программу под названием XKeyCaps. Чтобы установить, просто нажмите Ctrl+Alt+T на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (ы) ниже:
sudo apt-get install xkeycaps
После установки вы можете выполнить xkeycaps в командной строке для запуска программы. Как только он запустится, выберите правильную раскладку клавиатуры и нажмите ОК
Затем, когда вы получите клавиатуру на экране, щелкните правой кнопкой мыши нужную клавишу, в вашем случае это S, и выберите обмен ключами.
Обязательно добавьте строку ниже в ваши сессии, чтобы она автоматически запускалась при каждой загрузке.
xmodmap ~/.xmodmap-`uname-n`
Источник: UFM ytsejam1138
Если вы просто хотите переназначить ключи, другие ответы будут отличными.
Однако есть и другой способ приблизиться к этому. AutoKey - это макропроцессор клавиатуры, который позволяет связать любую комбинацию клавиш / модификаторов со сценарием, который может выполнять практически все, что вы можете делать с клавиатуры, и многое другое.
AutoKey имеет регистратор сценариев и простой способ ввода основных последовательностей клавиш, но его сценарии написаны на Python и могут выполнять практически все, что вы можете кодировать.
Простейший способ использовать его - отправлять нажатия клавиш на ваши приложения / рабочий стол. При таком способе система / приложения не могут сказать, что это не вы печатаете, поэтому не требуется API или другой интерфейс, они просто делают то, что печатали "вы".
AutoKey также может обрабатывать фразы. Когда вы набираете строку запускающего символа, она может заменить новый текст этой строкой (сразу или после ввода символа разделителя, такого как символ новой строки или табуляция).
У него также есть фильтры окон, так что вы можете ограничить выполнение определенной фразы или скрипта только окнами определенного типа (например, в заголовке Mozilla, поэтому они работают только в таких вещах, как Firefox или Thunderbird).
AutoKey в настоящее время имеет версии Gtk и Qt.
Редактирование:
Пользовательский форум Активный пользовательский форум.
В вики есть несколько примеров сценариев. Поскольку это, прежде всего, приложение с графическим интерфейсом и множеством опций, для примеров потребуется множество скриншотов и целая статья.
У меня есть определенная фраза, так что, когда я набираю " Jmail! ", Она мгновенно заменяет ее довольно длинным адресом электронной почты.
Я написал скрипт, который запускается нажатием Ctrl- P, который активен только в тех окнах, в названии которых есть "Mozilla". Нажатие Ctrl - P вызывает диалоговое окно печати (Firefox или Thunderbird), выбирает "Печать в файл", а затем заполняет имя следующего доступного файла печати в моей очереди печати (я нумерую их как 01, 02, ..., и сценарий читает каталог очереди, находит последний номер файла и увеличивает его на 1). Я использую его с моим программным обеспечением для эмуляции двусторонней печати ( duplexpr), чтобы исключить массу нажатий клавиш и движений мыши.
Я видел некоторые другие сценарии от геймеров, которые позволяют им очень быстро получать доступ к информации о своем персонаже и ресурсах, чтобы они могли сосредоточиться на действии.
Использование xkb
xkb
является расширением X Keyboard. Он отвечает за сопоставление клавиш вашей клавиатуры их назначенным функциям.xkb
символы можно найти в /usr/share/X11/xkb/symbols/
, Клавиши-модификаторы отображаются в /usr/share/X11/xkb/symbols/pc
,
Скажем, мне нужно переключить функции Caps Lock
а также Left Control
ключи. Эти изменения необходимы для pc
файл:
key <CAPS> { [ Control_L ] };
key <LCTL> { [ Caps_Lock ] };
Чтобы применить новые сопоставления, вам нужно очистить xkb
кеш от /var/lib/xkb
:
rm -rf /var/lib/xkb/*
Теперь просто перезапустите сеанс X, и все готово.
Источник: https://radu.cotescu.com/remapping-keys-in-ubuntu-14.04/
Изменить: делать ls
внутри symbols
каталог дает это:
af cm gn kz nec_vndr sk
al cn gr la ng sn
altwin compose group latam nl sony_vndr
am ctrl hp_vndr latin no srvr_ctrl
apl cz hr level3 nokia_vndr sun_vndr
ara de hu level5 np sy
at digital_vndr ie lk olpc terminate
az dk il lt pc th
ba ee in lv ph tj
bd empty inet ma pk tm
be epo iq macintosh_vndr pl tr
bg es ir mao pt tw
br et is md ro typo
brai eurosign it me rs tz
bt fi jp mk ru ua
bw fo ke ml rupeesign us
by fr keypad mm se uz
ca fujitsu_vndr kg mn sgi_vndr vn
capslock gb kh mt sharp_vndr xfree68_vndr
cd ge kpdl mv shift za
ch gh kr nbsp si
Отображения внутри файла ru
основаны на российской стандартной клавиатуре. macintosh_vndr
папка содержит сопоставления для клавиатур Apple. Короче говоря, этот подход очень универсален. Иди и играй с этим:)
ИСПОЛЬЗОВАНИЕ КЛАВИАТУРЫ В КАЧЕСТВЕ МЫШИ
Вы можете сопоставить клавишу клавиатуры с кнопкой мыши. Если вы хотите нажать с помощью клавиши клавиатуры (полезно, если у вас MacBook или плохая кнопка трекпада), вы можете сделать следующее.
установите некоторые утилиты:
sudo apt-get install x11-utils xkbset x11-xserver-utils
найдите код для ключа, который вы хотите отобразить:
- тип
xev | grep keycode
в терминале нажмите клавишу интереса, и появится строка, подобная этой:
state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
- тип
используя код клавиши, переназначьте клавишу так же, как и левой кнопкой мыши:
xkbset m
xmodmap -e "keycode 64 = Pointer_Button1"
Pointer_Button3
это правая кнопка мыши и Pointer_Button2
это середина.
Оказалось, что оно находится под приложением "клавиатура".
Если вы поднимете это, вы можете изменить ярлыки по мере необходимости...
Изменение немного странно при первом использовании. Вы щелкаете справа (столбец, в котором есть ctrl-alt-T, Disabled и т. Д., А затем щелкаете по фактическим клавишам, например, по желаемому ctrl-altb. Вы увидите, что новая последовательность клавиш теперь появляется в этом пространстве. Закрыть окно (или щелчок) и новый ярлык теперь будут работать.
Ярлык уже существует как WWW, просто измените его на Ctrl+Alt+b. Не нужно создавать новый.
Я попробовал решение Кевина (подход xmodmap) на ubuntu 18.04. В моем случае это не сработало. И все же эта процедура заставила его наконец заработать:
- копировать
xmodmap .Xmodmap
в файле с именем.xsession
скорее, чем.xinitrc
. - изменить права доступа к файлу (щелкните правой кнопкой мыши, выберите свойства, вкладку разрешений, измените права доступа на "чтение и запись" и установите флажок в окне)
- добавить приложение для запуска с
/home/<YOUR_USER_NAME>/.xsession
как команда.
Я хотел нажать Print Screen, чтобы сохранить снимок экрана, используя gnome-screenshot
приложение, как в монетном дворе
Но я хотел сделать это с помощью терминала, а не с графическим интерфейсом, так как я хочу сделать его по умолчанию при создании собственного ISO с использованием squashfs
инструменты.
Сначала я установил gnome-screenshot с помощью команды
sudo apt-get install gnome-screenshot
Затем я назначил пользовательский ярлык с помощью Настройки -> Клавиатура -> Пользовательские ярлыки -> Кнопка Добавить (+) ->
В диалоге:
- Название: Снимок экрана
- Команда: гном-скриншот
Нажмите кнопку Добавить
Затем нажмите клавишу печати экрана.
Ключ теперь привязан, и я могу сохранять снимки экрана по мере необходимости.
Но не используя терминал, это способ GUI
Затем я установил dconf-editor
с помощью
sudo apt-get install dconf-editor
И искать gnome-screenshot
Я нахожу свои пользовательские привязки клавиш на этом пути
/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/
Значения ключей:
- переплет "Печать"
- команда "гном-скриншот"
- название "печать экрана"
Теперь я копирую их и удаляю пользовательскую комбинацию клавиш GUI
Я открываю терминал и набираю эти команды
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command "'gnome-screenshot'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding "'Print'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name "'print screen'"
И вуаля
Теперь я могу сохранять снимки экрана без графического интерфейса, используя только dconf
и терминал. Мне не нужно dconf-editor
либо больше, он был просто установлен, чтобы получить значения.
CompizConfig Settings Manager (CCSM)
CCSM lets you change some system keyboard shortcuts.
To install it, use the Software Center, or this command:
sudo apt-get install compizconfig-settings-manager
Например
I used it to change the "Window spread" shortcut from the default Super + W to Super + Tab, like on Windows 10. From my answer on another thread: