Я ищу способ переназначить некоторые ключи в ubuntu.
то есть. Р>
Я хотел бы изменить PgUp на Главная или PgDown на Конец .
Есть ли встроенная команда или инструмент для переназначения ключей в Ubuntu / GNOME?
Я ищу способ переназначить некоторые ключи в ubuntu.
то есть. Р>
Я хотел бы изменить PgUp на Главная или PgDown на Конец .
Есть ли встроенная команда или инструмент для переназначения ключей в Ubuntu / GNOME?
Примечание: Начиная с 2013 года, Ubuntu и производные больше не используют xmodmap
, а вместо этого используют xkb
. Для получения дополнительной информации см. этот ответ . Нижеприведенный ответ больше не подходит для текущих выпусков.
Для переназначения определенных ключей вам понадобятся два инструмента. Сначала xev (инструмент командной строки) и второй xmodmap (также инструмент командной строки) , Оба должны быть доступны в Ubuntu без дополнительной установки.
Запустите окно терминала и запустите xev
. Теперь он активен и ждет, пока вы нажмете клавишу. Затем нажмите клавишу, поведение которой вы хотите изменить. то есть PgUp .
xev
выдаст некоторую информацию о нажатой клавише. Третья строка важна. Он должен выглядеть так:
state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,
в этом примере Prior
- это имя поведения, которому назначен ключ в данный момент, номер ключа - это внутренний идентификатор для распознавания ключа.
Теперь сделайте это с помощью другого ключа, т. Е. PgDown , укажите этот вывод
state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,
Здесь снова интересная часть для нас: keycode 115
и Next
- название поведения.
теперь, когда вы хотите поменять два ключа, используйте xmodmap
. Р>
xmodmap -e "keycode 110 = Next"
Это изменяет ключ с кодом клавиатуры 110 на клавиатуре на действие Next
. Это довольно просто.
Обратите внимание, что если ключ, который вы используете, должен иметь другое значение при использовании с клавишей Shift (например, для раскладок английской клавиатуры, Shift + 2 дает кавычки), то вы можете просто перечислить вторичную команду после первой. Например, если вы хотите, чтобы ключ с кодом 53 отображался на обратную косую черту в обычном порядке, а на символ штриха при использовании со сдвигом, вы можете сделать:
xmodmap -e "keycode 53 = backslash bar"
Дополнительная информация: Последовательность этих сопоставлений Key , Shift + Key , mode_switch + Key , mode_switch + Shift + Key , AltGr + Key , AltGr + Shift + Key . Для пропуска столбца используйте NoSymbol
. Более того, здесь - это полный список всех ключей.
Примечание. Эти изменения относятся только к активному сеансу X и будут потеряны после перезагрузки. Если вы хотите сохранить изменения навсегда, вам нужно выполнить следующие команды после следующих:
xmodmap -pke >~/.Xmodmap
(он создает файл с именем .Xmodmap
в вашем домашнем каталоге ( ~
))
Затем вы должны создать файл с именем .xinitrc
в своем домашнем каталоге, где вы ставите команду xmodmap .Xmodmap
in.
Теперь вы можете изменить .Xmodmap
и запустить xmodmap .Xmodmap
из консоли, чтобы немедленно увидеть изменения. Изменения в .Xmodmap
сохраняются.
источник: Ubuntu Foruns
Если ключ, который вы переназначаете, имеет другое поведение в зависимости от состояния (
как ключи на цифровой клавиатуре зависят от NumLock), вам просто нужно сделать xmodmap -pm
, чтобы получить список модификаторов, а затем выполните:
xmodmap -e "KEYCODE MODIFIER = behaviour behaviour_with_modifier"
Предположим, например, что вы хотите получить период вместо запятой на цифровой клавиатуре (полезно для большинства программистов), но вы хотите сохранить поведение "удалить", когда NumLock выключен. Р>
xmodmap -e "keycode 91 mod2 = KP_Delete period"
mod2
, потому что xmodmap -pm
сообщает нам, что mod2
Num_Lock
, другие имена получаются нажатием клавиш в xev
.
Если вы пытаетесь переместить клавишу Shift, есть несколько дополнительных шагов:
xmodmap -e "keycode 62 = Up" # Shift => Up
xmodmap -e "keycode 111 = Shift_R" # Up => Shift
xmodmap -e "add shift = Shift_R" # Make the new Shift key actually do shifting
xmodmap -e "remove shift = Up" # Prevent the old Shift key from shifting
xset r 62 # Make the new Up key autorepeat
xset -r 111 # Prevent the new Shift key from autorepeating
Я только что запоздал. Я думаю, что вы можете означать что-то совершенно иное "переназначением" .. но я оставлю свой ответ так, как есть ... (я не знаю, как переписать один ключ, чтобы вести себя как другой)
ОБНОВЛЕНИЕ : моя "afterthought" подтверждена; (Я ответил на неправильный вопрос:) ... см. Ответ Wiki сообщества NES (принято выше).
Существует два общих способа переназначения ключа remap . Р>
Для методов "local to the program" иногда есть способ изменить привязки клавиш, предлагаемые самим приложением ... например. Р>
Firefox
имеет аддон под названием keyconfig ... для некоторых сведений см. этот Сообщение MozillZine
Большинство программ Ubuntu основаны на Gnome, и есть специальная утилита для изменения привязки клавиш для любого пункта меню этих приложений Gnome ... Она называется Editable Menu Accelerator
... Это очень "трогательный" инструмент, но вполне мощный. Вы можете включить его, запустив gconf-editor
(через терминал или Alt + F2) ... перейдите к desktop
- gnome
- interface
и выберите can_change_accels
.... Затем вы можете меняйте пункты меню на виртуальные все, что вам нравится (на каждую программу / окно) ... Я предлагаю вам отключить его, как только вы сделали то, что вам нужно.
В противном случае вы можете настроить глобальные горячие клавиши. Я использую программу под названием xbindkeys ,иестьтакжеопция,доступнаячерезГлавноеменю-Настройки,называемые
KeyboardShortcuts
Есливыиспользуетеxbindkeys,вамнужнобудетдобавитьеговсвои"StartupApplications"(Главноеменю-Настройки)...Также(какпредложилСтефаноПалаццо),яранеенаписалболееподробноеописаниеxbindkeysвответьтенаэту страницу askubuntu
Вот как я попытался переключить отображение клавиши ENTER в клавишу SHIFT (и наоборот):
$ uname -a
ОТЧЕТЫ:
Linux box 2.6.32-37-generic #81-Ubuntu SMP Fri Dec 2 20:35:14 UTC 2011 i686 GNU/Linux
$ which xmodmap
ОТЧЕТЫ:
/usr/bin/xmodmap
$ which xev
ОТЧЕТЫ:
/usr/bin/xev
$ xev
(игнорировать следующие пятьдесят строк или около того)
PRESS THE ENTER KEY (notice the third line):
KeyPress event, serial 33, synthetic NO, window 0x5600001,
root 0x110, subw 0x0, time 263441120, (738,242), root:(771,314),
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
XLookupString gives 1 bytes: (0d)
XmbLookupString gives 1 bytes: (0d)
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x5600001,
root 0x110, subw 0x0, time 263441271, (738,242), root:(771,314),
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
XLookupString gives 1 bytes: (0d)
XFilterEvent returns: False
PRESS THE SHIFT KEY (notice the third line):
KeyPress event, serial 30, synthetic NO, window 0x5600001,
root 0x110, subw 0x0, time 263592202, (464,368), root:(497,440),
state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x5600001,
root 0x110, subw 0x0, time 263592298, (464,368), root:(497,440),
state 0x1, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Важно то, что третья строка каждого нажатия клавиши:
FOR:
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
The name "Return" is the name of the behavior of the key pressed.
The number of the key pressed is "36".
state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
The name "Shift_R" is the name of the behavior of the key pressed.
The number of the key pressed is "62".
ОТМЕНА КАРТЫ:
$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"
СОХРАНИТЕ РЕЗУЛЬТАТЫ:
$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc
ADD
xmodmap ~/.Xmodmap
$ sudo reboot
Основная проблема заключалась в том, что разворот НЕ работал. Клавиша ENTER была сопоставлена с ключом SHIFT_R ; но ключ SHIFT_R не был привязан к клавише ENTER . Наведите указатель мыши.
Чтобы выполнять глобальные переназначения независимо от X, вы можете использовать консольную установку (5) .
В моем случае я хотел переделать ключ Caps Lock в D , так как нарушена моя D ):)
Сначала я использовал dumpkeys (1) , чтобы получить шаблон для сопоставления, в случае ключа D , интересным битом является сопоставление для кодового ключа 32 (на моей клавиатуре); Обратите внимание, что в шаблоне grep есть два пробела!
$ sudo dumpkeys | grep "keycode 32" > tempfile
$ cat tempfile
keycode 32 = +d
shift keycode 32 = +D
altgr keycode 32 = +eth
shift altgr keycode 32 = +ETH
control keycode 32 = Control_d
shift control keycode 32 = Control_d
altgr control keycode 32 = Control_d
shift altgr control keycode 32 = Control_d
(121 lines total...)
Чтобы изменить карту, чтобы применить к Caps Lock (код клавиатуры 58 на моей клавиатуре) вместо
sed 's/32/58/' -i tempfile
Теперь он читает
keycode 58 = +d
shift keycode 58 = +D
altgr keycode 58 = +eth
(etc...)
Чтобы добавить это переназначение к карте по умолчанию, ее просто нужно добавить в файл с обновлением для настройки консоли
sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'
и настройка консоли необходимо переконфигурировать (пропустить вопросы с низким приоритетом с% co_de%)
sudo dpkg-reconfigure console-setup -phigh
Теперь переназначение должно быть завершено и загружаться автоматически при загрузке.
Я потратил целый день на создание ярлыка для Ctrl+Pageup
.
Сначала я попробовал xmodmap
, но не смог генерировать события модификатора. Таким образом, невозможно создать ярлык, который генерирует, например, событие Control
.
Затем я попробовал xbindkeys
с xmacro
. Такие работы, но xbindkeys
не могут фиксировать некоторые комбинации клавиш в моей системе, такие как Alt + ___
.
Итак, я наконец использовал собственные сочетания клавиш Unity - > Пользовательские ярлыки для настройки моего ярлыка.
И вместо xmacro
, я теперь использовал xvkbd
для генерации событий клавиатуры, но это только личное предпочтение. Оба xmacro
и xvkbd
работают почти одинаково. Еще один совет - добавить параметр задержки в xmacro
или xvkbd
, чтобы гарантировать, что события не будут потеряны.
Для меня AutoKey из Software Center работал лучше всего. Он имеет интуитивно понятный графический интерфейс, для добавления нового привязки нажмите «Создать» - > Фраза и
<left>
(список специальных клавиш здесь ).