Как изменить прерывание клавиатуры (под Windows XP) из программы C ++?

StackOverflow https://stackoverflow.com/questions/2813970

Вопрос

  • Нам дали небольшой проект (как часть моего курса ОС), чтобы сделать программу Windows, которая модифицирует ввод клавиатуры, так что он преобразует любой символ строчных букв, введенный в верхний регистр (без использования Caps-Lock)! Поэтому, когда вы вводите клавиатуру, вы увидите, что вы печатаете, преобразованы в прописные буквы!

    • Я сделал это довольно легко, используя Turbo C, вызывая GenInterrupt () и используя переменные _AH, _AL, я должен был прочитать персонаж, используя:

      _AH = 0x07; // Чтение персонажа без Echo GeniNterrupt (0x21); // Dos прерывание

    • Затем, чтобы преобразовать его в управляемое письмо, я должен замаскировать 5-й бит, используя:

      _AL = _AL & 0xDF; // маскируя введенный символ с 11011111

    • И тогда я покажу персонаж, используя любую выходную рутину.

Теперь это решение будет работать только под старыми компиляторами C DOS. Но то, что мы намерены сделать, это сделать тесно или подобное решение для этого, используя любой современный компилятор C / C ++ под Windows XP! То, что я впервые подумал, что модифицирует isr клавиатуру, чтобы она маскировала пятый бит любого въезда, чтобы включить его заглавным буквам! Но я не знаю, как именно это сделать. Во-вторых, я хотел создать консольную программу Win32 для выполнения одного и того же решения (но для безрезультатно) Или сделайте Windows-совместимое решение, но я не знаю, какие функции использовать! В-третьих, я подумал сделать программу Windows, которая модифицирует ISR непосредственно в соответствии с моими потребностями! И я все еще ищу, как это сделать!

Поэтому, пожалуйста, если бы вы могли помочь мне на этом, я бы очень признателен!

Заранее спасибо !

(Я использую Windows XP на Intel X86 с компилятором MingW-GCC.)

Это было полезно?

Решение

Вы не можете получить доступ к клавиатуре ISR, если не напишите кольцо 0 драйвера устройства. Вам лучше расследовать API к крюку Windows. Они достигают то же самое.

Начните здесь: http://msdn.microsoft.com/en-us/library/ms6449990%28v=vs.85%29.aspx.

Другие советы

Как скоро вы планируете выпускник? Надеюсь, у вас будет время, Windows больше не работает. Вам нужно будет написать драйвер фильтра клавиатуры с помощью WDK. Он поставляется с примером реализации в каталоге SRC Input KBFiltr. Вы не можете использовать инструменты, с которыми вы знакомы, WDK включает в себя компилятор и отладчик ядра. Доступно бесплатно, иди сюда для начала.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top