Blame doc/ru/input.html

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

Helianthus

7a004b
  

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

7a004b
  

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

7a004b
  

Рисование

7a004b
  

Спрайты

7a004b
  

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

7a004b
  

Камера

7a004b
  

Звук

7a004b
  
7a004b
  

Все функции

7a004b
7a004b
7a004b
7a004b

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

7a004b
7a004b

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

7a004b
7a004b

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

7a004b
7a004b

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

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

7a004b
7a004b

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

7a004b
7a004b

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

7a004b
1badb6

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

1badb6
1badb6

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

1badb6
1badb6
1badb6
void draw() {
1badb6
    …
1badb6
    int count = keyEventCount(KEYEVENT_KEY_WENTDOWN);
1badb6
    for(int i = 0; i < count; ++i) {
1badb6
        printf( "pressed key: %s",
1badb6
            keyEventGet(KEYEVENT_KEY_WENTDOWN, i) );
1badb6
    }
1badb6
    …
1badb6
}
1badb6
1badb6
1badb6
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
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
7a004b

int mouseDidMove();

7a004b
7a004b

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

7a004b
7a004b

double mouseX();

7a004b
7a004b

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

7a004b
7a004b

double mouseY();

7a004b
7a004b

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

7a004b
1badb6

int keyEventGetCount(KeyEvent mode);

1badb6
1badb6

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

1badb6
1badb6
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