В течение долгого времени я использовал Autohotkey для переназначения клавиш в программах CG (в основном, 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 возвращает его в нормальное состояние, но это очень раздражает. Вот несколько изображений, чтобы лучше проиллюстрировать проблему:

Вы знаете, почему это происходит? Я не программист, поэтому я определенно мог бы использовать некоторую помощь.

2 ответа2

0

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

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

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

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

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

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

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

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

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


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

0

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

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

NumPad1::Alt

Numpad2::Ctrl

NumpadDown::Ctrl

Right::Shift

up::Space

    return

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .