Вот промежуточный вариант слушалки:
$milli=1 // milliseconds to wait: 1-30 ms recommended
define($init)
if($init=0)
logclear
inc($init)
end_if
// c=ctrl w=win a=alt s=shift
// c w a s / cw ca cs wa ws as / cwa cws cas was / cwas
$awt=400 // wait after pressing: 200-2000 ms recommended
sub(k,$lettr00) //
$k=strconcat("Нажата кнопка ",$lettr00,". ")
print($k)
waitms($awt)
$clp00=strconcat("keypress(#",$lettr00,")")
toclip($clp00)
end_sub
sub(c,$lettr01) //
$c=strconcat("Ctrl-",$lettr01)
print($c)
waitms($awt)
$clp01=strconcat("keydown(#ctrl) keypress(#",$lettr01,") keyup(#ctrl)")
toclip($clp01)
end_sub
sub(w,$lettr02) //
$w=strconcat("Win-",$lettr02)
print($w)
waitms($awt)
$clp02=strconcat("keydown(#win) keypress(#",$lettr02,") keyup(#win)")
toclip($clp02)
end_sub
sub(a,$lettr03) //
$a=strconcat("Alt-",$lettr03)
print($a)
waitms($awt)
$clp03=strconcat("keydown(#alt) keypress(#",$lettr03,") keyup(#alt)")
toclip($clp03)
end_sub
sub(s,$lettr04) //
$s=strconcat("Shift-",$lettr04)
print($s)
waitms($awt)
$clp04=strconcat("keydown(#shift) keypress(#",$lettr04,") keyup(#shift)")
toclip($clp04)
end_sub
sub(cw,$lettr05) //
$cw=strconcat("Ctrl-Win-",$lettr05)
print($cw)
waitms($awt)
$clp05=strconcat("keydown(#ctrl) keydown(#win) keypress(#",$lettr05,") keyup(#win) keyup(#ctrl)")
toclip($clp05)
end_sub
sub(ca,$lettr06) //
$ca=strconcat("Ctrl-Alt-",$lettr06)
print($ca)
waitms($awt)
$clp06=strconcat("keydown(#ctrl) keydown(#alt) keypress(#",$lettr06,") keyup(#alt) keyup(#ctrl)")
toclip($clp06)
end_sub
sub(cs,$lettr07) //
$cs=strconcat("Ctrl-Shift-",$lettr07)
print($cs)
waitms($awt)
$clp07=strconcat("keydown(#ctrl) keydown(#shift) keypress(#",$lettr07,") keyup(#shift) keyup(#ctrl)")
toclip($clp07)
end_sub
sub(wa,$lettr08) //
$wa=strconcat("Win-Alt-",$lettr08)
print($wa)
waitms($awt)
$clp08=strconcat("keydown(#win) keydown(#alt) keypress(#",$lettr08,") keyup(#alt) keyup(#win)")
toclip($clp08)
end_sub
sub(ws,$lettr09) //
$ws=strconcat("Win-Shift-",$lettr09)
print($ws)
waitms($awt)
$clp09=strconcat("keydown(#win) keydown(#shift) keypress(#",$lettr09,") keyup(#shift) keyup(#win)")
toclip($clp09)
end_sub
sub(as,$lettr10) //
$as=strconcat("Alt-Shift-",$lettr10)
print($as)
waitms($awt)
$clp10=strconcat("keydown(#alt) keydown(#shift) keypress(#",$lettr10,") keyup(#shift) keyup(#alt)")
toclip($clp10)
end_sub
sub(cwa,$lettr11) //
$cwa=strconcat("Ctrl-Win-Alt-",$lettr11)
print($cwa)
waitms($awt)
$clp11=strconcat("keydown(#ctrl) keydown(#win) keydown(#alt) keypress(#",$lettr11,") keyup(#alt) keyup(#win) keyup(#ctrl)")
toclip($clp11)
end_sub
sub(cws,$lettr12) //
$cws=strconcat("Ctrl-Win-Shift-",$lettr12)
print($cws)
waitms($awt)
$clp12=strconcat("keydown(#ctrl) keydown(#win) keydown(#shift) keypress(#",$lettr12,") keyup(#shift) keyup(#win) keyup(#ctrl)")
toclip($clp12)
end_sub
sub(cas,$lettr13) //
$cas=strconcat("Ctrl-Alt-Shift-",$lettr13)
print($cas)
waitms($awt)
$clp13=strconcat("keydown(#ctrl) keydown(#alt) keydown(#shift) keypress(#",$lettr13,") keyup(#shift) keyup(#alt) keyup(#ctrl)")
toclip($clp13)
end_sub
sub(was,$lettr14) //
$was=strconcat("Win-Alt-Shift-",$lettr14)
print($was)
waitms($awt)
$clp14=strconcat("keydown(#win) keydown(#alt) keydown(#shift) keypress(#",$lettr14,") keyup(#shift) keyup(#alt) keyup(#win)")
toclip($clp14)
end_sub
sub(cwas,$lettr15) //
$cwas=strconcat("Ctrl-Win-Alt-Shift-",$lettr15)
print($cwas)
waitms($awt)
$clp15=strconcat("keydown(#ctrl) keydown(#win) keydown(#alt) keydown(#shift) keypress(#",$lettr15,") keyup(#shift) keyup(#alt) keyup(#win) keyup(#ctrl)")
toclip($clp15)
end_sub
if(ISKEYDOWN(#shift) = 1) // Shift
IF((ISKEYDOWN(#alt) = 0) & (ISKEYDOWN(#win) = 0) & (ISKEYDOWN(#ctrl) = 0))
if(ISKEYDOWN(#A) = 1)
s("A")
end_if
end_if
end_if
if(ISKEYDOWN(#win) = 1) // Win
IF((ISKEYDOWN(#alt) = 0) & (ISKEYDOWN(#SHIFT) = 0) & (ISKEYDOWN(#ctrl) = 0))
if(ISKEYDOWN(#A) = 1)
w("A")
end_if
if(ISKEYDOWN(#Y) = 1)
w("Y")
end_if
end_if
if(ISKEYDOWN(#shift) = 1)
IF((ISKEYDOWN(#alt) = 0) & (ISKEYDOWN(#ctrl) = 0))
if(ISKEYDOWN(#A) = 1)
ws("A")
end_if
if(ISKEYDOWN(#Y) = 1)
ws("Y")
end_if
end_if
end_if
end_if
if(ISKEYDOWN(#alt) = 1) // Alt
IF((ISKEYDOWN(#win) = 0) & (ISKEYDOWN(#SHIFT) = 0) & (ISKEYDOWN(#ctrl) = 0))
IF(ISKEYDOWN(#A) = 1) // Alt + A
a("A")
END_IF
end_if
if(ISKEYDOWN(#SHIFT) = 1)
if(ISKEYDOWN(#win) = 1)
if(ISKEYDOWN(#ctrl) = 0)
if(ISKEYDOWN(#A) = 1)
was("A")
end_if
if(ISKEYDOWN(#Y) = 1)
was("Y")
end_if
end_if
else
if(ISKEYDOWN(#ctrl) = 0)
if(ISKEYDOWN(#A) = 1)
as("A")
end_if
end_if
end_if
else
if(ISKEYDOWN(#win) = 1)
if(ISKEYDOWN(#ctrl) = 0)
if(ISKEYDOWN(#A) = 1)
wa("A")
end_if
if(ISKEYDOWN(#Y) = 1)
wa("Y")
end_if
end_if
end_if
end_if
end_if
waitms($milli)
IF(ISKEYDOWN(#CTRL) = 1) // Ctrl
IF((ISKEYDOWN(#win) = 0) & (ISKEYDOWN(#SHIFT) = 0) & (ISKEYDOWN(#ALT) = 0))
IF(ISKEYDOWN(#A) = 1) // Ctrl + A
c("A")
END_IF
END_IF
waitms($milli)
IF(ISKEYDOWN(#WIN) = 1) // +WIN
IF((ISKEYDOWN(#SHIFT) = 0) & (ISKEYDOWN(#ALT) = 0))
IF(ISKEYDOWN(#A) = 1) // Ctrl + WIN + A
cw("A")
END_IF
if(ISKEYDOWN(#Y) = 1)
cw("Y")
end_if
end_if
if(ISKEYDOWN(#shift) = 1)
if(ISKEYDOWN(#alt) = 0)
if(ISKEYDOWN(#A) = 1)
cws("A")
end_if
if(ISKEYDOWN(#Y) = 1)
cws("Y")
end_if
else
if(ISKEYDOWN(#A) = 1)
cwas("A")
end_if
if(ISKEYDOWN(#Y) = 1)
cwas("Y")
end_if
end_if
else
if(ISKEYDOWN(#alt) = 1)
if(ISKEYDOWN(#A) = 1)
cwa("A")
end_if
if(ISKEYDOWN(#Y) = 1)
cwa("Y")
end_if
end_if
end_if
END_IF
waitms($milli)
IF(ISKEYDOWN(#ALT) = 1) // +ALT
IF((ISKEYDOWN(#win) = 0) & (ISKEYDOWN(#SHIFT) = 0))
IF(ISKEYDOWN(#A) = 1) // Ctrl + ALT + A
ca("A")
END_IF
end_if
if(ISKEYDOWN(#SHIFT) = 1)
if(ISKEYDOWN(#win) = 0)
if(ISKEYDOWN(#A) = 1)
cas("A")
end_if
end_if
end_if
END_IF
waitms($milli)
IF(ISKEYDOWN(#SHIFT) = 1) // +SHIFT
IF(ISKEYDOWN(#A) = 1) // Ctrl + SHIFT + A
cs("A")
END_IF
END_IF
waitms($milli)
ELSE
// отдельные клавиши
IF((ISKEYDOWN(#win) = 0) & (ISKEYDOWN(#SHIFT) = 0) & (ISKEYDOWN(#ALT) = 0))
IF(ISKEYDOWN(#A) = 1) // A
k("A")
END_IF
END_IF
waitms($milli)
END_IF
waitms(1)
И несмотря на все прописанные варианты комбинаций, в скрипте почему-то всё равно не работают некоторые линии комбинаций в текущей версии (периодически почему-то не работают Win-Alt+..., Win-Ctrl+...). Или мож просто тормозит, потому что щас проверил снова и заработало, хотя в прошлый раз не работало, зато перестала работать линия Win-Shift+.., которая перед этим работала -- возможно, имеет значение, в каком порядке набирать комбы: Win-Shift+.. либо же Shift-Win+.., так что мейби надо поставить значения делеев ещё поменьше либо убрать некоторые зазоры по времени.
ПС. Кажись допёр, почему линии не прожимались: просто ввиду занятости комбы Вин-А я поменял тестовый хоткей на Вин-У, но сделал это не везде, и в обработчике через Ктрл осталось прежнее Вин-А, и я ломился в закрытую дверь. Щас потестим.
Винт, а мона ещё пару вопросов? Во-первых, такой функционал уже мож кто-то делал на сайте? И потом, если нет, то.. эта муристика ваще комут нужна тут?))
Да, и вот ещё интересно а можно делать так?)) waitms(0.85)
Или там всё-таки берётся интеджер/раунд от дроби?
ППС. Чуть подправил бету, убрал баги. Единственно, теперь не работает с правым ВИНом в виду того, что кликер разделяет Вин на левый и правый. Чего, к сожалению, нельзя сказать про другие модификаторы. Ну переделывать уже под правый Win не буду пока, вломы)) Ещё немного погоняю и выложу бетку в отдельную ветку.