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 77a314
  

Helianthus

Ivan Mahonin 77a314
  
Ivan Mahonin 77a314
  

Helianthus: Документация

Ivan Mahonin 77a314
  

Установка

Ivan Mahonin 7a004b
  

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

Ivan Mahonin 7a004b
  

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

Ivan Mahonin 7a004b
  

Рисование

Ivan Mahonin cece70
  

Шрифты и текст

Ivan Mahonin cece70
  

Текстуры и анимация

Ivan Mahonin cece70
  

Буфер кадра

Ivan Mahonin 7a004b
  

Спрайты

Ivan Mahonin 7a004b
  

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

Ivan Mahonin 7a004b
  

Звук

Ivan Mahonin e9aada
  

Пользовательский интерфейс

Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
  

Все функции

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

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

Ivan Mahonin 7a004b
Ivan Mahonin d9eca7

Во время работы программы вы можете узнавать положение мыши и состояние клавиш. Координаты указателя мыши можно получить функциями mouseX и mouseY. С помощью функций mouseScrolledX, mouseScrolledY вы можете узнать количество «щелчков» прокрутки колёсика мыши совершённое со времени предыдущего кадра. Узнать состояние клавиш клавиатуры и кнопок мыши можно функциями keyDown и mouseDown соответственно.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin cece70

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

Ivan Mahonin cece70
    https://wiki.libsdl.org/SDL_Keycode

Ivan Mahonin cece70
Ivan Mahonin d9eca7

Вы также можете использовать несколько групповых наименований: "any shift", "any ctrl", "any alt", "any gui" — обозначающих нажатие любой из парных клавиш (как левой так и правой). Группы "any /", "any *", "any -", "any +", "any return", "any 0", "any 1"… - отвечают за клавиши имеющие пару на дополнительной цифровой клавиатуре.

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 cece70
    int count = keyEventGetCount(KEYEVENT_KEY_WENTDOWN);
Ivan Mahonin 1badb6
    for(int i = 0; i < count; ++i) {
Ivan Mahonin cece70
        printf( "pressed key: %s\n",
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 e9aada

Если вам нужно не просто узнать названия нажатых клавиш, но и определить какой они образуют текст, то воспользуйтесь набором функций textInputBegin, textInputGet, textInputClear и textInputEnd.

Ivan Mahonin e9aada
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 e9aada

void textInputBegin();

Ivan Mahonin e9aada
Ivan Mahonin e9aada

Включить режим ввода текста. С момента запуска этой функции Helianthus будет запоминать все нажатые клавиши и формировать из них текст. См. также: textInputGet и textInputEnd.

Ivan Mahonin e9aada
Ivan Mahonin e9aada

void textInputEnd();

Ivan Mahonin e9aada
Ivan Mahonin e9aada

Отключить режим ввода текста и прекратить записывать вводимый пользователем текст. Раннее введённый текст останется в памяти и всё ещё будет доступен через функцию textInputGet. См. также: textInputBegin.

Ivan Mahonin e9aada
Ivan Mahonin e9aada

const char* textInputGet();

Ivan Mahonin e9aada
Ivan Mahonin e9aada

Получить введённый с клавиатуры текст. Вводимый текст накапливается с момента вызова функции textInputBegin. Функция textInputEnd останавливает запись текста, но при этом ранее накопленные символы остаются в памяти. Чтобы их стереть и начать копить текст заново используйте функцию textInputClear.

Ivan Mahonin e9aada
Ivan Mahonin e9aada

void textInputClear();

Ivan Mahonin e9aada
Ivan Mahonin e9aada

Очистить буфер вводимого с клавиатуры текста. См. также: textInputBegin и textInputGet.

Ivan Mahonin e9aada
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 d9eca7

int mouseScrolledX();

Ivan Mahonin d9eca7
Ivan Mahonin d9eca7

Возвращает количество «щелчков» колёсика мыши для горизонтальной прокрутки прошедшее с предыдущего кадра. Может быть отрицательным при обратной прокрутке. См. также mouseScrolledY.

Ivan Mahonin d9eca7
Ivan Mahonin d9eca7

int mouseScrolledY();

Ivan Mahonin d9eca7
Ivan Mahonin d9eca7

Возвращает количество «щелчков» колёсика мыши для вертикальной прокрутки прошедшее с предыдущего кадра. Может быть отрицательным при обратной прокрутке. См. также mouseScrolledX.

Ivan Mahonin d9eca7
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 d38577

Возвращает координату X указателя мыши. Координаты считаются относительно верхнего левого угла окна. См. также: mouseY, mouseTransformedX.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

double mouseY();

Ivan Mahonin 7a004b
Ivan Mahonin d38577

Возвращает координату Y указателя мыши. Координаты считаются относительно верхнего левого угла окна. См. также: mouseX, mouseTransformedY.

Ivan Mahonin cece70
Ivan Mahonin d38577

double mouseTransformedX();

Ivan Mahonin cece70
Ivan Mahonin d38577

Возвращает координату X указателя мыши в системе координат рисования с учётом применённых трансформаций. См. также mouseTransformedY, mouseX, translate, rotate, zoom.

Ivan Mahonin cece70
Ivan Mahonin d38577

double mouseTransformedY();

Ivan Mahonin cece70
Ivan Mahonin d38577

Возвращает координату Y указателя мыши в системе координат рисования с учётом применённых трансформаций. См. также mouseTransformedX, mouseY, translate, rotate, zoom.

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