发送键盘状态
直接发送 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()