内部に魔法システムalt+sysrq+r
キーの組み合わせWikipediaによると、次のことを行う組み合わせがあります。
キーボードを生モード(X11やsvgalibなどのプログラムで使用されるモード)からXLATEモードに切り替えます。
生モードとは何ですか? XLATEモードとは何ですか?
XLATEモードに切り替えた後、元のモードに戻すことはできますか?
私のキーボードがどのモードにあるのか、どうすればわかりますか?
答え1
キーボードのキーを押すと、スキャンコードと呼ばれる数値コードがコンピュータに送信されます。スキャンコードは、どのキーが押されたかをコンピュータに通知します。たとえば、一般的なアメリカのキーボードでは、キーを押すAとスキャンコード30が送信されます(キーを離すとスキャンコード158が送信されます)。キーボードがネイティブモードにあるとき、キーボードドライバはこれらのコードをアプリケーションに直接報告します(「raw」はキーボードですぐに処理されないことを意味します)。一部のプログラムは生モードを使用し、独自のキーボード処理を実行します。Xサーバー最も目立つものです。
ほとんどのプログラムは、キーを押すとプログラムが文字A(ASCII 97)を読み、+をa
押すとプログラムが読み(ASCII 65)、+を押すとプログラムが文字(ASCII 1)を読み取ることを期待しています。 。関連文字のないキーはforなどのエスケープシーケンスを送信します。ここではESC文字(ASCII 27)です。キーボードドライバは、キーボードがXLATEモード(「翻訳」の略語)とも呼ばれるASCIIモードにあるときにこの変換を実行します。 XLATEモードを使用すると、アプリケーションは文字入力を実行できますが、Ctrl + Aとは異なる左ShiftまたはCtrl + Shift + Aの微妙な違いにアクセスできないという欠点があります。ShiftAA
CtrlACtrl+A
\e[A
Left\e
これkbd_mode
モード間の切り替えを許可し、引数なしで呼び出すと現在のモードが表示されます。
魔法のSysRqキーの組み合わせは、あらゆる種類の悪い状況から回復するように設計されています。キーの組み合わせの1つは、Alt+SysRq+K
現在仮想コンソールにあるすべてのプログラムを終了します。プログラムがキーボードをネイティブモードに切り替えると、ログインプロンプト(システム構成によって頻繁に表示されます)に入力できません。Alt+SysRq+R
文字を入力できる一般(Xを除く)ASCIIモードを再開するには、押します。
答え2
キーボードから送信されるコードの種類を定義できます。これはキーボードモードで行われます。を使ってキーボードモードを変更できますkbd_mode
。
マンページのオプションは次のとおりです。
-s: scancode mode (RAW),
-k: keycode mode (MEDIUMRAW),
-a: ASCII mode (XLATE),
-u: UTF-8 mode (UNICODE).
開発者が押したキーのスキャンコードしか取得できない場合は、左のShiftキーを押すなどの主要なイベントをキャプチャする方が簡単です。