Как заставить Windows игнорировать AutoHotKey и вместо этого передавать эту горячую клавишу прямо в активное окно? - PullRequest
1 голос
/ 11 апреля 2019

Моя cPanel имеет текстовый редактор, который позволяет использовать несколько курсоров, используя Ctrl-Alt-Up, Ctrl-Alt-Down, Ctrl-Alt-Right и Ctrl-Alt-Left. К сожалению, в Windows предусмотрены горячие клавиши по умолчанию для этих комбинаций клавиш, которые поворачивают изображение на экране. Когда я пытаюсь использовать эти комбинации клавиш в текстовом редакторе, Windows захватывает их, прежде чем они могут попасть в активное окно.

Сначала я искал, чтобы увидеть, есть ли какой-нибудь достаточно простой способ отключить определенные горячие клавиши Windows по умолчанию. Мой поиск только показал результаты, которые отключают все горячие клавиши. Затем я решил скачать AutoHotKeys и посмотреть, смогу ли я написать скрипт для достижения того, что я хотел сделать. Ниже приведены некоторые примеры; Я буду придерживаться Ctrl-Alt-Right только для того, чтобы выбрать одно из четырех:

Первый блок кода одинаков во всех 4 попытках :

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
SetTitleMatchMode, 2      ;this and the next line should only perform the scripted
#IfWinActive Opera        ;hotkey if the active window's title contains 'Opera'

Попытка 1 : горячая клавиша корректно пропускает действие поворота экрана по умолчанию в Windows и отправляет нажатия клавиш в текстовый редактор в Opera. Однако текстовый редактор вводит строку «ight», где бы ни находился курсор. В текстовом редакторе нет горячей клавиши Ctrl-Alt-R, и она также не должна быть горячей клавишей Windows по умолчанию. Таким образом, он отправляет Ctrl-Alt-R в Opera, которая ничего не делает. Затем он отправляет «ight», который напечатан. (Это «самая успешная» из 4 попыток, но определенно не достигает желаемого результата):

^!Right::
Send, ^!Right
return

Попытка 2 : отличается от # 1 только с SendPlay вместо Send. Горячая клавиша снова корректно игнорирует действие поворота экрана по умолчанию в Windows. Тем не менее, текстовый редактор, похоже, ничего не делает:

^!Right::
SendPlay, ^!Right
return

Попытка 3 : Вернемся к Send, но теперь с фигурными скобками вокруг второго «Право». Теперь горячая клавиша даже не обходит действие поворота экрана по умолчанию в Windows (это действительно ошеломляет меня, потому что я подумал бы, что результат Попытки # 1 доказывает, что активное окно Opera было найдено, и нажатие клавиши Ctrl-Alt-Right является правильным читается ^!Right в первой строке. Я так растерялся, почему добавление фигурных скобок во 2-й строке сводит на нет эти вещи, которые, как кажется, уже должны были произойти):

^!Right::
Send, ^!{Right}
return

Попытка 4 : отличается от # 3 только с SendPlay вместо Send. Горячая клавиша снова корректно игнорирует действие поворота экрана по умолчанию в Windows. Тем не менее, текстовый редактор, похоже, ничего не делает:

^!Right::
SendPlay, ^!{Right}
return

Подведем итог :

----------|  Curly Braces    |       No Curly Braces       |
----------|------------------|-----------------------------|
Send      | Win Dflt Action  | types "ight" in text editor |
SendPlay  |   no action      |        no action            |

Итак, вот последний вопрос , исходя из этой таблицы, мне кажется, что Send - определенно правильный путь. Если (как указывает попытка 3) указанная фигурная скобка вызывает вращение дисплея, как я могу отправить это нажатие клавиши в активное окно без взлома Windows? Очевидно, #IfWinActive Opera работает правильно, когда фигурные скобки не используются. Возможно, есть другая директива, которая полностью запрещает или игнорирует действие Windows по умолчанию?

1 Ответ

1 голос
/ 11 апреля 2019

Если вы не хотите использовать функцию поворота экрана, это можно отключить на графической панели.Я считаю, что это связано с графическим приложением Intel.Это может быть что-то вроде: щелкните правой кнопкой мыши по рабочему столу, выберите параметры графики, выберите горячие клавиши, затем нажмите «Отключить».Это просто предположение, так как у меня его нет на компьютере, который я использую, но я встречал его на других компьютерах раньше.

Что касается ваших горячих клавиш, вам нужны фигурные скобки вокруг слова«Правильно», или он просто отправит отдельные символы, так же, как на самом деле его набрав.Другая проблема заключается в том, что вам нужна $ перед вашей горячей клавишей, так как она ссылается на себя;то есть он посылает те же нажатия клавиш, которые его активируют.

Если у вас не было возможности проверить файл справки, я определенно рекомендую его.https://www.autohotkey.com/docs/AutoHotkey.htm

...