SysFn02/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 21: Line 21:
* Поступает информация только о тех горячих клавишах, которые были определены этим потоком подфункцией 4 функции 66.
* Поступает информация только о тех горячих клавишах, которые были определены этим потоком подфункцией 4 функции 66.


{{System_functions}}
[[Category: SysCalls]]
[[Category: SysCalls]]
{{System_functions}}

Revision as of 09:41, 3 April 2010

Функция 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.