Настройте Caps Lock как AltGr и стрелки как в vim


9

1. Как глобально карта Caps Lockдля AltGr?

Мне не нужен CapsLock, и я хотел бы иметь легкий доступ к AltGr Key там

2. Я хочу отобразить все клавиши перемещения на vim-подобные позиции

  • AltGr+ F=Backspace
  • AltGr+ H=LeftArr
  • AltGr+ J=DownArr
  • AltGr+ L=RightArr
  • AltGr+ K=UpArr
  • AltGr+ U=PgUp
  • AltGr+ D=PgDown
  • AltGr+ S=Enter
  • AltGr+ 3=Pos1
  • AltGr+ $=End
  • AltGr+ X=Del

Таким образом, я могу легко пройти по своему коду, не отводя руку от позиции 10 пальцев (как в vimредакторе)

Я нашел этот ответ: Как мне переназначить клавишу блокировки заглавных букв на клавишу возврата?
предлагая использовать

xmodmap -e "keycode [code] = [new key]"

см .: http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap

Но я не могу понять, как добавить это к комбинации, например, AltGr + J

Другим началом было бы установить «Альтернативная символьная клавиша» в unity-control-center-> Клавиатура-> Ярлыки-> Печатать какCaps Lock

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

Как мне также установить привязки клавиш для XFree 4?


У меня нет ключа AltGr, но вы можете обнаружить, что этот похожий вопрос дает некоторые подсказки.
Старейшина Гик

Ответы:


4

1. добавить новый частичный файл XKB

sudo vi /usr/share/X11/xkb/symbols/altgr_vim

с этим содержанием:

partial keypad_keys
xkb_symbols "altgr-vim" {
  # replace Caps with AltGr
  key <CAPS> { [ ISO_Level3_Shift            ] };
  # Add vim cursor keys to be accessed with AltGr
  key <AB02> { [ x, X, Delete, Delete        ] };
  key <AC02> { [ s, S, KP_Enter, KP_Enter    ] };
  key <AC03> { [ d, D, Next, Next            ] };
  key <AC04> { [ f, F, BackSpace, BackSpace  ] };
  key <AC06> { [ h, H , Left, Left           ] };
  key <AC07> { [ j, J, Down, Down            ] };
  key <AC08> { [ k, K, Up, Up                ] };
  key <AC09> { [ l, L, Right, Right          ] };
  key <AD07> { [ u, U, Prior, Prior          ] };
  key <AE03> { [ 3, section, Home, Home      ] };
  key <AE04> { [ 4, dollar, End, End         ] };
};

2. включите частичное в ваш языковой файл

например, для немецкого это /usr/share/X11/xkb/symbols/de(где /deваш язык) добавить это в первом блоке ( xkb_symbols "basic"):

include "altgr_vim(altgr-vim)"

Примечание. Эта часть должна повторяться после каждого обновления дистрибутива.

3. перезагрузить окно сеанса

Нажмите ALT + F2, введите «r», чтобы перезагрузить сессию гнома, или просто выйдите и войдите снова. Теперь новые ключевые композиции будут доступны

некоторые проблемы

Некоторые приложения не принимают настройки, например: sublimeкоторые можно заменить на atom.

Некоторым приложениям требуются дополнительные настройки, например, в yakuakeпривязках клавиш установлено значение «XFree 4», если вы установите их в «Linux» или «Solaris», то там также работают настройки XKB:


1
я настоятельно рекомендую использовать опцию XKB lv3:caps_switchвместо изменения <CAPS>определения, как вы показываете. смотрите /usr/share/X11/xkb/symbols/level3(где эта опция определена).
донкихотский

@quixotic: можете ли вы добавить новый ответ с необходимыми конфигурациями? Мне может понадобиться хороший полный ответ здесь для
награды

Это отлично сработало для меня. Только на голову выше, возможно, вы захотите изменить «section» на «numbersign» для shift + 3
mowwwalker

0

для того , чтобы получить AltGr+ h, j, k, lили любой другой ключ без какого - либо приложения , как Autokey к peform вы можете настроить раскладку клавиатуры найти в / USR / доли / X11 / ХКВ / символов / . На данный момент я использую немецкую раскладку "де". Итак, прежде всего я бы:

1- скопировать стандартный макет

cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak

2- откройте свой макет с вашим предпочтительным текстовым редактором (здесь: gedit)

sudo gedit /usr/share/X11/xkb/symbols/de 

там вы увидите что-то вроде:

key <AD03>  { [         e,          E,     EuroSign,     EuroSign ] };
key <AD06>  { [         z,          Z,    leftarrow,          yen ] };
key <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
....
....
key <AD12>  { [      plus,   asterisk,   dead_tilde,  macron ]  };
key <AC02>  { [               s,               S,          ssharp,          U017F ] }; 
key <AC06>  { [               h,               H,            Left,             Left ]   }; 
key <AC07>  { [               j,               J,            Down,             Down ]   }; 
key <AC08>  { [               k,               K,              Up,               Up ]   }; 
key <AC09>  { [               l,               L,           Right,            Right ]   }; 
....
....
key <AB10>  { [     minus, underscore,               endash,     emdash ] };
key <LSGT>  { [     less,     greater,                  bar,     NoSymbol   ] };

