Налаштуйте Caps Lock як AltGr та стрілки, як in 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", щоб перезавантажити сеанс gnome або просто вийти з системи та знову. Тепер нові ключові композиції будуть доступні

деякі проблеми

Деякі програми не приймають налаштування, наприклад: sublimeякі можна замінити на atom.

Деякі програми потребують додаткових налаштувань, наприклад, у yakuakeприв'язках клавіш встановлено значення "XFree 4", якщо ви встановите їх на "Linux" або "Solaris", то налаштування XKB також працює:


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

@quixotic: чи можете ви додати нову відповідь із потрібними конфігураціями? Мені може знадобитися гарна повна відповідь тут для щедрості;)
rubo77

Це прекрасно працювало для мене. Лише голова вгору, можливо, захоче змінити "розділ" на "
номерний знак

0

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

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"

і змініть п’яте значення на нові клавіші та додайте все це в баш-скрипт:

# 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 у свої програми запуску (виберіть тире> програми запуску> Додати та додайте команду.)

Примітка: дивним чином gnome-terminalце працює чудово, але yakuakeвін працює для BackSpace на 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 вам може знадобитися вимкнути плагін клавіатури налаштувань-демона, щоб ваше налаштування xmodmap працювало, але якщо ви створили новий макет / варіант / варіант / варіант XKB для всієї системи, ви можете їх встановити /etc/default/keyboard.
кіхотично

1
Це здається досить багато роботи, але чи вирішить це проблему, що нові комбінації клавіш не працюють у деяких додатках?
rubo77
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.