如果在 lua 中左键单击 ffi
If Left click ffi in lua
我是 ffi 新手。
基本上我试图在单击鼠标左键时得到一个布尔值。
我做了一些研究,发现了一个叫做 WM_LBUTTONDOWN
的东西
但是我不知道如何将它放入 ffi.cdef
然后得到一个布尔值。
此程序每 1 毫秒轮询一次鼠标按钮状态,并在按下 LMB 时退出
local ffi = require("ffi")
ffi.cdef[[
short GetAsyncKeyState(int vKey);
void Sleep(int ms);
]]
local function is_key_down(vKey)
return ffi.C.GetAsyncKeyState(vKey) < 0
end
local function sleep(ms)
ffi.C.Sleep(ms or 1)
end
local VK_LBUTTON = 0x01 -- Left mouse button
local VK_RBUTTON = 0x02 -- Right mouse button
local VK_MBUTTON = 0x04 -- Middle mouse button
local VK_XBUTTON1 = 0x05 -- X1 mouse button (Back)
local VK_XBUTTON2 = 0x06 -- X2 mouse button (Forward)
sleep(1000)
print"Waiting for Left Mouse Button pressed"
repeat
sleep()
until is_key_down(VK_LBUTTON)
print"Left Mouse Button is down now"
如果您想处理 WM_LBUTTONDOWN 消息,那将是一个更复杂的解决方案。
我是 ffi 新手。
基本上我试图在单击鼠标左键时得到一个布尔值。
我做了一些研究,发现了一个叫做 WM_LBUTTONDOWN
但是我不知道如何将它放入 ffi.cdef
然后得到一个布尔值。
此程序每 1 毫秒轮询一次鼠标按钮状态,并在按下 LMB 时退出
local ffi = require("ffi")
ffi.cdef[[
short GetAsyncKeyState(int vKey);
void Sleep(int ms);
]]
local function is_key_down(vKey)
return ffi.C.GetAsyncKeyState(vKey) < 0
end
local function sleep(ms)
ffi.C.Sleep(ms or 1)
end
local VK_LBUTTON = 0x01 -- Left mouse button
local VK_RBUTTON = 0x02 -- Right mouse button
local VK_MBUTTON = 0x04 -- Middle mouse button
local VK_XBUTTON1 = 0x05 -- X1 mouse button (Back)
local VK_XBUTTON2 = 0x06 -- X2 mouse button (Forward)
sleep(1000)
print"Waiting for Left Mouse Button pressed"
repeat
sleep()
until is_key_down(VK_LBUTTON)
print"Left Mouse Button is down now"
如果您想处理 WM_LBUTTONDOWN 消息,那将是一个更复杂的解决方案。