Автокликер Clickermann :: Форум
Основной раздел => Предложения => Topic started by: AandD on October 05, 2015, 01:35:03 PM
-
Собственно сабж, очень часто необходима функция, возвращающая номер нажатой клавиши вместо длинного полотна iskeydown
-
THREAD(Функция возвращающая текущую нажатую клавишу)
IF(ISKEYDOWN(#SPACE) = 1)
LOGWRITE("SPACE!")
WAITMS(50)
END_IF
END_THREAD
-
Ну не все же клавиши надо отслеживать, а только некоторые (если конечно вы не хотите написать кейлогер).
Можно и шире взглянуть на проблему, например отслеживать 222 клавиши. Это в ущерб скорости выполнения скрипта...
THREAD(Функция возвращающая текущую нажатую клавишу)
IF(ISKEYDOWN($key) = 1)
LOGWRITE($key)
WAITMS(10)
END_IF
INC($key)
IF($key > 222)
$key = 1
END_IF
END_THREAD
Но в этом случае, наверно следует сделать список клавиш исключаемых из отслеживания.
Короче тестить надо, я лишь предложил один из вариантов решения проблемы.
-
Но в этом случае, наверно следует сделать список клавиш исключаемых из отслеживания.
Короче тестить надо, я лишь предложил один из вариантов решения проблемы.
всё верно, и реализуемо.
strseparate("Левая кнопка мыши :1:Правая кнопка мыши :2:Средняя кнопка мыши :4:Backspace :8:Tab :9:Enter :13:Shift :16:Ctrl :17:Alt :18:Pause :19:CapsLock :20:Esc :27:Пробел :32:PageUp :33:PageDown :34:End :35:Home :36:стрелка влево :37:стрелка вверх :38:стрелка вправо :39:стрелка вниз :40:Insert :45:Delete :46:0 :48:1 :49:2 :50:3 :51:4 :52:5 :53:6 :54:7 :55:8 :56:9 :57:A :65:B :66:C :67:D :68:E :69:F :70:G :71:H :72:I :73:J :74:K :75:L :76:M :77:N :78:O :79:P :80:Q :81:R :82:S :83:T :84:U :85:V :86:W :87:X :88:Y :89:Z :90:левая клавиша Windows :91:правая клавиша Windows :92:клавиша Applications :93:NumPad 0 :96:NumPad 1 :97:NumPad 2 :98:NumPad 3 :99:NumPad 4 :100:NumPad 5 :101:NumPad 6 :102:NumPad 7 :103:NumPad 8 :104:NumPad 9 :105:NumPad * :106:NumPad + :107:NumPad - :109:NumPad . :110:NumPad / :111:F1 :112:F2 :113:F3 :114:F4 :115:F5 :116:F6 :117:F7 :118:F8 :119:F9 :120:F10 :121:F11 :122:F12 :123:NumLock :144:ScrollLock :145:PrintScreen :154:Meta (wtf?) :157:; :186:= :187:, :188:- :189:. :190:/ :191:~ :192:[ :219:\ :220:] :221:' :222", ":", $keys)
$size_keys = ARRSIZE ($keys)
while(1)
waitms(20)
FOR($i=1,$i<$size_keys,2)
IF(iskeydown($keys[$i])=1)
print($keys[$i-1])
$n = 0
WHILE(iskeydown($keys[$i])=1)
waitms(10)
IF($n > 40)
print($keys[$i-1])
waitms(10)
else
inc($n)
END_IF
END_CYC
END_IF
END_CYC
END_CYC
данный скрипт немного грузит ЦП :D, но я думаю на деле такие минимальные задержки не потребуются. конечно вот этот кусокIF($n > 40)
print($keys[$i-1])
waitms(10)
else
inc($n)
END_IF
на практике будет лишним, зато с ним красиво печатает в логе :D, с задержкой при длительном нажатии на клавишу.
-
Я зная что можно отлавливать каждую клавишу, но:
1 простыня обработчиков
2 задержки
3 В отсутствие функций и колбеков код преврашается в полотно из кусков, и пожалуйста не надо про сопрограммы они совсем не то,
вместо этого
вызов
$var = getcr()
а дальше кейсами,
А смысл был в том чтобы, продублировать нажатия хpadder через ps/2, и да я реализовал сам, но простыня кода изза ограичености функционала удручает, потому и появилась просьба, нормальной реализации,
Конечно идельно если бы автор прекрутил js или lua как альтернатиный язык
-
напомнил одну реализацию, увиденную мной недавно:
bool IsBukva(char symbol)
{
switch(symbol)
{
case'a':return 1;break;
case'b':return 1;break;
case'c':return 1;break;
case'd':return 1;break;
case'e':return 1;break;
case'f':return 1;break;
case'g':return 1;break;
case'h':return 1;break;
case'i':return 1;break;
case'j':return 1;break;
case'k':return 1;break;
case'l':return 1;break;
case'm':return 1;break;
case'n':return 1;break;
case'o':return 1;break;
case'p':return 1;break;
case'q':return 1;break;
case'r':return 1;break;
case's':return 1;break;
case't':return 1;break;
case'u':return 1;break;
case'v':return 1;break;
case'w':return 1;break;
case'x':return 1;break;
case'y':return 1;break;
case'z':return 1;break;
case'A':return 1;break;
case'B':return 1;break;
case'C':return 1;break;
case'D':return 1;break;
case'E':return 1;break;
case'F':return 1;break;
case'G':return 1;break;
case'H':return 1;break;
case'I':return 1;break;
case'J':return 1;break;
case'K':return 1;break;
case'L':return 1;break;
case'M':return 1;break;
case'N':return 1;break;
case'O':return 1;break;
case'P':return 1;break;
case'Q':return 1;break;
case'R':return 1;break;
case'S':return 1;break;
case'T':return 1;break;
case'U':return 1;break;
case'V':return 1;break;
case'W':return 1;break;
case'X':return 1;break;
case'Y':return 1;break;
case'Z':return 1;break;
default:return 0;
}
}