キーボード入力を変更するWindowsプログラムを作成するための小さなプロジェクト(私のOSコースの一部として)が与えられました。これにより、入力された小文字を大文字に変換します(caps-lockを使用せずに)。したがって、キーボードで入力すると、入力内容が大文字に変換されて表示されます。
geninterrupt()を呼び出し、変数_AH、_ALを使用して、Turbo Cを使用してこれを非常に簡単に実行しました。次を使用して、文字を読み取る必要がありました。
_AH = 0x07; //エコーなしで文字を読み取るgeninterrupt(0x21); //割り込みを行います
次に、それを大文字に変換するには、次を使用して5番目のビットをマスクする必要があります。
_AL = _AL&0xDF; //入力した文字を11011111でマスクします
次に、任意の出力ルーチンを使用して文字を表示します。
現在、このソリューションは古いCDOSコンパイラでのみ機能します。しかし、私たちがやろうとしているのは、WindowsXPで最新のC/ C ++コンパイラを使用して、これに近いまたは同様のソリューションを作成することです。私が最初に考えたのは、キーボードISRを変更して、入力された文字の5番目のビットをマスクして大文字にすることです。しかし、私はこれを正確に行う方法がわかりません。次に、Win32コンソールプログラムを作成して、同じソリューションを実行するか(ただし、役に立たない)、Windows互換のソリューションを作成したかったのですが、使用する関数がわかりません。第三に、自分のニーズに合わせてISRを直接変更するWindowsプログラムを作成しようと思いました。そして私はまだこれを行う方法を探しています!
どうぞよろしくお願いします。これについて私を助けていただければ幸いです。
前もって感謝します !
(私はmingw-GCCコンパイラを搭載したIntelX86でWindowsXPを使用しています。)