Driver de engenharia reversa para teclado colorido retroiluminado em laptops Clevo

12

Aqui está minha situação:

Comprei recentemente um Sager NP9170 (igual ao Clevo P170EM) e tem um teclado retroiluminado multicolorido. No Windows 7, você pode iniciar um aplicativo que permite alterar a cor da luz de fundo para qualquer um punhado de cores (azul, verde, vermelho, etc).

Eu quero a mesma funcionalidade no Linux. Eu não consegui encontrar nenhum software que faz isso, então eu acho que vou ter que escrever isso sozinho. Eu sou um programador de profissão, mas eu não fiz muita programação de baixo nível, e certamente nunca escrevi um driver de dispositivo, então eu queria saber se alguém poderia responder a estas duas perguntas:

1) Existe algum software já por aí que faz esse tipo de coisa? Eu olhei bastante bem, mas não encontrei nada aplicável.

2) Onde eu começaria a tentar fazer engenharia reversa desse tipo de coisa? Quaisquer artigos úteis, tutoriais, livros que possam ajudar?

E só para esclarecer: a luz de fundo já funciona, não é esse o problema. Eu só quero poder mudar a cor da luz de fundo. Essa funcionalidade é suportada pelo hardware. O laptop veio com o software Windows que faz isso e eu quero a mesma funcionalidade no Linux. Eu estou disposto a escrever este software, eu só quero saber a melhor maneira de fazê-lo.

Obrigado!

    
por PopeJamal 06.09.2012 / 07:53

4 respostas

9

Bem, na verdade, alguém realmente descobriu. Um enorme "Obrigado" para " klystron34 " nos fóruns do notebookreview.com. Confira os tópico do fórum para mais informações.

Nota: Até onde eu sei, isso funcionará para muitos laptops baseados no estoque Clevo P150EM e no P170EM. Isto foi pessoalmente verificado por mim em um Sager NP9170 no Ubuntu 12.04. Prossiga por sua conta e risco. Eu não sou responsável por qualquer dano que você possa causar ao fazer isso, e quaisquer outras isenções padrão de internet. Prossiga por sua conta e risco. Agora, sobre as coisas boas:

Primeiro, você precisa ser capaz de compilar um módulo do kernel, então atualize seus repositórios:

sudo apt-get update

Agora, instale o git, as ferramentas de construção e a origem do kernel:

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

Agora crie um diretório de trabalho. Eu prefiro usar uma pasta "dev" localizada no meu diretório pessoal:

cd ˜
mkdir dev
cd dev

Agora, faça o download do código-fonte do módulo do kernel:

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

Entre no diretório com o código-fonte:

cd clevo-wmi-code

"Make" o módulo do kernel:

make

Agora você deve ter um arquivo chamado clevo_wmi.ko

Agora, vamos testar e ver se o módulo realmente funciona carregando o módulo:

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

Se funcionou, agora você deve ter um novo diretório chamado:

/sys/devices/platform/clevo_wmi/kbled

Mude para esse diretório:

cd /sys/devices/platform/clevo_wmi/kbled

Agora você deve poder alterar a cor da seção do meio do teclado executando o seguinte comando:

sudo su -c 'echo 100 > middle'

A seção intermediária do teclado agora deve estar verde. Substitua middle por left ou right para alterar a seção correspondente do teclado. Aqui está uma lista dos códigos de cores:

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

Para instalar este módulo do kernel permanentemente, copie-o para o mesmo local que o resto de seus módulos do kernel (OBSERVAÇÃO: Você provavelmente terá que executar esta etapa e a próxima etapa sempre que alterar seu kernel):

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

Em seguida, faça isso (acho que reconstrói a lista de módulos do kernel):

sudo depmod -a

Em seguida, edite o arquivo /etc/modules e adicione essa linha ao final do arquivo:

clevo_wmi

Salve suas alterações em /etc/modules .

Agora, sempre que você reiniciar, o módulo deverá ser carregado e você poderá alterar a cor da luz de fundo do teclado. Descobrir como alterá-las na reinicialização e lembrar da última configuração de cores é um exercício deixado para o leitor. Verifique o diretório docs no código fonte para obter instruções sobre como usar os recursos dinâmicos de mudança de cor.

Obrigado ao (s) desenvolvedor (es) que trabalharam duro para escrever este módulo do kernel!

    
por PopeJamal 28.03.2013 / 22:13
0

Como você acessa essa funcionalidade?

Isso provavelmente pode ser alcançado por alguns scripts inteligentes e pela funcionalidade de inicialização.

(No Windows, você provavelmente precisaria escrever código em um modelo de memória exótica que permite acesso direto ao hardware ou, em vez disso, precisa gravar um driver (e API) para detectar e controlar o hardware.)

Como você seleciona suas preferências?

Em seguida, alguns scripts básicos (ou scripts de chamada de ícones) podem selecionar uma preferência de cor específica.

Se você usasse o Python, para uma GUI front-end, também seria bem simples.

    
por david6 06.09.2012 / 10:49
0

Já existe um driver para todas as funções de todo o teclado E flymode-key! A TUXEDO Computers desenvolveu este driver e o oferece através de seu fórum de suporte: link

Divirta-se:)

    
por Tobias 12.11.2013 / 09:35
0

Eu criei um script para alterar as cores usando o método acima por Pope. Você pode encontrá-lo aqui: pb aDWe9s6d (não tenho certeza se a formatação aqui funcionará corretamente, então é mais seguro copiar de 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
    
por Noah 29.11.2014 / 15:35