发送绝对鼠标状态
按照绝对坐标系统,直接发送 USB HID 鼠标报告,并更改设备内部记录的鼠标状态。
语法
cpp
class RX784::Device {
Status sendAbsMouseState(
const MouseState& mouseState,
const MouseStateMask& mouseStateMask
);
};
class RX784::Device {
Status sendAbsMouseState(
const MouseState& mouseState,
const MouseStateMask& mouseStateMask
);
};
e
类名 基类 公开 备注 RX784设备 ✔
方法名 返回值类型 公开 备注 发送绝对鼠标状态 整数型 ✔ 参数名 类型 参考 可空 数组 备注 鼠标状态 鼠标状态 鼠标状态掩码 鼠标状态掩码
.版本 2
.程序集 RX784设备, , 公开
.子程序 发送绝对鼠标状态, 整数型, 公开
.参数 鼠标状态, 鼠标状态
.参数 鼠标状态掩码, 鼠标状态掩码
py
class Device:
def send_abs_mouse_state(self,
mouse_state: MouseState,
mouse_state_mask: MouseStateMask
) -> Status: ...
class Device:
def send_abs_mouse_state(self,
mouse_state: MouseState,
mouse_state_mask: MouseStateMask
) -> Status: ...
参数
名称 | 英文 | 说明 |
---|---|---|
键盘状态 | keyboard state | 要设置的状态。 |
键盘状态掩码 | keyboard state mask | 掩码值为真的字段才会被设置。 |
返回值
名称 | 英文 | 说明 |
---|---|---|
状态码 | status | 成功返回 。 |
备注
一般先取得键盘状态,然后根据需要修改状态,将需要改变的字段的掩码设置为真,表示只改变这些字段,其他字段不变。
类型
cpp
struct MouseState {
struct Buttons {
uint8_t left : 1;
uint8_t right : 1;
uint8_t middle : 1;
};
struct Axes {
int16_t x;
int16_t y;
int16_t w;
};
Buttons buttons;
Axes axes;
};
union MouseStateMask {
struct Buttons {
uint8_t buttonLeft : 1;
uint8_t buttonRight : 1;
uint8_t buttonMiddle : 1;
};
struct Axes {
uint8_t _ : 3;
uint8_t x : 1;
uint8_t y : 1;
uint8_t w : 1;
};
Buttons buttons;
Axes axes;
};
struct MouseState {
struct Buttons {
uint8_t left : 1;
uint8_t right : 1;
uint8_t middle : 1;
};
struct Axes {
int16_t x;
int16_t y;
int16_t w;
};
Buttons buttons;
Axes axes;
};
union MouseStateMask {
struct Buttons {
uint8_t buttonLeft : 1;
uint8_t buttonRight : 1;
uint8_t buttonMiddle : 1;
};
struct Axes {
uint8_t _ : 3;
uint8_t x : 1;
uint8_t y : 1;
uint8_t w : 1;
};
Buttons buttons;
Axes axes;
};
e
数据类型名 公开 备注 鼠标状态 ✔ 成员名 类型 传址 数组 备注 按键 鼠标状态_按键 轴 鼠标状态_轴
数据类型名 公开 备注 鼠标状态_按键 ✔ 成员名 类型 传址 数组 备注 左键 逻辑型 右键 逻辑型 中键 逻辑型
数据类型名 公开 备注 鼠标状态_轴 ✔ 成员名 类型 传址 数组 备注 x 短整数型 y 短整数型 w 短整数型
数据类型名 公开 备注 鼠标状态掩码 ✔ 成员名 类型 传址 数组 备注 按键 鼠标状态掩码_按键 轴 鼠标状态掩码_轴
数据类型名 公开 备注 鼠标状态掩码_按键 ✔ 成员名 类型 传址 数组 备注 左键 逻辑型 右键 逻辑型 中键 逻辑型
数据类型名 公开 备注 鼠标状态掩码_轴 ✔ 成员名 类型 传址 数组 备注 x 逻辑型 y 逻辑型 w 逻辑型
.版本 2
.数据类型 鼠标状态, 公开
.成员 按键, 鼠标状态_按键
.成员 轴, 鼠标状态_轴
.数据类型 鼠标状态_按键, 公开
.成员 左键, 逻辑型
.成员 右键, 逻辑型
.成员 中键, 逻辑型
.数据类型 鼠标状态_轴, 公开
.成员 x, 短整数型
.成员 y, 短整数型
.成员 w, 短整数型
.数据类型 鼠标状态掩码, 公开
.成员 按键, 鼠标状态掩码_按键
.成员 轴, 鼠标状态掩码_轴
.数据类型 鼠标状态掩码_按键, 公开
.成员 左键, 逻辑型
.成员 右键, 逻辑型
.成员 中键, 逻辑型
.数据类型 鼠标状态掩码_轴, 公开
.成员 x, 逻辑型
.成员 y, 逻辑型
.成员 w, 逻辑型
py
@dataclass
class MouseState:
@dataclass
class Buttons:
left: bool
right: bool
middle: bool
@dataclass
class Axes:
x: int
y: int
w: int
buttons: Buttons
axes: Axes
@dataclass
class MouseStateMask:
@dataclass
class Buttons:
left: bool = False
right: bool = False
middle: bool = False
@dataclass
class Axes:
x: bool = False
y: bool = False
w: bool = False
buttons: Buttons = field(default_factory=Buttons)
axes: Axes = field(default_factory=Axes)
@dataclass
class MouseState:
@dataclass
class Buttons:
left: bool
right: bool
middle: bool
@dataclass
class Axes:
x: int
y: int
w: int
buttons: Buttons
axes: Axes
@dataclass
class MouseStateMask:
@dataclass
class Buttons:
left: bool = False
right: bool = False
middle: bool = False
@dataclass
class Axes:
x: bool = False
y: bool = False
w: bool = False
buttons: Buttons = field(default_factory=Buttons)
axes: Axes = field(default_factory=Axes)
示例
cpp
#include "rx784.hpp"
int main() {
RX784::Device device;
RX784::MouseState mouseState{};
RX784::MouseStateMask mouseStateMask{};
device.open("COM1");
device.getAbsMouseState(mouseState);
mouseState.buttons.left = false; // 不再按下左键
mouseState.axes.x = 0; // x 坐标回到 0
mouseStateMask.buttons.left = true; // 影响左键
mouseStateMask.axes.x = true; // 影响 x 轴
device.sendAbsMouseState(mouseState, mouseStateMask);
device.close();
}
#include "rx784.hpp"
int main() {
RX784::Device device;
RX784::MouseState mouseState{};
RX784::MouseStateMask mouseStateMask{};
device.open("COM1");
device.getAbsMouseState(mouseState);
mouseState.buttons.left = false; // 不再按下左键
mouseState.axes.x = 0; // x 坐标回到 0
mouseStateMask.buttons.left = true; // 影响左键
mouseStateMask.axes.x = true; // 影响 x 轴
device.sendAbsMouseState(mouseState, mouseStateMask);
device.close();
}
e
方法名 返回值类型 公开 备注 _启动子程序 整数型
变量名 类型 静态 数组 备注 设备 RX784设备 鼠标状态 鼠标状态 鼠标状态掩码 鼠标状态掩码
设备.打开 (“COM1”)设备.初始化绝对坐标系统 (1920, 1080)设备.取绝对鼠标状态 (鼠标状态)鼠标状态.按键.左键 = 假 ' ''' 不再按下左键鼠标状态.轴.x = 10 ' '''''''' x 坐标回到 0鼠标状态掩码.按键.左键 = 真 ' 影响左键鼠标状态掩码.轴.x = 真 ' '''' 影响 x 轴设备.发送绝对鼠标状态 (鼠标状态, 鼠标状态掩码)设备.关闭 ()返回 (0).版本 2
.子程序 _启动子程序, 整数型
.局部变量 设备, RX784设备
.局部变量 鼠标状态, 鼠标状态
.局部变量 鼠标状态掩码, 鼠标状态掩码
设备.打开 (“COM1”)
设备.初始化绝对坐标系统 (1920, 1080)
设备.取绝对鼠标状态 (鼠标状态)
鼠标状态.按键.左键 = 假 ' ''' 不再按下左键
鼠标状态.轴.x = 10 ' '''''''' x 坐标回到 0
鼠标状态掩码.按键.左键 = 真 ' 影响左键
鼠标状态掩码.轴.x = 真 ' '''' 影响 x 轴
设备.发送绝对鼠标状态 (鼠标状态, 鼠标状态掩码)
设备.关闭 ()
返回 (0)
py
import rx784
device = rx784.Device()
device.open('COM1')
device.init_abs_system(1920, 1080)
status, mouse_state = device.get_abs_mouse_state()
mouse_state_mask = rx784.MouseStateMask()
mouse_state.buttons.left = False # 不再按下左键
mouse_state.axes.x = 0 # x 坐标回到 0
mouse_state_mask.buttons.left = True # 影响左键
mouse_state_mask.axes.x = True # 影响 x 轴
device.send_abs_mouse_state(mouse_state, mouse_state_mask)
device.close()
import rx784
device = rx784.Device()
device.open('COM1')
device.init_abs_system(1920, 1080)
status, mouse_state = device.get_abs_mouse_state()
mouse_state_mask = rx784.MouseStateMask()
mouse_state.buttons.left = False # 不再按下左键
mouse_state.axes.x = 0 # x 坐标回到 0
mouse_state_mask.buttons.left = True # 影响左键
mouse_state_mask.axes.x = True # 影响 x 轴
device.send_abs_mouse_state(mouse_state, mouse_state_mask)
device.close()