Использование горячих клавиш – одна из наиболее продвинутых функций в Blender для серьезного увеличения скорости работы. Легко управлять доступностью того или иного сочетания клавиш можно посредством Blender Python API.
Все прописанные сочетания клавиш группируются в Blender по разделам – кеймапам (KeyMap).
Доступ ко всем существующим кеймапам через Python API можно получить следующим образом:
1 2 3 |
bpy.context.window_manager.keyconfigs.active.keymaps # bpy.data.window_managers['WinMan']...KeyMap], ... |
Доступ к конкретному набору горячих клавиш можно получить по его индексу или по имени:
1 2 3 4 5 6 7 |
bpy.context.window_manager.keyconfigs.active.keymaps[0] # bpy.data.window_managers['WinMan']...KeyMap bpy.context.window_manager.keyconfigs.active.keymaps['Window'] # bpy.data.window_managers['WinMan']...KeyMap |
Внутри раздела все сочетания клавиш хранятся в списке keymap_items. Каждое отдельное сочетание клавиш хранится в объекте KeyMapItem. Получить к нему доступ можно по индексу или идентификатору idname:
1 2 3 4 5 6 7 |
bpy.context.window_manager.keyconfigs.active.keymaps['Window'].keymap_items[0] # bpy.data.window_managers['WinMan']...KeyMapItem bpy.context.window_manager.keyconfigs.active.keymaps['Window'].keymap_items['wm.call_menu'] # bpy.data.window_managers['WinMan']...KeyMapItem |
Для включения и выключения текущего сочетания клавиш используется свойство “active”:
1 2 3 |
bpy.context.window_manager.keyconfigs.active.keymaps['Window'].keymap_items[0].active # True |
Устанавливая значение “active” в True или False можно включать и выключать текущее сочетание клавиш.
Для примера выключим сочетание клавиш shift + a, отвечающее за открытие меню добавления объектов в окне 3D вьюпорта. Сам элемент KeyMapItem проще всего найти по имени раздела “Object Mode” и названию сочетания клавиш “Add”:
1 |
keymap_item = next(k for k in bpy.context.window_manager.keyconfigs.active.keymaps['Object Mode'].keymap_items if k.name in 'Add') |
Выключение:
1 |
keymap_item = False |
Теперь при нажатии shift + a в окне 3D вьюпорта меню добавления не появляется.
И включение обратно:
1 |
keymap_item = True |
Теперь меню работает, как раньше.