Специфікація BTRON3 (Український переклад) | Розділ 7: Графічна оболонка (GUI Shell)
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.6 Менеджер даних (Повернутися)
Наступна сторінка: 3.8 Менеджер Реальних та Віртуальних об'єктів (Перейти)
Підсистема TIP (Text Input Primitives) реалізує базовий механізм обробки клавіатурного вводу
та кана-канджі перетворення (FEP / IME). Вона забезпечує перетворення послідовності клавіш
(прямий ввід, кана, ромаджі) у символи TRON Code, керування станами перетворення
(непідтверджений текст, поточна фраза/бунсецу, підтверджений текст), а також відображення каретки/курсора.
- Прямий режим (
TIP_DIRMD) : введення символів напряму без перетворення.
- Режим перетворення (
TIP_CNVMD) :
- Автоматичне перетворення (
TIP_AUTO) : перетворення виконується автоматично при наборі.
- Ручне перетворення (
TIP_MANUAL) : перетворення за клавішею [Перетворення] / [Зворотне перетворення].
При відкритті порту введення через iopn_tip() створюється структура TIPREC,
яка динамічно оновлюється під час викликів iput_key() та iput_str().
typedef struct {
W n_cl; /* Загальна кількість фраз (бунсецу) */
W n_out; /* Кількість підтверджених фраз */
UW car; /* Позиція каретки у непідтвердженому тексті */
UW clause; /* Поточна активна фраза / режим редагування читання */
H *cl_cnv; /* Зсуви меж фраз у перетвореному тексті */
TC *cnv; /* Перетворений текст (підтверджений + непідтверджений) */
H *cl_in; /* Зсуви меж фраз у вхідному рядку читання (йомі) */
TC *in; /* Вхідний рядок читання (йомі) */
} TIPREC;
Каретка — графічний покажчик місця вставки символу (трикутна позначка з вертикальною лінією
висоти шрифту), що блимає із заданим періодом.
typedef struct {
W sts; /* Стан: 0 = прихована, 1 = відображена */
W gid; /* ID середовища малювання */
PNT pos; /* Позиція вершини каретки (відносні координати) */
W height; /* Висота лінії курсора (0 = лише трикутник) */
UW kind; /* Напрямок: 0 = горизонтальний, 1 = вертикальний */
COLOR color; /* Колір каретки */
} CARET;
□ Режими вводу
#define TIP_KANA 0x0000 /* Режим Кана */
#define TIP_ROMAN1 0x0001 /* Режим Ромаджі (n) */
#define TIP_ROMAN2 0x0002 /* Режим Ромаджі (nn) */
#define TIP_DIRMD 0x0100 /* Прямий режим */
#define TIP_CNVMD 0x0000 /* Режим перетворення */
#define TIP_AUTO 0 /* Автоперетворення */
#define TIP_MANUAL 1 /* Ручне перетворення */
□ Прапори результату обробки (iput_key)
#define TIP_OUT 0x1 /* З'явилася підтверджена фраза */
#define TIP_CNV 0x2 /* Змінився непідтверджений текст */
#define TIP_CAR 0x4 /* Змінилася позиція каретки */
#define TIP_CL 0x8 /* Змінилася активна фраза або межа фрази */
□ Словники (ichg_lrn)
#define TIP_DIC_COMMON 0x00000001 /* Базовий системний словник */
#define TIP_DIC_SINGLE 0x00000002 /* Словник окремих канджі */
#define TIP_DIC_USR 0x00000004 /* Словник користувача */
Усі функції повертають від'ємний код при помилці, «0» або додатне число при успіху.
| ichg_mod |
| Change Input Mode |
| Зміна глобального режиму введення (Кана / Ромаджі) |
|
【Синтаксис / Прототип】
WERR ichg_mod(W mode)
【Параметри】
W mode Новий режим: TIP_KANA, TIP_ROMAN1, TIP_ROMAN2 (< 0 = не змінювати)
【Значення, що повертається】
>= 0 Попередній режим введення
< 0 Помилка (Код помилки)
【Детальний опис】
Встановлює системний режим інтерпретації клавіш: прямий ввід Кана або фонетичний Ромаджі.
При mode < 0 лише повертає поточний активний режим.
【Коди помилок】
EX_PAR : Неприпустиме значення mode.
| ichg_lrn |
| Change Learning / Dictionaries |
| Керування навчанням словника та станом словників |
|
【Синтаксис / Прототип】
WERR ichg_lrn(W lrn, UW dic)
【Параметри】
W lrn Режим навчання: 0 = вимкнено, 1 = увімкнено, 2 = очистити пам'ять навчання (< 0 = без змін)
UW dic Бітова маска активних словників (TIP_DIC_COMMON, TIP_DIC_USR тощо)
【Значення, що повертається】
>= 0 Попередній стан навчання (0 або 1)
< 0 Помилка (Код помилки)
【Детальний опис】
Керує адаптивним навчанням частотності слів у процесі перетворення та активує/деактивує
словники користувача.
【Коди помилок】
EX_PAR : Неприпустимий lrn або dic.
| iopn_tip |
| Open TIP Port |
| Створення порту введення тексту |
|
【Синтаксис / Прототип】
W iopn_tip(W mode, W atr, TIPREC **tiprec)
【Параметри】
W mode Режим порту (TIP_DIRMD | TIP_CNVMD)
W atr Спосіб перетворення (TIP_AUTO | TIP_MANUAL)
TIPREC **tiprec Буфер для вказівника на внутрішню структуру стану TIPREC
【Значення, що повертається】
>= 0 ID порту введення тексту (tipid)
< 0 Помилка (Код помилки)
【Детальний опис】
Створює новий екземпляр порту введення і повертає його ID та адресу структури TIPREC.
【Коди помилок】
EX_ADR : Недопустима адреса tiprec.
EX_NOSPC: Нестача пам'яті.
EX_PAR : Неприпустимий mode або atr.
| icls_tip |
| Close TIP Port |
| Закриття порту введення тексту |
|
【Синтаксис / Прототип】
ERR icls_tip(W tipid)
【Параметри】
W tipid ID порту введення
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Закриває порт введення і звільняє пов'язані буфери.
【Коди помилок】
EX_TID : Порт tipid не існує.
| iput_key |
| Put Key Event to TIP Port |
| Передача клавіатурної події в порт введення |
|
【Синтаксис / Прототип】
W iput_key(W tipid, WEVENT *evt)
【Параметри】
W tipid ID порту введення
WEVENT *evt Подія клавіші (EV_KEYDWN або EV_AUTKEY)
【Значення, що повертається】
>= 0 Бітова маска змін (TIP_OUT | TIP_CNV | TIP_CAR | TIP_CL; 0 = без змін)
< 0 Помилка (Код помилки)
【Детальний опис】
Передає клавішу в порт перетворення. Оновлює внутрішню структуру TIPREC
і повертає бітову маску того, що саме змінилося, для оптимізації перемальовування.
【Коди помилок】
EX_TID : Порт tipid не існує.
EX_PAR : Подія не є натисканням клавіші.
EX_KEY : Некоректний скан-код клавіші.
EX_CKEY : Функціональна клавіша натиснута без наявного тексту перетворення.
EX_LIMIT: Перевищено ліміт довжини рядка.
| iput_str |
| Put String to TIP Port |
| Введення рядка для повторного перетворення |
|
【Синтаксис / Прототип】
ERR iput_str(W tipid, TC *str)
【Параметри】
W tipid ID порту введення
TC *str Рядок символів TRON Code
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Завантажує готовий рядок символів у порт для повторного перетворення.
【Коди помилок】
EX_TID : Порт tipid не існує.
EX_KEY : Рядок містить заборонені коди.
EX_NOSPT: Порт відкрито у прямому режимі.
| ichg_blk |
| Change Caret Blink Interval |
| Налаштування періоду блимання каретки |
|
【Синтаксис / Прототип】
WERR ichg_blk(W intvl)
【Параметри】
W intvl Період блимання у мілісекундах (0 = вимкнути, < 0 = лише отримати)
【Значення, що повертається】
>= 0 Попередній період блимання (мс)
【Детальний опис】
Встановлює глобальний інтервал блимання текстового курсора/каретки.
【Коди помилок】
Помилки не виникають.
| idsp_car |
| Display Caret |
| Відображення, стирання або блимання каретки |
|
【Синтаксис / Прототип】
ERR idsp_car(CARET *car, W mode)
【Параметри】
CARET *car Структура опису каретки
W mode Режим: 0 = сховати, > 0 = показати, < 0 = виконати крок блимання
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Керує малюванням символу каретки у середовищі car->gid. При mode < 0
автоматично інвертує стан, якщо настав час наступного напівперіоду блимання.
【Коди помилок】
EX_ADR : Недопустима адреса car.
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.6 Менеджер даних (Повернутися)
Наступна сторінка: 3.8 Менеджер Реальних та Віртуальних об'єктів (Перейти)