Alienware 13 R3背光LED控制器
alienware-13r3-alien-effects的Python项目详细描述
Alienware 13 R3的外星效果
alien effects-13r3
是一款轻量级且高度可定制的应用程序,用于控制Linux中Alienware 13 r3笔记本电脑的LED背光(外星效果)。
安装和使用
- python版本
- 建议使用3.6
- 3.4可能不起作用
- 强烈建议2
sudo pip3安装alienware-13r3-alien-effects
以安装- 要从源代码安装,请克隆此repo并安装sudo python3 setup.py
sudo alieneffects-13r3——主题文件<;主题文件路径>;
应用主题的步骤sudo alieneffects-13r3
打开文本用户界面,从中可以选择主题- 第一个字段是themes目录
- 设置后,该目录中的文件列表将显示在下面
- 通过将鼠标悬停在它们上,您可以在右侧面板上看到每个主题的概述
- 按回车键应用主题
- 有些主题具有随机性,因此多次应用同一主题会导致不同的主题
配置文件
- 默认情况下,主题目录将是您的主目录
- 您可以编写配置文件
.alieneffects-13r3.json
来指定主题目录
{
"THEMES_DIRECTORY": "/home/foo/bar/themes"
}
编写自己的主题
- 日志将写入
.alieneffects-13r3.log
- 主题文件也是json文件,可以包含以下键
- 描述-描述主题
- 速度-闪烁和/或变形的频率
- 持续时间-每个效果的持续时间
- 区域-每个区域的序列
- <;区域名称>;例如电源按钮
- <;效果序列>;例如。
- 设置颜色,颜色
- 闪烁颜色,颜色
- 变形颜色,颜色1,颜色2
- 循环序列
- <;效果序列>;例如。
- <;区域名称>;例如电源按钮
- 通过用""分隔区域,可以对多个区域应用相同的序列
- 如果效果没有颜色,则将选择随机颜色
- 最简单的主题是关闭所有灯光
{
"DESCRIPTION": "sets all zones to black color i.e. switches off all lights",
"ZONES": {
"POWER_BUTTON|ALIENWARE_LOGO|ALIEN_HEAD|LEFT_KEYBOARD|TOUCH_PAD|MIDDLE_LEFT_KEYBOARD|MIDDLE_RIGHT_KEYBOARD|RIGHT_KEYBOARD": [
{
"EFFECT": "SET_COLOR",
"COLOR": [
0,
0,
0
]
},
{
"EFFECT": "LOOP_SEQUENCE"
}
]
}
}
- 随机主题将随机颜色设置到所有区域
{
"DESCRIPTION": "set same random color for all zones",
"TEMPO": 300,
"DURATION": 11000,
"ZONES": {
"ALIENWARE_LOGO|ALIEN_HEAD|LEFT_KEYBOARD|TOUCH_PAD|MIDDLE_LEFT_KEYBOARD|MIDDLE_RIGHT_KEYBOARD|RIGHT_KEYBOARD": [
{
"EFFECT": "SET_COLOR"
},
{
"EFFECT": "LOOP_SEQUENCE"
}
]
}
}
简介-逆向工程
Alienware 13 R3有8个可配置的灯区,如下表所示。
所有灯都可以通过USB协议控制。
对于此特定设备供应商ID=0x187c
和产品ID=0x0529
可以使用USB协议的控制传输来传递命令。
请注意,此应用程序只能用于Alienware 13 R3型号,对于其他型号,请参阅ps://github.com/trackmastersteve/alienfx" rel="nofollow">alienfx作者:trackmastersteve
控制传输:写入操作参数
bmRequestType = 0x21
0... .... : Host to Device
.01. .... : Request Type = Class
...0 0001 : Recipient = Interface
bRequest = 9
wValue = 0x0202
wIndex = 0
控制传输:读取操作参数
bmRequestType = 0xa1
1... .... : Device to Host
.01. .... : Request Type = Class
...0 0001 : Recipient = Interface
bRequest = 9
wValue = 0x0202
wIndex = 0
命令
<表><广告>r g b
变为rgb
。所有波段使用8位彩色编码。因此每个值必须介于0-255之间。区号
- 16位代码空间用于引用每个光区。
- 使用一种热编码;即每个区域的地址在一个唯一的位置有1,在其他位置有0
- 通过对多个区域的代码进行排序,可以对多个区域进行寻址
- 例如,要寻址整个键盘,请使用0x1 0x2 0x4 0x8=0xf代码
- 更多的区域代码和命令代码可能存在,这可以做一些我们还不知道的事情,
- 例如,将多个区域设置为不同颜色和类似内容
它是怎么工作的?< >简单设置颜色示例
- 发送重置命令
- 发送设置颜色效果命令(例如触摸板)
- 发送循环通信
- 发送执行命令
触摸板颜色会改变并保持不变。 如果没有发出循环命令,则颜色在一定时间后消失。
闪烁或变形示例
- 发送重置命令
- 发送节奏命令
- 发送闪烁效果命令(如触摸板)
- 变形效果命令需要两种颜色
- 发送循环命令
- 发送执行命令
闪烁效果和变形效果需要一个额外的速度命令,该命令决定闪烁或变形的速率。
不同区域的多重效果
- 发送重置命令
- 发送节奏命令
- 发送闪烁效果命令(例如触摸板)
- 发送变形效果命令(表示徽标)
- 发送循环命令
- 发送执行命令
闪烁会持续一段时间并停止。 然后变形会发生一段时间并停止。 发生这种情况是因为两者都设置在同一序列上。
同时在不同区域产生多种效应
- 发送重置命令
- 发送节奏命令
- 在序列1上发送闪烁效果命令(例如触摸板)
- 在序列2上发送变形效果命令(例如徽标)
- 发送循环命令
- 发送执行命令
眨眼和变形是同时发生的。 但眨眼一段时间后就停止了。 这是因为loop命令影响在它之前发出的最新序列。 因此,我们需要在属于一个序列的每一组命令之后发送两个循环命令
在不同区域同时连续产生多重效应
- 发送重置命令
- 发送节奏命令
- 在序列1上发送闪烁效果命令(例如触摸板)
- 发送循环命令
- 在序列2上发送变形效果命令(例如徽标)
- 发送循环命令
- 发送执行命令
眨眼和变形是同时和连续发生的。 如"区域代码"部分所述,可以一次引用多个区域以获得效果
其他
- 某些区域(如电源按钮)似乎仅在某些状态下才可访问(如pugged in、on battery、on battery low)。
- 如果同一区域按不同顺序寻址,则可能会发生闪烁
- 如果无法控制触摸板,请在BIOS设置中将trackpad背光设置设置为
enable
免责声明
- 这里的所有信息都是通过跟踪和错误反向工程获得的,因为Alienware Lights软件似乎不是开源的
- 没有确凿的证据表明这些方法是最好的方法
- 但它们确实起作用,直到现在对我的系统都没有伤害
参考资料
trackmastersteve的alienfx