Xorg

xkb:使用鍵更改班次級別而不顯示為修飾符

  • June 24, 2015

我想將 XKB 配置Caps Lock為生成不同密鑰的一種方式,但我不希望它顯示為修飾符。例如:

  • F1產生F21按鍵
  • Caps Lock+F1產生F1按鍵(即沒有修飾符)
  • Shift++產生按鍵(僅算作修飾符Caps LockF1``Shift + F1``Shift

我通過分配Caps Lockto部分成功了Hyper_R,但問題是這僅在Hyper_R也設置為修飾符時才有效,例如Mod3. 這意味著Shift++Caps Lock實際上F1會產生Shift + Mod3 + F1,因此任何監聽的熱鍵Shift + F1都不起作用,因為它們不喜歡Mod3在場。

有什麼方法可以Caps Lock用來改變某些鍵的行為,而實際上不會讓它作為修飾鍵出現在 X 應用程序中?

我讀過的文件暗示這可以通過高級 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 ]};

監視擊鍵的程序(例如xevemacs)將看到按鍵,就像您按下了F21Shift+F21F1Shift+F1一樣。

引用自:https://unix.stackexchange.com/questions/155811