Как вы можете видеть, AB, AC, AD, AE представляет строку, а число представляет ее позицию на клавиатуре (есть некоторые специальные клавиши, такие как клавиша «меньше / больше», которые также могут быть переназначены на другие клавиши).

Там вы не найдете все клавиатуры, только те, которые отличаются от раскладки клавиатуры. Немецкий основан на "латинице (type4)", как вы можете видеть в начале файла:

include "latin(type4)"

Тогда вам просто нужно изменить в соответствии с вашими потребностями. Это работает как:

ключ {[ key, key+ shift, key+ AltGr, key+ Shift+ AltGr ]};

(также возможно добавить модификаторы 5-го уровня или более)

если вы хотите проверить изменения без перезапуска; (изменение «de» для вашего макета ... вот список возможных макетов )

 setxkbmap -layout de

Стрелки помечены так же, как «влево, вправо, вниз, вверх», как исключено. Вот хороший список возможных значений.

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

Затем вам нужно будет переназначить Capslock и AltGr, или это сработало уже после вопроса, который вы разместили ??

Если вы также хотите сохранить «нормальный» немецкий макет, вы можете внести изменения в другой макет, который вы обычно не используете (или изменить «немецкий без мертвых ключей», который вы можете найти ниже в том же файле «de»). ..)

Источник: ссылка на очень полное объяснение xbk и пользовательских макетов.
ссылка на аналогичный вопрос с хорошим ответом.


1
в современных Ubuntu и его производных вы можете настроить макеты и параметры XKB /etc/default/keyboardсразу после внесения этих изменений. смотрите man 5 keyboardдля деталей. Я рекомендую добавлять новые варианты и опции, а не изменять существующие.
донкихотский

0

Для переназначения CapsLock на AltGr используйте

xmodmap -e "keycode 66 = ISO_Level3_Shift"

(источник: https://superuser.com/a/138757/160420 )

Чтобы сопоставить клавиши со стрелками AltGr + h, j, k и l, используйте, xmodmap -pkeчтобы найти правильные настройки:

xmodmap -pke|egrep "f F|j J|k K|h H|l L|o O|u U|d D|dollar|BackSpace"

и измените пятое значение на новые ключи и добавьте все это в скрипт bash:

# xrandr needs the desktop to be fully loaded. add a delay, to be able to add it to Startup Applications:
sleep 15
# change BackSpace into AltGr
xmodmap -e "keycode 66 = ISO_Level3_Shift"
# set BackSpace on AltGr + F
xmodmap -e "keycode 41 = f F f F BackSpace BackSpace dstroke ordfeminine f F dstroke ordfeminine"
# create arrow keys at h,j,k,l
xmodmap -e "keycode  43 = h H h H Left Left"
xmodmap -e "keycode  44 = j J j J Down Down"
xmodmap -e "keycode  45 = k K k K Up Up"
xmodmap -e "keycode  46 = l L l L Right Right"
xmodmap -e "keycode  30 = u U u U Prior Prior"
xmodmap -e "keycode  40 = d D d D Next Next"
xmodmap -e "keycode  12 = 3 section 3 numbersign Home Home"
xmodmap -e "keycode  13 = 4 dollar 4 dollar End End"
xmodmap -e "keycode  53 = x X x X Delete Delete"

(источник: https://askubuntu.com/a/466315/34298 )

Поместите этот bash-скрипт в свои приложения автозагрузки (выберите « Dash»> «Автозагрузка приложений»> «Добавить» и добавьте команду).

Примечание: как ни странно, gnome-terminalэто прекрасно работает, но в yakuakeBackSpace работает на AltGr + F, но устанавливает AltGr + h, j, k и l на D, B, A и C, если вместо «Связывание клавиш» не установлено «Linux» вместо "(По умолчанию) XFree 4", и в sublime-textнем вообще не работает


xmodmapне рекомендуется и не рекомендуется. это все еще работает в средах X11, но не будет работать в Wayland и других заменах X11. вместо этого настоятельно рекомендуется использовать решения на основе XKB.
донкихотский

Итак, я думаю, я должен добавить новую пользовательскую раскладку клавиатуры тогда? askubuntu.com/questions/482678/...
rubo77

1
добавление пользовательского макета является одним из способов, хотя вы, вероятно, можете обойтись без простого создания пользовательского параметра . в GNOME или Unity вам может понадобиться отключить плагин клавиатуры settings-daemon, чтобы ваша настройка xmodmap работала, но если вы создаете новую системную компоновку / вариант / вариант XKB, вы можете установить их в /etc/default/keyboard.
донкихотский

1
Это кажется довольно большой работой, но решит ли это проблему, что новые комбинации клавиш не работают в некоторых приложениях?
rubo77
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.