Skip to content

取绝对鼠标状态

按照绝对坐标系统,获取设备内部记录的鼠标状态,其中包括 3 个鼠标按键、光标位置和滚轮值。

语法

cpp
class RX784::Device {
    Status getAbsMouseState(
        MouseState& mouseState
    );
};
class RX784::Device {
    Status getAbsMouseState(
        MouseState& mouseState
    );
};
e
类名基类公开备注
RX784设备
方法名返回值类型公开备注
取绝对鼠标状态整数型
参数名类型参考可空数组备注
鼠标状态鼠标状态
.版本 2 .程序集 RX784设备, , 公开 .子程序 取绝对鼠标状态, 整数型, 公开 .参数 鼠标状态, 鼠标状态, 参考
py
class Device:
    def get_abs_mouse_state(self) -> Tuple[Status, Optional[MouseState]]: ...
class Device:
    def get_abs_mouse_state(self) -> Tuple[Status, Optional[MouseState]]: ...

返回值

名称英文说明
状态码status成功返回
鼠标状态mouse state设备内部记录的鼠标状态,包括 3 个鼠标按键、光标位置和滚轮值。

类型

cpp
struct RX784::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;
};
struct RX784::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;
};
e
数据类型名公开备注
鼠标状态
成员名类型传址数组备注
按键鼠标状态_按键
鼠标状态_轴
数据类型名公开备注
鼠标状态_按键
成员名类型传址数组备注
左键逻辑型
右键逻辑型
中键逻辑型
数据类型名公开备注
鼠标状态_轴
成员名类型传址数组备注
x短整数型
y短整数型
w短整数型
.版本 2 .数据类型 鼠标状态, 公开 .成员 按键, 鼠标状态_按键 .成员 轴, 鼠标状态_轴 .数据类型 鼠标状态_按键, 公开 .成员 左键, 逻辑型 .成员 右键, 逻辑型 .成员 中键, 逻辑型 .数据类型 鼠标状态_轴, 公开 .成员 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 MouseState:
    @dataclass
    class Buttons:
        left:   bool
        right:  bool
        middle: bool

    @dataclass
    class Axes:
        x: int
        y: int
        w: int

    buttons: Buttons
    axes:    Axes

示例

cpp
#include <cstdio>
#include "rx784.hpp"

int main() {
    RX784::Device device;
    RX784::Status status;
    RX784::MouseState mouseState;

    device.open("COM1");

    device.initAbsSystem(1920, 1080);

    status = device.getAbsMouseState(mouseState);
    if (status == RX784::Status::kSuccess) {
        printf("左键: %s\n"
               "右键: %s\n"
               "中键: %s\n"
               "水平: %hd\n"
               "竖直: %hd\n"
               "滚轮: %hd\n",
               mouseState.buttons.left   ? "true" : "false",
               mouseState.buttons.right  ? "true" : "false",
               mouseState.buttons.middle ? "true" : "false",
               mouseState.axes.x,
               mouseState.axes.y,
               mouseState.axes.w);
    } else {
        printf(RX784::statusToString(status).c_str());
    }

    device.close();
}
#include <cstdio>
#include "rx784.hpp"

int main() {
    RX784::Device device;
    RX784::Status status;
    RX784::MouseState mouseState;

    device.open("COM1");

    device.initAbsSystem(1920, 1080);

    status = device.getAbsMouseState(mouseState);
    if (status == RX784::Status::kSuccess) {
        printf("左键: %s\n"
               "右键: %s\n"
               "中键: %s\n"
               "水平: %hd\n"
               "竖直: %hd\n"
               "滚轮: %hd\n",
               mouseState.buttons.left   ? "true" : "false",
               mouseState.buttons.right  ? "true" : "false",
               mouseState.buttons.middle ? "true" : "false",
               mouseState.axes.x,
               mouseState.axes.y,
               mouseState.axes.w);
    } else {
        printf(RX784::statusToString(status).c_str());
    }

    device.close();
}
e
方法名返回值类型公开备注
_启动子程序整数型
变量名类型静态数组备注
设备RX784设备
状态码整数型
鼠标状态鼠标状态
设备.打开 (“COM1”)
设备.初始化绝对坐标系统 (1920, 1080)
状态码 = 设备.取绝对鼠标状态 (鼠标状态)
如果 (状态码 = #RX784状态码_成功)
    调试输出 (“左键”, 鼠标状态.按键.左键)
    调试输出 (“右键”, 鼠标状态.按键.右键)
    调试输出 (“中键”, 鼠标状态.按键.中键)
    调试输出 (“水平”, 鼠标状态.轴.x)
    调试输出 (“竖直”, 鼠标状态.轴.y)
    调试输出 (“滚轮”, 鼠标状态.轴.w)
否则
    调试输出 (RX784状态码到文本 (状态码))
如果结束
设备.关闭 ()
返回 (0)
.版本 2 .子程序 _启动子程序, 整数型 .局部变量 设备, RX784设备 .局部变量 状态码, 整数型 .局部变量 鼠标状态, 鼠标状态 设备.打开 (“COM1”) 设备.初始化绝对坐标系统 (1920, 1080) 状态码 = 设备.取绝对鼠标状态 (鼠标状态) .如果 (状态码 = #RX784状态码_成功) 调试输出 (“左键”, 鼠标状态.按键.左键) 调试输出 (“右键”, 鼠标状态.按键.右键) 调试输出 (“中键”, 鼠标状态.按键.中键) 调试输出 (“水平”, 鼠标状态.轴.x) 调试输出 (“竖直”, 鼠标状态.轴.y) 调试输出 (“滚轮”, 鼠标状态.轴.w) .否则 调试输出 (RX784状态码到文本 (状态码)) .如果结束 设备.关闭 () 返回 (0)
py
import rx784

device = rx784.Device()

device.open('COM1')

device.init_abs_system(1920, 1080)

status, mouse_state = device.get_abs_mouse_state()
if status == rx784.Status.SUCCESS:
    print('左键:', mouse_state.buttons.left)
    print('右键:', mouse_state.buttons.right)
    print('中键:', mouse_state.buttons.middle)
    print('水平:', mouse_state.axes.x)
    print('竖直:', mouse_state.axes.y)
    print('滚轮:', mouse_state.axes.w)
else:
    print(status)

device.close()
import rx784

device = rx784.Device()

device.open('COM1')

device.init_abs_system(1920, 1080)

status, mouse_state = device.get_abs_mouse_state()
if status == rx784.Status.SUCCESS:
    print('左键:', mouse_state.buttons.left)
    print('右键:', mouse_state.buttons.right)
    print('中键:', mouse_state.buttons.middle)
    print('水平:', mouse_state.axes.x)
    print('竖直:', mouse_state.axes.y)
    print('滚轮:', mouse_state.axes.w)
else:
    print(status)

device.close()