Автоматическая горячая клавиша Ctrl+Shift - Zbrush/Photoshop

Автоматическая горячая клавиша Ctrl+Shift - Zbrush/Photoshop

Я уже давно использую Autohotkey для переназначения клавиш в программах для компьютерной графики (в основном Zbrush и Photoshop), чтобы сделать их более удобными для левшей.

По сути, я переназначаю клавиши Numpad на клавиши, которые нельзя изменить внутри программ (Ctrl, Alt, Shift и т. д.). Таким образом, я могу использовать ручку графического планшета левой рукой и нажимать Ctrl, Alt и т. д. с помощью Numpad, что гораздо удобнее, чем смещать всю клавиатуру вправо.

В любом случае, вот мой сценарий:

 #IfWinActive, ahk_class ZBrush

 #MaxHotkeysPerInterval 200



 NumPad1::Alt

 Numpad2::LControl

 Right::Shift

 up::Space

 return

Довольно просто, но у меня был баг с ним с тех пор, как я создал его несколько лет назад. По сути, когда я нажимаю и удерживаю Numpad2+Right (Ctrl+Shift) и отпускаю Numpad2, программа ведет себя так, как будто я все еще нажимаю ее. Быстрое повторное нажатие Numpad2 возвращает ее в нормальное состояние, но это очень раздражает. Вот несколько изображений, чтобы лучше проиллюстрировать проблему:

введите описание изображения здесь

Знаете, почему это происходит? Я не программист, поэтому мне определенно нужна помощь.

решение1

Проблема, похоже, не возникает, когда я отпускаю Right перед Numpad2. Как будто нажатие Right (Shift) не позволяет отпустить Numpad2 (Ctrl)...

Проблема, которую вы видите, связана с тем, что цифровая клавиатура изменена ⇧Shift. Нажатие ⇧Shiftпохоже на переключение NumLockклавиши, но эффект более сложный и неочевидный.

Например, нажатие Numpad-4приведет к следующим результатам:

          │ Num On │ Num Off
──────────┼────────┼───────────
Shift Off │   4    │    ←
──────────┼────────┼───────────
Shift On  │   ←    │ Shift + ←

Поскольку вы переназначаете ее на be ⇧Shiftи используете в сочетании с клавишей на цифровой клавиатуре, вы получаете взаимодействие, которое усложняет AutoHotkey и сбивает вас с толку своим неожиданным результатом (это вполне может бытьлогически правильный, но, безусловно, неожиданный и нежелательный результат).

Попробуйте изменить свой вторичный ключ с Numpad-2на что-то другое, чтонетизменено ⇧Shift, например K. Вы заметите, что больше не получаете неожиданных результатов.

Такое поведение возникает в контроллере клавиатуры, а не в программном обеспечении, поэтому, к сожалению, если вам нужно использовать клавишу ⇧Shiftв качестве модификатора, то вы не сможете использовать клавишу цифровой клавиатуры для таких сложных переназначений.

Одним из вариантов является использование блока редактирования или клавиш цифровой клавиатуры, которые не изменяются ⇧Shift(математические операторы, Numpad-5и Numpad-Enter).

Другой вариант — написать более сложный скрипт, который создает клавиатурный хук для проверки клавиш на более низком уровне, чтобы он мог проверить, ⇧Shiftнажата ли клавиша, а затем компенсировать ее при необходимости.


(Я столкнулся с этой проблемой некоторое время назад, когда писал программу для ввода Unicode. Я пытался сделать так, чтобы она поддерживала клавиши Shift для определенных символов, но модификация все портила. В итоге я прибег к последнему предложению и написал сложный скрипт, но это было неприятно, головокружительно и в конечном итоге в любом случае оказалось ограниченным.)

решение2

Ого! Потрясающий ответ! Быстро и точно. Большое спасибо. Я не знал, что эти клавиши были изменены Shift, что привело к такому раздражающему поведению. Дело в том, что я настолько привык к этой переназначенной клавише Numpad2, что не могу позволить себе изменить ее, не пройдя через недели психомоторной переадаптации ^^

Мне удалось обойти эту проблему, просто переназначив NumpadDown на Ctrl ^^ Теперь все работает чудеса!

NumPad1::Alt

Numpad2::Ctrl

NumpadDown::Ctrl

Right::Shift

up::Space

    return

Спасибо большое за указание на источник проблемы. Это беспокоило меня годами.

Связанный контент