2

Here is the code I have :

[::
Send [
Input, Char, T2 L1
if Char = a
{
    Send â
    return
}
Send %Char%
return

When I type [ then a, it has a normal behaviour and produces â. But, when I type [ then p, the character [ is not printed. The problem is the second line (Send [) in which [ is the character being remapped.

I tried the following without success :

  • Send `[

  • Send {[}

I want to print [ even if it is being remapped.

1 ответ1

2

Используйте $ в качестве модификатора перед горячей клавишей, т.е. $[:: .

В документации AHK говорится:

Обычно это необходимо только в том случае, если сценарий использует команду Send для отправки ключей, которые содержат саму горячую клавишу, которая в противном случае могла бы вызвать его самопроизвольный запуск. Точное поведение префикса $ зависит от операционной системы:

В Windows NT4/2k/XP или более поздних версиях: префикс $ заставляет использовать хук клавиатуры для реализации этой горячей клавиши, что в качестве побочного эффекта предотвращает ее запуск командой Send. Префикс $ эквивалентен указанному #UseHook где-то выше определения этой горячей клавиши.

В Windows 95/98/Me: горячая клавиша отключена во время выполнения своего потока и повторно включена после. Как побочный эффект, если #MaxThreadsPerHotkey установлен выше, чем 1, он будет вести себя так, как будто установлен для 1 для таких горячих клавиш.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .