Сопоставьте обе клавиши shift, нажатые в AutoHotkey

#autohotkey

#автоотключение

Вопрос:

На одной из моих клавиатур есть клавиша Shift большего размера, где обычно находится моя клавиша канала / обратной косой черты. Есть ли способ сопоставить Shift-Shift в AutoHotkey (т. Е. Нажаты обе клавиши Shift), чтобы я все еще мог вводить каналы ( | ) так, как я бы делал с другими моими клавиатурами? Я пробовал просто , но это, похоже, соответствует Shift- .

Комментарии:

1. Не уверен, имеете ли вы в виду просто сдвиг влево и вправо, или этот «большой сдвиг» является чем-то более особенным. Если это какая-то специальная клавиша, вы можете попытаться получить ее код сканирования (SC) или код виртуальной клавиши (VK). Вот, вероятно, достаточно приличный учебник для этого: jacks-autohotkey-blog.com/2016/04/14 /…

2. Да, я просто имею в виду сдвиг влево и вправо. Это клавиатура США, и я обычно использую клавиатуры с раскладкой в Великобритании.

Ответ №1:

Благодаря комментарию @0x464e я смог найти коды виртуальных клавиш (VKS) для сдвига влево и вправо с помощью:

  1. Добавление ::Send {U 007C} в мой скрипт ahk (справа от :: здесь не имеет значения, это просто для того, чтобы Shift отображался в истории клавиш)
  2. Щелкните правой кнопкой мыши сценарий в системном трее, нажмите Открыть, выберите «История клавиш» на вкладке «Просмотр».
  3. Введите Shift- несколько раз с каждой клавишей Shift в текстовом редакторе.
  4. Нажмите F5 в окне Истории клавиш и считайте значения виртуальной клавиши для сдвига влево и сдвига вправо ( VKA0 и VKA1 соответственно в моем случае).

Затем я добавил следующие правила в свой скрипт ahk для отправки канала всякий раз, когда я удерживал правую клавишу Shift и нажимал левую клавишу Shift:

 VKA1 amp; VKA0::Send {U 007C}
  

Комментарии:

1. Хороший материал, и чтобы иметь возможность просматривать историю клавиш, ваш скрипт может просто содержать #InstallKeybdHook и ничего больше. Это то, что добавление горячей клавиши сделало бы под капотом. Кроме того, поскольку мы говорили только о сдвиге влево и вправо, а не о чем-то особенном, вас должно устраивать просто RShift amp; LShift::SendInput, | ( SendInput рекомендуемый режим отправки, но не похоже, что это будет иметь какое-либо значение на практике в этом конкретном сценарии)