Reverse-Engineer Driver สำหรับคีย์บอร์ดเรืองแสงหลากสีบนแล็ปท็อป 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, build tools และ kernel kernel:

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" โมดูลเคอร์เนล:

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 ขอบคุณ คงจะดีมากถ้ามันรวมอยู่ในเคอร์เนลสักวันหนึ่ง BTW: มีวิธีมาตรฐานในการเปิดเผยสิ่งนี้กับ UI ดังนั้น Unity หรือ WM อื่น ๆ สามารถใช้งานได้หรือไม่
bcelary

1
ตั้งแต่ 2560 - ธันวาคมมีบางรุ่นของ Clevo ที่คนขับยังไม่รองรับ Random_fade และ random_flicker ทำงานได้ แต่การตั้งค่าบางส่วนของแป้นพิมพ์เป็นสีเฉพาะไม่ทำงาน
Mutant Bob

0

คุณเข้าถึงฟังก์ชั่นดังกล่าวได้อย่างไร

สิ่งนี้อาจเกิดขึ้นได้จากการเขียนสคริปต์ที่ชาญฉลาด

(ใน Windows คุณอาจต้องเขียนโค้ดในรูปแบบหน่วยความจำแปลกใหม่ที่อนุญาตการเข้าถึงฮาร์ดแวร์โดยตรงหรือต้องเขียนไดรเวอร์ (และ API) เพื่อตรวจจับและควบคุมฮาร์ดแวร์แทน)


คุณจะเลือกการตั้งค่าของคุณได้อย่างไร?

จากนั้นสคริปต์พื้นฐานบางตัว (หรือไอคอนการเรียกสคริปต์) สามารถเลือกการตั้งค่าสีที่ต้องการได้

ถ้าคุณใช้ Python สำหรับ GUI ส่วนหน้าก็จะค่อนข้างง่าย


ขอบคุณสำหรับคำตอบของคุณ! สิ่งที่ฉันกำลังมองหาคือ: a) ลิงค์ไปยังซอฟต์แวร์ที่ฉันพลาดไป b) คำแนะนำเกี่ยวกับตำแหน่งที่จะเริ่มต้นในการพิจารณาเพิ่มเติมเกี่ยวกับคีย์บอร์ด
PopeJamal



PDF (รุ่นแหล่งที่มา): bestdeal4u.com.au/store/files/Clevo_W595_Brochure_June_2012.pdf
david6

คุณจำเป็นต้องระบุหมายเลขชิ้นส่วน / ยี่ห้อสำหรับส่วนประกอบแป้นพิมพ์ ..
david6

0

มีไดรเวอร์สำหรับฟังก์ชั่นทั้งหมดสำหรับทั้งคีย์บอร์ดและปุ่ม flymode อยู่แล้ว! คอมพิวเตอร์ TUXEDO พัฒนาไดร์เวอร์นี้และเสนอผ่านฟอรัมสนับสนุน: http://www.linux-onlineshop.de/forum/index.php?page=Thread&threadID=26

มีความสุข :)


0

ฉันสร้างสคริปต์เพื่อเปลี่ยนสีโดยใช้วิธีการข้างต้นโดย 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.