对 Clevo 笔记本电脑的多色背光键盘驱动程序进行逆向工程

对 Clevo 笔记本电脑的多色背光键盘驱动程序进行逆向工程

我的情况如下:

我最近买了一个 SagerNP9170(与 Clevo P170EM 相同),并配有多色背光键盘。在 Windows 7 下,您可以启动应用程序它允许您将背光的颜色更改为多种颜色(蓝色、绿色、红色等)。

我希望在 Linux 下也能实现同样的功能。我找不到任何可以实现此功能的软件,所以我想我得自己写一个了。我是一名职业程序员,但我没有做过太多的低级编程,而且我当然从来没有写过设备驱动程序,所以我想知道是否有人可以回答这两个问题:

1) 有没有现成的软件可以做这种事情?我已经仔细研究过了,但没有找到任何适用的东西。

2) 我应该从哪里开始尝试对这类事情进行逆向工程? 有什么有用的文章、教程、书籍可以帮到我吗?

需要澄清的是:背光已经可以工作了,这不是问题所在。我只想能够改变背光的颜色。硬件支持此功能。笔记本电脑附带的 Windows 软件可以实现此功能,我希望 Linux 也能提供同样的功能。我愿意自己编写这个软件,我只是想知道最好的方法。

谢谢!

答案1

好吧,事实证明,其他人确实找到了答案。非常感谢“速调管34“在 notebookreview.com 论坛上。查看论坛主题了解更多信息。

注意:据我所知,这适用于许多/大多数基于原装 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/设备/平台/clevo_wmi/kbled

切换到该目录:

cd /sys/devices/platform/clevo_wmi/kbled

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

sudo su -c 'echo 100 > middle'

键盘的中间部分现在应该是绿色的。用 或 替换middle可更改left键盘right的相应部分。以下是颜色代码列表:

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源代码中的目录以获取有关如何使用动态颜色更改功能的说明。

再次感谢努力编写此内核模块的开发人员!

答案2

您如何使用此功能?

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

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


您如何选择自己的喜好?

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

如果您使用 Python,对于前端 GUI,它也会相当简单。

答案3

已经存在一个驱动程序,用于整个键盘和飞行模式键的所有功能!TUXEDO Computers 开发了此驱动程序并通过其支持论坛提供它: http://www.linux-onlineshop.de/forum/index.php?page=Thread&threadID=26

玩得开心 :)

答案4

我使用 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

相关内容