Alienware 13 R3背光LED控制器

alienware-13r3-alien-effects的Python项目详细描述


Alienware 13 R3的外星效果

github licensepython3pypi

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目录
    • 设置后,该目录中的文件列表将显示在下面
    • 通过将鼠标悬停在它们上,您可以在右侧面板上看到每个主题的概述
    • 按回车键应用主题
    • 有些主题具有随机性,因此多次应用同一主题会导致不同的主题

alt tui

配置文件

  • 默认情况下,主题目录将是您的主目录
  • 您可以编写配置文件.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"
      }
    ]
  }
}

简介-逆向工程

alt tui

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

命令

<表><广告>命令 数据包结构(字节)说明 注释< /广告><正文>复位2 7吨0 0 0 0 0 0 0 0t:type,t=3:reset all off并停止执行序列t=4:reset all on每次换衣服前都要打电话。这需要一些时间,你应该等到手术结束。过早的命令可能会失败。获取状态2 6 0 0 0 0 0 0 0 0 0 0 0S:序列ID,Z:区域可以使用此选项等待状态为就绪变形2 1秒z z z r g b r g bS:序列ID,Z:区域颜色从r g b变为rgb。所有波段使用8位彩色编码。因此每个值必须介于0-255之间。脉搏2 2秒z z z r g b 0 0S:序列ID,Z:区域简单集合2 3秒z z z r g b 0 0S:序列ID,Z:区域循环2 4 0 0 0 0 0 0 0 0 0 0 0S:序列ID,Z:区域如果不这样做,LED将在遍历用户指定的颜色序列后熄灭。托多:这怎么知道目标是哪个序列?最后一个提到的?如果序列是交错的,会发生什么?执行2 5 0 0 0 0 0 0 0 0 0 0 0S:序列ID,Z:区域必须在结尾处调用。开始执行颜色序列保存下一个命令2 8米0 0 0 0 0 0 0 0M:模式,M=01:初始状态M=2:接通-休眠;只有电源按钮在该模式下工作?M=5:插电-正常M=6:插电-充电M=7:使用电池-睡眠M=8:使用电池-正常M=9:使用电池-电量低将下一个命令保存到指定模式。必须后跟动作或循环全部保存2 9 0 0 0 0 0 0 0 0 0 0 0永久保存插槽。如果不调用此命令,则数据插槽将在重新启动时丢失节奏2 E t t 0 0 0 0 0 0 0T:节奏alienfx将此值设置在00:1e~03:ae之间。

区号

  • 16位代码空间用于引用每个光区。
  • 使用一种热编码;即每个区域的地址在一个唯一的位置有1,在其他位置有0
  • 通过对多个区域的代码进行排序,可以对多个区域进行寻址
    • 例如,要寻址整个键盘,请使用0x1 0x2 0x4 0x8=0xf代码
  • 更多的区域代码和命令代码可能存在,这可以做一些我们还不知道的事情,
    • 例如,将多个区域设置为不同颜色和类似内容
<表><广告>区域Alienware 13 R3二进制<十六进制>< /广告><正文>键盘右键000 0000 0000 00010x0001键盘右中000 0000 0000 00100x0002键盘左中000 0000 0000 01000x0004键盘左键000 0000 0000 10000x0008未知/未使用000 0000 0001 00000x0010外星头000 0000 0010 00000x0020Alienware徽标000 0000 0100 00000x0040触摸板000万1000万0x0080电源按钮000 0001 00000x0100

它是怎么工作的?< >

简单设置颜色示例

  • 发送重置命令
  • 发送设置颜色效果命令(例如触摸板)
  • 发送循环通信
  • 发送执行命令

触摸板颜色会改变并保持不变。 如果没有发出循环命令,则颜色在一定时间后消失。

闪烁或变形示例

  • 发送重置命令
  • 发送节奏命令
  • 发送闪烁效果命令(如触摸板)
    • 变形效果命令需要两种颜色
  • 发送循环命令
  • 发送执行命令

闪烁效果和变形效果需要一个额外的速度命令,该命令决定闪烁或变形的速率。

不同区域的多重效果

  • 发送重置命令
  • 发送节奏命令
  • 发送闪烁效果命令(例如触摸板)
  • 发送变形效果命令(表示徽标)
  • 发送循环命令
  • 发送执行命令

闪烁会持续一段时间并停止。 然后变形会发生一段时间并停止。 发生这种情况是因为两者都设置在同一序列上。

同时在不同区域产生多种效应

  • 发送重置命令
  • 发送节奏命令
  • 在序列1上发送闪烁效果命令(例如触摸板)
  • 在序列2上发送变形效果命令(例如徽标)
  • 发送循环命令
  • 发送执行命令

眨眼和变形是同时发生的。 但眨眼一段时间后就停止了。 这是因为loop命令影响在它之前发出的最新序列。 因此,我们需要在属于一个序列的每一组命令之后发送两个循环命令

在不同区域同时连续产生多重效应

  • 发送重置命令
  • 发送节奏命令
  • 在序列1上发送闪烁效果命令(例如触摸板)
  • 发送循环命令
  • 在序列2上发送变形效果命令(例如徽标)
  • 发送循环命令
  • 发送执行命令

眨眼和变形是同时和连续发生的。 如"区域代码"部分所述,可以一次引用多个区域以获得效果

其他

  • 某些区域(如电源按钮)似乎仅在某些状态下才可访问(如pugged in、on battery、on battery low)。
  • 如果同一区域按不同顺序寻址,则可能会发生闪烁
  • 如果无法控制触摸板,请在BIOS设置中将trackpad背光设置设置为enable

免责声明

  • 这里的所有信息都是通过跟踪和错误反向工程获得的,因为Alienware Lights软件似乎不是开源的
  • 没有确凿的证据表明这些方法是最好的方法
  • 但它们确实起作用,直到现在对我的系统都没有伤害

参考资料

trackmastersteve的alienfx

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用于切换状态结果的枚举的java输入   检测*NIX上打开的端口时出现java问题   java捕获和保存屏幕截图   java SLF4JLogback:基于日志级别的多模式   Java从字符串中删除动态子字符串   在spring引导中contextLoads测试时运行java Liquibase   基于规则集的任意嵌套POJO的java任意就地转换   java如何做,边做边循环这段代码?   java是什么导致jmh测量中的错误?   java Spring RabbitTemplate执行方法可见性   java jms创建连接http超时weblogic   java如何在JMapViewer中的两点之间放置像箭头一样的图像   在我的形状计算器Java程序中使用带有Switch/Case语句的循环   字符串如何在Java中比较字符和数字