OpenLogi

0x4522 · disableKeysByUsage

按 8 位 HID Usage 禁用或重新启用键盘按键,并使用累积式长报告请求。

DisableKeysByUsage 控制任意 8 位键盘 HID Usage。与 0x4521 不同,每个禁用或启用请求都会向现有禁用集合中添加或移除 Usage。

**规格:**Logitech HID++ 2.0——disableKeysByUsage。**用于:**OpenLogi 除 openlogi-hidpp 封装外未使用此功能。

函数参考

DisableKeysByUsageFeature 可为功能版本 0 创建。

方法

函数HID++ fn签名返回值
get_capabilities0()u8
disable_keys1(usages: &[u8])()
enable_keys2(usages: &[u8])()
enable_all_keys3()()

每个方法都是 async 方法,并返回 Result<…, Hidpp20Error>。

类型

此功能没有公开的专用类型。usages 中的每个元素都是 8 位键盘 HID Usage。

事件

OpenLogi v0.8.15 不为此功能提供事件类型或 listen() 方法。

线格式

get_capabilities 和 enable_all_keys 使用 3 字节短请求。disable_keys 和 enable_keys 使用 16 字节长请求。

OpenLogi 会拒绝 usages 中的 0x00,并返回 Hidpp20Error::Feature(ErrorType::InvalidArgument)。该值是线上的列表终止符,不能表示禁用按键。

get_capabilities(fn 0)

请求:0x00, 0x00, 0x00。

字节字段说明
0max_usages设备可同时保持禁用的 Usage 最大数量。
1–15—OpenLogi 忽略这些字节。

disable_keys(fn 1)

OpenLogi 将输入切分为最多 16 个 Usage 的顺序数据包。设备将每个数据包累积到禁用集合中。

字节字段说明
0–15usages最多 16 个 Usage 字节。部分数据包以 0x00 填充,这也是终止符。

完整的 16 字节数据包没有终止符。OpenLogi 等待每个响应,但会忽略全部响应字节。

enable_keys(fn 2)

此函数使用与 disable_keys 相同的 16 字节数据包布局。每个 Usage 会从禁用集合中移除对应按键。启用已经启用的按键是设备的无操作。

字节字段说明
0–15usages最多 16 个 Usage 字节。部分数据包以 0x00 填充。

OpenLogi 等待每个响应,但会忽略全部响应字节。

enable_all_keys(fn 3)

请求:0x00, 0x00, 0x00。

此函数清除完整的禁用 Usage 集合。OpenLogi 等待响应,但会忽略响应字节。

OpenLogi 的用法

OpenLogi v0.8.15 只提供类型化封装。设备层、代理、CLI 和用户界面都不会调用此功能。

空 Usage 切片有效,并且不会发送请求。封装不缓存禁用集合,因此退出时没有状态需要恢复。

Rust 用法

use hidpp::{
    device::Device,
    feature::disable_keys_by_usage::DisableKeysByUsageFeature,
};

// `device` is a discovered HID++ device.
device.enumerate_features().await?;
if let Some(feature) = device.get_feature::<DisableKeysByUsageFeature>() {
    let capacity = feature.get_capabilities().await?;
    println!("maximum disabled usages: {capacity}");

    feature.disable_keys(&[0x3a, 0x3b, 0x3c]).await?;
    feature.enable_keys(&[0x3b]).await?;
    feature.enable_all_keys().await?;
}

本页目录