取键盘状态
获取设备内部记录的键盘按键状态,其中包括 8 个修饰键和 7 个普通键。
语法
cpp
class RX784::Device {
Status getKeyboardState(
KeyboardState& keyboardState
);
};
class RX784::Device {
Status getKeyboardState(
KeyboardState& keyboardState
);
};
e
类名 基类 公开 备注 RX784设备 ✔
方法名 返回值类型 公开 备注 取键盘状态 整数型 ✔ 参数名 类型 参考 可空 数组 备注 键盘状态 键盘状态 ✔
.版本 2
.程序集 RX784设备, , 公开
.子程序 取键盘状态, 整数型, 公开
.参数 键盘状态, 键盘状态, 参考
py
class Device:
def get_keyboard_state(self) -> Tuple[Status, Optional[KeyboardState]]: ...
class Device:
def get_keyboard_state(self) -> Tuple[Status, Optional[KeyboardState]]: ...
返回值
名称 | 英文 | 说明 |
---|---|---|
状态码 | status | 成功返回 。 |
键盘状态 | keyboard state | 设备内部记录的键盘按键状态。 |
类型
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 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];
};
e
数据类型名 公开 备注 键盘状态 ✔ 成员名 类型 传址 数组 备注 修饰键 键盘状态_修饰键 常规键 字节型 7
数据类型名 公开 备注 键盘状态_修饰键 ✔ 成员名 类型 传址 数组 备注 左Ctrl键 逻辑型 左Shift键 逻辑型 左Alt键 逻辑型 左OS键 逻辑型 右Ctrl键 逻辑型 右Shift键 逻辑型 右Alt键 逻辑型 右OS键 逻辑型
.版本 2
.数据类型 键盘状态, 公开
.成员 修饰键, 键盘状态_修饰键
.成员 常规键, 字节型, , "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 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]
示例
cpp
#include <cstdio>
#include "rx784.hpp"
int main() {
RX784::Device device;
RX784::Status status;
RX784::KeyboardState keyboardState;
device.open("COM1");
status = device.getKeyboardState(keyboardState);
if (status == RX784::Status::kSuccess) {
printf("controlLeft | %s\n"
"shiftLeft | %s\n"
"altLeft | %s\n"
"OSLeft | %s\n"
"controlRight | %s\n"
"shiftRight | %s\n"
"altRight | %s\n"
"OSRight | %s\n",
keyboardState.modifierKeys.controlLeft ? "true" : "false",
keyboardState.modifierKeys.shiftLeft ? "true" : "false",
keyboardState.modifierKeys.altLeft ? "true" : "false",
keyboardState.modifierKeys.OSLeft ? "true" : "false",
keyboardState.modifierKeys.controlRight ? "true" : "false",
keyboardState.modifierKeys.shiftRight ? "true" : "false",
keyboardState.modifierKeys.altRight ? "true" : "false",
keyboardState.modifierKeys.OSRight ? "true" : "false");
for (size_t i = 0; i < sizeof(keyboardState.regularKeys); i++) {
printf("regularKeys[%zd] | %hhu\n",
i,
keyboardState.regularKeys[i]);
}
} else {
printf(RX784::statusToString(status).c_str());
}
device.close();
}
#include <cstdio>
#include "rx784.hpp"
int main() {
RX784::Device device;
RX784::Status status;
RX784::KeyboardState keyboardState;
device.open("COM1");
status = device.getKeyboardState(keyboardState);
if (status == RX784::Status::kSuccess) {
printf("controlLeft | %s\n"
"shiftLeft | %s\n"
"altLeft | %s\n"
"OSLeft | %s\n"
"controlRight | %s\n"
"shiftRight | %s\n"
"altRight | %s\n"
"OSRight | %s\n",
keyboardState.modifierKeys.controlLeft ? "true" : "false",
keyboardState.modifierKeys.shiftLeft ? "true" : "false",
keyboardState.modifierKeys.altLeft ? "true" : "false",
keyboardState.modifierKeys.OSLeft ? "true" : "false",
keyboardState.modifierKeys.controlRight ? "true" : "false",
keyboardState.modifierKeys.shiftRight ? "true" : "false",
keyboardState.modifierKeys.altRight ? "true" : "false",
keyboardState.modifierKeys.OSRight ? "true" : "false");
for (size_t i = 0; i < sizeof(keyboardState.regularKeys); i++) {
printf("regularKeys[%zd] | %hhu\n",
i,
keyboardState.regularKeys[i]);
}
} else {
printf(RX784::statusToString(status).c_str());
}
device.close();
}
e
方法名 返回值类型 公开 备注 _启动子程序 整数型
变量名 类型 静态 数组 备注 设备 RX784设备 键盘状态 键盘状态 状态码 整数型 i 整数型
设备.打开 (“COM1”)状态码 = 设备.取键盘状态 (键盘状态) 如果 (状态码 = #RX784状态码_成功) 调试输出 (“左Ctrl键 ”, 键盘状态.修饰键.左Ctrl键) 调试输出 (“左Shift键”, 键盘状态.修饰键.左Shift键) 调试输出 (“左Alt键 ”, 键盘状态.修饰键.左Alt键) 调试输出 (“左OS键 ”, 键盘状态.修饰键.左OS键) 调试输出 (“右Ctrl键 ”, 键盘状态.修饰键.右Ctrl键) 调试输出 (“右Shift键”, 键盘状态.修饰键.右Shift键) 调试输出 (“右Alt键 ”, 键盘状态.修饰键.右Alt键) 调试输出 (“右OS键 ”, 键盘状态.修饰键.右OS键) 计次循环首 (取数组成员数 (键盘状态.常规键), i) 调试输出 (“常规键[” + 到文本 (i) + “]”, 键盘状态.常规键 [i]) 计次循环尾 () 否则 调试输出 (RX784状态码到文本 (状态码)) 如果结束设备.关闭 ()返回 (0).版本 2
.子程序 _启动子程序, 整数型
.局部变量 设备, RX784设备
.局部变量 键盘状态, 键盘状态
.局部变量 状态码, 整数型
.局部变量 i, 整数型
设备.打开 (“COM1”)
状态码 = 设备.取键盘状态 (键盘状态)
.如果 (状态码 = #RX784状态码_成功)
调试输出 (“左Ctrl键 ”, 键盘状态.修饰键.左Ctrl键)
调试输出 (“左Shift键”, 键盘状态.修饰键.左Shift键)
调试输出 (“左Alt键 ”, 键盘状态.修饰键.左Alt键)
调试输出 (“左OS键 ”, 键盘状态.修饰键.左OS键)
调试输出 (“右Ctrl键 ”, 键盘状态.修饰键.右Ctrl键)
调试输出 (“右Shift键”, 键盘状态.修饰键.右Shift键)
调试输出 (“右Alt键 ”, 键盘状态.修饰键.右Alt键)
调试输出 (“右OS键 ”, 键盘状态.修饰键.右OS键)
.计次循环首 (取数组成员数 (键盘状态.常规键), i)
调试输出 (“常规键[” + 到文本 (i) + “]”, 键盘状态.常规键 [i])
.计次循环尾 ()
.否则
调试输出 (RX784状态码到文本 (状态码))
.如果结束
设备.关闭 ()
返回 (0)
py
import rx784
device = rx784.Device()
device.open('COM1')
status, keyboard_state = device.get_keyboard_state()
if status == rx784.Status.SUCCESS:
print('control_left |', keyboard_state.modifier_keys.control_left )
print('shift_left |', keyboard_state.modifier_keys.shift_left)
print('alt_left |', keyboard_state.modifier_keys.alt_left)
print('os_left |', keyboard_state.modifier_keys.os_left)
print('control_right |', keyboard_state.modifier_keys.control_right)
print('shift_right |', keyboard_state.modifier_keys.shift_right)
print('alt_right |', keyboard_state.modifier_keys.alt_right)
print('os_right |', keyboard_state.modifier_keys.os_right)
for i, key in enumerate(keyboard_state.regular_keys):
print('regular_keys[', i, '] |', key)
else:
print(status)
device.close()
import rx784
device = rx784.Device()
device.open('COM1')
status, keyboard_state = device.get_keyboard_state()
if status == rx784.Status.SUCCESS:
print('control_left |', keyboard_state.modifier_keys.control_left )
print('shift_left |', keyboard_state.modifier_keys.shift_left)
print('alt_left |', keyboard_state.modifier_keys.alt_left)
print('os_left |', keyboard_state.modifier_keys.os_left)
print('control_right |', keyboard_state.modifier_keys.control_right)
print('shift_right |', keyboard_state.modifier_keys.shift_right)
print('alt_right |', keyboard_state.modifier_keys.alt_right)
print('os_right |', keyboard_state.modifier_keys.os_right)
for i, key in enumerate(keyboard_state.regular_keys):
print('regular_keys[', i, '] |', key)
else:
print(status)
device.close()