Blob Blame Raw
<html>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>Клавиатура и мышь - Helianthus</title>
</head>
<body>
<div class="navigation">
  <p><a href="index.html">Helianthus</a></p>
  <p><a href="common.html">Запуск и общие функции</a></p>
  <p><a href="input.html">Клавиатура и мышь</a></p>
  <p><a href="drawing.html">Рисование</a></p>
  <p><a href="sprites.html">Спрайты</a></p>
  <p><a href="groups.html">Группы спрайтов</a></p>
  <p><a href="camera.html">Камера</a></p>
  <p><a href="sound.html">Звук</a></p>
  <hr />
  <p><a href="functions.html">Все функции</a></p>
</div>
<div class="content">

<h1>Клавиатура и мышь</h1>

<p>Во время работы программы вы можете узнавать положение мыши и состояние клавиш. Координаты указателя мыши можно получить функциями <a href="input.html#mouseX">mouseX</a> и <a href="input.html#mouseY">mouseY</a>. Узнать состояние клавиш клавиатуры и кнопок мыши можно функциями <a href="input.html#keyDown">keyDown</a> и <a href="input.html#mouseDown">mouseDown</a> соответственно.</p>

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

<p>Названия клавиш взяты из библиотеки <i>GTK</i>, их полный список вы можете посмотреть в файле (для Linux), список очень большой:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="file://" target="blank">file://</a><a href="/usr/include/gtk-3.0/gdk/gdkkeysyms.h" target="blank">/usr/include/gtk-3.0/gdk/gdkkeysyms.h</a><br />
или в интернете:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gdk/gdkkeysyms.h" target="blank">https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gdk/gdkkeysyms.h</a><br />
Обратите внимание, что наименование нужно писать маленькими (строчными) буквами и приставку <i>GTK_KEY_</i> нужно убрать. Например, если вы нашли в большом списке клавишу <i>GDK_KEY_BackSpace </i>— значит в вашей программе вам нужно написать <i>"backspace"</i>.</p>

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

<p>Кроме этого существуют функции для определения момента нажатия и отпускания клавиш и кнопок. На тот случай когда некоторые действия нужно выполнить только один раз в момент нажатия (или отпускания) клавиши. Смотрите функции <a href="input.html#keyWentDown">keyWentDown</a>, <a href="input.html#keyWentUp">keyWentUp</a>, <a href="input.html#mouseWentDown">mouseWentDown</a>, <a href="input.html#mouseWentUp">mouseWentUp</a>.</p>

<h2>Функции:</h2>

<h3 id="keyDown">int keyDown(const char *code);</h3>

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

<h4>Параметры:</h4>

<p><i>code</i> — текстовое наименование клавиши.</p>

<h3 id="keyWentDown">int keyWentDown(const char *code);</h3>

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

<p><b>Важно: </b>Примерно через секунду после нажатия и удержания клавиши, <a href="input.html#keyWentDown">keyWentDown</a> всё таки сработает ещё раз — так будто клавиша была повторно нажата. Другими словами поведение функции такое же как и у текстового редактора: если удерживать клавишу некоторое время редактор повторяет печать символа несколько раз.</p>

<h4>Параметры:</h4>

<p><i>code</i> — текстовое наименование клавиши.</p>

<h3 id="keyWentUp">int keyWentUp(const char *code);</h3>

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

<h4>Параметры:</h4>

<p><i>code</i> — текстовое наименование клавиши.</p>

<h3 id="mouseDown">int mouseDown(const char *code);</h3>

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

<h4>Параметры:</h4>

<p><i>code</i> — текстовое наименование кнопки мыши.</p>

<h3 id="mouseWentDown">int mouseWentDown(const char *code);</h3>

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

<h4>Параметры:</h4>

<p><i>code</i> — текстовое наименование кнопки мыши.</p>

<h3 id="mouseWentUp">int mouseWentUp(const char *code);</h3>

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

<h4>Параметры:</h4>

<p><i>code</i> — текстовое наименование кнопки мыши.</p>

<h3 id="mouseDidMove">int mouseDidMove();</h3>

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

<h3 id="mouseX">double mouseX();</h3>

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

<h3 id="mouseY">double mouseY();</h3>

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

</div>
</body>
</html>