ฉันกำลังพยายามหาวิธีในการแมปแป้นแป้นใหม่อย่างแน่นหนา
ฉันลองใช้ xmodmap และ setxkbmap แต่มันไม่สามารถใช้งานกับแอปพลิเคชั่นหนึ่ง ๆ ได้ คำสั่งดังกล่าวทำงานได้กับหน้าต่าง / แอพพลิเคชั่นปกติอื่น ๆ บน X tho
ฉันคิดว่าแอปพลิเคชันอาจอ่านข้อมูลดิบของแป้นพิมพ์และไม่สนใจอินพุต X หรือไม่
ดังนั้นจะทำการแมปคีย์ใหม่โดยไม่ใช้ xmodmap และ setxkbmap ได้อย่างไร? หากเป็นไปได้ที่จะใช้ซอฟต์แวร์บางอย่าง
ฉันยังลอง xkeycaps, xkbcomp แต่ไม่ได้ลอง loadkeys เนื่องจากมันทำงานบน X
ฉันพบที่นี่ที่ฉันสามารถลองsetkeycodes
ได้"เพราะหลังจากกำหนดรหัสคีย์เคอร์เนลปุ่มควรทำงานใน xorg"แต่ฉันก็พบว่า"คุณไม่สามารถใช้ 'setkeycodes' บนแป้นพิมพ์ USB"นั่นเป็นกรณีของฉัน (ฉันสนใจในกรณีนี้ บางคนใช้งานได้กับ ps2 เพราะฉันคิดว่าฉันสามารถใช้อะแดปเตอร์ได้)
นี่ดูเหมือนจะมีแนวโน้ม"แผนที่ scancodes เป็นรหัส"แต่หลังจากการทดสอบสองสามอย่างไม่มีอะไรเปลี่ยนแปลงนี่คือพวกเขา:
ฉันพบ keycode "36" ("j" กุญแจ) ที่ vt1 โดยที่showkey
ฉันพบ scancode "7e" (ปุ่มกด ") ที่ vt1 ด้วยshowkey --scancodes
$cat >/etc/udev/hwdb.d/90-custom-keyboard.hwdb
keyboard:usb:v*p*
keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
KEYBOARD_KEY_7e=36
$udevadm hwdb --update #updates file: /lib/udev/hwdb.bin
$udevadm trigger #should apply the changes but nothing happened
$cat /lib/udev/hwdb.bin |egrep "KEYBOARD_KEY_7e.{10}" -ao
KEYBOARD_KEY_7eleftmeta
$#that cat on hwdb.bin did not change after the commands..
Obs .: ไม่ได้ทำงานกับ: KEYBOARD_KEY_7e=j
วิธีทางเลือกเพิ่มเติม (โดย @ vinc17) เพื่อค้นหาคีย์:
evtest /dev/input/by-id/...
หรือ
input-kbd 3
(ใส่ดัชนี id ที่พบได้ls -l /dev/input/by-id/*
จากอดีต event3)
ป.ล. : * หากคุณสนใจที่จะทดสอบด้วยตัวเองเธรดที่เกี่ยวข้องสำหรับแอปพลิเคชันคือ: http://forums.thedarkmod.com/topic/14266-keyboard-issue-in-new-version-108/ปัญหาที่ฉัน มีเหมือนกัน: บางคีย์ (KP_Decimal, DownArrow, UpArrow, RightArrow) จะถูกละเว้นและพิจารณาทั้งหมดด้วยค่าเดียวกันนั่น "0x00"
showkey --scancodes
ไม่ให้ scancodes udev คาดหวัง (ค่าจะแตกต่างกัน); input-kbd
ยูทิลิตี้ให้ scancodes ที่ถูกต้อง
evtest
ยูทิลิตี้นอกจากนี้ยังควรให้คุณ scancodes ที่ถูกต้อง: หลังจากพิมพ์ที่สำคัญที่คุณควรจะได้รับ 2 เส้นและคนแรกที่ควรจะจบกับสิ่งที่อยู่ในรูปแบบcode 4 (MSC_SCAN), value xxx
ที่xxx
เป็น scancode แต่ไดรเวอร์สำหรับแป้นพิมพ์ของฉันมีข้อผิดพลาดและฉันไม่ได้รับMSC_SCAN
สายนี้สำหรับบางปุ่มที่ฉันต้องการทำการแมปใหม่ นั่นเป็นเหตุผลที่ฉันใช้input-kbd
ซึ่งแสดงรายการ scancodes ทั้งหมดสำหรับอุปกรณ์ที่เลือก
/etc/udev/hwdb.bin
/lib/udev/hwdb.bin
แต่ถึงแม้ว่าไฟล์นี้จะได้รับการอัพเดตอย่างถูกต้อง แต่ก็ไม่ได้ผลสำหรับฉันเช่นกันแม้หลังจากรีบูตเครื่อง อาจมีบางอย่างขาดหายไปในเอกสารประกอบ เกี่ยวกับสิ่งนี้: bugs.freedesktop.org/show_bug.cgi?id=82311