ファンクションキーをもっと活用しようとしています。ウィンドウマネージャで機能を割り当てることができるように物理F1キーがF12表示されます(たとえば、を押すたびにアクティブなチャットウィンドウに切り替えます)。F21
F32
F21
F22
しかし、それでも一般的なファンクションキーにアクセスしたいので、物理Caps Lockキーを押しながらキー押しF1を生成できるようにしたいです。F1
他の修飾子に関する限り同じであれば良いでしょShiftうF1。簡単に言うと:Shift + F1
Shift + F21
- F1->
F21
- Caps+ F1->
F1
- Shift+ F1->
Shift + F1
(変更されない) - Alt+ F1->
Alt + F1
(変更されない) - など。
したがって、最初の2点だけをデフォルトのレイアウトに変更するだけです。
次のXKBフラグメントでこれを開始しようとしましたが、F21
Fキーの生成中にF1押し続けると、元のFキーは生成されません。Caps Lock
partial
xkb_types "hyper" {
virtual_modifiers Alt,Hyper;
type "HYPER" {
modifiers= Hyper+Control+Alt;
map[Hyper]= Level2;
map[Control+Alt]= Level3;
level_name[Level1]= "Extra";
level_name[Level2]= "Normal";
level_name[Level3]= "Normal+Ctrl+Alt";
};
};
partial function_keys
xkb_symbols "hyper_f21" {
replace key <FK01> {
type= "HYPER",
symbols[Group1]= [ F21, F1, XF86Switch_VT_1 ]
};
replace key <FK02> {
type= "HYPER",
symbols[Group1]= [ F22, F2, XF86Switch_VT_2 ]
};
...
};
partial modifier_keys
xkb_symbols "caps_hyper" {
replace key <CAPS> {
[ Hyper_L, Hyper_L ]
};
modifier_map Lock { <KPDL> }; # Not sure how to clear modifiers, so assign an unused key
modifier_map Mod3 { <CAPS> };
};
ロードしようとすると、次の警告が表示されます。
Warning: Type "HYPER" has 3 levels, but <FK01> has 5 symbols
Ignoring extra symbols
<FK01>
基本的に5つのレベルがありますが、3つだけオーバーライドしたので、なぜエラーが発生するのか本当に理解できません。
F21
この設定をテストしたときに物理キーを押したF1ときにHyper_L
(およびMod3
)設定されていることを確認しましたCaps Lock。ただし、Caps Lock+を押すと代わりにF1生成されます。Mod3 + F21
F1
ベストアンサー1
いつものように、この問題は問題が公開された直後に修正されました。問題は簡単でした。Hyper_L
に割り当てられたデフォルト値を使用していました。逆にMod4
変更するとうまくいきました。ただし、実際の修飾子がまだ必要であるため、まだバインドする必要があります。Caps LockHyper_R
Mod3
これで、目的のアクションを生成するための更新された構成は次のとおりです。
partial
xkb_types "hyper" {
virtual_modifiers Alt,Hyper;
type "HYPER" {
modifiers= Shift+Control+Alt+Hyper;
map[Shift]= Level2;
preserve[Shift]= Shift;
map[Control]= Level2;
preserve[Control]= Control;
map[Shift+Control]= Level2;
preserve[Shift+Control]= Shift+Control;
map[Alt]= Level2;
preserve[Alt]= Alt;
map[Shift+Alt]= Level2;
preserve[Shift+Alt]= Shift+Alt;
map[Control+Alt]= Level3;
preserve[Control+Alt]= Control+Alt;
map[Shift+Control+Alt]= Level2;
preserve[Shift+Control+Alt]= Shift+Alt;
map[Hyper]= Level2;
level_name[Level1]= "Extra";
level_name[Level2]= "Normal";
level_name[Level3]= "Ctrl+Alt";
};
};
partial function_keys
xkb_symbols "hyper_f21" {
replace key <FK01> {
type= "HYPER",
symbols[Group1]= [ F21, F1, XF86Switch_VT_1 ]
};
replace key <FK02> {
type= "HYPER",
symbols[Group1]= [ F22, F2, XF86Switch_VT_2 ]
};
...
};
partial modifier_keys
xkb_symbols "caps_hyper" {
replace key <CAPS> {
[ Hyper_R ]
};
# Remove Hyper (Hyper_L/Hyper_R) from Mod4, was added by "pc" layout
modifier_map none { <HYPR> };
# Now make physical caps lock (mapped to Hyper_R above) control Mod3. Mod3 is
# associated with the virtual modifier "Hyper" because the existing XKB config
# links Hyper_L and Hyper_R with this virtual modifier. Therefore Mod3 becomes
# the virtual modifier "Hyper" because they both share the same keysym Hyper_R.
modifier_map Mod3 { <CAPS> };
};
つまり、次のようになります。
- F1->
F21
- Caps+ F1->
F1
- Shift+ F1->
Shift + F1
(変更されない) - Alt+ F1->
Alt + F1
(変更されない) - その他 - 残りは変更されません