Использование ключевого модификатора с модальным блендером

Кто-нибудь знает, как заставить модал сделать что-то другое, если у меня есть ключ? Это то, что у меня есть на данный момент:

        if event.type == 'MOUSEMOVE': 
            if event.type == 'LEFT_SHIFT' and event.value == 'PRESS':
                self.value = (event.mouse_region_x - self.mouse_x_initial)
                print(self.value)

            self.value = event.mouse_region_x - self.mouse_x_initial

1 ответ

Решение

event параметр имеет логические свойства для ctrl, alt, shift а также oskey, Проверьте их, чтобы узнать, удерживается ли один из ключей во время события.

def modal(self, context, event):
    if event.type == 'MOUSEMOVE':
        if event.ctrl:
            print('Ctrl is down')
        if event.shift:
            print('shift is down')
        if event.alt:
            print('alt is down')
    elif event.type == 'ESC':
        return {'CANCELLED'}
    return {'RUNNING_MODAL'}

Поскольку логические свойства не различают левую и правую клавиши, вам нужно будет сохранить запись предыдущего события, а также проверить, чтобы узнать, какое действие предпринять, если вы хотите, чтобы они работали по-другому.

Другие вопросы по тегам