Использование прерывания клавиатуры для отображения чего-то отличного от того, что набрал пользователь

На языке C, используя прерывание клавиатуры, как я могу отобразить альтернативную клавишу из того, что набрал пользователь? Например, когда я нажимаю «Q» на клавиатуре, на экране должна отображаться «A».


person Community    schedule 02.11.2008    source источник
comment
Тьфу, из-за того, что она была отмечена как вики сообщества, и я тот, кто отредактировал ее, чтобы она была последовательной, теперь похоже, что я был тем, кто задал вопрос. Это как-то некрасиво...   -  person Domenic    schedule 02.11.2008
comment
Вероятно, вам следует прокомментировать среду, в которой вы работаете. Mac? XP? линукс? Какой компилятор вы используете? Для чего вы собираетесь это использовать? Предоставление лучшего контекста, вероятно, даст лучшие ответы.   -  person EvilTeach    schedule 02.11.2008


Ответы (2)


Обработка прерывания клавиатуры не является хорошей идеей на любой платформе. А как насчет usb-клавиатуры, нет прерывания, которое вы можете поймать?

Для ОС Windows вы, вероятно, захотите написать драйвер фильтра, вы можете найти эту запись, частично актуальную.< br> Образец драйвера фильтра клавиатуры можно найти здесь.
Для Linux вам, вероятно, нужно пропатчить драйвер слоя HID. Mac полностью вне моей компетенции :)

person Community    schedule 02.11.2008

Нам нужно немного больше информации о вашей среде.

Насколько я понимаю Ваш вопрос, Вы хотите заменить обработчик прерывания клавиатуры на свой таким образом:

  • Сохраните адрес входа исходного обработчика клавиатуры.
  • Установите свой собственный, который вызывает оригинал и манипулирует значением кода ключа.

Однако в большинстве современных операционных систем гораздо проще определить и установить новую раскладку клавиатуры.

person Community    schedule 02.11.2008