SysFn02/ru: Difference between revisions
Jump to navigation
Jump to search
Vitalkrilov (talk | contribs) (Добавлены ссылки на конкретные подфункции. Добавлена ссылка на страницу программы keyascii.) |
Vitalkrilov (talk | contribs) (Обновлена документация (актуальна на момент r9828).) |
||
Line 9: | Line 9: | ||
:* если буфер пуст, возвращается eax=1 | :* если буфер пуст, возвращается eax=1 | ||
:* если буфер непуст, то возвращается al=0, ah=код нажатой клавиши, | :* если буфер непуст, то возвращается al=0, ah=код нажатой клавиши, | ||
:: | ::биты 16-23 содержат сканкод нажатой клавиши в режиме ASCII, | ||
:::в режиме сканкодов биты обнулены. | |||
::биты 23-31 обнулены | |||
:* если есть "горячая клавиша", то возвращается | :* если есть "горячая клавиша", то возвращается | ||
::al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш), | ::al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш), |
Latest revision as of 12:49, 4 June 2022
Функция 2 - получить код нажатой клавиши
Забирает код нажатой клавиши из буфера. Параметры:
- eax = 2 - номер функции
Возвращаемое значение:
- если буфер пуст, возвращается eax=1
- если буфер непуст, то возвращается al=0, ah=код нажатой клавиши,
- биты 16-23 содержат сканкод нажатой клавиши в режиме ASCII,
- в режиме сканкодов биты обнулены.
- биты 23-31 обнулены
- если есть "горячая клавиша", то возвращается
- al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш),
- старшее слово регистра eax содержит состояние управляющих клавиш
- в момент нажатия горячей клавиши
Замечания:
- Существует общесистемный буфер нажатых клавиш размером 120 байт,
- организованный как очередь.
- Существует ещё один общесистемный буфер на 120 "горячих клавиш".
- При вызове этой функции приложением с неактивным окном
- считается, что буфер нажатых клавиш пуст.
- По умолчанию эта функция возвращает ASCII-коды; переключиться на
- режим сканкодов (и назад) можно с использованием подфункции 1 функции 66.
- Однако, горячие клавиши всегда возвращаются как сканкоды.
- Узнать, какие комбинации клавиш соответствуют каким кодам, можно,
- запустив приложения keyascii и scancode.
- Сканкоды возвращаются непосредственно клавиатурой и фиксированы;
- ASCII-коды получаются с использованием таблиц преобразования,
- которые можно установить подфункцией 2 функции 21 и прочитать
- подфункцией 2 функции 26.
- Как следствие, ASCII-коды учитывают текущую раскладку клавиатуры
- (rus/en) в отличие от сканкодов.
- Поступает информация только о тех горячих клавишах, которые были
- определены этим потоком подфункцией 4 функции 66.
Константы для регистров:
- eax - SF_GET_KEY (2)
|