#stream #elgato #devices #decks #driver #streamdeck #hid-api

elgato-streamdeck

HidApi 驱动程序,用于 Elgato Stream Decks

16 个不稳定版本 (6 个破坏性更新)

0.7.1 2024 年 8 月 13 日
0.7.0 2024 年 6 月 16 日
0.6.1 2024 年 5 月 16 日
0.5.0 2023 年 10 月 15 日
0.2.2 2022 年 11 月 7 日

硬件支持 中排名第 139

每月下载量 33

MPL-2.0 许可证

90KB
1.5K SLoC

elgato-streamdeck

通过 hidapi 与 Elgato Stream Decks 交互的库。主要基于 python-elgato-streamdeck 和部分基于 Rust Stream Deck 库

这个库是为了作为 Rust Stream Deck 库的更好设计的替代品而创建的。我只是从这两个库中提取了代码,并使其更容易使用。

Linux 的 udev 规则

如果你在系统上使用 systemd,你可能需要安装 udev 规则,以便从用户空间连接到 Stream Decks。

你可以通过以下命令将包含的 40-streamdeck.rules 文件复制到 udev/rules.d/

cp 40-streamdeck.rules /etc/udev/rules.d/

然后重新加载 udev 规则

sudo udevadm control --reload-rules

拔掉并重新插上设备也应该有帮助

你还应该创建一个名为 "plugdev" 的组,并将自己添加到该组中,这样你就可以访问设备。你还需要重新启动用户会话,以便用户组更改生效

示例

// Create instance of HidApi
let hid = new_hidapi();

// List devices and unsafely take first one
let (kind, serial) = StreamDeck::list_devices(&hid).remove(0);

// Connect to the device
let mut device = StreamDeck::connect(&hid, kind, &serial)
    .expect("Failed to connect");

// Print out some info from the device
println!(
    "Connected to '{}' with version '{}'",
    device.serial_number().unwrap(),
    device.firmware_version().unwrap()
);

// Set device brightness
device.set_brightness(35).unwrap();

// Use image-rs to load an image
let image = open("no-place-like-localhost.jpg").unwrap();

// Write it to the device
device.set_button_image(7, image).unwrap();

// Flush
if device.updated {
    device.flush().unwrap();
}

状态

  • 使用 API 查找设备、连接到它们并与它们交互非常方便
  • 异步读取按钮

支持的设备

设备的支持与上述库相同,我亲自测试了 Original v2 和 Plus。我会继续更新这个库以匹配上游库。

但就目前而言,这个库应该支持以下设备

依赖项

~2–13MB
~107K SLoC