Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
Line 943: Line 943:
== Функция 66 - работа с клавиатурой. ==
== Функция 66 - работа с клавиатурой. ==


Режим ввода влияет на результаты чтения клавиш функцией 2.
Описание функции перенесено в отдельную статью: [[SysFn66/ru|Функция 66]]
При загрузке программы для неё устанавливается ASCII-режим ввода.
 
=== Подфункция 1 - установить режим ввода с клавиатуры. ===
Параметры:
  * eax = 66 - номер функции
  * ebx = 1 - номер подфункции
  * ecx = режим:
    * 0 = обычный (ASCII-символы)
    * 1 = сканкоды
Возвращаемое значение:
  * функция не возвращает значения
 
=== Подфункция 2 - получить режим ввода с клавиатуры. ===
Параметры:
  * eax = 66 - номер функции
  * ebx = 2 - номер подфункции
Возвращаемое значение:
  * eax = текущий режим
 
=== Подфункция 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 включён
  * прочие биты сброшены
 
=== Подфункция 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 больше,
    чем сканкод нажатия (т.е. установлен старший бит).
  * Несколько приложений могут установить одну и ту же комбинацию;
    о нажатии такой комбинации будут извещаться все такие приложения.
 
=== Подфункция 5 - удалить установленную "горячую клавишу". ===
Параметры:
  * eax = 66 - номер функции
  * ebx = 5 - номер подфункции
  * cl = сканкод клавиши и edx = 0xXYZ такие же, как и в подфункции 4
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - нет такой горячей клавиши
Замечания:
  * При завершении процесса/потока удаляются все установленные им
    горячие клавиши.
  * Вызов функции не влияет на другие приложения.
    Если другое приложение определило эту же комбинацию,
    оно по-прежнему будет получать уведомления.


* Подфункция 1 - установить режим ввода с клавиатуры.
* Подфункция 2 - получить режим ввода с клавиатуры.
* Подфункция 3 - получить состояние управляющих клавиш.
* Подфункция 4 - установить общесистемную "горячую клавишу".
* Подфункция 5 - удалить установленную "горячую клавишу".


== Функция 67 - изменить положение/размеры окна. ==
== Функция 67 - изменить положение/размеры окна. ==

Revision as of 07:23, 10 April 2010

СИСТЕМНЫЕ ФУНКЦИИ KolibriOS 0.7.7.0

Номер функции помещается в регистр eax. Вызов системной функции осуществляется командой "int 0x40". Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.


Функция 0 - определить и нарисовать окно.

Определяет окно приложения. Рисует рамку окна, заголовок и рабочую область. Для окон со скином определяет стандартные кнопки закрытия и минимизации.

Описание функции перенесено в отдельную статью: Функция 0

Функция 1 - поставить точку в окне.

Описание функции перенесено в отдельную статью: Функция 1

Функция 2 - получить код нажатой клавиши.

Извлекает из буфера код нажатой клавиши.

Описание функции перенесено в отдельную статью: Функция 2

Функция 3 - получить системное время.

Описание функции перенесено в отдельную статью: Функция 3

Функция 4 - вывести строку текста в окно.

Описание функции перенесено в отдельную статью: Функция 4

Функция 5 - пауза.

Задерживает выполнение программы на заданное время.

Описание функции перенесено в отдельную статью: Функция 5

Функция 6 - прочитать файл с рамдиска.

Описание функции перенесено в отдельную статью: Функция 6

Функция 7 - вывести изображение в окно.

Описание функции перенесено в отдельную статью: Функция 7

Функция 8 - определить/удалить кнопку.

Описание функции перенесено в отдельную статью: Функция 8

Функция 9 - информация о потоке выполнения.

Описание функции перенесено в отдельную статью: Функция 9

Функция 10 - ожидать события.

Если очередь сообщений пуста, то ждет появления сообщения в очереди. В таком состоянии поток не получает процессорного времени. Затем считывает сообщение из очереди.

Описание функции перенесено в отдельную статью: Функция 10

Функция 11 - проверить, есть ли событие, без ожидания.

Если в очереди сообщений есть какое-то событие, то считывает и возвращает его. Если очередь пуста, возвращает нуль.

Описание функции перенесено в отдельную статью: Функция 11

Функция 12 - начать/закончить перерисовку окна.

Подфункция 1 - начать перерисовку окна. Подфункция 2 - закончить перерисовку окна.

Перенесены в отдельную статью: Функция 12