(коментар: ви знайшли XKB! поздоровлення, це пекло кролячої нори. Зверніть увагу, що ваше рішення буде роздуто наступного разу, коли пакет xkb-даних ubuntu оновить цей файл, і вплине на будь-які інші клавіатури, які ви підключаєте які використовують ту саму конфігурацію.)
XKB дотримується моделі під назвою RMLVO - правила, модель, макет, варіант, параметри. Ваше рішення змінює файл системної моделі, але кращим рішенням було б знайти або створити Варіант для додавання змін. ( evdevце правило за замовчуванням для більшості дистрибутивів, і більшість зовнішніх клавіатур використовуватимуть pcмодель, хоча внутрішні моделі ноутбуків можуть мати певні варіації, які вже близькі до вашого використання. Стандартна клавіатура США QWERTY використовуватиме usмакет без варіанту, хоча ви можете виберіть intlабо altgr-intlваріанти, якщо ви працюєте з іншими мовами.)
Параметри - це специфічне переосмислення основних функціональних можливостей. Якщо ви хочете вимкнути CapsLock, оскільки ця клавіша просто відсмоктується, для цього вже є варіант ( caps:none), або ви можете встановити його як додатковий ключ Escape ( caps:escape). Ви можете бачити конкретні зміни в /usr/share/X11/xkb/symbols/caps; кожна строфа - це інший варіант, який можна вмикати під час виконання.
Якщо у вас є, setxkbmap -printвам слід отримати список поточних налаштувань XKB:
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete"};
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
Створіть свій файл заміни:
$ mkdir -p .config/xkb/symbols
$ touch .config/xkb/symbols/pgupdown
Тепер відредагуйте новий файл улюбленим редактором та вкажіть наступне:
// mapping PgUp and PgDown to other keys
partial alphanumeric_keys
xkb_symbols "rwinmenu" {
key <RWIN> { [ Prior ] };
key <MENU> { [ Next ] };
};
// same but switched
partial alphanumeric_keys
xkb_symbols "menurwin" {
key <MENU> { [ Prior ] };
key <RWIN> { [ Next ] };
};
Тепер створіть основну карту ключів:
$ setxkbmap -print > ~/.config/xkb/mymap
Відредагуйте цей файл та додайте нову опцію до списку символів у форматі +optionfile(function):
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete"};
xkb_symbols { include "pc+us+inet(evdev)+pgupdown(rwinmenu)" };
xkb_geometry { include "pc(pc105)" };
};
Якщо пізніше ви вирішите , що ви віддаєте перевагу PgUp на клавішу меню , а не просто замінити rwinmenuз menurwinтам , і ви добре йти.
Тепер ви можете завантажити цей файл за допомогою xkbcomp:
$ xkbcomp -I$HOME/.config/xkb $HOME/.config/xkb/mymap $DISPLAY
Запустіть xev(із x11-utilsпакета) та натисніть клавіші, щоб переконатися, що зміни завантажені:
# sed to scrape out non-kbd events; xev is pretty spammy
$ xev | sed -ne '/^KeyPress/,/^$/p'
Якщо ви все знайшли в потрібних місцях, ваша клавіша меню повинна надсилати наступні події, а ключ Win_R надсилати пріоритет. Якщо це працює, ви можете додати вищезазначену xkbcompкоманду до своєї .xinitrcабо .xprofileтак, що вона працює, коли ви входите або запускаєте X.
... якщо ви не працюєте з Gnome. (та / або можливо KDE.) Тоді ми переходимо далі по кролячій норі і розбираємося, як включити цю нову опцію в системні файли, щоб ДЕ змогли підібрати її як стандартну опцію. По суті, це буде залучати
- розміщення файлу опцій
/usr/share/X11/xkb/symbols/(саме тому pgupdownбуло вдалим вибором варіантів, оскільки не існує файлу символів, який існує з цим ім'ям)
- а потім додавання рядків у
/usr/share/X11/xkb/rules/evdev*(щоб відобразити optionsfile:functionформат командного рядка до +optionsfile(function)використовуваного xkbcomp)
- і, нарешті, встановити DE для використання бажаного макета та параметрів.
Крок 2: Якщо вам потрібно пройти цей маршрут, вам може знадобитися повторити крок 2 після будь-яких оновлень, пов’язаних з xkb.
# in /usr/share/X11/xkb/rules/evdev
# find the line that starts "! option = symbols" and add new lines:
pgupdown:rwinmenu = +pgupdown(rwinmenu)
pgupdown:menurwin = +pgupdown(menurwin)
# in /usr/share/X11/xkb/rules/evdev.lst
# find the line that starts "! option" and add a new line:
pgupdown:rwinmenu PgUp on RWin, PgDown on Menu
pgupdown:menurwin PgUp on Menu, PgDown on RWin
# in /usr/share/X11/xkb/rules/evdev.xml
# .... ummm .... ¯\_(ツ)_/¯ .... sorry! ....
Крок 3: перевірте, чи localectlє у вашій системі. localectlможе налаштувати клавіатури віртуальної консолі, а також налаштувати клавіатуру X11 за замовчуванням для системи. Оскільки обидва варіанти встановлені у файлах правил, ви можете використовувати будь-яку rwinmenuабо menurwinці команди.
$ localectl set-x11-keymap us pc "" pgupdown:rwinmenu
# format [layout] [model] [variant] [option1,...,optionN]
Для Gnome вам потрібно буде використовувати dconf-editorабо gsettings:
# set layout/variant
$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us')]"
# set options
$ gsettings set org.gnome.desktop.input-sources xkb-options "['pgupdown:rwinmenu']"
Іншим варіантом для Gnome може бути відключення налаштувань клавіатури; це повинно дозволяти або параметр localectl, або параметр user-config залишатися в силі:
$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false
Виправлення неполадок: Якщо зміни, здається, не отримують, і ви впевнені, що правильно форматували файли, видаліть з нього будь-які *.xkmфайли /var/lib/xkb/. Вони є кешованими попередньо складеними картами клавіш і, можливо, вам заважають.
Ресурси: