Я хочу переназначить блокировку заглавных букв, чтобы скрыться в X11 (т.е. нажатие кнопки блокировки физической заглавной буквы будет интерпретироваться приложениями как esc, и поведение esc не изменится). Решение должно пережить перезапуск X . xmodmap и setxkbmap являются приемлемыми решениями (как и аналогичные программы). Я не хочу иметь дело с графическим интерфейсом, так как я хочу, чтобы решение было переносимым и частью моих точечных файлов. Если мне не хватает лучшего / более простого / более очевидного решения, пожалуйста, сообщите мне, хотя учтите, что я не использую DE (пробую i3wm).
До сих пор я пытался использовать xmodmap и setxkbmap с небольшим успехом.
Вот моя попытка использования xmodmap:
# ~/.xinitrc
xmodmap ~/.xmodmap
а также
# ~/.xmodmap
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
Запуск $ xmodmap ~/.xmodmap
из командной строки работает и делает то, что я хочу. Проблема в том, что он сбрасывается каждый раз, когда x перезапускается. Вот где я ожидаю, что xinitrc войдет - разве он не должен загружаться каждый раз, когда x запускается и запускает команду xmodmap? Если команда работает, почему она ничего не делает при чтении из файла?
Я попробовал пару вещей с setxkbmap, ни одна из которых не сработала. Две попытки ниже были в файле в разное время.
# ~/.xinitrc
setxkbmap -option caps:esc # attempt 1
setxkbmap -option esc:nocaps # attempt 2
Ни одна из команд не сделала ничего заметного из командной строки, поэтому я предполагаю, что я неправильно понял команду. Мне нравится идея этого решения, потому что оно однострочное и не требует ничего в каком-то другом файле. Если бы это только сработало.
Является ли .xinitrc неправильным файлом для использования? Я знаю, что startx загружается из ~ / .xinitrc.
Я прошу, чтобы возможные решения содержали весь файл (ы), а не только одну строку (если в файле требуется более одного), чтобы я не испортил какой-либо промежуточный шаг. Например, если мне нужно что-то в .xinitrc и что-то в .xcapsrebind, пожалуйста, покажите и файлы, и все необходимое содержимое (я также могу обработать указание добавить что-то в конец, но если может потребоваться & или подобное, Скажите мне, пожалуйста).
.xinitrc
:setxkbmap -option caps:escape
xmodmap
в.xinitrc
должны работать. Это то, что я делаю. Может быть, отобразить что-то необычное, чтобы убедиться, что оно действительно работает, когда вы запускаете x? Кроме того, какой оконный менеджер / окружение рабочего стола вы используете? KDE периодически «исправляет» мои раскладки клавиатуры, не сообщая об этом. Возможно, проверьте настройки своего рабочего стола, чтобы убедиться, чтоxmodmap
за вашей спиной ничего не работает .~/.xinitrc
- не убежит. Я сейчас использую i3wm и не DE, хотя то же самое происходило в Пантеоне, когда я пытался. Насколько я могу судить, i3 не связывается с xinitrc и не загружает его самостоятельно (но я нуб, так что я знаю?).Option "XkbOptions" "caps:escape"
вX
конфигурационный файл клавиатуры, например,/etc/X11/xorg.conf.d/10-keyboard.conf
Ответы:
РЕДАКТИРОВАТЬ: Как отметил полезный пользователь, мое первоначальное решение не выдержит обновления. Его решение в комментариях должно работать. Если вы предпочитаете менять местами Caps Lock и Escape, я бы рекомендовал добавить следующие команды из вашего .xinitrc или из конфигурации i3:
.xinitrc:
Файл конфигурации i3 (обычно находится в .config / i3 / config или в .i3 / config)
Я понимаю, что этот вопрос довольно старый, но подумал, что могу добавить ответ тем из нас, кто все еще пытается это выяснить.
После того, как у меня возникли аналогичные проблемы с некоторыми не загруженными DE
~/.xinitrc
, я вообще избежал xmodmap, пошел/usr/share/X11/xkb/symbols
и изменил отображение символов key => напрямую.Для этого я отредактировал файл конфигурации для моей клавиатуры, расположенный по адресу
/usr/share/X11/xkb/symbols
. Для большинства клавиатур это должен бытьpc
файл.После открытия файла я вручную переключил Escape и Caps_Lock для их соответствующих клавиш, результат показан ниже). Поскольку это влияет на то, как X отображает оборудование на ключ Symbol, оно должно работать независимо от того, используете ли вы GNOME, i3 или что-то подобное.
Фрагмент моего получившегося файла выглядит следующим образом:
Это сработало как обаяние для меня.
Просматривая связанные файлы, я обнаружил неоднократные упоминания и частичные реализации какого-либо типа флага, используемого для переключения определенных клавиш, таких как переключение Escape и Caps Lock. Я предполагаю, что это то, что используют Gnome Tweak Tool и setxkbmap; однако я не мог понять, как сохранить эти флаги с помощью оконного менеджера i3. Вышеуказанное решение должно работать нормально.
Надеюсь, это решит проблему!
источник
exec --no-startup-id setxkbmap -layout whatever -variant whatever -option caps:escape
...xkb/symbols/pc
файл будет перезаписан в следующий разxkeyboard-config
илиxkb-data
пакеты обновления.Две возможности:
1)
.xinitrc
не запускается - он используется xinit, startx и некоторыми другими методами для запуска сеансов X, но не поддерживается повсеместно - возможно, вы используете диспетчер отображения, который его не запускает. Добавление чего-то в .xinitrc, например,touch /tmp/xinitrc-was-run
может помочь определить, так ли это.2) Xorg автоматически сбрасывает настройки по умолчанию, когда клиенты не подключены - если .xinitrc завершает работу до того, как оконный менеджер или что-либо еще запускается, изменения xmodmap или setxkbmap будут потеряны.
Если уже определена опция XKB, которую вы хотите использовать, вместо того, чтобы запускать программы для изменения настроек при каждом запуске Xorg, вы можете просто попросить Xorg запустить с правильными настройками. Например, чтобы включить клавиши Ctrl-Alt-Backspace для уничтожения моего сервера Xserver, я установил файл с именем
/etc/X11/xorg.conf.d/90-zap.conf
:Вы можете прочитать больше об этом в документации X.Org на https://www.x.org/releases/X11R7.7/doc/xorg-docs/input/XKB-Config.html .
источник