Настройка раскладки клавиатуры (Customizing the Keymap)
Переменная config.keymap содержит карту из имён событий в списке символов клавиш, которые вызывают эти события.
Заметка: Многие игроки изучили набор клавиш Ren'Py по умолчанию и ожидают, что они будут одинаковыми от игры к игре.
В Ren'Py символами клавиш являются строки, представляющие кнопки мыши, кнопки джойстика или клавиши клавиатуры.
Кнопки мыши используют символы клавиш в форме 'mouseup_#' или 'mousedown_#', где # – номер кнопки. Ren'Py предполагает, что у вас пятикнопочная мышь, где кнопки 1, 2 и 3 – это левая, средняя и правая кнопки, а кнопки 4 и 5 генерируются путём прокрутки колёсика вверх и вниз. Например, 'mousedown_1' – это, как правило, нажатие левой кнопки мыши, 'mouseup_1' – отпускание этой кнопки, а 'mousedown_4' – поворот колесика прокрутки вверх.
Есть два вида символов клавиш клавиатуры. Первая – строка, содержащая символ, который генерируется при нажатии клавиши. Это полезно для привязки букв и цифр. Примеры этих символов клавиш включают «а», «А» и «7».
Символы клавиш клавиатуры также может быть символическим названием клавиши. Это может быть любая из констант K_, взятых из pygame.constants. Этот тип символа клавиши выглядит как 'K_BACKSPACE', 'K_RETURN' или 'K_TAB'. Полный список таких символов клавиш вы можете найти здесь.
Символам клавиш клавиатуры могут предшествовать следующие префиксы, разделенные подчеркиванием:
- alt
- Соответствует нажатию клавиши Alt. Когда клавиша Alt не нажата, символы клавиш без этого префикса.
- meta
- Соответствует нажатию клавишам meta, Command или Windows. Когда клавиша meta не нажата, символы клавиш без этого префикса.
- ctrl
- Соответствует нажатию клавиши Ctrl. Когда клавиша Ctrl не нажата, символы клавиш без этого префикса. Ctrl не очень полезен, так как обычно вызывает пропуск.
- shift
- Соответствует нажатию клавиши Shift.
- noshift
- Когда клавиша Shift не нажата, символы клавиш без этого префикса.
- repeat
- Соответствует повторному нажатию клавиши из-за удержания клавиши. Когда не соответствуют повторам, символы клавиш без этого префикса.
- keydown
- Соответствует нажатию клавиши (по умолчанию).
- keyup
- Соответствует отпускании клавиши.
Например, символ клавиши 'shift_alt_K_F5' будет соответствовать нажатой клавише F5, пока удерживаются Shift и Alt.
Чтобы изменить привязку клавиш, обновите соответствующий список в config.keymap. Следующий код добавляет клавишу t в список клавиш, который отвергает оператор say и удаляет клавишу пробел из этого списка.
init:
$ config.keymap['dismiss'].append('t')
$ config.keymap['dismiss'].remove('K_SPACE')
По умолчанию keymap содержится в renpy/common/00keymap.rpy, а с версии 6.99 выглядит следующим образом:
config.keymap = dict(
# Привязки присутствуют практически везде, если явно
# не отключены.
rollback = [ 'K_PAGEUP', 'repeat_K_PAGEUP', 'K_AC_BACK', 'mousedown_4' ],
screenshot = [ 's' ],
toggle_afm = [ ],
toggle_fullscreen = [ 'f', 'alt_K_RETURN', 'alt_K_KP_ENTER', 'K_F11' ],
game_menu = [ 'K_ESCAPE', 'K_MENU', 'mouseup_3' ],
hide_windows = [ 'mouseup_2', 'h' ],
launch_editor = [ 'E' ],
dump_styles = [ ],
reload_game = [ 'R' ],
inspector = [ 'I' ],
full_inspector = [ 'alt_I' ],
developer = [ 'D' ],
quit = [ ],
iconify = [ ],
help = [ 'K_F1', 'meta_shift_/' ],
choose_renderer = [ 'G' ],
progress_screen = [ 'alt_shift_K_p', 'meta_shift_K_p', 'K_F2' ],
# Версия для слабовидящих.
self_voicing = [ 'v', 'V' ],
clipboard_voicing = [ 'C' ],
debug_voicing = [ 'alt_V', 'meta_V' ],
# Речь.
rollforward = [ 'mousedown_5', 'K_PAGEDOWN', 'repeat_K_PAGEDOWN' ],
dismiss = [ 'mouseup_1', 'K_RETURN', 'K_SPACE', 'K_KP_ENTER', 'K_SELECT' ],
dismiss_unfocused = [ ],
# Пауза.
dismiss_hard_pause = [ ],
# Фокус.
focus_left = [ 'K_LEFT', 'repeat_K_LEFT' ],
focus_right = [ 'K_RIGHT', 'repeat_K_RIGHT' ],
focus_up = [ 'K_UP', 'repeat_K_UP' ],
focus_down = [ 'K_DOWN', 'repeat_K_DOWN' ],
# Кнопка.
button_ignore = [ 'mousedown_1' ],
button_select = [ 'mouseup_1', 'K_RETURN', 'K_KP_ENTER', 'K_SELECT' ],
button_alternate = [ 'mouseup_3' ],
button_alternate_ignore = [ 'mousedown_3' ],
# Ввод.
input_backspace = [ 'K_BACKSPACE', 'repeat_K_BACKSPACE' ],
input_enter = [ 'K_RETURN', 'K_KP_ENTER' ],
input_left = [ 'K_LEFT', 'repeat_K_LEFT' ],
input_right = [ 'K_RIGHT', 'repeat_K_RIGHT' ],
input_up = [ 'K_UP', 'repeat_K_UP' ],
input_down = [ 'K_DOWN', 'repeat_K_DOWN' ],
input_delete = [ 'K_DELETE', 'repeat_K_DELETE' ],
input_home = [ 'K_HOME' ],
input_end = [ 'K_END' ],
input_copy = [ 'ctrl_K_INSERT', 'ctrl_K_c' ],
input_paste = [ 'shift_K_INSERT', 'ctrl_K_v' ],
# Окно просмотра.
viewport_leftarrow = [ 'K_LEFT', 'repeat_K_LEFT' ],
viewport_rightarrow = [ 'K_RIGHT', 'repeat_K_RIGHT' ],
viewport_uparrow = [ 'K_UP', 'repeat_K_UP' ],
viewport_downarrow = [ 'K_DOWN', 'repeat_K_DOWN' ],
viewport_wheelup = [ 'mousedown_4' ],
viewport_wheeldown = [ 'mousedown_5' ],
viewport_drag_start = [ 'mousedown_1' ],
viewport_drag_end = [ 'mouseup_1' ],
# Эти клавиши управляют пропуском.
skip = [ 'K_LCTRL', 'K_RCTRL' ],
stop_skipping = [ ],
toggle_skip = [ 'K_TAB' ],
fast_skip = [ '>' ],
# Полоса на экране
bar_activate = [ 'mousedown_1', 'K_RETURN', 'K_KP_ENTER', 'K_SELECT' ],
bar_deactivate = [ 'mouseup_1', 'K_RETURN', 'K_KP_ENTER', 'K_SELECT' ],
bar_left = [ 'K_LEFT', 'repeat_K_LEFT' ],
bar_right = [ 'K_RIGHT', 'repeat_K_RIGHT' ],
bar_up = [ 'K_UP', 'repeat_K_UP' ],
bar_down = [ 'K_DOWN', 'repeat_K_DOWN' ],
# Удаление сохранения.
save_delete = [ 'K_DELETE' ],
# Допускающий перетаскивание.
drag_activate = [ 'mousedown_1' ],
drag_deactivate = [ 'mouseup_1' ],
# Консоль отладки.
console = [ 'shift_O' ],
console_older = [ 'K_UP', 'repeat_K_UP' ],
console_newer = [ 'K_DOWN', 'repeat_K_DOWN'],
# Игнорируется (сохраняется для совместимости с предыдущими версиями).
toggle_music = [ 'm' ],
viewport_up = [ 'mousedown_4' ],
viewport_down = [ 'mousedown_5' ],
# Профильные команды.
profile_once = [ 'K_F8' ],
memory_profile = [ 'K_F7' ],
)
Привязки геймпада работают немного по-другому. Она работают путём сопоставления события геймпада с одним или несколькими именами событий Ren'Py. Набор привязок геймпада по умолчанию приведён ниже:
config.pad_bindings = {
"pad_leftshoulder_press" : [ "rollback", ],
"pad_lefttrigger_pos" : [ "rollback", ],
"pad_back_press" : [ "rollback", ],
"pad_guide_press" : [ "game_menu", ],
"pad_start_press" : [ "game_menu", ],
"pad_y_press" : [ "hide_windows", ],
"pad_rightshoulder_press" : [ "rollforward", ],
"pad_righttrigger_pos" : [ "dismiss", "button_select", "bar_activate", "bar_deactivate" ],
"pad_a_press" : [ "dismiss", "button_select", "bar_activate", "bar_deactivate"],
"pad_b_press" : [ "button_alternate" ],
"pad_dpleft_press" : [ "focus_left", "bar_left", "viewport_leftarrow" ],
"pad_leftx_neg" : [ "focus_left", "bar_left", "viewport_leftarrow" ],
"pad_rightx_neg" : [ "focus_left", "bar_left", "viewport_leftarrow" ],
"pad_dpright_press" : [ "focus_right", "bar_right", "viewport_rightarrow" ],
"pad_leftx_pos" : [ "focus_right", "bar_right", "viewport_rightarrow" ],
"pad_rightx_pos" : [ "focus_right", "bar_right", "viewport_rightarrow" ],
"pad_dpup_press" : [ "focus_up", "bar_up", "viewport_uparrow" ],
"pad_lefty_neg" : [ "focus_up", "bar_up", "viewport_uparrow" ],
"pad_righty_neg" : [ "focus_up", "bar_up", "viewport_uparrow" ],
"pad_dpdown_press" : [ "focus_down", "bar_down", "viewport_downarrow" ],
"pad_lefty_pos" : [ "focus_down", "bar_down", "viewport_downarrow" ],
"pad_righty_pos" : [ "focus_down", "bar_down", "viewport_downarrow" ],
}
Кнопки геймпада имеют имя события следующего вида – "pad_*button*_press" или "pad_*button*_release". События аналоговой оси имеют форму "pad_*axis*_pos", "pad_*axis*_neg" или "pad_*axis*_zero".
Источник[править | править код]
Статья "Customizing the Keymap" на английском языке.
На главную страницу | Официальная документация движка | Вернуться к началу статьи |