Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 439
от 05.05.2006, 01:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 326, Экспертов: 26
В номере:Вопросов: 1, Ответов: 2


Вопрос № 41682: Уважаемые эксперты! Подскажите, как через lparam определить нажатие клавиш Alt, Ctrl. Какие у них скан-коды? Что в lparam определяют биты 24-30?...

Вопрос № 41.682
Уважаемые эксперты! Подскажите, как через lparam определить нажатие клавиш Alt, Ctrl. Какие у них скан-коды? Что в lparam определяют биты 24-30?
Отправлен: 30.04.2006, 01:00
Вопрос задал: Александр А.А. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mihasic
Здравствуйте, Александр А.А.!
Вообще неплохо бы уточнить, какое сообщение вы имеете ввиду (WM_CHAR, WM_KEYDOWN или WM_KEYUP)

Тут вобщем все по этим сообщениям написано:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_keydown.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_keyup.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_char.asp

Приложение:

Ответ отправил: Mihasic (статус: 1-ый класс)
Ответ отправлен: 30.04.2006, 08:56

Отвечает: Sergijj
Здравствуйте, Александр А.А.!

Простите, я не понял, что Вы имеете в виду под "lparam", но если Вам необходимо читать состояния клавиш Ctrl, Alt, Shift, сообщаю:

Читать напрямую буфер клавиатуры Вы можете через порт 60h, а управлять контроллером клавиатуры - через порт 64h.

Указатели на начало и конец буфера клавиатуры лежат по адресам 041Ah и 041Ch соответственно.

Если нужен "облагороженный" scan-code клавиши - можно вызвать int 16h (ax = 01).

Статус флаги клавиатуры лежат здесь: 0040:0017 и 0040:0018 (это - слово) и имеют следующие значения:
bit| mask| value
0: 0001H alpha-shift (правая сторона) нажат
1: 0002H alpha-shift (левая сторона) нажат
2: 0004H Ctrl-shift (either side) нажат
3: 0008H Alt-shift (either side) нажат
4: 0010H ScrollLock состояние: включен
5: 0020H NumLock состояние: включен
6: 0040H CapsLock состояние: включен
7: 0080H Insert состояние: включен
8: 0100H Ctrl-shift (левая сторона) нажат
9: 0200H Alt-shift (левая сторона) нажат
10: 0400H Ctrl-shift (правая сторона) нажат
11: 0800H Alt-shift (правая сторона) нажат
12: 1000H ScrollLock нажат
13: 2000H NumLock нажат
14: 4000H CapsLock нажат
15: 8000H SysReq нажат

Получить в AX эти флаги можно через int 16h (ax = 12h).

Удачи!
---------
Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 2-ой класс)
Ответ отправлен: 02.05.2006, 14:55


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное