xkb: используйте ключ для изменения уровня сдвига без появления в качестве модификатора

Я хотел бы настроить XKB на использование Caps Lock как способ создания разных ключей, но я не хочу, чтобы он отображался как модификатор. Например:

  • F1 производит нажатие клавиши F21
  • Caps Lock + F1 производит нажатие клавиши F1 (то есть без модификаторов)
  • Shift + Caps Lock + F1 производит нажатие Shift + F1 (только Shift учитывается как модификатор)

Я частично преуспел в этом, назначив Caps Lock для Hyper_R , но проблема в том, что это работает только в том случае, если Hyper_R также задан как модификатор, например Mod3 . Это означает, что Shift + Caps Lock + F1 на самом деле производит Shift + Mod3 + F1 поэтому любые горячие клавиши, прослушивающие Shift + F1 , не работают, потому что им не нравится Mod3 .

Есть ли способ использовать Caps Lock для изменения их поведения определенных ключей, не имея при этом приложения X в качестве ключа-модификатора?

Документы, которые я прочитал, подсказывают, что это возможно с расширенной конфигурацией XKB, но я не могу найти никаких подробностей.

One Solution collect form web for “xkb: используйте ключ для изменения уровня сдвига без появления в качестве модификатора”

Извините, это древний, но, возможно, даже если вам слишком поздно, кто-то может найти этот подсказку полезной:

В ваших types добавьте:

 type "CapsShiftSpecial" { modifiers= Shift+Hyper; map[Shift]= Level2; preserve[Shift]= Shift; map[Hyper]= Level3; map[Shift+Hyper]= Level4; preserve[Shift+Hyper]= Shift; level_name[Level1]= "Base"; level_name[Level2]= "Shift"; level_name[Level3]= "Hyper"; level_name[Level4]= "Shift Hyper"; }; 

Затем в файле symbols есть что-то вроде

 key <FK01> { type[group1]="CapsShiftSpecial", symbols[group1]=[ F21, F21, F1, F1 ]}; 

Программа, отслеживающая нажатия клавиш (например, xev или emacs ), будет видеть нажатия клавиш, как если бы вы нажали F21 , Shift + F21 , F1 и Shift + F1 .

  • Уникальная настройка монитора синергии
  • Второй монитор не работает с драйверами nvidia
  • Как запустить Gnome из контейнера systemd-nspawn на втором сервере X?
  • Как я должен прийти к выводу, что мой видеодрайвер называется «intel»?
  • Проблемы с ключевыми ключами на клавиатуре Microsoft
  • Любой инструмент для обновления патча X.org? Т.е. перезагрузите X.org без выхода из системы и входа в систему
  • Как переназначить клавишу контекстного меню на клавишу Super
  • Mesa работает, но не может запустить Xserver и графический интерфейс с драйвером nvidia и созданным конфигурационным файлом nvidia-xconfig
  • Могу ли я отключить мертвые клавиши для одного приложения?
  • Может ли Xorg-Server и Wayland-Compositor запускаться одновременно в Linux?
  • Где Xkb получает свою конфигурацию?
  • Linux и Unix - лучшая ОС в мире.