Яндекс.Метрика

Remapping Keys and Buttons -Autohotkey

Примечание: нижеописанная возможность не поддерживается в Windows95/98/Me или для джойстиков. Для того, чтобы осуществить переназначение в Windows 9x, см. последний раздел данной статьи. Для того чтобы осуществить переназначение для джойстиков, см. ссылку в оригинале данной статьи.

Примечание: нижеописанная возможность не поддерживается в Windows95/98/Me или для джойстиков. Для того, чтобы осуществить переназначение в Windows 9x, см. последний раздел данной статьи. Для того чтобы осуществить переназначение для джойстиков, см. ссылку в оригинале данной статьи.

Встроенное переназначение [v1.0.40+]

Синтаксис для функции встроенного переназначения выглядит следующим образом:

ИсходнаяКлавиша::КонечнаяКлавиша

Например, скрипт, состоящий только из следующий строчки, мог бы использовать клавишу "a" в качестве клавиши "b":

a::b

Как видно из примера, сама клавиша "b" не изменяется. Клавиша "b" будет продолжать посылаться нажатием клавиши "b" до тех пор, пока вы не произведете ее переназначение на какую-нибудь другую клавишу, как это показано в следующем примере:

a::b b::a

В этих примерах используются строчные буквы, так как это имеет существенное значение. Например, в следующей строчке будет выводиться заглавная буква "В" в том случае, когда вы печатаете либо "а" либо "А":

a::B

Для того, чтобы осуществить переназначение мыши вместо клавиатуры, используется аналогичный подход. Например:

MButton::Shift ; Использует среднюю кнопку мыши в качестве клавиши Shift. XButton1::LButton ; Использует четвертую кнопку мыши в качестве левой кнопки мыши. RAlt::RButton ; Использует левую клавишу Alt в качестве правой кнопки мыши.

Ниже приведено несколько практических примеров переназначения:

Capslock::Ctrl ; Клавиша Capslock становится клавишей Control. Xbutton1::^Lbutton ; Четвертая кнопка мыши производит ;щелчок левой кнопкой мыши при нажатой клавише Control. Ralt::AppsKey ; Правая клавиша Alt становится клавишей Apps ;(которая является клавишей, открывающей контекстное меню). RCtrl::Rwin ; Использует правую клавишу Control в качестве правой клавиши Windows. Ctrl::Alt ; Обе клавиши Control становятся клавишей Alt. См. ниже раздел об Alt-Tab ^x::^c ; Клавиша Control-X имитирует Control-C. ;Также ^!x имитирует ^!c, и ^+x имитирует ^+c и т.д. RWin::Return ; Заменяет правую клавишу Windows простым нажатием return.

Вы можете попробовать скопировать эти примеры в новый текстовой файл, например в "Remap.ahk", и затем запустить его.

Полный список названий клавиш и кнопок мыши см. в статье "Список клавиш и кнопок мыши/джойстика".

Комментарии

Переназначение клавиши или кнопки мыши работает в следующих ситуациях:

  • Модификатор, например Control или Shift, удерживается в нажатом состоянии в то время, пока исходная клавиша приведет в действие модификатор для конечной клавиши. Например:
    b::a ; Имитирует Control-A, если нажать на Control-B.
  • Capslock работает для переназначенных клавиш так же, как и для обычных.
  • Конечная клавиша или кнопка мыши удерживается до тех пор, пока вы продолжаете удерживать исходную клавишу. Однако некоторые игры не поддерживают функцию переназначения, и в этих случаях клавиатура и мышка работают, как будто они не переназначены.
  • Переназначенные клавиши автоматически повторяются, пока их удерживают (исключая те клавиши, которые при переназначении становятся кнопками мыши).

Когда скрипт запускается, каждое переназначение преобразуется в пару горячих клавиш. Например, скрипт, содержащий a::b, дает тот же результат, что и скрипт, содержащий следующие две горячие клавиши:

*a:: SetKeyDelay -1 ;Если переназначенной клавишей является кнопка мышки, вместо SetKeyDelay используется SetMouseDelay. Send{Blind}{b down} return *a up:: SetKeyDelay -1 Send {Blind}{b up} return

