Driver di ingegneria inversa per tastiera retroilluminata multicolore su laptop Clevo


13

Ecco la mia situazione:

Di recente ho acquistato un Sager NP9170 (uguale al Clevo P170EM) e ha una tastiera retroilluminata multicolore. In Windows 7, puoi avviare un'app che ti consente di cambiare il colore della retroilluminazione in una manciata di colori (blu, verde, rosso, ecc.).

Voglio quella stessa funzionalità su Linux. Non sono stato in grado di trovare alcun software che lo faccia, quindi immagino che dovrò scriverlo da solo. Sono un programmatore di professione, ma non ho fatto molta programmazione a basso livello e certamente non ho mai scritto un driver di dispositivo, quindi mi chiedevo se qualcuno potesse rispondere a queste due domande:

1) Esiste già un software là fuori che fa questo genere di cose? Ho guardato abbastanza bene ma non ho trovato nulla di pertinente.

2) Da dove iniziare cercando di decodificare questo genere di cose? Qualche articolo utile, tutorial, libri che potrebbero essere d'aiuto?

E solo per chiarire: la retroilluminazione funziona già, non è questo il problema. Voglio solo essere in grado di cambiare il colore della retroilluminazione. Questa funzionalità è supportata dall'hardware. Il laptop è arrivato con il software Windows che fa questo e voglio la stessa funzionalità in Linux. Sono disposto a scrivere questo software da solo, voglio solo sapere il modo migliore per farlo.

Grazie!

Risposte:


9

Bene, a quanto pare, qualcun altro l'ha effettivamente capito. Un enorme "grazie" a " klystron34 " nei forum notebookreview.com. Controlla il thread del forum per ulteriori informazioni.

Nota: per quanto ne so, questo funzionerà per molti / la maggior parte dei laptop basati sullo stock Clevo P150EM e P170EM. Questo è stato verificato personalmente da me su un Sager NP9170 su Ubuntu 12.04. Procedete a vostro rischio. Non sono responsabile per eventuali danni che potresti causare in questo modo e per qualsiasi altra dichiarazione di non responsabilità in Internet standard. Procedete a vostro rischio. E ora le buone notizie:

Innanzitutto, devi essere in grado di compilare un modulo del kernel, quindi aggiorna i tuoi repository:

sudo apt-get update

Ora installa git, gli strumenti di compilazione e il sorgente del kernel:

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

Ora crea una directory di lavoro. Preferisco usare una cartella "dev" situata nella mia directory home:

cd ˜
mkdir dev
cd dev

Ora, scarica il sorgente per il modulo del kernel:

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

Vai nella directory con il codice sorgente:

cd clevo-wmi-code

"Crea" il modulo del kernel:

make

Ora dovresti avere un file chiamato clevo_wmi.ko

Ora proviamo e vediamo se il modulo funziona davvero caricando il modulo:

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

Se ha funzionato, ora dovresti avere una nuova directory chiamata:

/ Sys / devices / platform / clevo_wmi / kbled

Passare a quella directory:

cd /sys/devices/platform/clevo_wmi/kbled

Ora dovresti essere in grado di cambiare il colore della sezione centrale della tastiera eseguendo il comando seguente:

sudo su -c 'echo 100 > middle'

La sezione centrale della tastiera ora dovrebbe essere verde. Sostituisci middlecon lefto rightper modificare la sezione corrispondente della tastiera. Ecco un elenco dei codici colore:

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

Per installare questo modulo del kernel in modo permanente, copiarlo nella stessa posizione del resto dei moduli del kernel (NOTA: Probabilmente dovrai eseguire questo passaggio e il passaggio successivo ogni volta che cambi il kernel):

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

Quindi, fai questo (penso che ricostruisca l'elenco dei moduli del kernel):

sudo depmod -a

Quindi modifica il tuo /etc/modulesfile e aggiungi questa riga alla fine del file:

clevo_wmi

Salva le modifiche in /etc/modules.

Ora, ogni volta che riavvii, il modulo dovrebbe essere caricato e puoi quindi cambiare il colore della retroilluminazione sulla tastiera. Capire come far cambiare i colori al riavvio e ricordare l'ultima impostazione del colore è un esercizio lasciato al lettore. Controllare la docsdirectory nel codice sorgente per istruzioni su come utilizzare le funzionalità di cambio colore dinamico.

Grazie per gli sviluppatori che hanno lavorato sodo per scrivere questo modulo del kernel!


Sono felice: D Grazie. Sarebbe bello se un giorno fosse incluso nel kernel. A proposito: ci sono modi standard di esporre questo all'interfaccia utente, in modo che Unity o altri WM possano usarlo?
bcelary,

1
A partire dal 2017-dicembre ci sono alcuni modelli Clevo che il driver non supporta ancora. Random_fade e random_flicker funzionano, ma l'impostazione di determinate sezioni della tastiera su colori specifici non funziona.
Mutante Bob,

0

Come si accede a tale funzionalità?

Questo può essere probabilmente ottenuto da alcuni script intelligenti e funzionalità di avvio.

(In Windows probabilmente dovresti scrivere il codice in un modello di memoria esotica che consenta l'accesso diretto all'hardware, o invece devi scrivere un driver (e API) per rilevare e controllare l'hardware.)


Come selezioni le tue preferenze?

Quindi alcuni script di base (o icona che chiamano script) potrebbero selezionare una preferenza di colore specifica.

Se hai usato Python, per una GUI front-end, sarebbe anche abbastanza semplice.


Grazie per la risposta! Quello che sto cercando è: a) un collegamento ad alcuni software che mi mancava che già lo fa. b) alcune indicazioni su dove iniziare a determinare di più sulla tastiera.
PopeJamal,




È necessario identificare il numero di parte / marchio per il componente tastiera.
david6


0

Ho creato una sceneggiatura per cambiare i colori usando il metodo sopra descritto da Pope. Puoi trovarlo qui: pb aDWe9s6d (non sono sicuro che la formattazione qui funzionerà, quindi più sicura da copiare da lì)

#! /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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.