Цель:
Я хотел бы назначить Alt для CapsLock-key, а Meta для Alt-key. Но при этом Alt-ключ больше не будет распознаваться как Alt, а CapsLock-ключ больше не будет распознаваться как CapsLock.
openSUSE 11.4
Ранее:
openSUSE 11.1 - поскольку я единственный пользователь своего компьютера, я "просто" отредактировал файл / usr / share / X11 / xkb / keycodes / xfree86, и он работал без проблем. Ключи были привязаны к их символам на самом низком уровне.
Проблемы:
ХКВ
Я создал вариант польского макета (pl_ext), который (для теста) состоит из таких записей:
key <CAPS> { [ Alt_L ] }; modifier_map Mod1 { Alt_L, Alt_R };
Однако это просто ничего не делает, клавиша CapsLock в xev распознается (символ) как Alt_L, но когда я нажимаю клавишу CapsLock, она ведет себя как CapsLock (например, при условии, что у вас есть Файл в меню, Alt + F должна открыть это меню, это не ).
Вопрос: Как определить файл макета для установки CapsLock-key как Alt, а Alt-key как Meta?
Изменить: половина успеха здесь! Теперь у меня есть такие записи:
key <CAPS> { [ Alt_L ] }; modifier_map Mod1 { <CAPS> }; // this is a difference
и это работает как хотелось бы. Это не:
key <LALT> { [ Meta_L ] } ; key <RALT> { [ Meta_R ] } ; modifier_map Mod5 { <LALT>,<RALT> };
Alt-клавиши распознаются как Meta xev, но я все еще могу открывать меню с помощью Alt + F, переключать окна, а я не должен. А с другой стороны, я не могу ввести какой-либо национальный характер, и я должен.
xfree86
Но теперь это не работает, я думаю, вместо xfree86 читается другая таблица файлов.
Вопрос: Как узнать, какой файл таблицы ключей используется системой (X / Gnome)?
Редактировать: лучший вариант для меня - редактирование таблиц кодов клавиш - был решен ответом macias !
Xmodmap
Половина успеха здесь. Эта часть работает как нужно:
удалить Lock = Caps_Lock keysym Caps_Lock = Alt_L
Теперь у меня есть ключ CapsLock, который сопоставлен с Alt. Но это:
keysym Alt_L = Meta_L
... делает странную вещь. xev показывает, что Alt-key сопоставлен с Meta, но когда я нажимаю Alt + F (это должно быть сопоставлено с Meta + F -> ничего не делая), открывается меню File. Более того, когда я нажимаю Alt + Tab, я получаю переключатель окон (я не должен - Alt теперь Meta).
Вопрос: Как «удалить» старое поведение для Alt-ключа?
Изменить: эта часть решена ответом Жиля .
Резюме:
Ответ на любой вопрос (надеюсь) решит мою проблему, однако я предпочитаю использовать xkb целиком, потому что затем могу упаковать все файлы для xkb и изменить макет в одном месте. Спасибо заранее за любую помощь!
Ответы:
(Этот ответ касается только xmodmap. Я уверен, что это возможно сделать с помощью XKB, я просто не знаю как.)
Модификаторы и ключевые слова назначаются независимо. Но вы получаете странные эффекты, если не устанавливаете их последовательно. Я думаю, что все, что вам не хватает, - это
add
команда для назначения модификатораMeta_L
, хотя вам также может потребоваться очистить и переназначить клавиши-модификаторы. Вы можете заменитьMod1
иMod2
наMod3
,Mod4
иMod5
: они взаимозаменяемы, просто убедитесь, что вы не используете один для двух разных целей.источник
keysym Caps_Lock = Alt_L
том, что если вы запустите его дважды, он вернет систему в нежелательное состояние. Вот почему я использую коды клавиш ; они различаются между операционными системами и архитектурами (не между клавиатурами), но не так часто.Подход к редактированию кодов клавиш
Я нашел ответ на польском форуме Ubuntu. Теперь можно редактировать не файл "xfree86", а файл "evdev". Таким образом, вы можете вносить постоянные изменения, которые работают для всех макетов.
Пример (по запросу Жиля) - войдите в систему как root, перейдите на
сделайте резервную копию файла «evdev», а затем отредактируйте его. Измените коды по своему вкусу, например, в моем случае:
Вы можете найти какие коды, выполнив команду "xev", но вы можете просто посмотреть на оригинальный файл "evdev".
Выйдите, войдите, наслаждайтесь новой клавиатурой :-).
источник
Keyboard Preferences
опции дляCapslock
переопределения настраиваемойXKB
конфигурации я пишу. Так как это переключатель выбора, я не вижу способа остановить применение одного из правил в графическом интерфейсе.попробуй это:
обратите внимание на два определения уровня. Это потому, что по умолчанию для LALT является [Alt_L, Meta_L]; если вы не переопределите второй, он останется Meta_L.
Посмотрите на этот ответ на xkb, чтобы узнать, как переопределить некоторые ключи без необходимости редактировать основные файлы по умолчанию (таким образом, не нужно быть пользователем root). В таком случае вам понадобится в небольшом разделе файла локальных символов:
источник