Я ищу способ повторно отобразить определенные ключи в человечности.
т.е.
Я хотел бы изменить PgUp для Размещения или PgDown для Окончания.
Встроенное управляет, или инструмент существуют, повторно присваивают ключи в Ubuntu/GNOME?
Примечание: С 2013 года Ubuntu и производные от него больше не используют xmodmap
, а вместо этого используют xkb
. Для получения дополнительной информации см. этот ответ . Приведенный ниже ответ больше не актуален для текущих выпусков.
Для переназначения определенных ключей вам понадобятся два инструмента. Первый xev (инструмент командной строки) и второй xmodmap (также инструмент командной строки). Оба должны быть доступны в Ubuntu без дополнительной установки.
Запустите окно терминала и запустите xev
. Теперь он активен и ждет, пока вы нажмете клавишу. Затем нажмите клавишу, поведение которой вы хотите изменить. то есть PgUp .
xev
выведет некоторую информацию о нажатой клавише. Третья строка важна. Он должен выглядеть примерно так:
состояние 0x10, код клавиши 110 (keysym 0xff55, Prior), same_screen YES,
в этом примере Prior
- это имя поведения, которому назначена клавиша в данный момент, цифровой код клавиши - это внутренний идентификатор для распознавания клавиши.
Теперь сделайте это с другим ключом, то есть PgDown даст этому выходу
состояние 0x10, код клавиши 115 (keysym 0xff56, Next), same_screen ДА,
Здесь снова нас интересует код 115
и Далее
- название поведения.
теперь, когда вы хотите поменять местами два ключа, используйте xmodmap
.
xmodmap -e "код клавиши 110 = Далее"
Это изменяет клавишу с кодом 110 на клавиатуре на действие Далее
. Это довольно просто.
Обратите внимание, что если сопоставляемая клавиша должна иметь другое значение при использовании с клавишей Shift (например, для британских раскладок клавиатуры, Shift + ] 2 дает кавычки), тогда вы можете просто указать вторичную команду после первой. Например, если вы хотите, чтобы клавиша с кодом 53 обычно отображалась на обратную косую черту, но с символом полосы при использовании с Shift, вы можете сделать:
xmodmap -e "keycode 53 = backslash bar"
Дополнительная информация: Последовательность этих сопоставлений: Клавиша , Shift + клавиша , mode_switch + Key , mode_switch + Shift + Key , AltGr + Key , AltGr + Shift + Key . Чтобы пропустить столбец, используйте NoSymbol
. Более того, здесь представляет собой исчерпывающий список всех ключей.
Примечание: эти изменения относятся только к активному сеансу X и будут потеряны после перезагрузки. Если вы хотите сохранить изменения навсегда, вы должны выполнить следующие команды после приведенных выше:
xmodmap -pke >~/.Xmodmap
(он создает файл с именем .Xmodmap
в вашем домашнем каталоге ( ~
) )
Затем вы должны создать файл с именем .xinitrc
в вашем домашнем каталоге, куда вы поместите команду xmodmap .Xmodmap
в.
Теперь вы можете изменить . Xmodmap
и запустите xmodmap .Xmodmap
с консоли, чтобы сразу увидеть изменения. Изменения в .Xmodmap
сохранятся.
источник: Ubuntu Foruns
Если ключ, который вы переназначаете, ведет себя по-разному в зависимости от состояния (
например, как клавиши на цифровой клавиатуре зависят от NumLock) вам просто нужно выполнить xmodmap -pm
, чтобы получить список модификаторов, а затем выполнить:
xmodmap -e "KEYCODE MODIFIER = behavior behavior_with_modifier"
Предположим, например, что вы хотите получить точку вместо запятой на цифровой клавиатуре (полезно для большинства программистов), но вы хотите сохранить поведение «удаление», когда NumLock выключен.
xmodmap -e "keycode 91 mod2 = KP_Delete period"
mod2
, поскольку xmodmap -pm
сообщает нам, что mod2
- это Num_Lock
, другие имена получаются нажатием клавиш в xev
.
Если вы пытаетесь переместить Shift key, есть несколько дополнительных шагов:
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
Hei ass wéi ech probéiert hunn d'Mapping vun der ENTER ze wiesselen. Schlëssel fir de SHIFT Schlëssel (a vice versa):
$ uname -a
RAPPORTER:
Linux box 2.6.32-37-generic #81-Ubuntu SMP Fri Dec 2 20:35:14 UTC 2011 i686 GNU/Linux
$ which xmodmap
RAPPORTER:
/usr/bin/xmodmap
$ which xev
RAPPORTER:
/usr/bin/xev
$ xev
(ignoréiert déi nächst fofzeg Zeilen oder sou)
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
Wat wichteg ass déi drëtt Zeil vun all Tastendrock:
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".
REVERSE D'KARTUNGUNG:
$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"
SPART D'RESULTATEN:
$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc
Füügt Bäi
xmodmap ~/.Xmodmap
$ sudo reboot
Den Haaptprobleem war datt de Réckgang NET funktionnéiert. De ENTER Schlëssel gouf op de SHIFT_R Schlëssel mappéiert; awer de SHIFT_R Schlëssel war net op de ENTER Schlëssel. Gitt Figur.
Я только что подумал ... Я думаю, вы можете иметь в виду что-то совсем другое, говоря "переназначить" ... но я оставлю свой ответ как есть ... (Я не знаю '' я не знаю, как переназначить один ключ, чтобы он вел себя как другой)
ОБНОВЛЕНИЕ : моя «запоздалая мысль» была подтверждена; (Я ответил не на тот вопрос :) ... см. Ответ вики сообщества NES (принятый выше)
Есть два основных способа переназначить переназначить ключ.
Для методов, «локальных по отношению к программе», иногда есть способ изменить привязки клавиш, предлагаемые самим приложением ... например.
Firefox
имеет надстройку под названием keyconfig ... некоторую информацию см. В сообщении MozillZine
Большинство программ Ubuntu основаны на Gnome, и есть специальная утилита для изменения привязки клавиш для любого пункта меню этих приложений Gnome ... Он называется Editable Menu Accelerator
... Это очень "чувствительный" инструмент, но довольно мощный. Вы можете включить его, запустив gconf -editor
(через Терминал или Alt + F2) ... перейдите на рабочий стол
- gnome
- интерфейс
и выберите can_change_accels
.... Затем вы можете изменить пункты меню на виртуальные, как хотите (для каждой программы / окна) ... Я предлагаю вам отключить его, как только вы сделаете то, что вам нужно ..
В противном случае вы можете установить вверх Глобальные горячие клавиши. Я использую программу под названием xbindkeys , и есть также опция, доступная через Главное меню - Настройки, которая называется Сочетания клавиш
Если вы используете xbindkeys, вам нужно будет добавить ее в свой «Автозагрузка приложений» (Главное меню - Настройки) ... Также (как было предложено Стефано Палаццо) я ранее уже написал более подробное описание xbindkeys в ответе на этой странице askubuntu
Чтобы выполнить глобальное переназначение независимо от X, вы можете вместо этого использовать console-setup (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...)
] Чтобы добавить это переназначение к карте по умолчанию, его просто нужно добавить в включаемый файл переназначения для console-setup
sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'
и console-setup необходимо перенастроить (пропуская вопросы с низким приоритетом with -phigh
)
sudo dpkg-reconfigure console-setup -phigh
Теперь переназначение должно быть завершено и загружаться автоматически при загрузке.
Я потратил целый день, пытаясь создать ярлык для Ctrl+Pageup
.
Сначала я попробовал xmodmap
, но он не может генерировать события-модификаторы. Поэтому невозможно создать ярлык, который генерирует, например, событие Control
.
Затем я попробовал xbindkeys
с xmacro
. Это работает, но xbindkeys
не может перехватить некоторые комбинации клавиш в моей системе, такие как Alt + ___
.
Поэтому я наконец-то использовал собственные ярлыки клавиатуры Unity -> Custom Shortcuts, чтобы настроить свой ярлык.
И вместо xmacro
я теперь использовал xvkbd
программу для генерации событий на клавиатуре, но это только личные предпочтения. И xmacro
, и xvkbd
работают почти одинаково. Один дополнительный совет - добавить параметр задержки в xmacro
или xvkbd
для того, чтобы события не потерялись.
Для меня AutoKey от Software Center работал лучше всего. Он имеет интуитивно понятный графический интерфейс, чтобы добавить новую привязку, нажмите «Создать» -> «Фраза» и
<влево>
(список специальных клавиш здесь ). Если вам нужно переназначить ключ только для определенной программы, я только что добавил эту функцию в hax11.
Я бы хотел изменить ] PgUp до Home или PgDown до End .
Чтобы сделать это с помощью hax11, откройте файл конфигурации профиля программы в разделе ~ /.config/hax11/profiles
(например, ~ / .config / hax11 / profiles / usr \ lib \ firefox \ firefox
) и добавьте:
Enable=1
MapK112=K110
MapK117=K115
Вы также можете попробовать https://github.com/sezanzeb/key-mapper
. Он должен работать в фоновом режиме и активно вводить сопоставленные коды клавиш, и хотя это добавляет некоторая дополнительная гибкость, если все, что вам нужно, это переназначить одну кнопку, и все готово, вы можете попробовать использовать xmodmap. Похоже, это уже было объяснено подробно.
Или напишите файл «символов» xkb и используйте setxkbmap, но я бы не рекомендовал этого. setxkbmap также можно использовать для каждого устройства.
И недавно я наткнулся на это решение: https://www.reddit.com/r/linux_gaming/comments/k3h9qv/remapping_keys_using_hwdb_files/