1

Тема: AHK: Неожиданное поведение автозамен

Capslock & ,::Send, {Raw}<
Capslock & .::Send, {Raw}>

::...::…
::->::&#8594;
::<-::&#8592;

Замены работают очень своеобразно.

-они отлично работают, если набирать на английской раскладке, без использования хоткеев
-если на английской раскладке использовать хоткей для "<" или ">", то они не работают
-если на русском вводить точки, то замена тоже не срабатывает.

отсюда у меня складывается ощущение, что AHK генерит код, который "слушает" клавиши, а не то, что фактически вводится.
это можно как-то лечить? или смириться с этим? (наставить костылей можно).

2 (изменено: creature.ws, 2012-09-03 18:14:51)

Re: AHK: Неожиданное поведение автозамен

By default, hotstrings are never triggered by keystrokes produced by any AutoHotkey script. This avoids the possibility of an infinite loop where hotstrings trigger each other over and over. In v1.1.06 and later, this behaviour can be controlled with #InputLevel and SendLevel. However, auto-replace hotstrings always use send level 0 and therefore never trigger hook hotkeys or hotstrings.

-если на русском вводить точки, то замена тоже не срабатывает.

Срабатывает.

(наставить костылей можно).

Например?

3

Re: AHK: Неожиданное поведение автозамен

Срабатывает.

Ага. Разобрался. Только если перед тремя точками стоит пробел (не буква).

Например?

Самый тупой - получать текст из контрола и делать автозамены =_=

4

Re: AHK: Неожиданное поведение автозамен

Hotstrings and Auto-replace / Options пишет:

? (question mark): The hotstring will be triggered even when it is inside another word; that is, when the character typed immediately before it is alphanumeric. For example, if :?:al::airline is a hotstring, typing "practical " would produce "practicairline ". Use ?0 to turn this option back off.

#InputLevel 1
    Capslock & ,::Send, {Raw}<
    Capslock & .::Send, {Raw}>
#InputLevel 0

:?:...::…
:?:->::&#8594;
:?:<-::&#8592;

Замены работают очень своеобразно.

Работают так, как определено разработчиком, опций настройки под себя» достаточно.

5

Re: AHK: Неожиданное поведение автозамен

Чтоб не мучаться с (не)русской раскладкой клавиатуры, на форуме несчетное кол-во раз рекомендовали пользоваться виртуальными кодами клавиш
Так же, по моему мнению, нажатие "клавиша+модификатор" нисколько не ухудшает эргономику работы с горячими клавишами, по сравнению с нажатием нескольких клавиш для автозамены.
Отсюда возник такой вариант :
CapsLock + точка(запятая) - печатает ">" ("<") ;   Эти же сочетания вместе с левым шифтом печатают "&#8594;"  ("&#8592;")
Порядок нажатия CapsLock и Shift роли не играют.

CapsLock & vkBE::
Send % GetKeyState("LShift", "P") ? "&#8594;" : ">" 
return
CapsLock & vkBC::
Send % GetKeyState("LShift", "P") ? "&#8592;" : "<"
return
:*?:...::…

6

Re: AHK: Неожиданное поведение автозамен

creature.ws пишет:
Hotstrings and Auto-replace / Options пишет:

? (question mark): The hotstring will be triggered even when it is inside another word; that is, when the character typed immediately before it is alphanumeric. For example, if :?:al::airline is a hotstring, typing "practical " would produce "practicairline ". Use ?0 to turn this option back off.

#InputLevel 1
    Capslock & ,::Send, {Raw}<
    Capslock & .::Send, {Raw}>
#InputLevel 0

:?:...::…
:?:->::&#8594;
:?:<-::&#8592;

Замены работают очень своеобразно.

Работают так, как определено разработчиком, опций настройки под себя» достаточно.

Приведенный код записал в файл, запустил… Не работает. Со вставленными угловыми скобками с помощью капса. Ни на русской, ни на английской раскладке.

7 (изменено: creature.ws, 2012-09-19 10:55:05)

Re: AHK: Неожиданное поведение автозамен

Код корректно работает в английской раскладке.

Автозамены -> <- в русской раскладке не работают потому как нет в русской раскладке клавиш с  символами > и <.
Для ввода требуемого символа Send отправляет не «нажатие кнопки с "<"», а что-то типа alt+код символа.
В русской раскладке не выполняется условие срабатывания автозамены — нажатие vkBE или vkBC перед|после ввода "-".