Ctrl2Cap v2.0

作成者: Mark Russinovich

公開日: 2006 年 11 月 1 日

DownloadCtrl2Cap をダウンロード(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

DownloadCtrl2Cap をダウンロード(48 KB)

実行場所:

  • クライアント: Windows Vista 以降。
  • サーバー: Windows Server 2008 以降。