Здравствуйте, как создать условие для нажатой кнопки к примеру мне нужно при каждом разе когда я нажимаю цифру F1 нужно задействовать F1,F2,F3,F4,F5,F6,F7
но так что бы скрипт не повторял эти действия через определенный промежуток времени а только по нажатию самой кнопки то есть скрипт должен работать без остановки
и ждать когда я нажму F1 и только тогда он должен задействовать все эти кнопки примерно вот так вот я пытался сделать
--lua
Local Send VK_F1 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76
--lua
while 1 do
if IsKeyPress(F1) then
Send {F1, F2, F3, F4, F5, F6, F7}
wait (300)
end
wait (20)
end
/* Virtual key alias Hex-value */
#define VK_LBUTTON 0x01 //Left mouse button
#define VK_RBUTTON 0x02 //Right mouse button
#define VK_CANCEL 0x03
#define VK_MBUTTON 0x04 //Middle mouse button
#define VK_XBUTTON1 0x05 //Mouse4 thumb button (back)
#define VK_XBUTTON2 0x06 //Mouse5 thumb button (forward)
/*
* 0x07 : unassigned
*/
#define VK_BACK 0x08
#define VK_TAB 0x09
/*
* 0x0A - 0x0B : reserved
*/
#define VK_CLEAR 0x0C
#define VK_RETURN 0x0D
#define VK_SHIFT 0x10
#define VK_CONTROL 0x11
#define VK_MENU 0x12
#define VK_PAUSE 0x13
#define VK_CAPITAL 0x14
#define VK_ESCAPE 0x1B
#define VK_CONVERT 0x1C
#define VK_NONCONVERT 0x1D
#define VK_ACCEPT 0x1E
#define VK_MODECHANGE 0x1F
#define VK_SPACE 0x20
#define VK_PRIOR 0x21
#define VK_NEXT 0x22
#define VK_END 0x23
#define VK_HOME 0x24
#define VK_LEFT 0x25
#define VK_UP 0x26
#define VK_RIGHT 0x27
#define VK_DOWN 0x28
#define VK_SELECT 0x29
#define VK_EXECUTE 0x2B
#define VK_SNAPSHOT 0x2C
#define VK_INSERT 0x2D
#define VK_DELETE 0x2E
#define VK_HELP 0x2F
/*
* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
* 0x40 : unassigned
* VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
*/
#define VK_LWIN 0x5B
#define VK_RWIN 0x5C
#define VK_APPS 0x5D
/*
* 0x5E : reserved
*/
#define VK_SLEEP 0x5F
#define VK_NUMPAD0 0x60
#define VK_NUMPAD1 0x61
#define VK_NUMPAD2 0x62
#define VK_NUMPAD3 0x63
#define VK_NUMPAD4 0x64
#define VK_NUMPAD5 0x65
#define VK_NUMPAD6 0x66
#define VK_NUMPAD7 0x67
#define VK_NUMPAD8 0x68
#define VK_NUMPAD9 0x69
#define VK_MULTIPLY 0x6A
#define VK_ADD 0x6B
#define VK_SEPARATOR 0x6C
#define VK_SUBTRACT 0x6D
#define VK_DECIMAL 0x6E
#define VK_DIVIDE 0x6F
#define VK_F1 0x70
#define VK_F2 0x71
#define VK_F3 0x72
#define VK_F4 0x73
#define VK_F5 0x74
#define VK_F6 0x75
#define VK_F7 0x76
#define VK_F8 0x77
#define VK_F9 0x78
#define VK_F10 0x79
#define VK_F11 0x7A
#define VK_F12 0x7B
#define VK_F13 0x7C
#define VK_F14 0x7D
#define VK_F15 0x7E
#define VK_F16 0x7F
#define VK_F17 0x80
#define VK_F18 0x81
#define VK_F19 0x82
#define VK_F20 0x83
#define VK_F21 0x84
#define VK_F22 0x85
#define VK_F23 0x86
#define VK_F24 0x87
/*
* 0x88 - 0x8F : unassigned
*/
#define VK_NUMLOCK 0x90
#define VK_SCROLL 0x91
/*
* 0x97 - 0x9F : unassigned
*/
#define VK_LSHIFT 0xA0
#define VK_RSHIFT 0xA1
#define VK_LCONTROL 0xA2
#define VK_RCONTROL 0xA3
#define VK_LMENU 0xA4
#define VK_RMENU 0xA5
Второй вариант был самым близким)
Для второго варианта обязательно подключение модулей.
Не до конца понятно нужно ли вам, чтобы клавиши оставались зажатыми пока вы держите f1, или просто быстро нажались. Подозреваю, что просто быстрое нажатие.
--lua
local ffi = require("ffi")
ffi.cdef[[short GetAsyncKeyState(int vKey);
void Sleep(int ms);
]]
local C = ffi.C
while true do
-- 112 - это код клавиши F1.
if C.GetAsyncKeyState(112) ~= 0 then -- если нажата левая кнопка мыши
log("Нажали")
-- F1 не нажимаем - мы ее и так нажали.
send("{F2}")
send("{F3}")
send("{F4}")
send("{F5}")
send("{F6}")
send("{F7}")
while C.GetAsyncKeyState(112) ~= 0 do C.Sleep(1) end -- ждать пока она нажата
end
C.Sleep(1)
end
--lua
local key = {
mouse_1 = 0x01, -- VK_LBUTTON Left mouse button
mouse_2 = 0x02, -- VK_RBUTTON Right mouse button
--0x03 -- VK_CANCEL Control-break processing
mouse_middle = 0x04, -- VK_MBUTTON Middle mouse button (three-button mouse)
mouse_4 = 0x05, -- VK_XBUTTON1 X1 mouse button
mouse_5 = 0x06, -- VK_XBUTTON2 X2 mouse button
--0x07 -- Undefined
backspace = 0x08, -- VK_BACK BACKSPACE key
tab = 0x09, -- VK_TAB TAB key
--0x0A-0B -- Reserved
--0x0C -- VK_CLEAR CLEAR key
enter = 0x0D, -- VK_RETURN ENTER key
--0x0E-0F -- Undefined
shift = 0x10, -- VK_SHIFT SHIFT key
ctrl = 0x11, -- VK_CONTROL CTRL key
alt = 0x12, -- VK_MENU ALT key
pause = 0x13, -- VK_PAUSE PAUSE key
caps_lock = 0x14, -- VK_CAPITAL CAPS LOCK key
--0x15 -- VK_KANA IME Kana mode
--0x15 -- VK_HANGUEL IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
--0x15 -- VK_HANGUL IME Hangul mode
--0x16 -- Undefined
--0x17 -- VK_JUNJA IME Junja mode
--0x18 -- VK_FINAL IME final mode
--0x19 -- VK_HANJA IME Hanja mode
--0x19 -- VK_KANJI IME Kanji mode
--0x1A -- Undefined
esc = 0x1B, -- VK_ESCAPE ESC key
escape = 0x1B, -- VK_ESCAPE ESC key
--0x1C -- VK_CONVERT IME convert
--0x1D -- VK_NONCONVERT IME nonconvert
--0x1E -- VK_ACCEPT IME accept
--0x1F -- VK_MODECHANGE IME mode change request
spacebar = 0x20, -- VK_SPACE SPACEBAR
page_up = 0x21, -- VK_PRIOR PAGE UP key
page_down = 0x22, -- VK_NEXT PAGE DOWN key
["end"] = 0x23, -- VK_END END key
_end = 0x23, -- VK_END END key
home = 0x24, -- VK_HOME HOME key
left = 0x25, -- VK_LEFT LEFT ARROW key
up = 0x26, -- VK_UP UP ARROW key
right = 0x27, -- VK_RIGHT RIGHT ARROW key
down = 0x28, -- VK_DOWN DOWN ARROW key
--0x29 -- VK_SELECT SELECT key
--0x2A -- VK_PRINT PRINT key
--0x2B -- VK_EXECUTE EXECUTE key
print_screen = 0x2C, -- VK_SNAPSHOT PRINT SCREEN key
insert = 0x2D, -- VK_INSERT INS key
delete = 0x2E, -- VK_DELETE DEL key
--0x2F -- VK_HELP HELP key
["0"] = 0x30, -- 0 key
["1"] = 0x31, -- 1 key
["2"] = 0x32, -- 2 key
["3"] = 0x33, -- 3 key
["4"] = 0x34, -- 4 key
["5"] = 0x35, -- 5 key
["6"] = 0x36, -- 6 key
["7"] = 0x37, -- 7 key
["8"] = 0x38, -- 8 key
["9"] = 0x39, -- 9 key
--0x3A-40 -- Undefined
a = 0x41, -- A key
b = 0x42, -- B key
c = 0x43, -- C key
d = 0x44, -- D key
e = 0x45, -- E key
f = 0x46, -- F key
g = 0x47, -- G key
h = 0x48, -- H key
i = 0x49, -- I key
j = 0x4A, -- J key
k = 0x4B, -- K key
l = 0x4C, -- L key
m = 0x4D, -- M key
n = 0x4E, -- N key
o = 0x4F, -- O key
p = 0x50, -- P key
q = 0x51, -- Q key
r = 0x52, -- R key
s = 0x53, -- S key
t = 0x54, -- T key
u = 0x55, -- U key
v = 0x56, -- V key
w = 0x57, -- W key
x = 0x58, -- X key
y = 0x59, -- Y key
z = 0x5A, -- Z key
A = 0x41, -- A key
B = 0x42, -- B key
C = 0x43, -- C key
D = 0x44, -- D key
E = 0x45, -- E key
F = 0x46, -- F key
G = 0x47, -- G key
H = 0x48, -- H key
I = 0x49, -- I key
J = 0x4A, -- J key
K = 0x4B, -- K key
L = 0x4C, -- L key
M = 0x4D, -- M key
N = 0x4E, -- N key
O = 0x4F, -- O key
P = 0x50, -- P key
Q = 0x51, -- Q key
R = 0x52, -- R key
S = 0x53, -- S key
T = 0x54, -- T key
U = 0x55, -- U key
V = 0x56, -- V key
W = 0x57, -- W key
X = 0x58, -- X key
Y = 0x59, -- Y key
Z = 0x5A, -- Z key
win = 0x5B, -- VK_LWIN Left Windows key (Natural keyboard)
--0x5C -- VK_RWIN Right Windows key (Natural keyboard)
--0x5D -- VK_APPS Applications key (Natural keyboard)
--0x5E -- Reserved
sleep = 0x5F, -- VK_SLEEP Computer Sleep key
num_0 = 0x60, -- VK_NUMPAD0 Numeric keypad 0 key
num_1 = 0x61, -- VK_NUMPAD1 Numeric keypad 1 key
num_2 = 0x62, -- VK_NUMPAD2 Numeric keypad 2 key
num_3 = 0x63, -- VK_NUMPAD3 Numeric keypad 3 key
num_4 = 0x64, -- VK_NUMPAD4 Numeric keypad 4 key
num_5 = 0x65, -- VK_NUMPAD5 Numeric keypad 5 key
num_6 = 0x66, -- VK_NUMPAD6 Numeric keypad 6 key
num_7 = 0x67, -- VK_NUMPAD7 Numeric keypad 7 key
num_8 = 0x68, -- VK_NUMPAD8 Numeric keypad 8 key
num_9 = 0x69, -- VK_NUMPAD9 Numeric keypad 9 key
["num_*"] = 0x6A,
num_multiply = 0x6A, -- VK_MULTIPLY Multiply key
["num_+"] = 0x6B,
num_plus = 0x6B, -- VK_ADD Add key
--0x6C -- VK_SEPARATOR Separator key
["num_-"] = 0x6D,
num_minus = 0x6D, -- VK_SUBTRACT Subtract key
["num_."] = 0x6E,
num_del = 0x6E, -- VK_DECIMAL Decimal key
["num_/"] = 0x6F,
num_devide = 0x6F,
num_slash = 0x6F, -- VK_DIVIDE Divide key
F1 = 0x70, -- VK_F1 F1 key
F2 = 0x71, -- VK_F2 F2 key
F3 = 0x72, -- VK_F3 F3 key
F4 = 0x73, -- VK_F4 F4 key
F5 = 0x74, -- VK_F5 F5 key
F6 = 0x75, -- VK_F6 F6 key
F7 = 0x76, -- VK_F7 F7 key
F8 = 0x77, -- VK_F8 F8 key
F9 = 0x78, -- VK_F9 F9 key
F10 = 0x79, -- VK_F10 F10 key
F11 = 0x7A, -- VK_F11 F11 key
F12 = 0x7B, -- VK_F12 F12 key
F13 = 0x7C, -- VK_F13 F13 key
F14 = 0x7D, -- VK_F14 F14 key
F15 = 0x7E, -- VK_F15 F15 key
F16 = 0x7F, -- VK_F16 F16 key
F17 = 0x80, -- VK_F17 F17 key
F18 = 0x81, -- VK_F18 F18 key
F19 = 0x82, -- VK_F19 F19 key
F20 = 0x83, -- VK_F20 F20 key
F21 = 0x84, -- VK_F21 F21 key
F22 = 0x85, -- VK_F22 F22 key
F23 = 0x86, -- VK_F23 F23 key
F24 = 0x87, -- VK_F24 F24 key
f1 = 0x70, -- VK_F1 F1 key
f2 = 0x71, -- VK_F2 F2 key
f3 = 0x72, -- VK_F3 F3 key
f4 = 0x73, -- VK_F4 F4 key
f5 = 0x74, -- VK_F5 F5 key
f6 = 0x75, -- VK_F6 F6 key
f7 = 0x76, -- VK_F7 F7 key
f8 = 0x77, -- VK_F8 F8 key
f9 = 0x78, -- VK_F9 F9 key
f10 = 0x79, -- VK_F10 F10 key
f11 = 0x7A, -- VK_F11 F11 key
f12 = 0x7B, -- VK_F12 F12 key
f13 = 0x7C, -- VK_F13 F13 key
f14 = 0x7D, -- VK_F14 F14 key
f15 = 0x7E, -- VK_F15 F15 key
f16 = 0x7F, -- VK_F16 F16 key
f17 = 0x80, -- VK_F17 F17 key
f18 = 0x81, -- VK_F18 F18 key
f19 = 0x82, -- VK_F19 F19 key
f20 = 0x83, -- VK_F20 F20 key
f21 = 0x84, -- VK_F21 F21 key
f22 = 0x85, -- VK_F22 F22 key
f23 = 0x86, -- VK_F23 F23 key
f24 = 0x87, -- VK_F24 F24 key
--0x88-8F -- Unassigned
num_lock = 0x90, -- VK_NUMLOCK NUM LOCK key
scroll_lock = 0x91, -- VK_SCROLL SCROLL LOCK key
--0x92-96 -- OEM specific
--0x97-9F -- Unassigned
shift_left = 0xA0, -- VK_LSHIFT Left SHIFT key
shift_right = 0xA1, -- VK_RSHIFT Right SHIFT key
ctrl_left = 0xA2, -- VK_LCONTROL Left CONTROL key
ctrl_right = 0xA3, -- VK_RCONTROL Right CONTROL key
menu_left = 0xA4, -- VK_LMENU Left MENU key
menu_right = 0xA5, -- VK_RMENU Right MENU key
browser_back = 0xA6, -- VK_BROWSER_BACK Browser Back key
browser_forward = 0xA7, -- VK_BROWSER_FORWARD Browser Forward key
browser_refresh = 0xA8, -- VK_BROWSER_REFRESH Browser Refresh key
browser_stop = 0xA9, -- VK_BROWSER_STOP Browser Stop key
browser_search = 0xAA, -- VK_BROWSER_SEARCH Browser Search key
browser_favorites = 0xAB, -- VK_BROWSER_FAVORITES Browser Favorites key
browser_home = 0xAC, -- VK_BROWSER_HOME Browser Start and Home key
mute = 0xAD, -- VK_VOLUME_MUTE Volume Mute key
volume_down = 0xAE, -- VK_VOLUME_DOWN Volume Down key
volume_up = 0xAF, -- VK_VOLUME_UP Volume Up key
media_next = 0xB0, -- VK_MEDIA_NEXT_TRACK Next Track key
media_prev = 0xB1, -- VK_MEDIA_PREV_TRACK Previous Track key
media_stop = 0xB2, -- VK_MEDIA_STOP Stop Media key
media_play = 0xB3, -- VK_MEDIA_PLAY_PAUSE Play/Pause Media key
media_pasue = 0xB3, -- VK_MEDIA_PLAY_PAUSE Play/Pause Media key
launch_mail = 0xB4, -- VK_LAUNCH_MAIL Start Mail key
launch_media = 0xB5, -- VK_LAUNCH_MEDIA_SELECT Select Media key
launch_app_1 = 0xB6, -- VK_LAUNCH_APP1 Start Application 1 key
launch_app_2 = 0xB6, -- VK_LAUNCH_APP1 Start Application 2 key
--0xB8-B9 -- Reserved
[";"] = 0xBA, -- VK_OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key
[":"] = 0xBA, -- VK_OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key
["+"] = 0xBB, -- VK_OEM_PLUS For any country/region, the '+' key
[","] = 0xBC, -- VK_OEM_COMMA For any country/region, the ',' key
["-"] = 0xBD, -- VK_OEM_MINUS For any country/region, the '-' key
["."] = 0xBE, -- VK_OEM_PERIOD For any country/region, the '.' key
["/"] = 0xBF, -- VK_OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key
["?"] = 0xBF, -- VK_OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key
["`"] = 0xC0, -- VK_OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key
["~"] = 0xC0, -- VK_OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key
--0xC1-D7 -- Reserved
--0xD8-DA -- Unassigned
["["] = 0xDB, -- VK_OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key
["{"] = 0xDB, -- VK_OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key
["\\"] = 0xDC, -- VK_OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key
["|"] = 0xDC, -- VK_OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key
["]"] = 0xDD, -- VK_OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key
["}"] = 0xDD, -- VK_OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key
["'"] = 0xDE, -- VK_OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key
['"'] = 0xDE, -- VK_OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key
--0xDF -- VK_OEM_8 Used for miscellaneous characters; it can vary by keyboard.
--0xDF -- VK_OEM_8 Used for miscellaneous characters; it can vary by keyboard.
--0xE0 -- Reserved
--0xE1 -- OEM specific
--0xE2 -- VK_OEM_102 Either the angle bracket key or the backslash key on the RT 102-key keyboard
--0xE3-E4 -- OEM specific
--0xE5 -- VK_PROCESSKEY IME PROCESS key
--0xE6 -- OEM specific
--0xE7 -- VK_PACKET Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP
--0xE8 -- Unassigned
--0xE9-F5 -- OEM specific
--0xF6 -- VK_ATTN Attn key
--0xF7 -- VK_CRSEL CrSel key
--0xF8 -- VK_EXSEL ExSel key
--0xF9 -- VK_EREOF Erase EOF key
play = 0xFA, -- VK_PLAY Play key
zoom = 0xFB, -- VK_ZOOM Zoom key
--0xFC -- VK_NONAME Reserved
--0xFD -- VK_PA1 PA1 key
--0xFE -- VK_OEM_CLEAR Clear key
}
return key
--lua
local ffi = require("ffi")
ffi.cdef[[short GetAsyncKeyState(int vKey);
void Sleep(int ms);
]]
local C = ffi.C
local GetAsyncKeyState = function(vKey)
local state = C.GetAsyncKeyState(vKey)
return bit.band(state, 0x8000) ~= 0, bit.band(state, 1) ~= 0
end
while true do
if ({GetAsyncKeyState(112)})[2] then -- если нажата левая кнопка мыши
log("Нажали")
-- F1 не нажимаем - мы ее и так нажали.
send("{F2}")
send("{F3}")
send("{F4}")
send("{F5}")
send("{F6}")
send("{F7}")
end
C.Sleep(1)
end
Спасибо большое 1 и 3 вариант идеально подходит вот только когда я нажимаю F1 он его получается как бы пропускает жму еще раз F1 он срабатывает а так все четко работает https://ibb.co/1bctyJ8
вообще по идее f1 должен проходить прозрачно с клавиатуры. недопонимаю причин такого поведния...
а вот так оно работает если не добавлять f1 видно на панели что все клавиши отработали как надо кроме f1
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)