Драйвер обратного инженера для разноцветной клавиатуры с подсветкой на ноутбуках Clevo


13

Вот моя ситуация:

Недавно я приобрел Sager NP9170 (такой же, как Clevo P170EM), и он имеет разноцветную клавиатуру с подсветкой. В Windows 7 вы можете запустить приложение, которое позволяет вам изменить цвет подсветки на любой из нескольких цветов (синий, зеленый, красный и т. Д.).

Я хочу такую ​​же функциональность под Linux. Я не смог найти никакого программного обеспечения, которое делает это, поэтому я думаю, что мне придется написать его самому. По профессии я программист, но я не занимался программированием на низком уровне, и я, конечно, никогда не писал драйвер устройства, поэтому мне было интересно, сможет ли кто-нибудь ответить на эти два вопроса:

1) Есть ли уже какое-либо программное обеспечение, которое делает подобные вещи? Я посмотрел довольно тщательно, но не нашел ничего подходящего.

2) С чего бы мне начать пытаться реконструировать подобные вещи? Какие-нибудь полезные статьи, учебники, книги, которые могут помочь?

И просто уточнить: подсветка уже работает, это не проблема. Я просто хочу, чтобы можно было изменить цвет подсветки. Эта функциональность поддерживается оборудованием. Ноутбук поставляется с программным обеспечением Windows, которое делает это, и я хочу, чтобы та же функциональность в Linux. Я готов написать это программное обеспечение сам, я просто хочу знать, как это сделать.

Благодарность!

Ответы:


9

Ну, как оказалось, кто-то еще на самом деле понял это. Огромное «Спасибо» klystron34 на форумах notebookreview.com. Проверьте ветку форума для получения дополнительной информации.

Примечание: насколько мне известно, это будет работать для многих / большинства ноутбуков на базе стандартных Clevo P150EM и P170EM. Это было лично проверено мной на Sager NP9170 на Ubuntu 12.04. Действуйте на свой страх и риск. Я не несу ответственности за любой ущерб, который вы можете причинить этим, а также за любые другие стандартные отказы от ответственности в Интернете. Действуйте на свой страх и риск. Теперь о хороших вещах:

Во-первых, вам нужно иметь возможность скомпилировать модуль ядра, поэтому обновите ваши репозитории:

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каталог в исходном коде для получения инструкций о том, как использовать функции динамического изменения цвета.

Спасибо agin разработчикам, которые усердно работали над написанием этого модуля ядра!


Я в восторге: D Спасибо. Было бы замечательно, если бы он когда-нибудь был включен в ядро. КСТАТИ: есть ли какие-либо стандартные способы показать это пользовательскому интерфейсу, чтобы Unity или другие WM могли использовать его?
bcelary

1
По состоянию на декабрь 2017 года есть некоторые модели Clevo, которые драйвер пока не поддерживает. Random_fade и random_flicker работают, но установка определенных участков клавиатуры на определенные цвета не работает.
Мутант Боб

0

Как вы получаете доступ к такой функциональности?

Вероятно, этого можно достичь с помощью некоторых умных скриптов и функций запуска.

(В Windows вам, вероятно, потребуется написать код в экзотической модели памяти, обеспечивающей прямой доступ к оборудованию, или вместо этого написать драйвер (и API) для обнаружения и управления оборудованием.)


Как вы выбираете свои предпочтения?

Затем некоторые базовые сценарии (или сценарии вызова значков) могут выбирать конкретную цветовую настройку.

Если бы вы использовали Python для внешнего интерфейса, это также было бы довольно просто.


Спасибо за ваш ответ! То, что я ищу, это либо: а) ссылка на какое-то программное обеспечение, которое я пропустил и которое уже делает это. б) некоторые указания о том, с чего начать при определении больше о клавиатуре.
Папа Джамал




Вам необходимо определить номер детали / марку для компонента клавиатуры ..
david6


0

Я создал скрипт для изменения цвета, используя вышеописанный метод Папы. Вы можете найти его здесь: 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.