Difference between revisions of "SysFn02/ru"

From KolibriOS wiki
Jump to navigation Jump to search
m
m
(3 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
----
 
----
  
'''Параметры:'''
+
Забирает код нажатой клавиши из буфера.
* eax = 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=1
+
::eax - SF_GET_KEY (2)
* если буфер непуст, то возвращается 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.
 
  
 
{{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)