我们有一个小项目(作为我的操作系统课程的一部分)来制作一个修改键盘输入的 Windows 程序,以便它将输入的任何小写字符转换为大写字符(不使用大写锁定)!所以当你在键盘上输入时,你会看到你输入的内容变成了大写!
我通过调用 geninterrupt() 并使用变量 _AH、_AL 使用 Turbo C 很容易地做到了这一点,我必须使用以下方法读取一个字符:
_AH = 0x07; // 读取没有回显的字符 geninterrupt(0x21); // Dos 中断
然后要将其转换为大写字母,我必须使用以下方法屏蔽第 5 位:
_AL = _AL & 0xDF; // 用 11011111 屏蔽输入的字符
然后我将使用任何输出例程显示字符。
现在,这个解决方案只能在旧的 C DOS 编译器下工作。但是我们打算做的是通过在 Windows XP 下使用任何现代 C/C++ 编译器来解决这个问题!我首先想到的是修改键盘 ISR 以便它掩盖任何输入字符的第五位以将其变为大写!但我不知道该怎么做。其次,我想创建一个 Win32 控制台程序来执行相同的解决方案(但无济于事)或制作与 Windows 兼容的解决方案,但我仍然不知道要使用哪些功能!第三,我想制作一个直接修改 ISR 以满足我需要的 Windows 程序!我还在寻找如何做到这一点!
所以,如果你能帮助我解决这个问题,我将不胜感激!
先感谢您 !
(我在带有 mingw-GCC 编译器的 intel X86 上使用 Windows XP。)