Difference between revisions of "SysFn02/ru"
Jump to navigation
Jump to search
m |
m |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
---- | ---- | ||
− | + | Забирает код нажатой клавиши из буфера. | |
− | * eax = 2 - номер функции | + | Параметры: |
− | + | :* eax = 2 - номер функции | |
− | + | Возвращаемое значение: | |
− | * если буфер пуст, возвращается eax=1 | + | :* если буфер пуст, возвращается eax=1 |
− | * если буфер непуст, то возвращается al=0, ah=код нажатой клавиши, старшее слово регистра eax обнулено | + | :* если буфер непуст, то возвращается al=0, ah=код нажатой клавиши, |
− | * если есть "горячая клавиша", то возвращается al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш), старшее слово регистра eax содержит состояние управляющих клавиш в момент нажатия горячей клавиши | + | ::старшее слово регистра eax обнулено |
− | + | :* если есть "горячая клавиша", то возвращается | |
− | + | ::al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш), | |
− | * Существует общесистемный буфер нажатых клавиш размером 120 байт, организованный как очередь. | + | ::старшее слово регистра eax содержит состояние управляющих клавиш |
− | * Существует ещё один общесистемный буфер на 120 "горячих клавиш". | + | ::в момент нажатия горячей клавиши |
− | * При вызове этой функции приложением с неактивным окном считается, что буфер нажатых клавиш пуст. | + | Замечания: |
− | * По умолчанию эта функция возвращает ASCII-коды; переключиться на режим сканкодов (и назад) можно с использованием функции 66. Однако, горячие клавиши всегда возвращаются как сканкоды. | + | :* Существует общесистемный буфер нажатых клавиш размером 120 байт, |
− | * Узнать, какие комбинации клавиш соответствуют каким кодам, можно, запустив приложения keyascii и scancode. | + | ::организованный как очередь. |
− | * Сканкоды возвращаются непосредственно клавиатурой и фиксированы; ASCII-коды получаются с использованием таблиц преобразования, которые можно установить подфункцией 2 функции 21 и прочитать подфункцией 2 функции 26. | + | :* Существует ещё один общесистемный буфер на 120 "горячих клавиш". |
− | * Как следствие, ASCII-коды учитывают текущую раскладку клавиатуры (rus/en) в отличие от сканкодов. | + | :* При вызове этой функции приложением с неактивным окном |
− | * Поступает информация только о тех горячих клавишах, которые были определены этим потоком подфункцией 4 функции 66. | + | ::считается, что буфер нажатых клавиш пуст. |
+ | :* По умолчанию эта функция возвращает ASCII-коды; переключиться на | ||
+ | ::режим сканкодов (и назад) можно с использованием функции 66. | ||
+ | ::Однако, горячие клавиши всегда возвращаются как сканкоды. | ||
+ | :* Узнать, какие комбинации клавиш соответствуют каким кодам, можно, | ||
+ | ::запустив приложения keyascii и scancode. | ||
+ | :* Сканкоды возвращаются непосредственно клавиатурой и фиксированы; | ||
+ | ::ASCII-коды получаются с использованием таблиц преобразования, | ||
+ | ::которые можно установить подфункцией 2 функции 21 и прочитать | ||
+ | ::подфункцией 2 функции 26. | ||
+ | :* Как следствие, ASCII-коды учитывают текущую раскладку клавиатуры | ||
+ | ::(rus/en) в отличие от сканкодов. | ||
+ | :* Поступает информация только о тех горячих клавишах, которые были | ||
+ | ::определены этим потоком подфункцией 4 функции 66. | ||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_GET_KEY (2) | ||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Revision as of 16:57, 12 January 2016
Функция 2 - получить код нажатой клавиши
Забирает код нажатой клавиши из буфера. Параметры:
- eax = 2 - номер функции
Возвращаемое значение:
- если буфер пуст, возвращается eax=1
- если буфер непуст, то возвращается al=0, ah=код нажатой клавиши,
- старшее слово регистра eax обнулено
- если есть "горячая клавиша", то возвращается
- al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш),
- старшее слово регистра eax содержит состояние управляющих клавиш
- в момент нажатия горячей клавиши
Замечания:
- Существует общесистемный буфер нажатых клавиш размером 120 байт,
- организованный как очередь.
- Существует ещё один общесистемный буфер на 120 "горячих клавиш".
- При вызове этой функции приложением с неактивным окном
- считается, что буфер нажатых клавиш пуст.
- По умолчанию эта функция возвращает ASCII-коды; переключиться на
- режим сканкодов (и назад) можно с использованием функции 66.
- Однако, горячие клавиши всегда возвращаются как сканкоды.
- Узнать, какие комбинации клавиш соответствуют каким кодам, можно,
- запустив приложения keyascii и scancode.
- Сканкоды возвращаются непосредственно клавиатурой и фиксированы;
- ASCII-коды получаются с использованием таблиц преобразования,
- которые можно установить подфункцией 2 функции 21 и прочитать
- подфункцией 2 функции 26.
- Как следствие, ASCII-коды учитывают текущую раскладку клавиатуры
- (rus/en) в отличие от сканкодов.
- Поступает информация только о тех горячих клавишах, которые были
- определены этим потоком подфункцией 4 функции 66.
Константы для регистров:
- eax - SF_GET_KEY (2)
|