Blame doc/ru/input.html

Ivan Mahonin 7a004b
<html>
Ivan Mahonin 7a004b
<head>
Ivan Mahonin 7a004b
<meta charset="UTF-8" />
Ivan Mahonin 7a004b
<link rel="stylesheet" type="text/css" href="style.css" />
Ivan Mahonin 7a004b
<title>Клавиатура и мышь - Helianthus</title>
Ivan Mahonin 7a004b
</head>
Ivan Mahonin 7a004b
<body>
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
  

Helianthus

Ivan Mahonin 7a004b
  

Запуск и общие функции

Ivan Mahonin 7a004b
  

Клавиатура и мышь

Ivan Mahonin 7a004b
  

Рисование

Ivan Mahonin 7a004b
  

Спрайты

Ivan Mahonin 7a004b
  

Группы спрайтов

Ivan Mahonin 7a004b
  

Камера

Ivan Mahonin 7a004b
  

Звук

Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
  

Все функции

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Клавиатура и мышь

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Во время работы программы вы можете узнавать положение мыши и состояние клавиш. Координаты указателя мыши можно получить функциями mouseX и mouseY. Узнать состояние клавиш клавиатуры и кнопок мыши можно функциями keyDown и mouseDown соответственно.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Для указания клавиши нужно написать её текстовое наименование, например: "a", "1", "left", "right", "up", "down", "return" (для Enter), "escape" и и.д.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Названия клавиш взяты из библиотеки GTK, их полный список вы можете посмотреть в файле (для Linux), список очень большой:

Ivan Mahonin 7a004b
    file:///usr/include/gtk-3.0/gdk/gdkkeysyms.h
Ivan Mahonin 7a004b
или в интернете:
Ivan Mahonin 7a004b
    https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gdk/gdkkeysyms.h
Ivan Mahonin 7a004b
Обратите внимание, что наименование нужно писать маленькими (строчными) буквами и приставку GTK_KEY_ нужно убрать. Например, если вы нашли в большом списке клавишу GDK_KEY_BackSpace — значит в вашей программе вам нужно написать "backspace".

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Наименований для кнопок мыши всего три: "left", "middle" и "right".

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Кроме этого существуют функции для определения момента нажатия и отпускания клавиш и кнопок. На тот случай когда некоторые действия нужно выполнить только один раз в момент нажатия (или отпускания) клавиши. Смотрите функции keyWentDown, keyWentUp, mouseWentDown, mouseWentUp.

Ivan Mahonin 7a004b
Ivan Mahonin 1badb6

Также вы можете получить полный список нажатых, отпущенных или удерживаемых клавиш и кнопок при помощи функций keyEventGetCount и keyEventGet.

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6

Например, если вы не знаете наименования какой-либо клавиши, вы можете выводить имена нажимаемых клавиш в терминал при помощи такой программы:

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6
Ivan Mahonin 1badb6
void draw() {
Ivan Mahonin 1badb6
    …
Ivan Mahonin 1badb6
    int count = keyEventCount(KEYEVENT_KEY_WENTDOWN);
Ivan Mahonin 1badb6
    for(int i = 0; i < count; ++i) {
Ivan Mahonin 1badb6
        printf( "pressed key: %s",
Ivan Mahonin 1badb6
            keyEventGet(KEYEVENT_KEY_WENTDOWN, i) );
Ivan Mahonin 1badb6
    }
Ivan Mahonin 1badb6
    …
Ivan Mahonin 1badb6
}
Ivan Mahonin 1badb6
Ivan Mahonin 1badb6
Ivan Mahonin 1badb6
Ivan Mahonin 7a004b

Функции:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int keyDown(const char *code);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если указанная клавиша в нажата (и удерживается) в данный момент и FALSE (число 0) если клавиша отпущена.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

code — текстовое наименование клавиши.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int keyWentDown(const char *code);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если указанная клавиша стала нажатой в момент времени между предыдущим и текущим кадром. В последующих кадрах, даже если клавиша остаётся нажатой, функция возвращает FALSE (число 0).

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Важно: Примерно через секунду после нажатия и удержания клавиши, keyWentDown всё таки сработает ещё раз — так будто клавиша была повторно нажата. Другими словами поведение функции такое же как и у текстового редактора: если удерживать клавишу некоторое время редактор повторяет печать символа несколько раз.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

