Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Программные интерфейсы общего назначения > Прикладные библиотеки и технологии > Библиотека эмуляции терминала > API терминала > terminal_callbacks_t



terminal_callbacks_t

Callback-функции

Формат:

#include <sys/terminal.h>
typedef struct terminal_callbacks {
void (*beep) (terminal_t *term);
void (*cursor_mode) (terminal_t *term, int mode);
void (*input) (terminal_t *term, const char* str, size_t n);
int (*resize_buffers)(terminal_t *term, unsigned rows, unsigned cols);
void (*screen_change) (terminal_t *term, unsigned row, unsigned col, unsigned n);
void (*screen_scroll) (terminal_t *term, unsigned src_r, unsigned src_c,
unsigned dst_r, unsigned dst_c, unsigned rows, unsigned cols);
void (*history_change)(terminal_t *term, int lines);
void (*window_setting)(terminal_t *term, terminal_window_setting_t s);
} terminal_callbacks_t;

Описание:

Структура terminal_callbacks_t используется для установки callback-функций, используемых для уведомления приложения об изменениях в терминале. Установить функции можно при помощи term_create() и term_set_callbacks(). Для получения указателя на пользовательскую структуру данных (client) используется term_get_client().

beep(terminal_t *term)
Воспроизвести звуковой сигнал
cursor_mode(terminal_t *term, int mode)
Обновить состояние курсора.
mode
Состояние курсора. 1 - курсор виден, 0 - курсор скрыт.
input(terminal_t term, const char str, size_t n)
Отправить переданную строку на ввод программы, запущенной в терминале.
str
Строка в установленной кодировке. Наличие нуль-символа в конце строки не гарантируется.
n
Размер строки в байтах. При использовании UTF-8 может не соответствовать количеству символов в строке.
resize_buffers(terminal_t *term, unsigned rows, unsigned cols)
Клиенту стоит обновить внутренние буферы до указанных размеров. Эта функция вызывается при выполнении term_resize() после того как библиотека успешно выделила память под свои буферы. Если функция возвращает ненулевое значение, это информирует библиотеку об ошибке обновления на стороне клиента, и библиотека откатывает обновление размеров терминала.
rows
Количество рядов терминала.
cols
Количество столбцов терминала.
screen_change(terminal_t *term, unsigned row, unsigned col, unsigned n)
Изменилось содержимое/атрибуты текста в указанной области экрана. Для получения текста и атрибутов в указанной области используются функции term_get_char() и term_get_string().
row
Строка терминала, в пределах которой произошли изменения.
col
Столбец терминала, с которого начинается изменившаяся область.
n
Размер изменившейся области. Область изменений всегда остаётся в пределах одной строки.
screen_scroll(terminal_t *term, unsigned src_r, unsigned src_c, unsigned dst_r, unsigned dst_c, unsigned rows, unsigned cols)
Указанная прямоугольная область экрана сдвинулась без изменений в содержимом. Функция может использоваться для смещения части изображения без перерисовки всей области. Если не назначить этот callback, вместо screen_scroll будет вызван screen_change для всей затронутой области.
src_r
Строка терминала, в которой находится левый верхний угол сдвинутой области.
src_c
Столбец терминала, в котором находится левый верхний угол сдвинутой области.
dst_r
Строка терминала, в которую переместилась сдвинутая область.
dst_c
Столбец терминала, в который переместилась сдвинутая область.
rows
Высота сдвинутой области.
cols
Ширина сдвинутой области.
history_change(terminal_t *term, int lines)
Изменилось количество строк, сохранённых в истории терминала.
lines
Количество сохранённых строк.
window_setting(terminal_t *term, terminal_window_setting_t s)
Команды управления окном терминала как в xterm. Библиотека только передаёт команды в функцию, любая их обработка производится на стороне клиента.
s
Команда управления окном. Подробнее см. terminal_window_setting_t.

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

term_create(), term_set_callbacks()




Предыдущий раздел: Terminal API