Моя 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 по умолчанию?