Настройка раскладки клавиатуры (Customizing the Keymap)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

Переменная 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" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи