Skip to content

发送键盘状态

直接发送 USB HID 键盘报告,并更改设备内部记录的键盘状态。

语法

cpp
class RX784::Device {
    Status sendKeyboardState(
        const KeyboardState&     keyboardState,
        const KeyboardStateMask& keyboardStateMask
    );
};
class RX784::Device {
    Status sendKeyboardState(
        const KeyboardState&     keyboardState,
        const KeyboardStateMask& keyboardStateMask
    );
};
e
类名基类公开备注
RX784设备
方法名返回值类型公开备注
发送键盘状态整数型
参数名类型参考可空数组备注
键盘状态键盘状态
键盘状态掩码键盘状态掩码
.版本 2 .程序集 RX784设备, , 公开 .子程序 发送键盘状态, 整数型, 公开 .参数 键盘状态, 键盘状态 .参数 键盘状态掩码, 键盘状态掩码
py
class Device:
    def send_keyboard_state(self,
        keyboard_state:      KeyboardState,
        keyboard_state_mask: KeyboardStateMask
    ) -> Status: ...
class Device:
    def send_keyboard_state(self,
        keyboard_state:      KeyboardState,
        keyboard_state_mask: KeyboardStateMask
    ) -> Status: ...

参数

名称英文说明
键盘状态keyboard state要设置的状态。
键盘状态掩码keyboard state mask掩码值为真的字段才会被设置。

返回值

名称英文说明
状态码status成功返回

备注

一般先取得键盘状态,然后根据需要修改状态,将需要改变的字段的掩码设置为真,表示只改变这些字段,其他字段不变。

类型

cpp
struct RX784::KeyboardState {
    struct ModifierKeys {
        uint8_t controlLeft  : 1;
        uint8_t shiftLeft    : 1;
        uint8_t altLeft      : 1;
        uint8_t OSLeft       : 1;
        uint8_t controlRight : 1;
        uint8_t shiftRight   : 1;
        uint8_t altRight     : 1;
        uint8_t OSRight      : 1;
    };
    ModifierKeys modifierKeys;
    VirtualKeyCode regularKeys[7];
};

struct KeyboardStateMask {
    struct ModifierKeys {
        uint8_t controlLeft  : 1;
        uint8_t shiftLeft    : 1;
        uint8_t altLeft      : 1;
        uint8_t OSLeft       : 1;
        uint8_t controlRight : 1;
        uint8_t shiftRight   : 1;
        uint8_t altRight     : 1;
        uint8_t OSRight      : 1;
    };
    ModifierKeys modifierKeys;
    bool regularKeys[7];
};
struct RX784::KeyboardState {
    struct ModifierKeys {
        uint8_t controlLeft  : 1;
        uint8_t shiftLeft    : 1;
        uint8_t altLeft      : 1;
        uint8_t OSLeft       : 1;
        uint8_t controlRight : 1;
        uint8_t shiftRight   : 1;
        uint8_t altRight     : 1;
        uint8_t OSRight      : 1;
    };
    ModifierKeys modifierKeys;
    VirtualKeyCode regularKeys[7];
};

struct KeyboardStateMask {
    struct ModifierKeys {
        uint8_t controlLeft  : 1;
        uint8_t shiftLeft    : 1;
        uint8_t altLeft      : 1;
        uint8_t OSLeft       : 1;
        uint8_t controlRight : 1;
        uint8_t shiftRight   : 1;
        uint8_t altRight     : 1;
        uint8_t OSRight      : 1;
    };
    ModifierKeys modifierKeys;
    bool regularKeys[7];
};
e
数据类型名公开备注
键盘状态
成员名类型传址数组备注
修饰键键盘状态_修饰键
常规键字节型7
数据类型名公开备注
键盘状态_修饰键
成员名类型传址数组备注
左Ctrl键逻辑型
左Shift键逻辑型
左Alt键逻辑型
左OS键逻辑型
右Ctrl键逻辑型
右Shift键逻辑型
右Alt键逻辑型
右OS键逻辑型
数据类型名公开备注
键盘状态掩码
成员名类型传址数组备注
修饰键键盘状态掩码_修饰键
常规键逻辑型7
数据类型名公开备注
键盘状态掩码_修饰键
成员名类型传址数组备注
左Ctrl键逻辑型
左Shift键逻辑型
左Alt键逻辑型
左OS键逻辑型
右Ctrl键逻辑型
右Shift键逻辑型
右Alt键逻辑型
右OS键逻辑型
.版本 2 .数据类型 键盘状态, 公开 .成员 修饰键, 键盘状态_修饰键 .成员 常规键, 字节型, , "7" .数据类型 键盘状态_修饰键, 公开 .成员 左Ctrl键, 逻辑型 .成员 左Shift键, 逻辑型 .成员 左Alt键, 逻辑型 .成员 左OS键, 逻辑型 .成员 右Ctrl键, 逻辑型 .成员 右Shift键, 逻辑型 .成员 右Alt键, 逻辑型 .成员 右OS键, 逻辑型 .数据类型 键盘状态掩码, 公开 .成员 修饰键, 键盘状态掩码_修饰键 .成员 常规键, 逻辑型, , "7" .数据类型 键盘状态掩码_修饰键, 公开 .成员 左Ctrl键, 逻辑型 .成员 左Shift键, 逻辑型 .成员 左Alt键, 逻辑型 .成员 左OS键, 逻辑型 .成员 右Ctrl键, 逻辑型 .成员 右Shift键, 逻辑型 .成员 右Alt键, 逻辑型 .成员 右OS键, 逻辑型
py
@dataclass
class KeyboardState:
    @dataclass
    class ModeiferKeys:
        control_left:  bool
        shift_left:    bool
        alt_left:      bool
        os_left:       bool
        control_right: bool
        shift_right:   bool
        alt_right:     bool
        os_right:      bool

    modifier_keys: ModeiferKeys
    regular_keys:  List[VirtualKeyCode]


