Встроенное переназначение [v1.0.40+]
Синтаксис для функции встроенного переназначения выглядит следующим образом:
Например, скрипт, состоящий только из следующий строчки, мог бы использовать клавишу «a» в качестве клавиши «b»:
Как видно из примера, сама клавиша «b» не изменяется. Клавиша «b» будет продолжать посылаться нажатием клавиши «b» до тех пор, пока вы не произведете ее переназначение на какую-нибудь другую клавишу, как это показано в следующем примере:
В этих примерах используются строчные буквы, так как это имеет существенное значение. Например, в следующей строчке будет выводиться заглавная буква «В» в том случае, когда вы печатаете либо «а» либо «А»:
Для того, чтобы осуществить переназначение мыши вместо клавиатуры, используется аналогичный подход. Например:
Ниже приведено несколько практических примеров переназначения:
Вы можете попробовать скопировать эти примеры в новый текстовой файл, например в «Remap.ahk», и затем запустить его.
Полный список названий клавиш и кнопок мыши см. в статье «Список клавиш и кнопок мыши/джойстика».
Комментарии
Переназначение клавиши или кнопки мыши работает в следующих ситуациях:
Когда скрипт запускается, каждое переназначение преобразуется в пару горячих клавиш. Например, скрипт, содержащий a::b, дает тот же результат, что и скрипт, содержащий следующие две горячие клавиши:
Однако эти горячие клавиши варьируются в зависимости от следующих обстоятельств:
С того момента, когда переназначение преобразовалось в горячие клавиши, как описано выше, их активизирует команда Suspend. Подобным образом команда Hotkey может блокировать или модифицировать переназначение. Например, следующие две команды будут блокировать переназначение a::b.
Несмотря на то, что переназначенная клавиша может запускать обычную горячую клавишу, она не может запускать горячую клавишу мыши или перехваченную горячую клавишу (см. описание команды #UseHook). Например, если задано переназначение a::b, нажатие Ctrl-Alt-A будет запускать горячую клавишу ^!b, если это не перехваченная горячая клавиша. Если это перехваченная горячая клавиша, вы можете определить ^!a как горячую клавишу в том случае, если вы хотите, чтобы клавиши Ctrl-Alt-A выполняли то же действие, что и Ctrl-Alt-B. Например:
Проблемы Alt-Tab: в случае, если какая-либо клавиша или кнопка мыши переназначена в Alt, эта клавиша, возможно, не будет работать в Alt-Tab должным образом. Единственным искусственным приемом является добавление горячей клавиши *Tab::Send
В добавление к списку клавиш и кнопок мыши в статье «Список клавиш и кнопок мыши/джойстика», исходная клавиша может также быть виртуальной клавишей (VKnn) или скан-кодом (SCnnn), как описано в той же статье. То же самое верно и для конечной клавиши, за исключением того, что она может при желании задавать скан-код после виртуальной клавиши. Например, sc01e::vk42sc030 является эквивалентом a::b в большинстве клавиатурных раскладок.
Для того, чтобы блокировать клавишу, а не производить переназначение, сделайте ее горячей клавишей просто при помощи return. Например, F1::return будет блокировать клавишу F1.
Следующие клавиши не поддерживаются методом встроенного переназначения:
Кроме того, клавиатура может использоваться для перемещения курсора мыши. Например, см. скрипт «Using Keyboard Numpad as a Mouse» в статье «Script Showcase» в оригинале справки.
Клавиатура
Примечание: названия буквенных и цифровых клавиш точно такие же, как и сами символы этих клавиш. То есть, клавиша «b» записывается как b, а клавиша «5» как 5.
Следующие названия клавиш используются, когда Numlock выключен:
Эти названия клавиш используются при включенном Numlock’e:
Клавиши расширенных функций Мультимедийных и Интернет-клавиатур:
Возможна запись VKnn, где nn является шестнадцатиричным виртуальным кодом клавиши. Несмотря на то, что этот редко используемый метод поддерживается всеми версиями программы, только с версии 1.0.38.02 и выше для некоторых типов горячих клавиш реализовано предотвращение отслеживания их функцией «keyboard hook» (обработчик клавиатурных прерываний). Например, следующая комбинация клавиш не использует обработчик клавиатурных прерываний (keyboard hook), и как следствие может быть запущена нажатием как клавиши Home, так и NumpadHome:
Джойстик
Несмотря на то, что следующие управляющие элементы джойстика не могут использоваться как горячие клавиши, их можно использовать при помощи команды GetKeyState:
JoyR: руль джойстика или 4-ая ось джойстика.
JoyU и JoyV: 5-ая и 6-ая оси джойстика.
JoyPOV: the point-of-view (hat) control (POV control, «шляпка» или «переключатель видов»; например, вид глазами игрока).
JoyName: название джойстика.
JoyButtons: количество кнопок, поддерживаемых джойстиком (не всегда точное).
JoyAxes: количество направлений, поддерживаемых джойстиком.
JoyInfo: генерирует строку, состоящую из нуля или более знаков, иллюстрирующих возможности джойстика: Z (имеется Z направление), R (имеется R направление), U (имеется U направление), V (имеется V направление), P (имеется POV control), D (POV control имеет ограниченное количество дискретных/промежуточных настроек), C (POV control передает непрерывные/точные данные). Пример строки: ZRUVPD.
Несколько джойстиков: если вы используете несколько джойстиков одновременно, то для более точной адресации команды используйте при записи номер джойстика перед именем клавиши джойстика. Например запись 2joy1 будет обозначать первую кнопку второго джойстика.
Примечание: если у вас возникли проблемы с определением скриптами вашего джойстика, вы можете попробовать изменить номер джойстика с 1 на что-нибудь другое, даже несмотря на то, что к компьютеру у вас подключен всего один. Неизвестно, по каким мистическим причинам, но иногда это вместе с использованием нашего тестового скрипта даёт положительный результат.
Использование джойстика как мыши: специальный скрипт превращает ваш джойстик в мышь (см. ссылку в оригинале статьи).
Дистанционные пульты управления
Специальные клавиши
Если ваши клавиатура или мышь имеют клавиши, не перечисленные выше, вы всё равно имеете возможность использовать их в качестве горячих клавиш, используя следующий метод:
Список клавиш и кнопок мыши/джойстика
Мышь (работает только с Windows NT/2000/XP)
Поддерживается только Windows 2000/XP:
Клавиатура
Примечание: названия буквенных и цифровых клавиш точно такие же, как и сами символы этих клавиш. То есть, клавиша «b» записывается как b, а клавиша «5» как 5.
Следующие названия клавиш используются, когда Numlock выключен:
Эти названия клавиш используются при включенном Numlock’e:
Примечание: в большинстве случаев работа со следующими шестью клавишами не поддерживается под Windows 95/98/Me. Используйте в этом случае вариант их записи, приведенный выше, вместо следующего:
Клавиши расширенных функций Мультимедийных и Интернет-клавиатур:
Возможна запись VKnn, где nn является шестнадцатиричным виртуальным кодом клавиши. Несмотря на то, что этот редко используемый метод поддерживается всеми версиями программы, только с версии 1.0.38.02 и выше для некоторых типов горячих клавиш реализовано предотвращение отслеживания их функцией «keyboard hook» (обработчик клавиатурных прерываний). Например, следующая комбинация клавиш не использует обработчик клавиатурных прерываний (keyboard hook), и как следствие может быть запущена нажатием как клавиши Home, так и NumpadHome:
Джойстик
Несмотря на то, что следующие управляющие элементы джойстика не могут использоваться как горячие клавиши, их можно использовать при помощи команды GetKeyState:
JoyR: руль джойстика или 4-ая ось джойстика.
JoyU и JoyV: 5-ая и 6-ая оси джойстика.
JoyPOV: the point-of-view (hat) control (POV control, «шляпка» или «переключатель видов»; например, вид глазами игрока).
JoyName: название джойстика.
JoyButtons: количество кнопок, поддерживаемых джойстиком (не всегда точное).
JoyAxes: количество направлений, поддерживаемых джойстиком.
JoyInfo: генерирует строку, состоящую из нуля или более знаков, иллюстрирующих возможности джойстика: Z (имеется Z направление), R (имеется R направление), U (имеется U направление), V (имеется V направление), P (имеется POV control), D (POV control имеет ограниченное количество дискретных/промежуточных настроек), C (POV control передает непрерывные/точные данные). Пример строки: ZRUVPD.
Несколько джойстиков: если вы используете несколько джойстиков одновременно, то для более точной адресации команды используйте при записи номер джойстика перед именем клавиши джойстика. Например запись 2joy1 будет обозначать первую кнопку второго джойстика.
Примечание: если у вас возникли проблемы с определением скриптами вашего джойстика, вы можете попробовать изменить номер джойстика с 1 на что-нибудь другое, даже несмотря на то, что к компьютеру у вас подключен всего один. Неизвестно, по каким мистическим причинам, но иногда это вместе с использованием нашего тестового скрипта даёт положительный результат.
Использование джойстика как мыши: специальный скрипт превращает ваш джойстик в мышь (см. ссылку в оригинале статьи).
Дистанционные пульты управления
Специальные клавиши
Если ваши клавиатура или мышь имеют клавиши, не перечисленные выше, вы всё равно имеете возможность использовать их в качестве горячих клавиш, используя следующий метод (необходимы Windows NT/2000/XP или выше):
[FAQ] Autohotkey (горячие клавиши)
Сообщения : 49
Дата регистрации : 2012-02-27
Возраст : 27
Откуда : Волгоград
Тема: [FAQ] Autohotkey (горячие клавиши) Вт Мар 13, 2012 10:43 am | |
WhichButton | Имя кнопки или направление колеса. Возможные значения: Left (левая, используется по умолчанию, если параметр опущен), Right (правая), Middle (средняя), X1 (четвёртая), X2 (пятая). У первых трёх вместо полного имени можно указывать только первую букву (L, R, M). Пример: MouseClick, X1 |
Однако некоторые приложения не реагируют на количество шагов больше 1. В этом случае используйте цикл, например:
Чтобы автоматически компенсировать возможную взаимозамену пользователем левой и правой кнопок мыши через панель управления операционной системы, вместо MouseClick нужно использовать команду Click.
Параметр Speed игнорируется для режимов SendInput и SendPlay, они перемещают мышь мгновенно (хотя команда SetMouseDelay имеет параметр, влияющий на SendPlay). Чтобы движения мыши выглядели медленными (например, для скрипта, выполняющего демонстрацию для аудитории) используйте SendEvent
Примечания
Эта команда использует метод посылки, задаваемый командой SendMode.
Для имитации щелчка с модификатором используйте до и после команды MouseClick команду Send, как показано в примерах ниже.
Режим посылки SendPlay может успешно генерировать события мыши в большем числе игр, чем другие режимы.
Некоторые приложения и игры затрудняются отслеживать движения мыши, если она движется очень быстро. В этом случае можно использовать команду SetdefaultMouseSpeed для замедления скорости перемещения мыши (но только для режима SendEvent).
Команда BlockInput может использоваться для предотвращения помех генерируемым событиям мыши со стороны реальных движений и щелчков мыши, производимых в это время пользователем. Однако это не требуется для режимов SendInput и SendPlay, т.к. в этих режимах действия пользователя запоминаются и выполняются позже.
После каждого нажатия и каждого отпускания кнопки мыши автоматически делается пауза (за исключением режима SendInput). Используйте команду SetMouseDelay для изменения длины этой паузы.