SysFn02/ru: Difference between revisions
Jump to navigation
Jump to search
m (moved SysFn02 to SysFn02/ru: Add /ru) |
Vitalkrilov (talk | contribs) (Обновлена документация (актуальна на момент r9828).) |
||
(3 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
---- | ---- | ||
Забирает код нажатой клавиши из буфера. | |||
* eax = 2 - номер функции | Параметры: | ||
:* eax = 2 - номер функции | |||
Возвращаемое значение: | |||
* если буфер пуст, возвращается eax=1 | :* если буфер пуст, возвращается eax=1 | ||
* если буфер непуст, то возвращается al=0, ah=код нажатой клавиши, | :* если буфер непуст, то возвращается al=0, ah=код нажатой клавиши, | ||
* если есть "горячая клавиша", то возвращается al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш), старшее слово регистра eax содержит состояние управляющих клавиш в момент нажатия горячей клавиши | ::биты 16-23 содержат сканкод нажатой клавиши в режиме ASCII, | ||
:::в режиме сканкодов биты обнулены. | |||
::биты 23-31 обнулены | |||
* Существует общесистемный буфер нажатых клавиш размером 120 байт, организованный как очередь. | :* если есть "горячая клавиша", то возвращается | ||
* Существует ещё один общесистемный буфер на 120 "горячих клавиш". | ::al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш), | ||
* При вызове этой функции приложением с неактивным окном считается, что буфер нажатых клавиш пуст. | ::старшее слово регистра eax содержит состояние управляющих клавиш | ||
* По умолчанию эта функция возвращает ASCII-коды; переключиться на режим сканкодов (и назад) можно с использованием функции 66. Однако, горячие клавиши всегда возвращаются как сканкоды. | ::в момент нажатия горячей клавиши | ||
* Узнать, какие комбинации клавиш соответствуют каким кодам, можно, запустив приложения keyascii и scancode. | Замечания: | ||
* Сканкоды возвращаются непосредственно клавиатурой и фиксированы; ASCII-коды получаются с использованием таблиц преобразования, которые можно установить подфункцией 2 функции 21 и прочитать подфункцией 2 функции 26. | :* Существует общесистемный буфер нажатых клавиш размером 120 байт, | ||
* Как следствие, ASCII-коды учитывают текущую раскладку клавиатуры (rus/en) в отличие от сканкодов. | ::организованный как очередь. | ||
* Поступает информация только о тех горячих клавишах, которые были определены этим потоком подфункцией 4 функции 66. | :* Существует ещё один общесистемный буфер на 120 "горячих клавиш". | ||
:* При вызове этой функции приложением с неактивным окном | |||
::считается, что буфер нажатых клавиш пуст. | |||
:* По умолчанию эта функция возвращает ASCII-коды; переключиться на | |||
::режим сканкодов (и назад) можно с использованием [[SysFn66/ru#.D0.9F.D0.BE.D0.B4.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_1_-_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.B8.D1.82.D1.8C_.D1.80.D0.B5.D0.B6.D0.B8.D0.BC_.D0.B2.D0.B2.D0.BE.D0.B4.D0.B0_.D1.81_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D0.B0.D1.82.D1.83.D1.80.D1.8B.|подфункции 1 функции 66]]. | |||
::Однако, горячие клавиши всегда возвращаются как сканкоды. | |||
:* Узнать, какие комбинации клавиш соответствуют каким кодам, можно, | |||
::запустив приложения [[Keyascii/ru|keyascii]] и scancode. | |||
:* Сканкоды возвращаются непосредственно клавиатурой и фиксированы; | |||
::ASCII-коды получаются с использованием таблиц преобразования, | |||
::которые можно установить [[SysFn21/ru#.D0.9F.D0.BE.D0.B4.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_2_-_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.B8.D1.82.D1.8C_.D1.80.D0.B0.D1.81.D0.BA.D0.BB.D0.B0.D0.B4.D0.BA.D1.83_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D0.B0.D1.82.D1.83.D1.80.D1.8B.|подфункцией 2 функции 21]] и прочитать | |||
::[[SysFn26/ru#.D0.9F.D0.BE.D0.B4.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_2_-_.D0.BF.D0.BE.D0.BB.D1.83.D1.87.D0.B8.D1.82.D1.8C_.D1.80.D0.B0.D1.81.D0.BA.D0.BB.D0.B0.D0.B4.D0.BA.D1.83_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D0.B0.D1.82.D1.83.D1.80.D1.8B.|подфункцией 2 функции 26]]. | |||
:* Как следствие, ASCII-коды учитывают текущую раскладку клавиатуры | |||
::(rus/en) в отличие от сканкодов. | |||
:* Поступает информация только о тех горячих клавишах, которые были | |||
::определены этим потоком [[SysFn66/ru#.D0.9F.D0.BE.D0.B4.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_4_-_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.B8.D1.82.D1.8C_.D0.BE.D0.B1.D1.89.D0.B5.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D0.BD.D1.83.D1.8E_.22.D0.B3.D0.BE.D1.80.D1.8F.D1.87.D1.83.D1.8E_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88.D1.83.22.|подфункцией 4 функции 66]]. | |||
'''Константы для регистров:''' | |||
::eax - SF_GET_KEY (2) | |||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
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)
|