Привязывание собственных действий к клавишам
Чтобы добавить какие-либо действия, выполняемые при нажатии определённых клавиш, в Ren'Py используются особый класс renpy.Keymap.
При добавлении объектов этого класса в список дисплейблов низшего слоя (config.underlay) и добавления клавиш в поле config.keymap они ловят нажатия на клавиши и выполняют указанные действия.
Пример:
init python:
config.underlay.append(renpy.Keymap(
my_action = Play("audio", sfx_achievement)
))
config.keymap["my_action"] = ["shift_K_j"]
У каждой клавиши в Pygame (основа движка Ren'Py) есть свой код. Их список вы можете увидеть ниже.
Список доступных в Pygame клавиш
| Код | ASCII-символ (если имеется) | Расшифровка |
|---|---|---|
| K_BACKSPACE | \b |
Обратный пробел, "BACKSPACE" |
| K_TAB | \t |
Табуляция, "TAB" |
| K_RETURN | \r |
Возврат, "ENTER" |
| K_PAUSE | Н/Д | Клавиша "PAUSE BREAK", "PB" |
| K_ESCAPE | ^[ |
Клавиша "ESCAPE", "ESC" |
| K_SPACE | |
Пробел |
| K_EXCLAIM | ! |
Восклицательный знак |
| K_QUOTEDBL | " |
Двойная кавычка |
| K_HASH | # |
Решётка |
| K_DOLLAR | $ |
Символ доллара |
| K_AMPERSAND | & |
Амперсанд |
| K_QUOTE | ' |
Одинарная кавычка |
| K_LEFTPAREN | ( |
Левая скобка |
| K_RIGHTPAREN | ) |
Правая скобка |
| K_ASTERISK | * |
Звёздочка, астериск |
| K_PLUS | + |
Плюс |
| K_COMMA | , |
Запятая |
| K_MINUS | - |
Минус |
| K_PERIOD | . |
Точка |
| K_SLASH | / |
Слеш, правый слеш |
| K_BACKSLASH | \ |
Обратный слеш, левый слеш |
| K_0 | 0 |
0 |
| K_1 | 1 |
1 |
| K_2 | 2 |
2 |
| K_3 | 3 |
3 |
| K_4 | 4 |
4 |
| K_5 | 5 |
5 |
| K_6 | 6 |
6 |
| K_7 | 7 |
7 |
| K_8 | 8 |
8 |
| K_9 | 9 |
9 |
| K_COLON | : |
Двоеточие |
| K_SEMICOLON | ; |
Точка с запятой |
| K_LESS | < |
Знак "меньше" |
| K_GREATER | > |
Знак "больше" |
| K_EQUALS | = |
Знак равенства |
| K_QUESTION | ? |
Восклицательный знак |
| K_AT | @ |
Собачка |
| K_LEFTBRACKET | [ |
Левая квадратная скобка |
| K_RIGHTBRACKET | ] |
Правая квадратная скобка |
| K_CARET | ^ |
Карет |
| K_UNDERSCORE | _ |
Символ нижнего подчёркивания |
| K_BACKQUOTE | ` |
Обратная кавычка |
| K_a | a |
Латинская А, кирилличская Ф |
| K_b | b |
Латинская B, кирилличская И |
| K_c | c |
Латинская C, кирилличская С |
| K_d | d |
Латинская D, кирилличская В |
| K_e | e |
Латинская E, кирилличская У |
| K_f | f |
Латинская F, кирилличская А |
| K_g | g |
Латинская G, кирилличская П |
| K_h | h |
Латинская H, кирилличская Р |
| K_i | i |
Латинская I, кирилличская Ш |
| K_j | j |
Латинская J, кирилличская О |
| K_k | k |
Латинская K, кирилличская Л |
| K_l | l |
Латинская L, кирилличская Д |
| K_m | m |
Латинская M, кирилличская Ь |
| K_n | n |
Латинская N, кирилличская Т |
| K_o | o |
Латинская O, кирилличская Щ |
| K_p | p |
Латинская P, кирилличская З |
| K_q | q |
Латинская Q, кирилличская Й |
| K_r | r |
Латинская R, кирилличская К |
| K_s | s |
Латинская S, кирилличская Ы |
| K_t | t |
Латинская T, кирилличская Е |
| K_u | u |
Латинская U, кирилличская Г |
| K_v | v |
Латинская V, кирилличская М |
| K_w | w |
Латинская W, кирилличская Ц |
| K_x | x |
Латинская X, кирилличская Ч |
| K_y | y |
Латинская Y, кирилличская Н |
| K_z | z |
Латинская Z, кирилличская Я |
| K_DELETE | Н/Д | Клавиша "DELETE", "DEL" |
| K_KP0 | Н/Д | 0 на нумпаде |
| K_KP1 | Н/Д | 1 на нумпаде |
| K_KP2 | Н/Д | 2 на нумпаде |
| K_KP3 | Н/Д | 3 на нумпаде |
| K_KP4 | Н/Д | 4 на нумпаде |
| K_KP5 | Н/Д | 5 на нумпаде |
| K_KP6 | Н/Д | 6 на нумпаде |
| K_KP7 | Н/Д | 7 на нумпаде |
| K_KP8 | Н/Д | 8 на нумпаде |
| K_KP9 | Н/Д | 9 на нумпаде |
| K_KP_PERIOD | . |
Точка на нумпаде |
| K_KP_DIVIDE | / |
Слеш на нумпаде |
| K_KP_MULTIPLY | * |
Звёздочка на нумпаде |
| K_KP_MINUS | - |
Минус на нумпаде |
| K_KP_PLUS | + |
Плюс на нумпаде |
| K_KP_ENTER | \r |
"ENTER" на нумпаде |
| K_KP_EQUALS | = |
Знак равенства на нумпаде |
| K_UP | Н/Д | Стрелка вверх |
| K_DOWN | Н/Д | Стрелка вниз |
| K_RIGHT | Н/Д | Стрелка вправо |
| K_LEFT | Н/Д | Стрелка влево |
| K_INSERT | Н/Д | Клавиша "INSERT", "INS" |
| K_HOME | Н/Д | Клавиша "HOME", "HM" |
| K_END | Н/Д | Клавиша "END" |
| K_PAGEUP | Н/Д | Клавиша "PAGE UP", "PGUP", "PU" |
| K_PAGEDOWN | Н/Д | Клавиша "PAGE DOWN", "PGDN", "PD" |
| K_F1 | Н/Д | Клавиша "F1" |
| K_F2 | Н/Д | Клавиша "F2" |
| K_F3 | Н/Д | Клавиша "F3" |
| K_F4 | Н/Д | Клавиша "F4" |
| K_F5 | Н/Д | Клавиша "F5" |
| K_F6 | Н/Д | Клавиша "F6" |
| K_F7 | Н/Д | Клавиша "F7" |
| K_F8 | Н/Д | Клавиша "F8" |
| K_F9 | Н/Д | Клавиша "F9" |
| K_F10 | Н/Д | Клавиша "F10" |
| K_F11 | Н/Д | Клавиша "F11" |
| K_F12 | Н/Д | Клавиша "F12" |
| K_F13 | Н/Д | Клавиша "F13" |
| K_F14 | Н/Д | Клавиша "F14" |
| K_F15 | Н/Д | Клавиша "F15" |
| K_NUMLOCK | Н/Д | Клавиша "NUM LOCK", "NUM" |
| K_CAPSLOCK | Н/Д | Клавиша "CAPS LOCK", "CAPS" |
| K_SCROLLOCK | Н/Д | Клавиша "SCROLL LOCK", "SL" |
| K_RSHIFT | Н/Д | Правая клавиша "SHIFT" |
| K_LSHIFT | Н/Д | Левая клавиша "SHIFT" |
| K_RCTRL | Н/Д | Правая клавиша "CTRL" |
| K_LCTRL | Н/Д | Левая клавиша "CTRL" |
| K_RALT | Н/Д | Правая клавиша "ALT" |
| K_LALT | Н/Д | Левая клавиша "ALT" |
| K_RMETA | Н/Д | Правая клавиша "META", "COMMAND" |
| K_LMETA | Н/Д | Левая клавиша "META", "COMMAND" |
| K_LSUPER | Н/Д | Правая клавиша "WINDOWS" |
| K_RSUPER | Н/Д | Левая клавиша "WINDOWS" |
| K_PRINT | Н/Д | Клавиша "PRINT SCREEN", "PRTSCR", "PS" |
| K_MENU | Н/Д | Клавиша открытия контестного меню |
Помимо клавиш клавиатуры в комбинации можно передать и нажатие кнопок мыши.
Для этого используются ключи в формате mouseup_<Число> или mousedown_<Число>, где число:
| 1 | Левая кнопка мыши |
| 2 | Средняя кнопка мыши |
| 3 | Правая кнопка мыши |
| 4 | Колёсико вверх |
| 5 | Колёсико вниз |
| 6 | Передняя боковая кнопка мыши |
| 7 | Задняя боковая кнопка мыши |
Также каждой клавише можно дать некоторые модификаторы, которые будут требовать соблюдение некоторых условий.
Пример использования:
"shift_ctrl_anyrepeat_K_g"
Список доступных модификаторов
| Префикс | Что требует |
|---|---|
meta |
Требуется зажать клавишу "META", "COMMAND" или "WINDOWS" |
ctrl |
Требуется зажать клавишу "CTRL" |
osctrl |
Требуется зажать клавишу "ALT" на компьютерах Macintosh или клавишу "CTRL" в других системах |
anymod |
Требуется зажать клавишу "CTRL", "ALT", "META", "COMMAND" или "WINDOWS" |
shift |
Требуется зажать клавишу "SHIFT" |
noshift |
Требуется не зажимать клавишу "SHIFT" |
caps |
Требуется включённый "CAPS LOCK" |
nocaps |
Требуется выключенный "CAPS LOCK" |
num |
Требуется включённый "NUM LOCK" |
nonum |
Требуется выключенный "NUM LOCK" |
repeat |
Требуется зажать клавишу |
anyrepeat |
Требуется нажать или зажать клавишу |
keydown |
Требуется нажать клавишу (стандартный модификатор) |
keyup |
Требуется отпустить клавишу |
Для большей части привязанных к клавишам действий в игре были использованы экранные действия, но также можно использовать и обычные Python-функции.
Имейте ввиду, что без использования экранного действия Function или каррирования функции аргументы передать не получится.
Обновлено