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