0x8040 · brightnessControl
显示屏或背光的亮度范围、数值和独立照明控制,适用于 feature 版本 1。
此功能控制通告 BrightnessControl 的设备显示屏或背光亮度。它报告亮度范围和能力位。当设备通告该能力时,它也可独立读取或设置照明状态。
**规格:**Logitech HID++ 2.0 —— brightnessControl。用于:
openlogi-hidpp中的类型化封装;v0.8.15 没有设备层路径。
函数参考
BrightnessControlFeature(0x8040,版本 1)提供以下方法。
方法
| 函数 | HID++ fn | 签名 | 返回值 |
|---|---|---|---|
get_info | 0 | () | BrightnessInfo |
get_brightness | 1 | () | u16 |
set_brightness | 2 | (brightness: u16) | () |
get_illumination | 3 | () | bool |
set_illumination | 4 | (enabled: bool) | () |
所有方法都是 async,并返回 Result<…, Hidpp20Error>。
类型
BrightnessInfo
| 字段 | 类型 | 说明 |
|---|---|---|
min_brightness | u16 | 最低可接受亮度。 |
max_brightness | u16 | 最高可接受亮度。 |
steps | u16 | 设备通告的亮度步数。 |
capabilities | BrightnessCapabilities | feature 能力位。 |
BrightnessCapabilities
OpenLogi 解码能力字节时会保留未知位。
| 字段 | 位 | 说明 |
|---|---|---|
HARDWARE_BRIGHTNESS | 0 | 硬件可直接改变亮度。 |
EVENTS | 1 | 设备可发送亮度或照明变更。 |
ILLUMINATION | 2 | 可独立查询和控制照明。 |
HARDWARE_ON_OFF | 3 | 硬件可直接开关照明。 |
TRANSIENT | 4 | 亮度不会在电源循环后保留。 |
事件
BrightnessControlFeature 不提供事件类型或监听器。因此,OpenLogi 没有使用 EVENTS 能力的事件消费者。
线格式
请求使用 3 字节短载荷。所有多字节字段均为 BE。OpenLogi 会在解码前将短回复扩展为 16 字节载荷。
get_info(fn 0)
请求:[0x00, 0x00, 0x00]
| 字节 | 字段 | 备注 |
|---|---|---|
| 0–1 | max_brightness | BE u16。 |
| 2 | steps 的低字节 | 与字节 6 组合。 |
| 3 | capabilities | BrightnessCapabilities 位字段。 |
| 4–5 | min_brightness | BE u16。 |
| 6 | steps 的高字节 | steps 按字节 6、2 的顺序读取为 BE 值。 |
get_brightness(fn 1)
请求:[0x00, 0x00, 0x00]
| 字节 | 字段 | 备注 |
|---|---|---|
| 0–1 | 亮度 | BE u16。 |
set_brightness(fn 2)
请求:[brightness_hi, brightness_lo, 0x00],其中亮度为 BE u16。
回复是确认。OpenLogi 不检查回复载荷。
get_illumination(fn 3)
请求:[0x00, 0x00, 0x00]
| 字节 | 字段 | 备注 |
|---|---|---|
| 0 | 照明状态 | 位 0 置位表示 true。 |
set_illumination(fn 4)
请求:[enabled, 0x00, 0x00],其中 enabled 为 0x00 或 0x01。
回复是确认。OpenLogi 不检查回复载荷。
OpenLogi 的用法
OpenLogi 在 HID++ feature 注册表中注册 BrightnessControlFeature。在 v0.8.15 中,没有 openlogi-device、代理、CLI、库存或面向用户的路径会打开此 feature。
因此,OpenLogi 不读取其范围,不应用能力门控,不读回写入,不恢复其状态,也不订阅通告的事件。直接调用方应先调用 get_info(),并在调用 fn 3 或 fn 4 前确认 ILLUMINATION。
Rust 用法
use hidpp::{
device::Device,
feature::brightness_control::{BrightnessCapabilities, BrightnessControlFeature},
};
// `device` 已为 HID++ 通道和设备索引创建。
device.enumerate_features().await?;
if let Some(feature) = device.get_feature::<BrightnessControlFeature>() {
let info = feature.get_info().await?;
let current = feature.get_brightness().await?;
println!("brightness: {current} of {}", info.max_brightness);
if info.capabilities.contains(BrightnessCapabilities::ILLUMINATION) {
feature.set_illumination(true).await?;
}
}