code — текстовое наименование клавиши.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int keyWentUp(const char *code);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если указанная клавиша перестала быть нажатой в момент времени между предыдущим и текущим кадром. Во всех других случаях возвращает FALSE (число 0).

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

code — текстовое наименование клавиши.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int mouseDown(const char *code);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если указанная кнопка мыши в нажата (и удерживается) в данный момент и FALSE (число 0) если кнопка отпущена.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

code — текстовое наименование кнопки мыши.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int mouseWentDown(const char *code);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если указанная кнопка мыши стала нажатой в момент времени между предыдущим и текущим кадром. Во всех последующих кадрах, даже если кнопка остаётся нажатой, функция возвращает FALSE (число 0).

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

code — текстовое наименование кнопки мыши.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int mouseWentUp(const char *code);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если указанная кнопка мыши перестала быть нажатой в момент времени между предыдущим и текущим кадром. Во всех других случаях возвращает FALSE (число 0).

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

code — текстовое наименование кнопки мыши.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int mouseDidMove();

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если с момента отрисовки предыдущего кадра положение мыши изменилось, и возвращает FALSE (число 0) ели мышь оставалась неподвижной.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

double mouseX();

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Возвращает координату X указателя мыши.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

double mouseY();

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Возвращает координату Y указателя мыши.

Ivan Mahonin 7a004b
Ivan Mahonin 1badb6

int keyEventGetCount(KeyEvent mode);

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6

Возвращает количество зарегистрированных на данном кадре клавиш (или кнопок мыши), соответствующих одному из перечисленных ниже типу событий:

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
    Тип
Ivan Mahonin 1badb6
    Описание
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
  
Ivan Mahonin acc470
    KEYEVENT_KEY_DOWN
Ivan Mahonin 1badb6
    удерживаемые в данный момент клавиши, см. keyDown
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
  
Ivan Mahonin acc470
    KEYEVENT_KEY_WENTDOWN
Ivan Mahonin 1badb6
    клавиши, которые только что стали нажатыми, см. keyWentDown
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
  
Ivan Mahonin acc470
    KEYEVENT_KEY_WENTUP
Ivan Mahonin 1badb6
    клавиши, которые были только что отпущены, см. keyWentUp
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
  
Ivan Mahonin acc470
    KEYEVENT_MOUSE_DOWN
Ivan Mahonin 1badb6
    кнопки мыши, которые в данный момент нажаты, см. mouseDown
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
  
Ivan Mahonin acc470
    KEYEVENT_MOUSE_WENTDOWN
Ivan Mahonin 1badb6
    кнопки мыши, которые только что стали нажатыми, см. mouseWentDown
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
    KEYEVENT_MOUSE_WENTUP
Ivan Mahonin 1badb6
    кнопки мыши, которые были только что отпущены, см. mouseWentUp
Ivan Mahonin 1badb6
  
Ivan Mahonin 1badb6
Ivan Mahonin 1badb6
Ivan Mahonin 1badb6
Ivan Mahonin 1badb6

Параметры:

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6

mode — тип событий, см. выше.

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6

const char* keyEventGet(KeyEvent mode, int i);

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6

Возвращает наименования клавиши или кнопки мыши из списка событий указанного типа, по указанному номеру. Элементы в списке событий отсортированы по времени возникновения события. То есть клавиши идут в том порядке в котором они были нажаты (или отпущены). См. также keyEventGetCount.

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6

Параметры:

Ivan Mahonin 1badb6
Ivan Mahonin 1badb6

mode — тип событий, список типов смотрите в описании функции keyEventGetCount;

Ivan Mahonin 1badb6
i — порядковой номер клавиши или кнопки в списке для указанного типа, элементы 

Ivan Mahonin 1badb6
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
</body>
Ivan Mahonin 7a004b
</html>