#anime #asus #usb-hid #buffer #rog

rog_anime

用于将图像和其他数据翻译并在 ASUS AniMe 矩阵显示屏上显示的类型

5 个稳定版本

1.3.0 2021 年 12 月 19 日
1.0.3 2021 年 4 月 11 日

#531硬件支持

MPL-2.0 许可证

99KB
2.5K SLoC

rog-anime

rog-anime 是一个用于与内置 AniMe 矩阵显示屏的 ASUS 笔记本电脑一起使用的 crate。此 crate 可以与 zbus 一起使用,以与该项目中的 asusd 守护程序进行通信,或者它也可以独立使用,通过使用内置函数将数据转换为 USB HID 数据包来直接将数据写入 USB。

目前支持的内容

  • 数据序列
  • 数据可以是
    • 图像
    • ASUS 风格的 gif
    • 纯图像类型的 gif
    • 暂停
  • 创建用于写入设备的 USB HID 数据包

此 crate 主要为与 asus-nb-ctrl 一起使用而构建,后者是 ASUS ROG/TUF 机器上 Linux 的完整守护程序和工具集,但也可以用于通用目的,例如为 Windows 操作系统构建新的控制器。

功能启用

dbus 默认启用 - 这使用 zvariant 在 dbus 接口上启用发送一些类型。

示例

use std::{
    env, error::Error, f32::consts::PI, path::Path, process::exit, thread::sleep, time::Duration,
};

use rog_anime::{
    AniMeDataBuffer, {AniMeImage, Vec2},
};
use rog_dbus::AuraDbusClient;

fn main() -> Result<(), Box<dyn Error>> {
    let (client, _) = AuraDbusClient::new().unwrap();

    let mut image = AniMeImage::from_png(
        Path::new("./doom.png"),
        0.9, // scale
        0.0, // rotation
        Vec2::new(0.0, 0.0), // position
        0.3, // brightness
    )?;

    loop {
        image.angle += 0.05;
        if image.angle > PI * 2.0 {
            image.angle = 0.0
        }
        image.update();

        client
            .proxies()
            .anime()
            .write(<AniMeDataBuffer>::from(&image))
            .unwrap();
        sleep(Duration::from_micros(500));
    }
}

示例,USB HID

let mut image = AniMeImage::from_png(
        Path::new("./doom.png"),
        0.9, // scale
        0.0, // rotation
        Vec2::new(0.0, 0.0), // position
        0.3, // brightness
    )?;

// convert to intermediate packet format
let buffer = <AniMeDataBuffer>::from(&image)
// then to USB HID
let data = AniMePacketType::from(buffer);
// and then write direct
for packet in data.iter() {
    write_usb(packet); // some usb call here
}

数据

  • data/controller.gif 是一个示例 ASUS 对角线方向的 gif。
  • data/diagonal-template.* 是对角线图像或 gif 的模板。

有关对角线布局的详细信息,请参阅 https://blog.joshwalsh.me/asus-anime-matrix/

diagonal-template.* 由上述网站提供。最好将最终文件导出为 36 像素的高度 - 对于对角线显示屏,asusd 或 rog-anime crate 不执行缩放。

待办事项

  • 对角字体和文本
  • 通用字体和文本
  • Linux 和 Windows 的系统信息
  • Linux 和 Windows 的音频 EQ 可视化
  • 时间和日期显示

依赖项

~5MB
~137K SLoC