![Автоматическая горячая клавиша Ctrl+Shift - Zbrush/Photoshop](https://rvso.com/image/1388784/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F%20%D0%B3%D0%BE%D1%80%D1%8F%D1%87%D0%B0%D1%8F%20%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B0%20Ctrl%2BShift%20-%20Zbrush%2FPhotoshop.png)
Я уже давно использую 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
Спасибо большое за указание на источник проблемы. Это беспокоило меня годами.