Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Определение статуса клавиш клавиатуры
cirus
сообщение 31.5.2017, 15:07
Сообщение #1


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Минимальная версия пилота 2.41.
Архив Прикрепленный файл  luaPlugins.zip ( 314,41 килобайт ) Кол-во скачиваний: 1827
распаковать и положить в папку с пилотом.
Синтаксис (lua):
Код
--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 - для лампочек горит/не горит.
local state, toggle = GetKeyState(0x14)
log(tostring(state),tostring(toggle))

Пример1
Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

-- проверка нажата ли клавиша Z
while 1 do
    local state = GetKeyState(90)  -- или  GetKeyState(0x5A)
    if  state then
        log ("Z нажата")
    else
        log ("Z не нажата")
    end
    wait (100)
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

-- проверка включен ли CapsLock
while 1 do
    local state, toggle = GetKeyState(0x14)  -- или GetKeyState(20)
    if  toggle then
        log ("CapsLock включен")
    else
        log ("CapsLock выключен")
    end
    wait (100)
end

Пример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

log "clear" log "mode compact"
-- Дождаться нажатия клавиши Y
while 1 do
    log ("Ждём когда будет нажата клавиша Y")
    local state, toggle = GetKeyState(0x59)
    while not state do
        state, toggle = GetKeyState(0x59)
        wait (10)
    end
    log ("Клавиша Y была нажата")
    log ("Ждём когда будет отпущена клавиша Y")
    while state do
        state, toggle = GetKeyState(0x59)
        wait (10)
    end
    log()
    wait (10)
end


Для устаревшего языка пилота:
Автор плагина Cockney.
KB.zip
Кидать(распаковать) в папку Plugins, которая рядом с пилот должна быть создана.

GetKeyState принимает одну букву латиницы или цифру(не нампад).
GetKeyStateByCode принимает виртуальный код клавиши(см. msdn).
Результат:
0 - не нажата, 1 - нажата

Примеры использования:
Пример 1
Код

// если нажата клавиша q, выполнить какие-то действия
// в данном случае вывести в лог сообщение
if  KB.GetKeyState(q) = 1
    log Нажата клавиша q
end_if
wait 200

Пример 2
Код

if  KB.GetKeyStateByCode(65) = 1
    log Нажата клавиша A
end_if
wait 200

Пример 3
Код

