Ctrl2Cap v2.0
作成者: Mark Russinovich
公開日: 2006 年 11 月 1 日
Ctrl2Cap をダウンロード (48 KB)
はじめに
Ctrl2cap は、システムのキーボード クラス ドライバーをフィルター処理して、Caps Lock 文字を制御文字に変換するカーネル モードのデバイス ドライバーです。 私のように UNIX から NT に移行した人は、標準の PC キーボード上の Caps Lock キーの場所に Control キーが配置されていることに慣れているため、このようなユーティリティは、編集をスムーズに進めるために不可欠です。
インストールと使用
Ctrl2cap ファイルを解凍したディレクトリからコマンド "ctrl2cap /install" を実行して、Ctrl2cap をインストールします。 アンインストールするには、「ctrl2cap /uninstall」と入力します。
Ctrl2cap のしくみ
NT 4 では、Ctrlcap は実のところ、非常に簡単です。 キーボードの読み取り要求をキャッチできるように、キーボード クラス ドライバーにアタッチするだけです。 要求ごとに I/O 完了コールバックが送信され、その時点で返されているスキャンコードが確認されます。 それが Caps Lock であると、左側の Control に変更されます。
Win2K では、Ctrl2cap は、キーボード クラス デバイスのスタック内でキーボード クラス デバイスの上でレイヤー化する WDM フィルター ドライバーです。 これは、i8042 ポート デバイスとキーボード クラス デバイスの間に自身をレイヤー化する Win2K DDK の kbfiltr の例とは対照的です。 キーボード クラス デバイの上にレイヤー化することを選択したのには、いくつかの理由があります。
- これは、Ctrl2cap の IRP_MJ_READ インターセプトおよび操作コードが NT 4 と Win2K のバージョン間で共有されることを意味します。
- INF ファイルを指定する必要がなく、ユーザーが Ctrl2cap をインストールするためにデバイス マネージャーを実行する必要はありません。該当するレジストリ値 (キーボード クラス デバイスの HKLM\System\CurrentControlSet\Control\Class UpperFilters 値) を変更するだけです。
この方法の短所は次のとおりです (そして、これは見方によっては長所にも短所にもなります)。
- デバイス マネージャー経由で INF ファイルをインストールしないため、ユーザーは Ctrl2cap ドライバー ファイルが Microsoft によってデジタル署名されていないという警告を受けません。
この場合、私にとっては長所が短所を上回ると感じました。 ただし、Ctrl2cap で Win2K キーボード フィルターをモデル化する前に、Win2K DDK の kbfiltr の例を調査することを強くお勧めします。 キー入力シーケンス内のインターセプト ポイントにより、kbfiltr が入力ストリームにキーストロークを挿入することが非常に簡単になります。
その他の情報
フィルター ドライバー (入力や出力を確認できるように他のドライバーにアタッチするドライバー) を作成する方法の詳細については、こちらのソースをご覧ください。
- Windows NT および Windows 2000 の DDK サンプル \src\storage\filter\diskperf
- Windows 2000 び DDK サンプル \src\input\kbfiltr
- "Examining the Windows NT File System" (Mark Russinovich 著、Dr. Dobb's Journal、1997 年 2 月)
- 付属のファイル システム フィルター ドライバー Filemon
Ctrl2Cap をダウンロード (48 KB)
実行場所:
- クライアント: Windows Vista 以降。
- サーバー: Windows Server 2008 以降。