|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
<meta charset="UTF-8">
|
|
|
7a004b |
<link href="style.css" rel="stylesheet" type="text/css">
|
|
|
7a004b |
<title>Клавиатура и мышь - Helianthus</title>
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
77a314 |
Helianthus
|
|
|
77a314 |
|
|
|
77a314 |
Helianthus: Документация
|
|
|
77a314 |
Установка
|
|
|
7a004b |
Запуск и общие функции
|
|
|
7a004b |
Клавиатура и мышь
|
|
|
7a004b |
Рисование
|
|
|
cece70 |
Шрифты и текст
|
|
|
cece70 |
Текстуры и анимация
|
|
|
cece70 |
Буфер кадра
|
|
|
7a004b |
Спрайты
|
|
|
7a004b |
Группы спрайтов
|
|
|
7a004b |
Звук
|
|
|
e9aada |
Пользовательский интерфейс
|
|
|
7a004b |
|
|
|
7a004b |
Все функции
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
Клавиатура и мышь
|
|
|
7a004b |
|
|
|
d9eca7 |
Во время работы программы вы можете узнавать положение мыши и состояние клавиш. Координаты указателя мыши можно получить функциями mouseX и mouseY. С помощью функций mouseScrolledX, mouseScrolledY вы можете узнать количество «щелчков» прокрутки колёсика мыши совершённое со времени предыдущего кадра. Узнать состояние клавиш клавиатуры и кнопок мыши можно функциями keyDown и mouseDown соответственно.
|
|
|
7a004b |
|
|
|
7a004b |
Для указания клавиши нужно написать её текстовое наименование, например: "a", "1", "left", "right", "up", "down", "return" (для Enter), "escape" и и.д.
|
|
|
7a004b |
|
|
|
cece70 |
Названия клавиш взяты из библиотеки SDL, их полный список вы можете посмотреть в документации к библиотеке SDL:
|
|
|
cece70 |
https://wiki.libsdl.org/SDL_Keycode
|
|
|
cece70 |
|
|
|
d9eca7 |
Вы также можете использовать несколько групповых наименований: "any shift", "any ctrl", "any alt", "any gui" — обозначающих нажатие любой из парных клавиш (как левой так и правой). Группы "any /", "any *", "any -", "any +", "any return", "any 0", "any 1"… - отвечают за клавиши имеющие пару на дополнительной цифровой клавиатуре.
|
|
|
7a004b |
|
|
|
7a004b |
Наименований для кнопок мыши всего три: "left", "middle" и "right".
|
|
|
7a004b |
|
|
|
7a004b |
Кроме этого существуют функции для определения момента нажатия и отпускания клавиш и кнопок. На тот случай когда некоторые действия нужно выполнить только один раз в момент нажатия (или отпускания) клавиши. Смотрите функции keyWentDown, keyWentUp, mouseWentDown, mouseWentUp.
|
|
|
7a004b |
|
|
|
1badb6 |
Также вы можете получить полный список нажатых, отпущенных или удерживаемых клавиш и кнопок при помощи функций keyEventGetCount и keyEventGet.
|
|
|
1badb6 |
|
|
|
1badb6 |
Например, если вы не знаете наименования какой-либо клавиши, вы можете выводить имена нажимаемых клавиш в терминал при помощи такой программы:
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
1badb6 |
void draw() {
|
|
|
1badb6 |
…
|
|
|
cece70 |
int count = keyEventGetCount(KEYEVENT_KEY_WENTDOWN);
|
|
|
1badb6 |
for(int i = 0; i < count; ++i) {
|
|
|
cece70 |
printf( "pressed key: %s\n",
|
|
|
1badb6 |
keyEventGet(KEYEVENT_KEY_WENTDOWN, i) );
|
|
|
1badb6 |
}
|
|
|
1badb6 |
…
|
|
|
1badb6 |
}
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
e9aada |
Если вам нужно не просто узнать названия нажатых клавиш, но и определить какой они образуют текст, то воспользуйтесь набором функций textInputBegin, textInputGet, textInputClear и textInputEnd.
|
|
|
e9aada |
|
|
|
7a004b |
Функции:
|
|
|
7a004b |
|
|
|
7a004b |
int keyDown(const char *code);
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если указанная клавиша в нажата (и удерживается) в данный момент и FALSE (число 0) если клавиша отпущена.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
code — текстовое наименование клавиши.
|
|
|
7a004b |
|
|
|
7a004b |
int keyWentDown(const char *code);
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если указанная клавиша стала нажатой в момент времени между предыдущим и текущим кадром. В последующих кадрах, даже если клавиша остаётся нажатой, функция возвращает FALSE (число 0).
|
|
|
7a004b |
|
|
|
7a004b |
Важно: Примерно через секунду после нажатия и удержания клавиши, keyWentDown всё таки сработает ещё раз — так будто клавиша была повторно нажата. Другими словами поведение функции такое же как и у текстового редактора: если удерживать клавишу некоторое время редактор повторяет печать символа несколько раз.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
code — текстовое наименование клавиши.
|
|
|
7a004b |
|
|
|
7a004b |
int keyWentUp(const char *code);
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если указанная клавиша перестала быть нажатой в момент времени между предыдущим и текущим кадром. Во всех других случаях возвращает FALSE (число 0).
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
code — текстовое наименование клавиши.
|
|
|
7a004b |
|
|
|
e9aada |
void textInputBegin();
|
|
|
e9aada |
|
|
|
e9aada |
Включить режим ввода текста. С момента запуска этой функции Helianthus будет запоминать все нажатые клавиши и формировать из них текст. См. также: textInputGet и textInputEnd.
|
|
|
e9aada |
|
|
|
e9aada |
void textInputEnd();
|
|
|
e9aada |
|
|
|
e9aada |
Отключить режим ввода текста и прекратить записывать вводимый пользователем текст. Раннее введённый текст останется в памяти и всё ещё будет доступен через функцию textInputGet. См. также: textInputBegin.
|
|
|
e9aada |
|
|
|
e9aada |
const char* textInputGet();
|
|
|
e9aada |
|
|
|
e9aada |
Получить введённый с клавиатуры текст. Вводимый текст накапливается с момента вызова функции textInputBegin. Функция textInputEnd останавливает запись текста, но при этом ранее накопленные символы остаются в памяти. Чтобы их стереть и начать копить текст заново используйте функцию textInputClear.
|
|
|
e9aada |
|
|
|
e9aada |
void textInputClear();
|
|
|
e9aada |
|
|
|
e9aada |
Очистить буфер вводимого с клавиатуры текста. См. также: textInputBegin и textInputGet.
|
|
|
e9aada |
|
|
|
7a004b |
int mouseDown(const char *code);
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если указанная кнопка мыши в нажата (и удерживается) в данный момент и FALSE (число 0) если кнопка отпущена.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
code — текстовое наименование кнопки мыши.
|
|
|
7a004b |
|
|
|
7a004b |
int mouseWentDown(const char *code);
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если указанная кнопка мыши стала нажатой в момент времени между предыдущим и текущим кадром. Во всех последующих кадрах, даже если кнопка остаётся нажатой, функция возвращает FALSE (число 0).
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
code — текстовое наименование кнопки мыши.
|
|
|
7a004b |
|
|
|
7a004b |
int mouseWentUp(const char *code);
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если указанная кнопка мыши перестала быть нажатой в момент времени между предыдущим и текущим кадром. Во всех других случаях возвращает FALSE (число 0).
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
code — текстовое наименование кнопки мыши.
|
|
|
7a004b |
|
|
|
d9eca7 |
int mouseScrolledX();
|
|
|
d9eca7 |
|
|
|
d9eca7 |
Возвращает количество «щелчков» колёсика мыши для горизонтальной прокрутки прошедшее с предыдущего кадра. Может быть отрицательным при обратной прокрутке. См. также mouseScrolledY.
|
|
|
d9eca7 |
|
|
|
d9eca7 |
int mouseScrolledY();
|
|
|
d9eca7 |
|
|
|
d9eca7 |
Возвращает количество «щелчков» колёсика мыши для вертикальной прокрутки прошедшее с предыдущего кадра. Может быть отрицательным при обратной прокрутке. См. также mouseScrolledX.
|
|
|
d9eca7 |
|
|
|
7a004b |
int mouseDidMove();
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если с момента отрисовки предыдущего кадра положение мыши изменилось, и возвращает FALSE (число 0) ели мышь оставалась неподвижной.
|
|
|
7a004b |
|
|
|
7a004b |
double mouseX();
|
|
|
7a004b |
|
|
|
d38577 |
Возвращает координату X указателя мыши. Координаты считаются относительно верхнего левого угла окна. См. также: mouseY, mouseTransformedX.
|
|
|
7a004b |
|
|
|
7a004b |
double mouseY();
|
|
|
7a004b |
|
|
|
d38577 |
Возвращает координату Y указателя мыши. Координаты считаются относительно верхнего левого угла окна. См. также: mouseX, mouseTransformedY.
|
|
|
cece70 |
|
|
|
d38577 |
double mouseTransformedX();
|
|
|
cece70 |
|
|
|
d38577 |
Возвращает координату X указателя мыши в системе координат рисования с учётом применённых трансформаций. См. также mouseTransformedY, mouseX, translate, rotate, zoom.
|
|
|
cece70 |
|
|
|
d38577 |
double mouseTransformedY();
|
|
|
cece70 |
|
|
|
d38577 |
Возвращает координату Y указателя мыши в системе координат рисования с учётом применённых трансформаций. См. также mouseTransformedX, mouseY, translate, rotate, zoom.
|
|
|
7a004b |
|
|
|
1badb6 |
int keyEventGetCount(KeyEvent mode);
|
|
|
1badb6 |
|
|
|
1badb6 |
Возвращает количество зарегистрированных на данном кадре клавиш (или кнопок мыши), соответствующих одному из перечисленных ниже типу событий:
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
acc470 |
KEYEVENT_KEY_DOWN
|
|
|
1badb6 |
удерживаемые в данный момент клавиши, см. keyDown
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
acc470 |
KEYEVENT_KEY_WENTDOWN
|
|
|
1badb6 |
клавиши, которые только что стали нажатыми, см. keyWentDown
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
acc470 |
KEYEVENT_KEY_WENTUP
|
|
|
1badb6 |
клавиши, которые были только что отпущены, см. keyWentUp
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
acc470 |
KEYEVENT_MOUSE_DOWN
|
|
|
1badb6 |
кнопки мыши, которые в данный момент нажаты, см. mouseDown
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
acc470 |
KEYEVENT_MOUSE_WENTDOWN
|
|
|
1badb6 |
кнопки мыши, которые только что стали нажатыми, см. mouseWentDown
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
1badb6 |
KEYEVENT_MOUSE_WENTUP
|
|
|
1badb6 |
кнопки мыши, которые были только что отпущены, см. mouseWentUp
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
1badb6 |
|
|
|
1badb6 |
Параметры:
|
|
|
1badb6 |
|
|
|
1badb6 |
mode — тип событий, см. выше.
|
|
|
1badb6 |
|
|
|
1badb6 |
const char* keyEventGet(KeyEvent mode, int i);
|
|
|
1badb6 |
|
|
|
1badb6 |
Возвращает наименования клавиши или кнопки мыши из списка событий указанного типа, по указанному номеру. Элементы в списке событий отсортированы по времени возникновения события. То есть клавиши идут в том порядке в котором они были нажаты (или отпущены). См. также keyEventGetCount.
|
|
|
1badb6 |
|
|
|
1badb6 |
Параметры:
|
|
|
1badb6 |
|
|
|
1badb6 |
mode — тип событий, список типов смотрите в описании функции keyEventGetCount;
|
|
|
1badb6 |
i — порядковой номер клавиши или кнопки в списке для указанного типа, элементы
|
|
|
1badb6 |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|