|
Обшибочка, _+_ |
|
|
Levo222 |
6.7.2019, 14:55
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Пробовал код для нажатия клавишь в таймауте 1
Код --lua local button = { {"f1",1}, -- таймаут в секундах {"f2",2}, {"f3",0.5}, }
for i = 1, #button do button[i][3] = os.clock() + button[i][2] end
local main = function(button) for i = 1, #button do if button[i][3] < os.clock() then send217(button[i][1]) button[i][3] = os.clock() + button[i][2] end end end
while 1 do main(button) end когда поставил милисекунды т.е. 0.5, 0.6, 0,8 в таймаутах и т.д. скрипт просто закрывал пилот, в чем может быть дело? Как написать для милисекунд И еще Как будет выглядеть подобный для 6-ти клавиш?
|
|
|
|
Levo222 |
6.7.2019, 18:21
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(Fors1k @ 6.7.2019, 20:09) Опиши полностью задачу, что должен делать скрипт.
В идеале нажимать кнопки с разными интервалами. Одни чаще другие реже. Но по нажатию на определенные ключи должен останавливаться/переходить к() уступая место ручному управлению. Т.е. к примеру жмется автоматически а, Б, С, а - с интервалом 60 мс, Б - 70, с - 80, но если нажать на Т, то T начинает жаться до тех пор пока клавиша нажата. Те. он есть по сути такой скрипт Код --lua do local back = package.path package.path = "luaPlugins\\winapi\\?.lua;"..package.path setfenv(1, require'winapi') require[[winapi.keyboard]] package.path = back end -- Поолучаем состояние клавиши: -- state - нажата/отжата -- toggle - для лампочек горит/не горит. while 1 do wait (1) local state, toggle = GetKeyState(0x91) local stateC = GetKeyState(0x43) local state5 = GetKeyState(0x35) local stateV = GetKeyState(0x56) log(tostring(toggle),tostring(state)) log(tostring(toggle1),tostring(state1)) if toggle and state1 then wait (1) send217 ("1") else if toggle and stateC then wait (1) send217 ("c") else if toggle and state5 then wait (1) send217 ("5") else if toggle and stateV then wait (1) send217 ("v") else end end end end Но без интервального нажатия, просто ручное заспамливание клавиш. Нужно соединить вот это 1
Код --lua local button = { {"f1",1}, -- таймаут в секундах {"f2",2}, {"f3",0.5} }
for i = 1, #button do button[i][3] = os.clock() + button[i][2] end
local main = function(button) for i = 1, #button do if button[i][3] < os.clock() then send217(button[i][1]) button[i][3] = os.clock() + button[i][2] end end end
while 1 do main(button) end И вот это 2
Код --lua do local back = package.path package.path = "luaPlugins\\winapi\\?.lua;"..package.path setfenv(1, require'winapi') require[[winapi.keyboard]] package.path = back end -- Поолучаем состояние клавиши: -- state - нажата/отжата -- toggle - для лампочек горит/не горит. while 1 do wait (1) local state, toggle = GetKeyState(0x91) local stateC = GetKeyState(0x43) local state5 = GetKeyState(0x35) local stateV = GetKeyState(0x56) log(tostring(toggle),tostring(state)) log(tostring(toggle1),tostring(state1)) if toggle and state1 then wait (1) send217 ("1") else if toggle and stateC then wait (1) send217 ("c") else if toggle and state5 then wait (1) send217 ("5") else if toggle and stateV then wait (1) send217 ("v") else end end end end
|
|
|
|
cirus |
6.7.2019, 18:32
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26707
Пользователь №: 16.971
Возраст: 29
|
Цитата local button = { {"f1",1}, -- таймаут в секундах {"f2",2}, {"f3",0.5}, } Лишняя запятая. Код local button = { {"f1",1}, -- таймаут в секундах {"f2",2}, {"f3",0.5} }
|
|
|
|
Levo222 |
6.7.2019, 18:36
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 6.7.2019, 22:32) Лишняя запятая. Код local button = { {"f1",1}, -- таймаут в секундах {"f2",2}, {"f3",0.5} } а) Окно пилота почему-то всёравно закрывается, я не могу понять по какой причине. Просто останавливаешь скрипт и оно закрывается При нажатии на кнопку стоп
|
|
|
|
Levo222 |
6.7.2019, 23:12
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Итак что в данном скрипте означает 2? Если button[3]это количество кнопок то +button[i][2]? Код --lua local button = { {"f1",1}, -- таймаут в секундах {"f2",2}, {"f3",0.5}, }
for i = 1, #button do button[i][3] = os.clock() + button[i][2] end
local main = function(button) for i = 1, #button do if button[i][3] < os.clock() then send217(button[i][1]) button[i][3] = os.clock() + button[i][2] end end end
while 1 do main(button) end Вобщем сделал общий скрипт но он почему-то не работает Код --lua local button = { {"f1",0.06}, --Интервал в секундах {"f2",0.07}, {"f3",0.08}, {"{f4}",0.05}, {"{f5}",1.1}, {"{f6}",0.9} }
for i = 1, #button do button[i][6] = os.clock() + button[i][2] end
local main = function(button) for i = 1, #button do if button[i][6] < os.clock() then
send217(button[i][1]) button[i][6] = os.clock() + button[i][2] end end end while 1 do main(button) end --fix
В каком-то месте должна быть вставка проверки текущего нажатия клавиши, чтобы она прерывала ход выполнения for i = 1, #button do и спамила ту клавишу?
|
|
|
|
cirus |
6.7.2019, 23:43
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26707
Пользователь №: 16.971
Возраст: 29
|
Цитата Если button[3]это количество кнопок то +button[i][2]? Для начала в этом коде разберитесь: Код --lua local button = { {"f1",0.06}, {"f2",0.07}, {"f3",0.08}, {"{f4}",0.05}, {"{f5}",1.1}, {"{f6}",0.9} }
log "clear" log "mode compact" for i = 1, #button do button[i][3] = os.clock() + button[i][2] end
for i = 1, #button do log(button[i][1] .. " " .. button[i][2] .. " " .. button[i][3]) end button[1][1]=f1, button[1][2]=0.06, button[1][3]=время следующего нажатия кнопки f1 button[2][1]=f2, button[2][2]=0.07, button[2][3]=время следующего нажатия кнопки f2 и т. д.
|
|
|
|
Levo222 |
7.7.2019, 0:27
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 7.7.2019, 3:43) button[1][1]=f1, button[1][2]=0.06, button[1][3]=время следующего нажатия кнопки f1 button[2][1]=f2, button[2][2]=0.07, button[2][3]=время следующего нажатия кнопки f2 и т. д.
Okay, тогда я маленько переборщил с цифрами. Код --lua do local back = package.path package.path = "luaPlugins\\winapi\\?.lua;"..package.path setfenv(1, require'winapi') require[[winapi.keyboard]] package.path = back end
local button = { {"f1",0.06}, --Интервал в секундах {"f2",0.07}, {"f3",0.08}, {"f4",0.05}, {"f5",1.1}, {"f6",0.9} } for i = 1, #button do button[i][3] = os.clock() + button[i][2] end local main = function(button) for i = 1, #button do if button[i][3] < os.clock() then send217(button[i][1]) button[i][3] = os.clock() + button[i][2] -- 111 end end end while 1 do main(button) end Теперь нужно как-то прервать функцию main, чтобы на время нажатия заданных клавиш цикл for не работал Код local stateC = GetKeyState(0x43) if toggle and stateC then wait (1) send217 ("c") else
|
|
|
|
cirus |
7.7.2019, 0:37
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26707
Пользователь №: 16.971
Возраст: 29
|
Примерно так, если я правильно понял что нужно: код
Код --lua do local back = package.path package.path = "luaPlugins\\winapi\\?.lua;"..package.path setfenv(1, require'winapi') require[[winapi.keyboard]] package.path = back end
local button = { {"f1",0.06}, --Интервал в секундах {"f2",0.07}, {"f3",0.08}, {"f4",0.05}, {"f5",1.1}, {"f6",0.9} }
local button2 = {0x31, 0x32, 0x33} -- 1 2 3, клаивиши, которые прерывают отправку клавиш из таблицы button
for i = 1, #button do button[i][3] = os.clock() + button[i][2] end
local pause = function() for i = 1, #button2 do -- проверяем не нажата ли клавиша local state=GetKeyState(button2[i]) while state do -- ждать пока клавиша нажата log("Нажата клавиша с кодом: " .. button2[i]) wait (10) state=GetKeyState(button2[i]) end end end
local main = function(button) for i = 1, #button do pause() -- вызов функции, которая проверяет нажатие клавиш if button[i][3] < os.clock() then send217(button[i][1]) button[i][3] = os.clock() + button[i][2] end end end
while 1 do main(button) wait (1) end
|
|
|
|
Levo222 |
7.7.2019, 0:46
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 7.7.2019, 4:37) Примерно так, если я правильно понял что нужно: код
Код --lua do local back = package.path package.path = "luaPlugins\\winapi\\?.lua;"..package.path setfenv(1, require'winapi') require[[winapi.keyboard]] package.path = back end
local button = { {"f1",0.06}, --Интервал в секундах {"f2",0.07}, {"f3",0.08}, {"f4",0.05}, {"f5",1.1}, {"f6",0.9} }
local button2 = {0x31, 0x32, 0x33} -- 1 2 3, клаивиши, которые прерывают отправку клавиш из таблицы button
for i = 1, #button do button[i][3] = os.clock() + button[i][2] end
local pause = function() for i = 1, #button2 do -- проверяем не нажата ли клавиша local state=GetKeyState(button2[i]) while state do -- ждать пока клавиша нажата log("Нажата клавиша с кодом: " .. button2[i]) wait (10) state=GetKeyState(button2[i]) end end end
local main = function(button) for i = 1, #button do pause() -- вызов функции, которая проверяет нажатие клавиш if button[i][3] < os.clock() then send217(button[i][1]) button[i][3] = os.clock() + button[i][2] end end end
while 1 do main(button) wait (1) end Спасибо, если я вставляю в цикл проверки нажатия само нажатие Код local pause = function() for i = 1, #button2 do -- проверяем не нажата ли клавиша local state=GetKeyState(button2[i]) while state do -- ждать пока клавиша нажата log("Нажата клавиша с кодом: " .. button2[i]) wait (10) state=GetKeyState(button2[i]) if state={0x32} then wait (1) send217 ("r") else end end end end Это не работает Чему должен быть равен state? к примеру state={0x32} И почему мне выдаёт левые коды? т.е. на 52 даёт 82, на 31 - 49, на 33 51 и т.д?
|
|
|
|
cirus |
7.7.2019, 2:05
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26707
Пользователь №: 16.971
Возраст: 29
|
Цитата И почему мне выдаёт левые коды? т.е. на 52 даёт 82, на 31 - 49, на 33 51 и т.д? 0x52 в шестнадцатеричной системе это 82 в десятичной. Открыть блокнот, привязаться Ctrl+A, запустить скрипт. Будет печатать буквы a,b,c,d,e,f. Если нажать клавиши 1, 2 или 3, то будет печатать нажатую клавишу. код
Код --lua do local back = package.path package.path = "luaPlugins\\winapi\\?.lua;"..package.path setfenv(1, require'winapi') require[[winapi.keyboard]] package.path = back end
local button = { {"a",0.1}, {"b",0.2}, {"c",0.3}, {"d",0.4}, {"e",0.5}, {"f",0.6} }
local button2 = {0x31, 0x32, 0x33} -- 1 2 3, клавиши, которые прерывают отправку клавиш из таблицы button
for i = 1, #button do button[i][3] = os.clock() + button[i][2] end
local pause = function() for i = 1, #button2 do -- проверяем не нажата ли клавиша local state=GetKeyState(button2[i]) while state do -- ждать пока клавиша нажата log("Нажата клавиша с кодом: " .. string.format("%x", button2[i])) send('{' .. button2[i] .. '}') wait (10) state=GetKeyState(button2[i]) end end end
local main = function(button) for i = 1, #button do pause() -- вызов функции, которая проверяет нажатие клавиш if button[i][3] < os.clock() then send217(button[i][1]) button[i][3] = os.clock() + button[i][2] end end end
while 1 do main(button) wait (1) end
|
|
|
|
Levo222 |
7.7.2019, 3:01
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(cirus @ 7.7.2019, 6:05) код
Код --lua do local back = package.path package.path = "luaPlugins\\winapi\\?.lua;"..package.path setfenv(1, require'winapi') require[[winapi.keyboard]] package.path = back end
local button = { {"a",0.1}, {"b",0.2}, {"c",0.3}, {"d",0.4}, {"e",0.5}, {"f",0.6} }
local button2 = {0x31, 0x32, 0x33} -- 1 2 3, клавиши, которые прерывают отправку клавиш из таблицы button
for i = 1, #button do button[i][3] = os.clock() + button[i][2] end
local pause = function() for i = 1, #button2 do -- проверяем не нажата ли клавиша local state=GetKeyState(button2[i]) while state do -- ждать пока клавиша нажата log("Нажата клавиша с кодом: " .. string.format("%x", button2[i])) send('{' .. button2[i] .. '}') wait (10) state=GetKeyState(button2[i]) end end end
local main = function(button) for i = 1, #button do pause() -- вызов функции, которая проверяет нажатие клавиш if button[i][3] < os.clock() then send217(button[i][1]) button[i][3] = os.clock() + button[i][2] end end end
while 1 do main(button) wait (1) end Прозвучит конечно странно, но что будет если я одновременно 2 клавиши нажму?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|