
長押ししますCtrl。その後、Alt長押しします。最後にを押しますDelete。 Ubuntuシステム(おそらくDebianベースのシステム)を使用している場合は、Ctrl++ショートカットAltを実行したため、セッションがロックされている可能性がありますDelete。
さて、Delete待ってください。その後、Ctrl長押しします。次にを押しますAlt。セッションショートカットロック発動しません。
なぜですか?この設定はどこにハードコードされていますか?
私の推測:ショートカットは実際には「拡張キーボードキー」を介して機能しているようです。選択したキーで「新しいキーボード」を選択またはCtrl開きます。ただし、最初にこの仮想拡張キーボードではなく実際のキーボードに属することを選択した場合は、そうではありません。そうですか?AltDeleteDelete
答え1
これは、修飾子ではない操作が主要なイベントに対して実行されるためです。
これは実際にはキーボードハードウェアとほとんど関係がありません。 USBおよびPS / 2キーボードはこれに関して同じように機能します。持つ何もないいわゆる「修飾子キー」を特別にするハードウェア。 どの1 つの例外を除いて、キーは修飾キーであっても、そうでなくてもよい。
修飾キーが何であるかを決定するものは何ですか?キーボード図オペレーティングシステムで使用されるソフトウェア。ハードウェアは有効なイベント(実際には現在押されているキーのビットマップであるUSB HID入力レポートプロトコルの詳細をマスクして短く保つために部分的に内部形式でエンコードされています)キーダウンイベントとキーダウンイベントのみを送信します。 。
たとえば、FreeBSDキーマップに次の行を見つけることができます。
#代替 #cntrl alt alt cntrl ロックチェック # コードデフォルト Shift cntrl Shift alt Shift cntrl Shift ステータス #------------------------------------------------ - ----------------- … 029制御制御制御制御制御制御制御制御O … 問題042 … 問題054 … 永久 … 問題083 '.' '.'ガイドガイドN …
029、042、054、056はキーボードコード(USB HID使用番号とPS / 2スキャンコード番号を基準に汎用システムで標準化されたコード)ですがlctrl
、、 lshift
rshift
lalt
行動これらのキーをマップの修飾キーとして定義します。これを別のジョブとして定義し、いくつかのデフォルトのFreeBSDマップと同様に、そのジョブを別の場所に移動します。全く違うキーは修飾子です。
(このルールの例外はFnkeyです。これはハードウェアに実装されている修飾子です)。完全ハードウェアではソフトウェアは表示できません。別の言葉。有線経由でイベントは生成されません。実際には別のハードウェア修飾子があります。これは鍵ではありません。 NumLock LED の状態です。 )
これ行動、このような修飾子操作の場合に変更されます。現在の修飾子の状態は、(簡単に言えば)現在「オープン」修飾子を記録するオペレーティングシステムに記録されているフラグのセットです。キーマップの列ヘッダーからわかるように、現在の修飾子状態(「shift」、「altgr」、「control」、および「alt」状態の「on」フラグの側面)がどのような影響を与えるかがわかります。行動追加のキーがマッピングされます。
キーコード083(つまり、数値キーパッドのキーコード)がある行で、. del現在の修飾子ステータスが少なくとも「alt cntrl」の場合にのみマッピングされた操作が実行されることがわかりますboot
。
キーボードドライバの開発修正作業鍵を受け取った後~によるとまたは鍵解放するイベント。その他のタスクは、主なイベントにのみ適用されます。~によるとまたは自動反復イベント。boot
たとえば、この操作の場合です。キー083でキー押下または自動繰り返しイベントが発生した場合のみそしてboot
これが発生したかどうかにかかわらず、現在の修飾子の状態はすでに "alt cntrl" / "alt cntrl Shift"です。
まず、オペレーティングシステムの現在の修飾子状態をその状態にインポートするには、およびlalt
/lctrl
操作rctrl
が次のことを行う必要があります。それが起こった、通過最初そのキーにマップされたキーを押します。 (FreeBSDシステムは修飾子も受け入れます。ロックする一般的な修飾子システムに加えて変化しかし、これを使用できる主キーマップは2つだけです。 ISOキーボード標準では修飾子も受け入れます。クラスプしかし、FreeBSDはこのメカニズムを提供しません。 )
私が言ったように、FreeBSDはその例です。ただし、MS / PC-DOS(現在の修飾子の状態はメモリでよく知られているバイト)からWindows NT(キーマップにコードとデータカーネルモードDLLを含む)まで、PS / 2またはUSB HIDデバイスを備えたほとんどのオペレーティングシステム)おおよそ次のように動作します。
追加読書
- Ubuntu 16.04はFnキーを認識しません
- Ctrl+Shift+Fn+F10 キーをシミュレートできません。 \
- ジョナサン・デ・ボーインポラード。 「キーマップ」。
console-fb-realizer
。 nosh ツールセットのマニュアルページ。 - 横田和隆(2008-01-29)。
atkbd
。 FreeBSD のマニュアルページ。 kbdmap
。 §5。 FreeBSD のマニュアルページ。
答え2
aその時を押してもキーShiftコードが提供されないように、以前A
押しても正しいキーコードが送信されません。DeleteAltCtrl
修飾キーは修飾キーの前に押す必要があります。このインスタンスの修飾キーはAlt修飾キーであるか、そうではありません。CtrlDelete
インポート前に押すことが許可されている場合、aキーストロークを読み取るソフトウェアは、次の文字が入力されるまでどの文字も出力できません。ShiftA
キーボードハードウェアは、押したキーにアクティブな修飾子があるかどうかに応じて異なるスキャンコードを送信します。