キーボード修飾子を強制的に無効にする方法

キーボード修飾子を強制的に無効にする方法

場合によっては、フルスクリーン VirtualBox ゲストを使用するときにコンピュータ間の相乗効果を使用すると、奇妙なキー修飾子がオンになるという問題が発生します。キーボードに対応するエントリがある場合(Shift_Lなど)、そのエントリをクリックするだけでステータスがリセットされ、続いて小文字を入力できます。しかし、そのうちのいくつかは私のキーボードにまったくマッピングされていない(例:ISO_Level3_Shift)、まったくオフにすることはできません!

どのようにリセットしますか?今私ができることはコンピュータを再起動するだけですが、回避策はやや厄介です。

私が望むのは、可能なすべてのキーボード修飾子を人為的に「クリック」してその状態をリセットできるプログラムです。できますか?

私はMint 14(Ubuntu 12.10 Quantalのクローン)を使います。

ベストアンサー1

すでにxdotoolインストールされている場合は、簡単に使用できます。

xdotool keyup ISO_Level3_Shift

キーリリース(もちろんISO_Level3_Shift)イベントをXサーバーに送信します。

しかし、プログラムはすべての修飾キーを解放したいと思います。 xdotoolを使用すると、簡単にこれを達成できます。そうでない場合は、どの修飾子キーシンボルが定義されているかわかりません。これを見つける1つの可能な方法は、以下を解析することですkeysymdef.h

grep '^#define' /usr/include/X11/keysymdef.h | sed -r 's/^#define XK_(\S*?).*$/\1/;' | grep -E '_(L|R|Level.*)$'

確かに修飾子であるいくつかのコアシンボルを返します。残念ながら、現在は修飾子キーの正確な定義が見つからないため、これが完全なリストかどうかはわかりません。

| xargs xdotool keyup上記のパイプに接続すると、これらのキーはすべて解放されます。私のシステムでは、次のコマンドを実行します。

xdotool keyup Shift_L Shift_R Control_L Control_R Meta_L Meta_R Alt_L Alt_R Super_L Super_R Hyper_L Hyper_R ISO_Level2_Latch ISO_Level3_Shift ISO_Level3_Latch ISO_Level3_Lock ISO_Level5_Shift ISO_Level5_Latch ISO_Level5_Lock

おすすめ記事