Clevo笔记本电脑上用于彩色背光键盘的反向工程驱动程序


13

这是我的情况:

我最近购买了Sager NP9170(与Clevo P170EM相同),它具有多色背光键盘。在Windows 7下,您可以启动一个应用程序,该应用程序允许您将背光灯的颜色更改为几种颜色(蓝色,绿色,红色等)中的任何一种。

我想要在Linux下具有相同的功能。我还没有找到能做到这一点的软件,所以我想我必须自己编写它。我是一名程序员,但是我没有做过很多底层编程,而且我当然从没写过设备驱动程序,所以我想知道是否有人可以回答以下两个问题:

1)是否已经有做这种事情的软件?我已经看透了,但没有找到适用的方法。

2)从哪里开始尝试对这种事情进行逆向工程?任何有用的文章,教程和书籍可能会有所帮助?

只是要澄清一下:背光已经起作用,这不是问题。我只希望能够更改背光的颜色。硬件支持此功能。便携式计算机随附执行此操作的Windows软件,我希望在Linux中具有相同的功能。我愿意自己写这个软件,我只想知道最好的解决方法。

谢谢!

Answers:


9

好吧,事实证明,其他人实际上已经知道了。在notebookreview.com论坛中对“ klystron34 ”表示巨大的“谢谢” 。查看论坛主题以获取更多信息。

注意:据我所知,这将适用于许多基于库存Clevo P150EM和P170EM的笔记本电脑。这是我在Ubuntu 12.04上的Sager NP9170上亲自验证的。继续需要您自担风险。对于您可能造成的任何损害以及任何其他标准的互联网免责声明,我概不负责。继续需要您自担风险。现在,介绍好东西:

首先,您需要能够编译内核模块,因此更新存储库:

sudo apt-get update

现在,安装git,构建工具和内核源代码:

sudo apt-get install git build-essential linux-source

现在创建一个工作目录。我更喜欢使用位于我的主目录中的“ dev”文件夹:

cd ˜
mkdir dev
cd dev

现在,下载内核模块的源代码:

git clone git://git.code.sf.net/p/clevo-wmi/code clevo-wmi-code

进入包含源代码的目录:

cd clevo-wmi-code

“制作”内核模块:

make

您现在应该有一个名为 clevo_wmi.ko

现在,让我们通过加载模块来测试并查看模块是否真正起作用:

sudo insmod /home/<your-username-here>/dev/clevo-wmi-code/clevo_wmi.ko

如果可行,您现在应该拥有一个新目录,名为:

/ sys / devices / platform / clevo_wmi / kbled

切换到该目录:

cd /sys/devices/platform/clevo_wmi/kbled

现在,您应该可以通过执行以下命令来更改键盘中间部分的颜色:

sudo su -c 'echo 100 > middle'

键盘的中间部分现在应为绿色。替换middleleftright更改键盘的相应部分。这是颜色代码的列表:

GRB (Green-Red-Blue)
000 - Off
111 - White
100 - Green
010 - Red
001 - Blue
110 - Yellow
011 - Purple
101 - Aqua

要永久安装此内核模块,请将其复制到其余内核模块的相同位置(注意:更改内核后,您可能必须执行此步骤和下一步):

sudo cp ~/dev/clevo-wmi-code/clevo_wmi.ko /lib/modules/`uname -r`/kernel/drivers/platform/x86/

接下来,执行此操作(我认为将重建内核模块列表):

sudo depmod -a

然后编辑/etc/modules文件,并将此行添加到文件末尾:

clevo_wmi

将更改保存到/etc/modules

现在,无论何时重新启动,都应该加载模块,然后可以更改键盘上的背光灯颜色。弄清楚如何在重新启动时改变颜色,并记住上一次的颜色设置是读者的一项练习。检查docs源代码中的目录,以获取有关如何使用动态颜色更改功能的说明。

再次感谢开发人员在编写此内核模块上付出了巨大的努力!


我很高兴:D谢谢。如果有一天它包含在内核中,那将是很棒的。顺便说一句:有什么标准的方法可以将其公开给用户界面,以便Unity或其他WM可以使用它?
bcelary

1
截至2017年12月,驱动程序尚不支持某些Clevo型号。random_fade和random_flicker起作用,但是将键盘的某些部分设置为特定颜色不起作用。
突变鲍勃

0

您如何访问此类功能?

这可以通过一些巧妙的脚本和启动功能来实现。

(在Windows中,您可能需要在奇异的内存模型中编写代码以允许直接访问硬件,或者需要编写驱动程序(和API)来检测和控制硬件。)


您如何选择自己的喜好?

然后,一些基本脚本(或图标调用脚本)可以选择特定的颜色首选项。

如果您使用Python作为前端GUI,那也将非常简单。


感谢您的答复!我正在寻找的是:a)某个我已经错过了的软件的链接。b)有关从哪里开始确定更多有关键盘的一些指导。
PopeJamal




您需要确定的部件号/品牌的键盘组件..
david6


0

我使用Pope的上述方法创建了一个用于更改颜色的脚本。您可以在以下位置找到它:pb aDWe9s6d(不确定此处的格式是否可以正常工作,因此从那里进行复制更安全)

#! /bin/bash
#changes keyboard colors
#Noah B.

#Prompt for root
[ "$UID" -eq 0 ] || exec sudo bash "$0" "$@"

off=000
white=111
green=100
red=010
blue=001
yellow=110
purple=011
aqua=101

left=$1
l_code=000
middle=$2
m_code=000
right=$3
r_code=000

#LEFT SIDE

if [ -z "$left" ]
then 
    echo "Enter desired color for the left side:
    (off/white/green/red/blue/yellow/purple/aqua)"
read -p "Color choice: " left
fi

eval "l_code=\$$left"

echo $l_code > /sys/devices/platform/clevo_wmi/kbled/left

#MIDDLE

if [ -z "$middle" ]
then
    echo "Enter desired color for the middle:
    (off/white/green/red/blue/yellow/purple/aqua)"
read -p "Color choice: " middle
fi

eval "m_code=\$$middle"

echo $m_code > /sys/devices/platform/clevo_wmi/kbled/middle

#RIGHT SIDE

if [ -z "$right" ]
then
    echo "Enter desired color for the right side:
    (off/white/green/red/blue/yellow/purple/aqua)"
read -p "Color choice: " right
fi

eval "r_code=\$$right"

echo $r_code > /sys/devices/platform/clevo_wmi/kbled/right
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.