(коментар: ви знайшли 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/
. Вони є кешованими попередньо складеними картами клавіш і, можливо, вам заважають.
Ресурси: