Appearance
KmboxNet模块
创建KMNet实例并连接
创建并连接 KMNet 盒子
lua
local kmnet, result = newKMNet(ip, port, uuid)功能:创建一个 KMNet 实例,并尝试连接到指定的 KMNet 盒子。这是使用所有后续 API 的前提。
参数:
ipstring盒子的 IP 地址(显示屏上会有显示)。portstring通信端口号(显示屏上会有显示)。uuidstring盒子的UUID地址(显示屏幕上有显示)。
返回值:
kmnetKMNetBridge成功连接时返回的KMNet实例,用于后续操作。如果连接失败,此值可能为nil。resultnumber连接结果:0表示成功,其他负数参见错误代码。
示例:
lua
local kmnet, ret = newKMNet("192.168.1.100", "9999", "0x11223344")
if ret ~= 0 then
print("连接 KMNet 盒子失败,错误码:", ret)
return
end
print("KMNet 盒子连接成功!")停止并断开连接
停止与 KMNet 盒子的通讯并断开连接
lua
kmnet:stop()功能:停止与 KMNet 盒子的通讯并断开连接,释放相关资源。
参数:无。
返回值:无。
示例:
lua
kmnet:stop()
print("已断开与 KMNet 盒子的连接。")鼠标相对移动
模拟鼠标相对当前位置移动
lua
kmnet:mouse_move(x, y)功能:模拟鼠标相对当前位置移动指定的 x 和 y 距离。
参数:
xnumberX轴相对移动距离(可正可负)。ynumberY轴相对移动距离(可正可负)。
返回值:number,操作结果,0 表示成功,其他值参见错误代码。
示例:
lua
local ret = kmnet:mouse_move(100, 50) -- 鼠标向右下移动 100, 50
if ret ~= 0 then
print("鼠标移动失败,错误码:", ret)
end鼠标左键控制
控制鼠标左键的按下或抬起
lua
kmnet:mouse_left(isdown)功能:控制鼠标左键的按下或抬起状态。
参数:
isdownbooleantrue为按下左键,false为抬起左键。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mouse_left(true) -- 按下鼠标左键
-- 等待一段时间或执行其他操作
kmnet:mouse_left(false) -- 抬起鼠标左键鼠标右键控制
控制鼠标右键的按下或抬起
lua
kmnet:mouse_right(isdown)功能:控制鼠标右键的按下或抬起状态。
参数:
isdownbooleantrue为按下右键,false为抬起右键。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mouse_right(true)
kmnet:mouse_right(false)鼠标中键控制
控制鼠标中键的按下或抬起
lua
kmnet:mouse_middle(isdown)功能:控制鼠标中键的按下或抬起状态。
参数:
isdownbooleantrue为按下中键,false为抬起中键。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mouse_middle(true)
kmnet:mouse_middle(false)鼠标滚轮控制
模拟鼠标滚轮滚动
lua
kmnet:mouse_wheel(wheel)功能:模拟鼠标滚轮滚动指定的步数。
参数:
wheelnumber滚动步数。正数向上滚动,负数向下滚动。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mouse_wheel(120) -- 向上滚动
kmnet:mouse_wheel(-120) -- 向下滚动鼠标侧键1控制
控制鼠标侧键1的按下或抬起
lua
kmnet:mouse_side1(isdown)功能:控制鼠标侧键1(通常是拇指键)的按下或抬起状态。
参数:
isdownbooleantrue为按下,false为抬起。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mouse_side1(true)
kmnet:mouse_side1(false)鼠标侧键2控制
控制鼠标侧键2的按下或抬起
lua
kmnet:mouse_side2(isdown)功能:控制鼠标侧键2(通常是拇指键)的按下或抬起状态。
参数:
isdownbooleantrue为按下,false为抬起。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mouse_side2(true)
kmnet:mouse_side2(false)鼠标综合控制
同时控制鼠标按钮、相对移动和滚轮
lua
kmnet:mouse_all(button, x, y, wheel)功能:在一个指令中同时控制鼠标的按钮状态、相对移动距离和滚轮滚动。
参数:
buttonnumber按钮状态的位域值。例如:0(无按钮按下)1(左键)2(右键)4(中键)8(侧键1)16(侧键2)- 可以通过按位或组合多个按钮,例如
1 | 2表示同时按下左右键。
xnumberX轴相对移动距离。ynumberY轴相对移动距离。wheelnumber滚轮滚动步数。
返回值:number,操作结果,0 表示成功。
示例:
lua
-- 同时按下左键并向右下移动 10, 10
local ret = kmnet:mouse_all(1, 10, 10, 0)
if ret ~= 0 then
print("鼠标综合控制失败,错误码:", ret)
end鼠标自动模拟人工移动
鼠标自动模拟人工移动到指定相对坐标
lua
kmnet:mouse_move_auto(x, y, time_ms)功能:鼠标自动模拟人工移动到指定的相对坐标,移动过程会耗时 time_ms,模拟人手移动轨迹。
参数:
xnumber目标X轴相对坐标。ynumber目标Y轴相对坐标。time_msnumber移动耗时(毫秒)。
返回值:number,操作结果,0 表示成功。
示例:
lua
-- 鼠标在 500 毫秒内从当前位置自动移动到相对 (200, 150) 的位置
local ret = kmnet:mouse_move_auto(200, 150, 500)
if ret ~= 0 then
print("鼠标自动移动失败,错误码:", ret)
end鼠标贝塞尔曲线移动
鼠标沿着二阶贝塞尔曲线移动
lua
kmnet:mouse_move_beizer(x, y, ms, x1, y1, x2, y2)功能:鼠标沿着二阶贝塞尔曲线移动到目标坐标。
参数:
xnumber目标点的 X 坐标。ynumber目标点的 Y 坐标。msnumber移动耗时(毫秒)。x1number第一个控制点(P1)的 X 坐标。y1number第一个控制点(P1)的 Y 坐标。x2number第二个控制点(P2)的 X 坐标。y2number第二个控制点(P2)的 Y 坐标。
返回值:number,操作结果,0 表示成功。
示例:
lua
-- 鼠标在 1000 毫秒内从当前位置,通过两个控制点 (100, 100) 和 (600, 200) 移动到 (500, 300)
local ret = kmnet:mouse_move_beizer(500, 300, 1000, 100, 100, 600, 200)
if ret ~= 0 then
print("鼠标贝塞尔移动失败,错误码:", ret)
end键盘按下
模拟键盘按键按下
lua
kmnet:keydown(vkey)功能:模拟指定虚拟按键的按下操作。
参数:
vkeynumber按键的虚拟键码。具体键码请参考HidTable.h或相关文档。
返回值:number,操作结果,0 表示成功。
示例:
lua
-- 假设 VK_A 是字母 'A' 的虚拟键码 (例如 0x04)
local VK_A = 0x04 -- 这是一个假设值,请查阅 HidTable.h
local ret = kmnet:keydown(VK_A)
if ret ~= 0 then
print("按下 'A' 键失败,错误码:", ret)
end键盘抬起
模拟键盘按键抬起
lua
kmnet:keyup(vkey)功能:模拟指定虚拟按键的抬起操作。
参数:
vkeynumber按键的虚拟键码。
返回值:number,操作结果,0 表示成功。
示例:
lua
local VK_A = 0x04 -- 这是一个假设值,请查阅 HidTable.h
local ret = kmnet:keyup(VK_A)
if ret ~= 0 then
print("抬起 'A' 键失败,错误码:", ret)
end键盘按键模拟点击
模拟键盘按键按下并抬起
lua
kmnet:keypress(vkey, ms)功能:模拟指定虚拟按键的按下和抬起操作,并在按下后等待指定毫秒再抬起。
参数:
vkeynumber按键的虚拟键码。msnumber按下后等待的毫秒数。
返回值:number,操作结果,0 表示成功。
示例:
lua
local VK_ENTER = 0x28 -- 假设回车键的键码
local ret = kmnet:keypress(VK_ENTER, 50) -- 模拟按下回车键并保持 50 毫秒
if ret ~= 0 then
print("模拟回车键点击失败,错误码:", ret)
end开启/关闭物理键鼠监控
开启或关闭盒子上的物理键鼠数据监控
lua
kmnet:monitor(port)功能:开启或关闭盒子上的物理键鼠数据监控功能。开启后,可以通过后续的 monitor_mouse_* 和 monitor_keyboard 函数查询物理键鼠状态。
参数:
portnumber监控端口号。传入0表示关闭监控功能。
返回值:number,操作结果,0 表示成功。
示例:
lua
local monitor_port = 8888
local ret = kmnet:monitor(monitor_port) -- 开启监控
if ret ~= 0 then
print("开启监控失败,错误码:", ret)
end
-- ... 进行监控查询操作 ...
kmnet:monitor(0) -- 关闭监控查询物理鼠标左键状态
查询物理鼠标左键当前状态
lua
local state = kmnet:monitor_mouse_left()功能:查询物理鼠标左键的当前按下状态。
参数:无。
返回值:number,1 表示按下,0 表示抬起。
示例:
lua
local left_state = kmnet:monitor_mouse_left()
if left_state == 1 then
print("物理鼠标左键当前处于按下状态。")
else
print("物理鼠标左键当前处于抬起状态。")
end查询物理鼠标中键状态
查询物理鼠标中键当前状态
lua
local state = kmnet:monitor_mouse_middle()功能:查询物理鼠标中键的当前按下状态。
参数:无。
返回值:number,1 表示按下,0 表示抬起。
示例:
lua
local middle_state = kmnet:monitor_mouse_middle()查询物理鼠标右键状态
查询物理鼠标右键当前状态
lua
local state = kmnet:monitor_mouse_right()功能:查询物理鼠标右键的当前按下状态。
参数:无。
返回值:number,1 表示按下,0 表示抬起。
示例:
lua
local right_state = kmnet:monitor_mouse_right()查询物理鼠标侧键1状态
查询物理鼠标侧键1当前状态
lua
local state = kmnet:monitor_mouse_side1()功能:查询物理鼠标侧键1的当前按下状态。
参数:无。
返回值:number,1 表示按下,0 表示抬起。
示例:
lua
local side1_state = kmnet:monitor_mouse_side1()查询物理鼠标侧键2状态
查询物理鼠标侧键2当前状态
lua
local state = kmnet:monitor_mouse_side2()功能:查询物理鼠标侧键2的当前按下状态。
参数:无。
返回值:number,1 表示按下,0 表示抬起。
示例:
lua
local side2_state = kmnet:monitor_mouse_side2()查询物理鼠标XY坐标值
查询物理鼠标当前的XY坐标值
lua
local ret, x, y = kmnet:monitor_mouse_xy()功能:查询物理鼠标当前的相对XY坐标值。
参数:无。
返回值:
retnumber操作结果,0表示成功。xnumber物理鼠标的X坐标值。ynumber物理鼠标的Y坐标值。
示例:
lua
local ret, mouse_x, mouse_y = kmnet:monitor_mouse_xy()
if ret == 0 then
print(string.format("物理鼠标当前坐标:X=%d, Y=%d", mouse_x, mouse_y))
else
print("查询鼠标坐标失败,错误码:", ret)
end查询物理鼠标滚轮值
查询物理鼠标滚轮当前值
lua
local ret, wheel = kmnet:monitor_mouse_wheel()功能:查询物理鼠标滚轮的当前滚动值。
参数:无。
返回值:
retnumber操作结果,0表示成功。wheelnumber物理鼠标滚轮的当前值。
示例:
lua
local ret, mouse_wheel_val = kmnet:monitor_mouse_wheel()
if ret == 0 then
print("物理鼠标滚轮值:", mouse_wheel_val)
else
print("查询鼠标滚轮失败,错误码:", ret)
end查询键盘指定按键状态
查询物理键盘指定按键状态
lua
local state = kmnet:monitor_keyboard(vk_key)功能:查询物理键盘上指定虚拟键码按键的当前按下状态。
参数:
vk_keynumber按键的虚拟键码。
返回值:number,1 表示按下,0 表示抬起。
示例:
lua
local VK_SPACE = 0x2C -- 假设空格键的键码
local space_state = kmnet:monitor_keyboard(VK_SPACE)
if space_state == 1 then
print("物理键盘空格键当前处于按下状态。")
end屏蔽物理鼠标左键
屏蔽物理鼠标左键输入
lua
kmnet:mask_mouse_left(enable)功能:屏蔽或解除屏蔽物理鼠标左键的输入。屏蔽后,物理左键的点击将不会被操作系统识别。
参数:
enablebooleantrue启用屏蔽,false解除屏蔽。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mask_mouse_left(true) -- 屏蔽物理鼠标左键
-- ...
kmnet:mask_mouse_left(false) -- 解除屏蔽物理鼠标左键屏蔽物理鼠标右键
屏蔽物理鼠标右键输入
lua
kmnet:mask_mouse_right(enable)功能:屏蔽或解除屏蔽物理鼠标右键的输入。
参数:
enablebooleantrue启用屏蔽,false解除屏蔽。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mask_mouse_right(true)屏蔽物理鼠标中键
屏蔽物理鼠标中键输入
lua
kmnet:mask_mouse_middle(enable)功能:屏蔽或解除屏蔽物理鼠标中键的输入。
参数:
enablebooleantrue启用屏蔽,false解除屏蔽。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mask_mouse_middle(true)屏蔽物理鼠标侧键1
屏蔽物理鼠标侧键1输入
lua
kmnet:mask_mouse_side1(enable)功能:屏蔽或解除屏蔽物理鼠标侧键1的输入。
参数:
enablebooleantrue启用屏蔽,false解除屏蔽。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mask_mouse_side1(true)屏蔽物理鼠标侧键2
屏蔽物理鼠标侧键2输入
lua
kmnet:mask_mouse_side2(enable)功能:屏蔽或解除屏蔽物理鼠标侧键2的输入。
参数:
enablebooleantrue启用屏蔽,false解除屏蔽。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mask_mouse_side2(true)屏蔽物理鼠标X轴坐标
屏蔽物理鼠标X轴坐标输入
lua
kmnet:mask_mouse_x(enable)功能:屏蔽或解除屏蔽物理鼠标X轴的移动输入。
参数:
enablebooleantrue启用屏蔽,false解除屏蔽。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mask_mouse_x(true) -- 屏蔽鼠标X轴移动屏蔽物理鼠标Y轴坐标
屏蔽物理鼠标Y轴坐标输入
lua
kmnet:mask_mouse_y(enable)功能:屏蔽或解除屏蔽物理鼠标Y轴的移动输入。
参数:
enablebooleantrue启用屏蔽,false解除屏蔽。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mask_mouse_y(true) -- 屏蔽鼠标Y轴移动屏蔽物理鼠标滚轮
屏蔽物理鼠标滚轮输入
lua
kmnet:mask_mouse_wheel(enable)功能:屏蔽或解除屏蔽物理鼠标滚轮的输入。
参数:
enablebooleantrue启用屏蔽,false解除屏蔽。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:mask_mouse_wheel(true)屏蔽物理键盘指定按键
屏蔽物理键盘指定按键输入
lua
kmnet:mask_keyboard(vkey)功能:屏蔽物理键盘上指定虚拟键码按键的输入。
参数:
vkeynumber按键的虚拟键码。
返回值:number,操作结果,0 表示成功。
示例:
lua
local VK_W = 0x1A -- 假设 'W' 键的键码
kmnet:mask_keyboard(VK_W) -- 屏蔽物理键盘的 'W' 键解除物理键盘指定按键的屏蔽
解除物理键盘指定按键的屏蔽
lua
kmnet:unmask_keyboard(vkey)功能:解除物理键盘上指定虚拟键码按键的屏蔽。
参数:
vkeynumber按键的虚拟键码。
返回值:number,操作结果,0 表示成功。
示例:
lua
local VK_W = 0x1A -- 假设 'W' 键的键码
kmnet:unmask_keyboard(VK_W) -- 解除屏蔽物理键盘的 'W' 键解除所有物理屏蔽
解除所有物理键鼠的屏蔽
lua
kmnet:unmask_all()功能:解除所有之前设置的物理键鼠屏蔽。
参数:无。
返回值:number,操作结果,0 表示成功。
示例:
lua
kmnet:unmask_all() -- 解除所有物理键鼠的屏蔽错误代码
kmbonet.h 中定义的错误代码:
err_creat_socket = -9000:创建socket失败err_net_version:socket版本错误err_net_tx:socket发送错误err_net_rx_timeout:socket接收超时err_net_cmd:命令错误err_net_pts:时间戳错误success = 0:正常执行usb_dev_tx_timeout:USB devic发送失败
注意事项
KMNetBridge实例通常只需要创建一次。kmbonet.h中的sockClientfd是一个全局变量,多次调用kmNet_init可能会导致未预期的行为。- 在程序退出或不再需要连接时,请务必调用
kmnet:stop()来断开连接并释放资源。 - 键盘虚拟键码
vkey需要查阅HidTable.h文件或相关文档以获取准确值。 - 鼠标按钮的
button参数在kmNet_mouse_all中是位域,需要按位或操作符来组合(例如 Lua 中的|或bit.bor())。 - 监控功能需要先通过
kmnet:monitor()开启,并在完成后关闭。 - 所有的函数都返回一个
number类型的结果码,0代表成功,其他负数代表错误。建议在 Lua 代码中对这些返回值进行检查,以便及时发现并处理问题。