Как мне заставить Windows игнорировать автозапуск и вместо этого передавать эту горячую клавишу непосредственно в активное окно?

#autohotkey

#автозапуск

Вопрос:

В моей 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:

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

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

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

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

1. Именно графика Intel была проблемой. Я понятия не имею, как вы это узнали. Несмотря на это, это сработало как шарм! Спасибо за дополнительную информацию о самоссылке.

2. очень полезно в Windows 10 остановить вращение экрана Ctrl Alt вправо и Ctrl Alt Влево. Это полностью сработало, несмотря на изменения Gpedit.msc (в другом месте) для отключения горячих клавиш. Обучение Windows 10. Теперь горячие клавиши VirtualWin работают как чемпион.