端末でキー押下が処理/キャプチャされる場所はどこですか? vtermsを切り替えるためにAlt + F#キーの組み合わせの動作を変更したい場合、このキーの組み合わせはどこで処理されますか?
答え1
カーネル仮想端末のコンソール切り替え機能は、カーネル内蔵端末エミュレータ(drivers/tty/vt/keyboard.c
カーネルソースツリーから)カーネルキーマップのキーの組み合わせによってトリガされます(drivers/tty/vt/defkeymap.map
)。システムがにある可能性があります/usr/share/kbd/keymaps
。
何らかの方法で切り替え動作を修正するには、カーネルコードをハッキングし、パッチされたカーネルを直接コンパイルする必要があります。
キーの組み合わせのみを変更したい場合は、loadkeys
このユーティリティを使用して独自のキーマップを作成してインストールできます。優先キーマップで始まり、シンボル(Console_N
および関連する、、、Last_Console
)の定義を変更します。Decr_Console
Incr_Console
#...
keycode 59 = F1 F11 Console_13
control keycode 59 = F1
alt keycode 59 = Console_1
control alt keycode 59 = Console_1
keycode 60 = F2 F12 Console_14
control keycode 60 = F2
alt keycode 60 = Console_2
control alt keycode 60 = Console_2
#...
これはカーネルに組み込まれたターミナルエミュレータにのみ影響し、これは組み込みの仮想コンソールにのみ影響します。 X11、Wayland、および同様のコンテキストはXKBを使用して同様の機能を実装します。 XKBでの操作、/usr/share/X11/xkb/compat/xfree86
使用される.../xkb/types/pc
タイプ、CTRL+ALT
および.../xkb/symbols/srvr_ctrl
Fキー定義の説明については、リソースを参照してください。