Я хочу использовать мою длинную алюминиевую клавиатуру Apple с замененными клавишами Command Cmd
и Control Ctrl
. Как это делается шаг за шагом на Trusty Tahr (14.04) с использованием xkb
?
Примечание: Это решение не работает для меня, поскольку xkb
заменило xmodmap
в 13.04 или даже раньше .
Этот ответ главным образом основан на ответе, данном здесь. Причина я спрашиваю и отвечаю на этот вопрос, снова заключительный шаг, который не был полностью описан. Для дополнительных материалов для чтения о xkb
посмотрите здесь, здесь, и здесь.
Создайте файл в /usr/share/X11/xkb/symbols
(мог также быть в /etc/X11/xkb/symbols
) названный altwin2
и содержание следующего отображения:
// Control is SWAPPED with Win-keys
partial modifier_keys
xkb_symbols "cmd_n_ctrl" {
key <LWIN> { [ Control_L ] };
key <RWIN> { [ Control_R ] };
key <LCTL> { [ Super_L ] };
modifier_map Control { <LWIN>, <RWIN> };
modifier_map Mod4 { <LCTL> };
};
Вставьте следующую строку под option = symbols
раздел в /usr/share/X11/xkb/rules/evdev
(игнорируйте предупреждение на первой строке):
altwin2:cmd_n_ctrl = +altwin2(cmd_n_ctrl)
Добавьте новую опцию к /usr/share/X11/xkb/rules/evdev.lst
под разделом option
:
altwin2:cmd_n_ctrl Win swapped with Ctrl
Если Вы не знаете, где Ваш файл настройки клавиатуры, можно отредактировать его с помощью dconf-редактора, добавив "altwin2:cmd_n_ctrl"
в xkb-options
под org:: гном:: рабочий стол:: входные источники как показано здесь. Если Вы знаете, где Ваш конфигурационный файл, необходимо включать новую опцию в XkbOptions
поле как показано ниже:
Section "InputClass"
Identifier "keyboard-layout"
Driver "evdev"
MatchIsKeyboard "yes"
Option "XkbLayout" "us, ru, ca, fr"
Option "XkbOptions" "altwin2:cmd_n_ctrl"
EndSection
Или перезагрузка или перезапуск lightdm
обновить изменения:
sudo restart lightdm
Примечание: если какие-либо изменения внесены непосредственно в файлах расположения, т.е. не использовании опций, кэшируемых файлов в /var/lib/xkb/
потребность, которая будет удалена, как обозначено здесь.
В 16,04, вот способ, которым я наконец заставил это работать. Xmodmap не работает универсально во всех приложениях, инструмент тонкой настройки гнома испытал недостаток в функции, dconf редактирование пользовательской altwin2 ключевой подкачки (как основной ответ здесь) отказавший, таким образом, я отрывал волосы, пока я не объединился, несколько ответов в это завершаются, простое, и изящное решение:
gksudo gedit /usr/share/X11/xkb/symbols/pc
изменение это к:
default partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {
key <ESC> { [ Escape ] };
// The extra key on many European keyboards:
key <LSGT> { [ less, greater, bar, brokenbar ] };
// The following keys are common to all layouts.
key <BKSL> { [ backslash, bar ] };
key <SPCE> { [ space ] };
include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"
key <BKSP> { [ BackSpace, BackSpace ] };
key <TAB> { [ Tab, ISO_Left_Tab ] };
key <RTRN> { [ Return ] };
key <CAPS> { [ Caps_Lock ] };
key <NMLK> { [ Num_Lock ] };
key <LFSH> { [ Shift_L ] };
key <LCTL> { [ Alt_L ] };
key <LWIN> { [ Super_L ] };
key <RTSH> { [ Shift_R ] };
key <RCTL> { [ Alt_R ] };
key <RWIN> { [ Super_R ] };
key <MENU> { [ Menu ] };
// Beginning of modifier mappings.
modifier_map Shift { Shift_L, Shift_R };
modifier_map Lock { Caps_Lock };
modifier_map Control{ Control_L, Control_R };
modifier_map Mod2 { Num_Lock };
modifier_map Mod4 { Super_L, Super_R };
// Fake keys for virtual<->real modifiers mapping:
key <LVL3> { [ ISO_Level3_Shift ] };
key <MDSW> { [ Mode_switch ] };
modifier_map Mod5 { <LVL3>, <MDSW> };
key <ALT> { [ NoSymbol, Control_L, Control_R ] };
//include "altwin(meta_alt)"
key <LALT> { [ Control_L ] };
key <RALT> { [ Control_R ] };
modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
key <META> { [ NoSymbol, Meta_L, Meta_R ] };
modifier_map Mod1 { <META> };
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod4 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
// End of modifier mappings.
key <OUTP> { [ XF86Display ] };
key <KITG> { [ XF86KbdLightOnOff ] };
key <KIDN> { [ XF86KbdBrightnessDown ] };
key <KIUP> { [ XF86KbdBrightnessUp ] };
};
hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <SCLK> { [ Scroll_Lock ] };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key <INS> { [ Insert ] };
key <HOME> { [ Home ] };
key <PGUP> { [ Prior ] };
key <DELE> { [ Delete ] };
key <END> { [ End ] };
key <PGDN> { [ Next ] };
key <UP> { [ Up ] };
key <LEFT> { [ Left ] };
key <DOWN> { [ Down ] };
key <RGHT> { [ Right ] };
};
Сохраняют.
rm -rf /var/lib/xkb/*
(я не знаю, требуется ли это, но я сделал это.)
Перезагрузка.
Можно найти, что Kinto полезен. Это - проект, который я недавно создал после нескольких лет занятия этой проблемой несколько различных путей и я сейчас чувствую, что это достаточно твердо для совместного использования.
установщик Kinto просто использует Python, чтобы сделать начальную установку, после этого это - просто systemd сервис, удар, xprop, setxkbmap и xkbcomp. Что касается меня, это - самое быстрое и наиболее встроенное решение этой проблемы, которую Вы собираетесь найти.
https://github.com/rbreaves/kinto
https://medium.com / benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0
Здесь является Суть также, если Вы просто захотите видеть то, что в основе всего этого, то это не чередует Вашу контурную карту при необходимости все же. Суть также не включает пользовательские xkb файлы контурной карты, которые устанавливают стиль macOS cursors/word-wise манипуляции, которые используют Cmd и клавиши со стрелками.
https://содержание сути gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb
# permanent apple keyboard keyswap
echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
update-initramfs -u -k all
# Temporary & instant apple keyboard keyswap
echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd
# Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win
# Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
setxkbmap -option;setxkbmap -option altwin:swap_alt_win
#
# If you want a systemd service and bash script to help toggle between
# GUI and Terminal applications then look at project Kinto.
# https://github.com/rbreaves/kinto
#
# Note: The above may not work for Chromebooks running Linux, please look
# at project Kinto for that.
#
# If anyone would like to contribute to the project then please do!
#