カーネルレベルでキーを押すキャプチャ

カーネルレベルでキーを押すキャプチャ

端末でキー押下が処理/キャプチャされる場所はどこですか? vtermsを切り替えるためにAlt + F#キーの組み合わせの動作を変更したい場合、このキーの組み合わせはどこで処理されますか?

ベストアンサー1

カーネル仮想端末のコンソール切り替え機能は、カーネル内蔵端末エミュレータ(drivers/tty/vt/keyboard.cカーネルソースツリーから)カーネルキーマップのキーの組み合わせによってトリガされます(drivers/tty/vt/defkeymap.map)。システムがにある可能性があります/usr/share/kbd/keymaps

何らかの方法で切り替え動作を修正するには、カーネルコードをハッキングし、パッチされたカーネルを直接コンパイルする必要があります。

キーの組み合わせのみを変更したい場合は、loadkeysこのユーティリティを使用して独自のキーマップを作成してインストールできます。優先キーマップで始まり、シンボル(Console_Nおよび関連する、、、Last_Console)の定義を変更します。Decr_ConsoleIncr_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_ctrlFキー定義の説明については、リソースを参照してください。

おすすめ記事