SysFn66/ru

From KolibriOS wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Функция 66 - работа с клавиатурой.

Режим ввода влияет на результаты чтения клавиш функцией 2. При загрузке программы для неё устанавливается ASCII-режим ввода.

Подфункция 1 - установить режим ввода с клавиатуры.

Параметры:

  • eax = 66 - номер функции
  • ebx = 1 - номер подфункции
  • ecx = режим:
    • 0 = обычный (ASCII-символы)
    • 1 = сканкоды

Возвращаемое значение:

  • функция не возвращает значения

Константы для регистров:

eax - SF_KEYBOARD (66)
ebx - SSF_SET_INPUT_MODE (1)

Подфункция 2 - получить режим ввода с клавиатуры.

Параметры:

  • eax = 66 - номер функции
  • ebx = 2 - номер подфункции

Возвращаемое значение:

  • eax = текущий режим

Константы для регистров:

eax - SF_KEYBOARD (66)
ebx - SSF_GET_INPUT_MODE (2)

Подфункция 3 - получить состояние управляющих клавиш.

Параметры:

  • eax = 66 - номер функции
  • ebx = 3 - номер подфункции

Возвращаемое значение:

  • eax = битовая маска:
  • бит 0 (маска 1): левый Shift нажат
  • бит 1 (маска 2): правый Shift нажат
  • бит 2 (маска 4): левый Ctrl нажат
  • бит 3 (маска 8): правый Ctrl нажат
  • бит 4 (маска 0x10): левый Alt нажат
  • бит 5 (маска 0x20): правый Alt нажат
  • бит 6 (маска 0x40): CapsLock включён
  • бит 7 (маска 0x80): NumLock включён
  • бит 8 (маска 0x100): ScrollLock включён
  • прочие биты сброшены

Константы для регистров:

eax - SF_KEYBOARD (66)
ebx - SSF_GET_CONTROL_KEYS (3)

Подфункция 4 - установить общесистемную "горячую клавишу".

О нажатии "горячей клавиши" извещаются только приложения, установившие её; активное приложение (к которому поступает весь нормальный ввод) таких клавиш не получает. Извещение заключается в посылке события с кодом 2. Прочитать "горячую клавишу" можно так же, как и обычную, - функцией 2.

Параметры:

  • eax = 66 - номер функции
  • ebx = 4 - номер подфункции
  • cl задаёт сканкод клавиши; используйте cl=0 для задания комбинаций типа Ctrl+Shift
  • edx = 0xXYZ задаёт возможные состояния управляющих клавиш:
  • Z (младшие 4 бита) задаёт состояние клавиш LShift и RShift:
  • 0 = ни одна из клавиш не должна быть нажата;
  • 1 = ровно одна из клавиш должна быть нажата;
  • 2 = обе клавиши должны быть нажаты;
  • 3 = должна быть нажата LShift, но не RShift;
  • 4 = должна быть нажата RShift, но не LShift
  • Y - аналогично для LCtrl и RCtrl;
  • X - аналогично для LAlt и RAlt

Возвращаемое значение:

  • eax=0 - успешно
  • eax=1 - слишком много "горячих клавиш" (допускается максимум 256)

Замечания:

  • Горячая клавиша может срабатывать либо при нажатии, либо при отпускании. Сканкод отпускания клавиши на 128 больше, чем сканкод нажатия (т.е. установлен старший бит).
  • Несколько приложений могут установить одну и ту же комбинацию; о нажатии такой комбинации будут извещаться все такие приложения.

Константы для регистров:

eax - SF_KEYBOARD (66)
ebx - SSF_SET_SYS_HOTKEY (4)

Подфункция 5 - удалить установленную "горячую клавишу".

Параметры:

  • eax = 66 - номер функции
  • ebx = 5 - номер подфункции
  • cl = сканкод клавиши и edx = 0xXYZ такие же, как и в подфункции 4

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = 1 - нет такой горячей клавиши

Замечания:

  • При завершении процесса/потока удаляются все установленные им горячие клавиши.
  • Вызов функции не влияет на другие приложения. Если другое приложение определило эту же комбинацию, оно по-прежнему будет получать уведомления.

Константы для регистров:

eax - SF_KEYBOARD (66)
ebx - SSF_DEL_SYS_HOTKEY (5)

Подфункция 6 - заблокировать обычный ввод.

Параметры:

  • eax = 66 - номер функции
  • ebx = 6 - номер подфункции

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • Блокируется обычный ввод данных с клавиатуры для установленных "горячих" клавиш
  • Для эмуляции мыши через клавиатуру, приложение MOUSEMUL

Константы для регистров:

eax - SF_KEYBOARD (66)
ebx - SSF_LOCK_INPUT (6)

Подфункция 7 - разблокировать обычный ввод.

Параметры:

  • eax = 66 - номер функции
  • ebx = 7 - номер подфункции

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • Разблокирование результатов ф. 66.6
  • Для эмуляции мыши через клавиатуру, приложение MOUSEMUL

Константы для регистров:

eax - SF_KEYBOARD (66)
ebx - SSF_UNLOCK_INPUT (7)