Sterownik inżynierii wstecznej dla wielokolorowej podświetlanej klawiatury w laptopach Clevo

13

Oto moja sytuacja:

Niedawno kupiłem Sager NP9170 (taki sam jak Clevo P170EM) i ma wielokolorową, podświetlaną klawiaturę. W systemie Windows 7 możesz uruchomić aplikację, która pozwala zmienić kolor podświetlenia na dowolny z kilku kolorów (niebieski, zielony, czerwony itp.).

Chcę tę samą funkcjonalność pod Linuksem. Nie udało mi się znaleźć żadnego oprogramowania, które to robi, więc chyba będę musiał to napisać samodzielnie. Z zawodu jestem programistą, ale nie zrobiłem dużo programowania na niskim poziomie i na pewno nigdy nie napisałem sterownika urządzenia, więc zastanawiałem się, czy ktoś mógłby odpowiedzieć na te dwa pytania:

1) Czy istnieje już oprogramowanie, które robi takie rzeczy? Patrzyłem dość dokładnie, ale nie znalazłem nic odpowiedniego.

2) Od czego zacznę od próby odtworzenia tego typu rzeczy? Jakieś przydatne artykuły, samouczki, książki, które mogą pomóc?

I tylko dla wyjaśnienia: podświetlenie już działa, to nie jest problem. Chcę tylko móc zmienić kolor podświetlenia. Ta funkcja jest obsługiwana przez sprzęt. Laptop został dostarczony z oprogramowaniem Windows, które to robi i chcę tę samą funkcjonalność w systemie Linux. Jestem gotów sam napisać to oprogramowanie, chcę tylko wiedzieć, jak to zrobić.

Dzięki!

PopeJamal
źródło

Odpowiedzi:

9

Jak się okazuje, ktoś inny się zorientował. Ogromne podziękowania dla „ klystron34 ” na forach notebookreview.com. Sprawdź wątek na forum, aby uzyskać więcej informacji.

Uwaga: O ile mi wiadomo, będzie to działać dla wielu / większości laptopów opartych na magazynie Clevo P150EM i P170EM. Zostało to osobiście zweryfikowane przeze mnie na Sager NP9170 na Ubuntu 12.04. Postępuj na własne ryzyko. Nie jestem odpowiedzialny za jakiekolwiek szkody, które możesz spowodować, a także za wszelkie inne standardowe wyłączenia odpowiedzialności. Postępuj na własne ryzyko. A teraz dobre rzeczy:

Po pierwsze, musisz być w stanie skompilować moduł jądra, więc zaktualizuj swoje repozytoria:

sudo apt-get update

Teraz zainstaluj git, narzędzia kompilacji i źródło jądra:

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

Teraz utwórz katalog roboczy. Wolę używać folderu „dev” znajdującego się w moim katalogu domowym:

cd ˜
mkdir dev
cd dev

Teraz pobierz źródło modułu jądra:

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

Przejdź do katalogu z kodem źródłowym:

cd clevo-wmi-code

„Make” moduł jądra:

make

Powinieneś teraz mieć plik o nazwie clevo_wmi.ko

Teraz przetestujmy i sprawdźmy, czy moduł faktycznie działa, ładując moduł:

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

Jeśli zadziałało, powinieneś teraz mieć nowy katalog o nazwie:

/ sys / devices / platform / clevo_wmi / kbled

Przejdź do tego katalogu:

cd /sys/devices/platform/clevo_wmi/kbled

Powinieneś być teraz w stanie zmienić kolor środkowej części klawiatury, wykonując następujące polecenie:

sudo su -c 'echo 100 > middle'

Środkowa część klawiatury powinna być teraz zielona. Wymień middlesię leftlub rightzmienić odpowiednie części klawiatury. Oto lista kodów kolorów:

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

Aby zainstalować ten moduł jądra na stałe, skopiuj go w to samo miejsce, co pozostałe moduły jądra (UWAGA: Prawdopodobnie będziesz musiał wykonać ten krok i następny krok przy każdej zmianie jądra):

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

Następnie zrób to (myślę, że odbudowuje listę modułów jądra):

sudo depmod -a

Następnie edytuj /etc/modulesplik i dodaj ten wiersz na końcu pliku:

clevo_wmi

Zapisz zmiany w /etc/modules.

Teraz za każdym razem, gdy uruchomisz komputer ponownie, moduł powinien zostać załadowany, a następnie możesz zmienić kolor podświetlenia na klawiaturze. Ustalenie, jak zmienić kolory podczas ponownego uruchamiania i zapamiętanie ostatniego ustawienia kolorów, jest zadaniem pozostawionym czytelnikowi. Sprawdź docskatalog w kodzie źródłowym, aby uzyskać instrukcje dotyczące korzystania z funkcji dynamicznej zmiany kolorów.

Dzięki jeszcze raz programistom, którzy ciężko pracowali nad napisaniem tego modułu jądra!

PopeJamal
źródło
Jestem zachwycony: D Dzięki. Byłoby wspaniale, gdyby któregoś dnia został włączony do jądra. BTW: czy są jakieś standardowe sposoby na ujawnienie tego w interfejsie użytkownika, aby Unity lub inna WM mogła z niego skorzystać?
bcelary
1
Od grudnia 2017 r. Istnieją niektóre modele Clevo, których sterownik jeszcze nie obsługuje. Funkcje random_fade i random_flicker działają, ale ustawienie określonych sekcji klawiatury na określone kolory nie działa.
Mutant Bob,
0

Jak uzyskać dostęp do takiej funkcjonalności?

Można to prawdopodobnie osiągnąć poprzez sprytne skrypty i funkcje uruchamiania.

(W systemie Windows prawdopodobnie będziesz musiał napisać kod w egzotycznym modelu pamięci umożliwiającym bezpośredni dostęp do sprzętu lub zamiast tego musisz napisać sterownik (i interfejs API) w celu wykrycia i kontrolowania sprzętu).


Jak wybierasz swoje preferencje?

Następnie niektóre podstawowe skrypty (lub skrypty wywołujące ikony) mogą wybrać określone preferencje kolorów.

Jeśli użyjesz Pythona w interfejsie użytkownika, byłoby to również dość proste.

david6
źródło
Dzięki za twoją odpowiedź! To, czego szukam to: a) link do oprogramowania, za którym tęskniłem i które już to robi. b) kilka wskazówek na temat tego, od czego zacząć w określaniu więcej na temat klawiatury.
PopeJamal
Musisz zidentyfikować numer części / markę komponentu klawiatury.
david6,
0

Stworzyłem skrypt do zmiany kolorów za pomocą powyższej metody Papieża. Możesz go znaleźć tutaj: pb aDWe9s6d (nie jestem pewien, czy formatowanie tutaj będzie działało, więc bezpieczniej jest kopiować stamtąd)

#! /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
Noah
źródło