@dataclass
class KeyboardStateMask:
    @dataclass
    class ModeiferKeys:
        control_left:  bool = False
        shift_left:    bool = False
        alt_left:      bool = False
        os_left:       bool = False
        control_right: bool = False
        shift_right:   bool = False
        alt_right:     bool = False
        os_right:      bool = False

    modifier_keys: ModeiferKeys = field(default_factory=ModeiferKeys)
    regular_keys:  List[bool] = field(default_factory=lambda: [False] * 7)
@dataclass
class KeyboardState:
    @dataclass
    class ModeiferKeys:
        control_left:  bool
        shift_left:    bool
        alt_left:      bool
        os_left:       bool
        control_right: bool
        shift_right:   bool
        alt_right:     bool
        os_right:      bool

    modifier_keys: ModeiferKeys
    regular_keys:  List[VirtualKeyCode]


@dataclass
class KeyboardStateMask:
    @dataclass
    class ModeiferKeys:
        control_left:  bool = False
        shift_left:    bool = False
        alt_left:      bool = False
        os_left:       bool = False
        control_right: bool = False
        shift_right:   bool = False
        alt_right:     bool = False
        os_right:      bool = False

    modifier_keys: ModeiferKeys = field(default_factory=ModeiferKeys)
    regular_keys:  List[bool] = field(default_factory=lambda: [False] * 7)

示例

cpp
#include "rx784.hpp"

int main() {
    RX784::Device device;
    RX784::KeyboardState keyboardState{};
    RX784::KeyboardStateMask keyboardStateMask{};

    device.open("COM1");

    device.initAbsSystem(1920, 1080);

    device.getKeyboardState(keyboardState);

    keyboardState.modifierKeys.OSLeft = false;     // 不再按下左 OS 键
    keyboardStateMask.modifierKeys.OSLeft = true;  // 只影响修饰键的左 OS 键
    device.sendKeyboardState(keyboardState, keyboardStateMask);

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

int main() {
    RX784::Device device;
    RX784::KeyboardState keyboardState{};
    RX784::KeyboardStateMask keyboardStateMask{};

    device.open("COM1");

    device.initAbsSystem(1920, 1080);

    device.getKeyboardState(keyboardState);

    keyboardState.modifierKeys.OSLeft = false;     // 不再按下左 OS 键
    keyboardStateMask.modifierKeys.OSLeft = true;  // 只影响修饰键的左 OS 键
    device.sendKeyboardState(keyboardState, keyboardStateMask);

    device.close();
}
e
方法名返回值类型公开备注
_启动子程序整数型
变量名类型静态数组备注
设备RX784设备
键盘状态键盘状态
键盘状态掩码键盘状态掩码
设备.打开 (“COM1”)
设备.取键盘状态 (键盘状态)
键盘状态.修饰键.左OS键 = 假
键盘状态掩码.修饰键.左OS键 = 真
设备.发送键盘状态 (键盘状态, 键盘状态掩码)
设备.关闭 ()
返回 (0)
.版本 2 .子程序 _启动子程序, 整数型 .局部变量 设备, RX784设备 .局部变量 键盘状态, 键盘状态 .局部变量 键盘状态掩码, 键盘状态掩码 设备.打开 (“COM1”) 设备.取键盘状态 (键盘状态) 键盘状态.修饰键.左OS键 = 假 键盘状态掩码.修饰键.左OS键 = 真 设备.发送键盘状态 (键盘状态, 键盘状态掩码) 设备.关闭 () 返回 (0)
py
import rx784

device = rx784.Device()

device.open('COM1')

status, keyboard_state = device.get_keyboard_state()

keyboard_state.modifier_keys.os_left = False
keyboard_state_mask = rx784.KeyboardStateMask()
keyboard_state_mask.modifier_keys.os_left = True
device.send_keyboard_state(keyboard_state, keyboard_state_mask)

device.close()
import rx784

device = rx784.Device()

device.open('COM1')

status, keyboard_state = device.get_keyboard_state()

keyboard_state.modifier_keys.os_left = False
keyboard_state_mask = rx784.KeyboardStateMask()
keyboard_state_mask.modifier_keys.os_left = True
device.send_keyboard_state(keyboard_state, keyboard_state_mask)

device.close()