Однако эти горячие клавиши варьируются в зависимости от следующих обстоятельств:

  1. Когда исходной клавишей является клавиша LCtrl, а конечной клавишей - клавиша Alt, строчка Send {Blind}{Lalt down} заменяется на Send {Blind}{LCtrl up}{Lalt down}. То же самое происходит в случае, если исходной клавишей является RCtrl, за исключением того, что используется {RCtrl up}.
  2. Когда клавиша, будучи переназначенной, становится кнопкой мыши (например, RCtrl::RButton), первая горячая клавиша заменяется на следующее, что предотвращает возможность автоповторов клавиатуры от возникающих повторяющихся кликов мыши:
    *RCtrl:: SetMouseDelay -1 if not GetKeyState("RButton") ; т.е. правая кнопка мыши еще не нажата. Send{Blind}{RButton down} return

С того момента, когда переназначение преобразовалось в горячие клавиши, как описано выше, их активизирует команда Suspend. Подобным образом команда Hotkey может блокировать или модифицировать переназначение. Например, следующие две команды будут блокировать переназначение a::b.

Hotkey, *a, off Hotkey, *a up, off

Несмотря на то, что переназначенная клавиша может запускать обычную горячую клавишу, она не может запускать горячую клавишу мыши или перехваченную горячую клавишу (см. описание команды #UseHook). Например, если задано переназначение a::b, нажатие Ctrl-Alt-A будет запускать горячую клавишу ^!b, если это не перехваченная горячая клавиша. Если это перехваченная горячая клавиша, вы можете определить ^!a как горячую клавишу в том случае, если вы хотите, чтобы клавиши Ctrl-Alt-A выполняли то же действие, что и Ctrl-Alt-B. Например:

a::b ^!a:: ^!b:: ToolTip Вы нажали %A_ThisHotkey%. Return

Проблемы Alt-Tab: в случае, если какая-либо клавиша или кнопка мыши переназначена в Alt, эта клавиша, возможно, не будет работать в Alt-Tab должным образом. Единственным искусственным приемом является добавление горячей клавиши *Tab::Send {Blind}{Tab} - но нужно помнить, что, вероятно, это будет препятствием при реальном использовании клавиши Alt в Alt-Tab. Следовательно, это следует использовать только тогда, когда вы имитируете нажатие Alt-Tab исключительно с помощью переназначенных клавиш и/или с помощью приемов, описанных в статье "Горячие клавиши для мыши, джойстика и клавиатуры".

В добавление к списку клавиш и кнопок мыши в статье "Список клавиш и кнопок мыши/джойстика", исходная клавиша может также быть виртуальной клавишей (VKnn) или скан-кодом (SCnnn), как описано в той же статье. То же самое верно и для конечной клавиши, за исключением того, что она может при желании задавать скан-код после виртуальной клавиши. Например, sc01e::vk42sc030 является эквивалентом a::b в большинстве клавиатурных раскладок.

Для того, чтобы блокировать клавишу, а не производить переназначение, сделайте ее горячей клавишей просто при помощи return. Например, F1::return будет блокировать клавишу F1.

Следующие клавиши не поддерживаются методом встроенного переназначения:

  • Колесико мыши (WheelUp и WheelDown).
  • Pause и Break в качестве конечных клавиш (так как они совпадают с названиями команд).
  • Знак процентов (%) в качестве конечной клавиши (вместо нее используется метод VK/SC, см. статью о команде Send).
  • "Return" в качестве конечной клавиши (вместо этого используется "Enter").

Кроме того, клавиатура может использоваться для перемещения курсора мыши. Например, см. скрипт "Using Keyboard Numpad as a Mouse" в статье "Script Showcase" в оригинале справки.

Методика переназначения клавиш и кнопок мыши для Windows 95/98/Me

Рекомендованным методом является использование Send и KeyWait. Например, следующая горячая клавиша делает "A" клавишей "стрелка влево":

a:: Send {Left down} ; Нажать клавишу "стрелка влево". KeyWait a ; Подождать, пока пользователь отпустит клавишу. Send {Left up} ; Отпустить клавишу "стрелка влево". return
Теги страницы: