|
|
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 - изменить положение/размеры окна. == |
СИСТЕМНЫЕ ФУНКЦИИ 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