// Проверить не нажата ли любая цифра
for #i 48 57
if  KB.GetKeyStateByCode(#i) = 1
    log Нажата цифра chr(#i)
end_if
end_for
wait 200

Пример 4
Код

// Ожидание нажатия клавиши
log Для продолжения нажать клавишу Y
while  KB.GetKeyState(y) = 0
    wait 100
end_while
log Нажата клавиша Y
end_script

Пример 5
Код

// Проверка нажатия кнопок мыши
if  KB.GetKeyStateByCode(1) = 1
    log Нажата левая кнопка мыши
end_if
if  KB.GetKeyStateByCode(2) = 1
    log Нажата правая кнопка мыши
end_if
wait 100

Коды клавиш
0x01 - VK_LBUTTON Left mouse button
0x02 - VK_RBUTTON Right mouse button
0x03 - VK_CANCEL Control-break processing
0x04 - VK_MBUTTON Middle mouse button (three-button mouse)
0x05 - VK_XBUTTON1 X1 mouse button
0x06 - VK_XBUTTON2 X2 mouse button
0x07 - Undefined
0x08 - VK_BACK BACKSPACE key
0x09 - VK_TAB TAB key
0x0A-0B - Reserved
0x0C - VK_CLEAR CLEAR key
0x0D - VK_RETURN ENTER key
0x0E-0F - Undefined
0x10 - VK_SHIFT SHIFT key
0x11 - VK_CONTROL CTRL key
0x12 - VK_MENU ALT key
0x13 - VK_PAUSE PAUSE key
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
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
0x20 - VK_SPACE SPACEBAR
0x21 - VK_PRIOR PAGE UP key
0x22 - VK_NEXT PAGE DOWN key
0x23 - VK_END END key
0x24 - VK_HOME HOME key
0x25 - VK_LEFT LEFT ARROW key
0x26 - VK_UP UP ARROW key
0x27 - VK_RIGHT RIGHT ARROW key
0x28 - VK_DOWN DOWN ARROW key
0x29 - VK_SELECT SELECT key
0x2A - VK_PRINT PRINT key
0x2B - VK_EXECUTE EXECUTE key
0x2C - VK_SNAPSHOT PRINT SCREEN key
0x2D - VK_INSERT INS key
0x2E - VK_DELETE DEL key
0x2F - VK_HELP HELP key
0x30 - 0 key
0x31 - 1 key
0x32 - 2 key
0x33 - 3 key
0x34 - 4 key
0x35 - 5 key
0x36 - 6 key
0x37 - 7 key
0x38 - 8 key
0x39 - 9 key
0x3A-40 - Undefined
0x41 - A key
0x42 - B key
0x43 - C key
0x44 - D key
0x45 - E key
0x46 - F key
0x47 - G key
0x48 - H key
0x49 - I key
0x4A - J key
0x4B - K key
0x4C - L key
0x4D - M key
0x4E - N key
0x4F - O key
0x50 - P key
0x51 - Q key
0x52 - R key
0x53 - S key
0x54 - T key
0x55 - U key
0x56 - V key
0x57 - W key
0x58 - X key
0x59 - Y key
0x5A - Z key
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
0x5F - VK_SLEEP Computer Sleep key
0x60 - VK_NUMPAD0 Numeric keypad 0 key
0x61 - VK_NUMPAD1 Numeric keypad 1 key
0x62 - VK_NUMPAD2 Numeric keypad 2 key
0x63 - VK_NUMPAD3 Numeric keypad 3 key
0x64 - VK_NUMPAD4 Numeric keypad 4 key
0x65 - VK_NUMPAD5 Numeric keypad 5 key
0x66 - VK_NUMPAD6 Numeric keypad 6 key
0x67 - VK_NUMPAD7 Numeric keypad 7 key
0x68 - VK_NUMPAD8 Numeric keypad 8 key
0x69 - VK_NUMPAD9 Numeric keypad 9 key
0x6A - VK_MULTIPLY Multiply key
0x6B - VK_ADD Add key
0x6C - VK_SEPARATOR Separator key
0x6D - VK_SUBTRACT Subtract key
0x6E - VK_DECIMAL Decimal key
0x6F - VK_DIVIDE Divide key
0x70 - VK_F1 F1 key
0x71 - VK_F2 F2 key
0x72 - VK_F3 F3 key
0x73 - VK_F4 F4 key
0x74 - VK_F5 F5 key
0x75 - VK_F6 F6 key
0x76 - VK_F7 F7 key
0x77 - VK_F8 F8 key
0x78 - VK_F9 F9 key
0x79 - VK_F10 F10 key
0x7A - VK_F11 F11 key
0x7B - VK_F12 F12 key
0x7C - VK_F13 F13 key
0x7D - VK_F14 F14 key
0x7E - VK_F15 F15 key
0x7F - VK_F16 F16 key
0x80 - VK_F17 F17 key
0x81 - VK_F18 F18 key
0x82 - VK_F19 F19 key
0x83 - VK_F20 F20 key
0x84 - VK_F21 F21 key
0x85 - VK_F22 F22 key
0x86 - VK_F23 F23 key
0x87 - VK_F24 F24 key
0x88-8F - Unassigned
0x90 - VK_NUMLOCK NUM LOCK key
0x91 - VK_SCROLL SCROLL LOCK key
0x92-96 - OEM specific
0x97-9F - Unassigned
0xA0 - VK_LSHIFT Left SHIFT key
0xA1 - VK_RSHIFT Right SHIFT key
0xA2 - VK_LCONTROL Left CONTROL key
0xA3 - VK_RCONTROL Right CONTROL key
0xA4 - VK_LMENU Left MENU key
0xA5 - VK_RMENU Right MENU key
0xA6 - VK_BROWSER_BACK Browser Back key
0xA7 - VK_BROWSER_FORWARD Browser Forward key
0xA8 - VK_BROWSER_REFRESH Browser Refresh key
0xA9 - VK_BROWSER_STOP Browser Stop key
0xAA - VK_BROWSER_SEARCH Browser Search key
0xAB - VK_BROWSER_FAVORITES Browser Favorites key
0xAC - VK_BROWSER_HOME Browser Start and Home key
0xAD - VK_VOLUME_MUTE Volume Mute key
0xAE - VK_VOLUME_DOWN Volume Down key
0xAF - VK_VOLUME_UP Volume Up key
0xB0 - VK_MEDIA_NEXT_TRACK Next Track key
0xB1 - VK_MEDIA_PREV_TRACK Previous Track key
0xB2 - VK_MEDIA_STOP Stop Media key
0xB3 - VK_MEDIA_PLAY_PAUSE Play/Pause Media key
0xB4 - VK_LAUNCH_MAIL Start Mail key
0xB5 - VK_LAUNCH_MEDIA_SELECT Select Media key
0xB6 - VK_LAUNCH_APP1 Start Application 1 key
0xB7 - VK_LAUNCH_APP2 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
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
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
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
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.
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
0xFA - VK_PLAY Play key
0xFB - VK_ZOOM Zoom key
0xFC - VK_NONAME Reserved
0xFD - VK_PA1 PA1 key
0xFE - VK_OEM_CLEAR Clear key


Не актуально.
Если используется синтаксис Lua. Прикрепленный файл  Kbd.zip ( 39,37 килобайт ) Кол-во скачиваний: 2531

Распаковать архив, файл закинуть рядом с exe пилота.
Пример 1

Код
--lua
require("Kbd")  -- загрузка функции
while 1 do      -- бесконечный цикл
    if Kbd.IsKeyPress(Kbd.Q) then   -- если нажата клавиша Q
        log("Нажата Q")
        wait (300)
    end
    wait (20)
end


Пример 2

Код
--lua
require("Kbd")
while 1 do
    if (Kbd.IsKeyPress(Kbd.LeftShift) and Kbd.IsKeyPress(Kbd.Q)) then   -- если нажат левый шифт и Q
        log("+++")
        wait (300)
    end
    wait (20)
end


Пример 3

Код
--lua
require("Kbd")
log ("Для продолжения нажмите Y")
while not(Kbd.IsKeyPress(Kbd.Y)) do
    wait (20)
end
log("Нажата клавиша Y")


Коды клавиш

LMB
RMB
Cancel
MMB
X1MB
X2MB
Back
Tab
Clear
Enter
Shift
Ctrl
Alt
Pause
CapsLock
Esc
Space
PageUp
PageDown
End
Home
Left
Up
Right
Down
Select
Print
Execute
PrntScrn
Insert
Delete
Help
Key0
Key1
Key2
Key3
Key4
Key5
Key6
Key7
Key8
Key9
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
LeftWin
RightWin
AppKey
Sleep
LeftWin
Num0
Num1
Num2
Num3
Num4
Num5
Num6
Num7
Num8
Num9
Multiply
Add
Separator
Subtract
Decimal
Divide
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
F13
F14
F15
F16
F17
F18
F19
F20
F21
F22
F23
F24
NumLock
ScrollLock
LeftShift
RightShift
LeftCtrl
RightCtrl
LeftAlt
RightAlt
BrowserBack
BrowserForward
BrowserRefresh
BrowserStop
BrowserSearch
BrowserFavorites
BrowserHome
VolMute
VolDown
VolUp
VolUp


Сообщение отредактировал cirus - 6.3.2019, 3:47
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 31.5.2017, 22:10
Сообщение #2


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



Используются не ascii коды, а виртуальные.
MSDN

Т.е. также можно проверить состояние кнопок мыши.

Хотелось бы обернуть все кнопки в парочку функций, но парсить из пилота что-то лень. Либо предлагайте идеи что подкоректить, либо просто юзайте GetKeyStateByCode на все случаи жизни.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 31.5.2017, 22:29
Сообщение #3


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



Эта программка коды всех клавиш показывает, установки не требует

коды на популярные клавиши:
Виртуальные коды кнопок

//1-49/2-50/3-51/4-52/5-53/6-54/7-55/8-56/9-57/0-48
//F1-112/F2-113/F3-114/F4-115/F5-116/F6-117/F7-118/F8-119/F9-120/F10-121/F11-122/F12-123
//Q-81/W-87/E-69/R-82/T-84/Y-89/U-85/I-73/O-79/P-80/A-65/S-83/D-68/F-70/G-71/H-72/J-74
//K-75/L-76/Z-90/X-88/C-67/V-86/B-66/N-78/M-77/
//TAB-9/CAPS LOCK-20/SHIFT-160/CTRL-162/ALT-164/SPACE-32/ENTER-13/BACKSPACE-8/INSERT-45
//DELETE-46/HOME-36/END-35/PAGEUP-33/PAGEDOWN-34/LEFT-37/RIGHT-39/UP-38/DOWN-40/ESC-27

(IMG:https://i.yapx.ru/JqoJ.jpg)


Прикрепленные файлы
Прикрепленный файл  keyboardtestutility.rar ( 1,94 мегабайт ) Кол-во скачиваний: 1573
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 17.2.2018, 1:51
Сообщение #4


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



Луа порт. Только функция IsKeyPress() возвращающая флажок. Теперь не требуется указывать код сканируемой клавиши (по примеру понятно как теперь работает ?). Список клавиш будет позже (но не точно, да).

Пример

Код

require("Kbd")
if (Kbd.IsKeyPress(Kbd.LeftShift) and Kbd.IsKeyPress(Kbd.Q)) then
  log("It's work")
end



Лень оформлять этот список клавиш, так что вырвал кусок кода задания их, разбирайте.

achtung

Код

    lua_pushinteger(L, VK_LBUTTON);
    lua_setfield(L, -STACK_TOP + 1, "LMB");
    lua_pushinteger(L, VK_RBUTTON);
    lua_setfield(L, -STACK_TOP + 1, "RMB");
    lua_pushinteger(L, VK_CANCEL);
    lua_setfield(L, -STACK_TOP + 1, "Cancel");
    lua_pushinteger(L, VK_MBUTTON);
    lua_setfield(L, -STACK_TOP + 1, "MMB");
    lua_pushinteger(L, VK_XBUTTON1);
    lua_setfield(L, -STACK_TOP + 1, "X1MB");
    lua_pushinteger(L, VK_XBUTTON2);
    lua_setfield(L, -STACK_TOP + 1, "X2MB");
    lua_pushinteger(L, VK_BACK);
    lua_setfield(L, -STACK_TOP + 1, "Back");
    lua_pushinteger(L, VK_TAB);
    lua_setfield(L, -STACK_TOP + 1, "Tab");
    lua_pushinteger(L, VK_CLEAR);
    lua_setfield(L, -STACK_TOP + 1, "Clear");
    lua_pushinteger(L, VK_RETURN);
    lua_setfield(L, -STACK_TOP + 1, "Enter");
    lua_pushinteger(L, VK_SHIFT);
    lua_setfield(L, -STACK_TOP + 1, "Shift");
    lua_pushinteger(L, VK_CONTROL);
    lua_setfield(L, -STACK_TOP + 1, "Ctrl");
    lua_pushinteger(L, VK_MENU);
    lua_setfield(L, -STACK_TOP + 1, "Alt");
    lua_pushinteger(L, VK_PAUSE);
    lua_setfield(L, -STACK_TOP + 1, "Pause");
    lua_pushinteger(L, VK_CAPITAL);
    lua_setfield(L, -STACK_TOP + 1, "CapsLock");
    lua_pushinteger(L, VK_ESCAPE);
    lua_setfield(L, -STACK_TOP + 1, "Esc");
    lua_pushinteger(L, VK_SPACE);
    lua_setfield(L, -STACK_TOP + 1, "Space");
    lua_pushinteger(L, VK_PRIOR);
    lua_setfield(L, -STACK_TOP + 1, "PageUp");
    lua_pushinteger(L, VK_NEXT);
    lua_setfield(L, -STACK_TOP + 1, "PageDown");
    lua_pushinteger(L, VK_END);
    lua_setfield(L, -STACK_TOP + 1, "End");
    lua_pushinteger(L, VK_HOME);
    lua_setfield(L, -STACK_TOP + 1, "Home");
    lua_pushinteger(L, VK_LEFT);
    lua_setfield(L, -STACK_TOP + 1, "Left");
    lua_pushinteger(L, VK_UP);
    lua_setfield(L, -STACK_TOP + 1, "Up");
    lua_pushinteger(L, VK_RIGHT);
    lua_setfield(L, -STACK_TOP + 1, "Right");
    lua_pushinteger(L, VK_DOWN);
    lua_setfield(L, -STACK_TOP + 1, "Down");
    lua_pushinteger(L, VK_SELECT);
    lua_setfield(L, -STACK_TOP + 1, "Select");
    lua_pushinteger(L, VK_PRINT);
    lua_setfield(L, -STACK_TOP + 1, "Print");
    lua_pushinteger(L, VK_EXECUTE);
    lua_setfield(L, -STACK_TOP + 1, "Execute");
    lua_pushinteger(L, VK_SNAPSHOT);
    lua_setfield(L, -STACK_TOP + 1, "PrntScrn");
    lua_pushinteger(L, VK_INSERT);
    lua_setfield(L, -STACK_TOP + 1, "Insert");
    lua_pushinteger(L, VK_DELETE);
    lua_setfield(L, -STACK_TOP + 1, "Delete");
    lua_pushinteger(L, VK_HELP);
    lua_setfield(L, -STACK_TOP + 1, "Help");
    lua_pushinteger(L, 0x30);
    lua_setfield(L, -STACK_TOP + 1, "Key0");
    lua_pushinteger(L, 0x31);
    lua_setfield(L, -STACK_TOP + 1, "Key1");
    lua_pushinteger(L, 0x32);
    lua_setfield(L, -STACK_TOP + 1, "Key2");
    lua_pushinteger(L, 0x33);
    lua_setfield(L, -STACK_TOP + 1, "Key3");
    lua_pushinteger(L, 0x34);
    lua_setfield(L, -STACK_TOP + 1, "Key4");
    lua_pushinteger(L, 0x35);
    lua_setfield(L, -STACK_TOP + 1, "Key5");
    lua_pushinteger(L, 0x36);
    lua_setfield(L, -STACK_TOP + 1, "Key6");
    lua_pushinteger(L, 0x37);
    lua_setfield(L, -STACK_TOP + 1, "Key7");
    lua_pushinteger(L, 0x38);
    lua_setfield(L, -STACK_TOP + 1, "Key8");
    lua_pushinteger(L, 0x39);
    lua_setfield(L, -STACK_TOP + 1, "Key9");
    lua_pushinteger(L, 0x41);
    lua_setfield(L, -STACK_TOP + 1, "A");
    lua_pushinteger(L, 0x42);
    lua_setfield(L, -STACK_TOP + 1, "B");
    lua_pushinteger(L, 0x43);
    lua_setfield(L, -STACK_TOP + 1, "C");
    lua_pushinteger(L, 0x44);
    lua_setfield(L, -STACK_TOP + 1, "D");
    lua_pushinteger(L, 0x45);
    lua_setfield(L, -STACK_TOP + 1, "E");
    lua_pushinteger(L, 0x46);
    lua_setfield(L, -STACK_TOP + 1, "F");
    lua_pushinteger(L, 0x47);
    lua_setfield(L, -STACK_TOP + 1, "G");
    lua_pushinteger(L, 0x48);
    lua_setfield(L, -STACK_TOP + 1, "H");
    lua_pushinteger(L, 0x49);
    lua_setfield(L, -STACK_TOP + 1, "I");
    lua_pushinteger(L, 0x4A);
    lua_setfield(L, -STACK_TOP + 1, "J");
    lua_pushinteger(L, 0x4B);
    lua_setfield(L, -STACK_TOP + 1, "K");
    lua_pushinteger(L, 0x4C);
    lua_setfield(L, -STACK_TOP + 1, "L");
    lua_pushinteger(L, 0x4D);
    lua_setfield(L, -STACK_TOP + 1, "M");
    lua_pushinteger(L, 0x4E);
    lua_setfield(L, -STACK_TOP + 1, "N");
    lua_pushinteger(L, 0x4F);
    lua_setfield(L, -STACK_TOP + 1, "O");
    lua_pushinteger(L, 0x50);
    lua_setfield(L, -STACK_TOP + 1, "P");
    lua_pushinteger(L, 0x51);
    lua_setfield(L, -STACK_TOP + 1, "Q");
    lua_pushinteger(L, 0x52);
    lua_setfield(L, -STACK_TOP + 1, "R");
    lua_pushinteger(L, 0x53);
    lua_setfield(L, -STACK_TOP + 1, "S");
    lua_pushinteger(L, 0x54);
    lua_setfield(L, -STACK_TOP + 1, "T");
    lua_pushinteger(L, 0x55);
    lua_setfield(L, -STACK_TOP + 1, "U");
    lua_pushinteger(L, 0x56);
    lua_setfield(L, -STACK_TOP + 1, "V");
    lua_pushinteger(L, 0x57);
    lua_setfield(L, -STACK_TOP + 1, "W");
    lua_pushinteger(L, 0x58);
    lua_setfield(L, -STACK_TOP + 1, "X");
    lua_pushinteger(L, 0x59);
    lua_setfield(L, -STACK_TOP + 1, "Y");
    lua_pushinteger(L, 0x5A);
    lua_setfield(L, -STACK_TOP + 1, "Z");
    lua_pushinteger(L, VK_LWIN);
    lua_setfield(L, -STACK_TOP + 1, "LeftWin");
    lua_pushinteger(L, VK_RWIN);
    lua_setfield(L, -STACK_TOP + 1, "RightWin");
    lua_pushinteger(L, VK_APPS);
    lua_setfield(L, -STACK_TOP + 1, "AppKey");
    lua_pushinteger(L, VK_SLEEP);
    lua_setfield(L, -STACK_TOP + 1, "Sleep");
    lua_pushinteger(L, VK_LWIN);
    lua_setfield(L, -STACK_TOP + 1, "LeftWin");
    lua_pushinteger(L, VK_NUMPAD0);
    lua_setfield(L, -STACK_TOP + 1, "Num0");
    lua_pushinteger(L, VK_NUMPAD1);
    lua_setfield(L, -STACK_TOP + 1, "Num1");
    lua_pushinteger(L, VK_NUMPAD2);
    lua_setfield(L, -STACK_TOP + 1, "Num2");
    lua_pushinteger(L, VK_NUMPAD3);
    lua_setfield(L, -STACK_TOP + 1, "Num3");
    lua_pushinteger(L, VK_NUMPAD4);
    lua_setfield(L, -STACK_TOP + 1, "Num4");
    lua_pushinteger(L, VK_NUMPAD5);
    lua_setfield(L, -STACK_TOP + 1, "Num5");
    lua_pushinteger(L, VK_NUMPAD6);
    lua_setfield(L, -STACK_TOP + 1, "Num6");
    lua_pushinteger(L, VK_NUMPAD7);
    lua_setfield(L, -STACK_TOP + 1, "Num7");
    lua_pushinteger(L, VK_NUMPAD8);
    lua_setfield(L, -STACK_TOP + 1, "Num8");
    lua_pushinteger(L, VK_NUMPAD9);
    lua_setfield(L, -STACK_TOP + 1, "Num9");
    lua_pushinteger(L, VK_MULTIPLY);
    lua_setfield(L, -STACK_TOP + 1, "Multiply");
    lua_pushinteger(L, VK_ADD);
    lua_setfield(L, -STACK_TOP + 1, "Add");
    lua_pushinteger(L, VK_SEPARATOR);
    lua_setfield(L, -STACK_TOP + 1, "Separator");
    lua_pushinteger(L, VK_SUBTRACT);
    lua_setfield(L, -STACK_TOP + 1, "Subtract");
    lua_pushinteger(L, VK_DECIMAL);
    lua_setfield(L, -STACK_TOP + 1, "Decimal");
    lua_pushinteger(L, VK_DIVIDE);
    lua_setfield(L, -STACK_TOP + 1, "Divide");
    lua_pushinteger(L, VK_F1);
    lua_setfield(L, -STACK_TOP + 1, "F1");
    lua_pushinteger(L, VK_F2);
    lua_setfield(L, -STACK_TOP + 1, "F2");
    lua_pushinteger(L, VK_F3);
    lua_setfield(L, -STACK_TOP + 1, "F3");
    lua_pushinteger(L, VK_F4);
    lua_setfield(L, -STACK_TOP + 1, "F4");
    lua_pushinteger(L, VK_F5);
    lua_setfield(L, -STACK_TOP + 1, "F5");
    lua_pushinteger(L, VK_F6);
    lua_setfield(L, -STACK_TOP + 1, "F6");
    lua_pushinteger(L, VK_F7);
    lua_setfield(L, -STACK_TOP + 1, "F7");
    lua_pushinteger(L, VK_F8);
    lua_setfield(L, -STACK_TOP + 1, "F8");
    lua_pushinteger(L, VK_F9);
    lua_setfield(L, -STACK_TOP + 1, "F9");
    lua_pushinteger(L, VK_F10);
    lua_setfield(L, -STACK_TOP + 1, "F10");
    lua_pushinteger(L, VK_F11);
    lua_setfield(L, -STACK_TOP + 1, "F11");
    lua_pushinteger(L, VK_F12);
    lua_setfield(L, -STACK_TOP + 1, "F12");
    lua_pushinteger(L, VK_F13);
    lua_setfield(L, -STACK_TOP + 1, "F13");
    lua_pushinteger(L, VK_F14);
    lua_setfield(L, -STACK_TOP + 1, "F14");
    lua_pushinteger(L, VK_F15);
    lua_setfield(L, -STACK_TOP + 1, "F15");
    lua_pushinteger(L, VK_F16);
    lua_setfield(L, -STACK_TOP + 1, "F16");
    lua_pushinteger(L, VK_F17);
    lua_setfield(L, -STACK_TOP + 1, "F17");
    lua_pushinteger(L, VK_F18);
    lua_setfield(L, -STACK_TOP + 1, "F18");
    lua_pushinteger(L, VK_F19);
    lua_setfield(L, -STACK_TOP + 1, "F19");
    lua_pushinteger(L, VK_F20);
    lua_setfield(L, -STACK_TOP + 1, "F20");
    lua_pushinteger(L, VK_F21);
    lua_setfield(L, -STACK_TOP + 1, "F21");
    lua_pushinteger(L, VK_F22);
    lua_setfield(L, -STACK_TOP + 1, "F22");
    lua_pushinteger(L, VK_F23);
    lua_setfield(L, -STACK_TOP + 1, "F23");
    lua_pushinteger(L, VK_F24);
    lua_setfield(L, -STACK_TOP + 1, "F24");
    lua_pushinteger(L, VK_NUMLOCK);
    lua_setfield(L, -STACK_TOP + 1, "NumLock");
    lua_pushinteger(L, VK_SCROLL);
    lua_setfield(L, -STACK_TOP + 1, "ScrollLock");
    lua_pushinteger(L, VK_LSHIFT);
    lua_setfield(L, -STACK_TOP + 1, "LeftShift");
    lua_pushinteger(L, VK_RSHIFT);
    lua_setfield(L, -STACK_TOP + 1, "RightShift");
    lua_pushinteger(L, VK_LCONTROL);
    lua_setfield(L, -STACK_TOP + 1, "LeftCtrl");
    lua_pushinteger(L, VK_RCONTROL);
    lua_setfield(L, -STACK_TOP + 1, "RightCtrl");
    lua_pushinteger(L, VK_LMENU);
    lua_setfield(L, -STACK_TOP + 1, "LeftAlt");
    lua_pushinteger(L, VK_RMENU);
    lua_setfield(L, -STACK_TOP + 1, "RightAlt");
    lua_pushinteger(L, VK_BROWSER_BACK);
    lua_setfield(L, -STACK_TOP + 1, "BrowserBack");
    lua_pushinteger(L, VK_BROWSER_FORWARD);
    lua_setfield(L, -STACK_TOP + 1, "BrowserForward");
    lua_pushinteger(L, VK_BROWSER_REFRESH);
    lua_setfield(L, -STACK_TOP + 1, "BrowserRefresh");
    lua_pushinteger(L, VK_BROWSER_STOP);
    lua_setfield(L, -STACK_TOP + 1, "BrowserStop");
    lua_pushinteger(L, VK_BROWSER_SEARCH);
    lua_setfield(L, -STACK_TOP + 1, "BrowserSearch");
    lua_pushinteger(L, VK_BROWSER_FAVORITES);
    lua_setfield(L, -STACK_TOP + 1, "BrowserFavorites");
    lua_pushinteger(L, VK_BROWSER_HOME);
    lua_setfield(L, -STACK_TOP + 1, "BrowserHome");
    lua_pushinteger(L, VK_VOLUME_MUTE);
    lua_setfield(L, -STACK_TOP + 1, "VolMute");
    lua_pushinteger(L, VK_VOLUME_DOWN);
    lua_setfield(L, -STACK_TOP + 1, "VolDown");
    lua_pushinteger(L, VK_VOLUME_UP);
    lua_setfield(L, -STACK_TOP + 1, "VolUp");
    lua_pushinteger(L, VK_VOLUME_UP);
    lua_setfield(L, -STACK_TOP + 1, "VolUp");



Прикрепленные файлы
Прикрепленный файл  Kbd.zip ( 39,37 килобайт ) Кол-во скачиваний: 1407
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.2.2018, 2:09
Сообщение #5


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
по примеру понятно как теперь работает ?

Понятно. Только скобки лишние в if.
В первый пост допишу как время будет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.2.2018, 18:09
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Код
--lua
require("Kbd")
while 1 do
    if Kbd.IsKeyPress(Kbd.LeftShift) and Kbd.IsKeyPress(Kbd.Q) then
        log("+++")
    end
    wait (20)
end

Запускаем скрипт, нажимаем Q, отпускаем, нажимаем шифт, условие сработало. Т. е. клавиши нажаты по очереди, а не одновременно. Так и должно быть?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 17.2.2018, 18:22
Сообщение #7


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



Посмотрю
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 17.2.2018, 19:49
Сообщение #8


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



Пофикшено. В том же посте.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.2.2018, 21:39
Сообщение #9


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Первый пост отредактировал.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 21.2.2018, 11:25
Сообщение #10


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



Есть условие на "если кнопка зажата" ?
На луа работает, но что то нехочется пилотный скрипт на луа переписывать)

Какая на луа замена переходу этому?
:aaa
скрипт
if нажата F1
goto bbb
end_if
goto aaa

:bbb
скрипт
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.2.2018, 13:14
Сообщение #11


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Код
while KB.GetKeyStateByCode(112) = 0   // пока не нажата f1
    wait 20
end_while
log Скрипт
end_script

Код
--lua
require("Kbd")

while not(Kbd.IsKeyPress(Kbd.F1)) do   -- пока не нажата f1
    wait (20)
end
log("Скрипт")

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 21.2.2018, 16:51
Сообщение #12


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



Код
if  KB.GetKeyState(q) = 1 or KB.GetKeyState(2) = 1 or KB.GetKeyState(3) = 1 or KB.GetKeyStateByCode(1) = 1
    wait 100
end_if
end_script


Выдает ошибку, в чем проблема? Не распознает более трёх переменных после "или"?
Ибо вот так работает:
Код
if  KB.GetKeyState(q) = 1 or KB.GetKeyState(2) = 1 or KB.GetKeyState(3) = 1
    wait 100
end_if
if  KB.GetKeyStateByCode(1) = 1
    wait 100
end_if
end_script

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 22.2.2018, 1:42
Сообщение #13


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Несколько клавиш можно проверять в цикле.
Код
init_arr %button q 1 2 3  //какие проверять клавиши

while 1 = 1
    for #i 1 size(%button)
        if  KB.GetKeyState(%button[#i]) = 1
            log %button[#i]
            wait 100
        end_if
        wait 10
    end_for
    wait 10
end_while

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 25.2.2018, 19:04
Сообщение #14


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



Код
:aaa
if  KB.GetKeyState(q) = 1 // если нажата Q
    log Нажата q
    wait 25 + random (26)
end_if
if  KB.GetKeyState(2) = 1 // если нажата 2
    log Нажата 2
    wait 27 + random (25)
end_if
if  KB.GetKeyState(3) = 1 // если нажата 3
    log Нажата 3
    wait 21 + random (23)
end_if
while KB.GetKeyStateByCode(1) = 1 // если нажата ЛКМ
    log Нажата ЛКМ
    wait 29 + random (32)
end_while
goto aaa


если лкм зажать, то код не спамит нажатие ЛКМ. Нужно чтобы спамил)
При чем если зажаты, q , 2 или 3 то спам идет

Код
--lua
require("Kbd")
while 1 do         -- бесконечный цикл
   while Kbd.IsKeyPress(Kbd.Q) do   -- если нажата клавиша Q
   log ("Нажата q")
   wait (25 + math.random (23))
   end
   while Kbd.IsKeyPress(Kbd.key2) do   -- если нажата клавиша 2
   log ("Нажата 2")
   wait (25 + math.random (23))
   end
   while Kbd.IsKeyPress(Kbd.key3) do   -- если нажата клавиша 3
   log ("Нажата 3")
   wait (35 + math.random (27))
   end
   while Kbd.IsKeyPress(Kbd.LMB) do   -- если нажата клавиша ЛКМ
   log ("Нажата ЛКМ")
   wait (25 + math.random (23))
   end
end

на луа работает спам лкм, но почемуто не работает нажатие 2 и 3. В чем тут косяк?
Воу, оказывается Key надо с большой буквы писать)))
В луа строчные и заглавные имеют разные значения?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 3.3.2018, 13:48
Сообщение #15


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



как сделать нажатие кнопок Х Ъ, или скобки по английски.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.3.2018, 16:59
Сообщение #16


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
как сделать нажатие кнопок Х Ъ, или скобки по английски.

Код
--lua
require("Kbd")  
while 1 do    
    if Kbd.IsKeyPress(219) then   -- левая фигурная/квадратная скобка
        log("++")
        wait (300)
    end
    if Kbd.IsKeyPress(221) then   -- правая фигурная/квадратная скобка
        log("++++")
        wait (300)
    end
    wait (20)
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dron4938
сообщение 3.3.2018, 18:18
Сообщение #17


****

Apprentice
Сообщений: 256
Регистрация: 20.3.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.395



Цитата(cirus @ 3.3.2018, 16:59) *

Код
--lua
require("Kbd")  
while 1 do    
    if Kbd.IsKeyPress(219) then   -- левая фигурная/квадратная скобка
        log("++")
        wait (300)
    end
    if Kbd.IsKeyPress(221) then   -- правая фигурная/квадратная скобка
        log("++++")
        wait (300)
    end
    wait (20)
end



не, я имел ввиду send (скобка)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.3.2018, 18:42
Сообщение #18


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Какое это имеет отношение к теме 'Определение статуса клавиш клавиатуры'. Не засоряйте темы.
Код
set $a "["
say $a      
sendex $a  // только в активном окне
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sreg
сообщение 11.1.2019, 18:58
Сообщение #19


**

Neophyte
Сообщений: 31
Регистрация: 6.4.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.974
Возраст: 26



Написал скрипт для проверки, и не могу понять как это работает:
Код
while KB.GetKeyStateByCode(2) = 0

  end_while
  hint отпустил кнопку


Я нажимаю на кнопку мыши, и не отпускаю её, а скрипт мне пишет что я отпустил, как тут быть?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.1.2019, 20:17
Сообщение #20


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



и запускаете его кликом кнопки мыши?)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V  1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 11:57
Designed by Nickostyle