3
จะทราบได้อย่างไรว่าคีย์บอร์ดตัวไหนที่ใช้กดปุ่ม?
ฉันมักจะทำงานกับสถานีจับคู่ที่มีการติดตั้งคีย์บอร์ดหลายตัว ฉันสามารถใช้setxkbmapกับ-device <ID>การตั้งค่ารูปแบบสำหรับแป้นพิมพ์ที่เฉพาะเจาะจง (ใช้รหัสจากxinput ) แต่มักจะเป็นไม่ชัดเจนซึ่งแป้นพิมพ์ฉันที่ มันจะเป็นการดีกว่าถ้าคุณหลีกเลี่ยงการไปมาระหว่างคีย์บอร์ดทั้งสองแป้นดังนั้นฉันอยากจะเขียนเครื่องมือด่วนเพื่อรับข้อมูลsetxkbmapนี้ ฉันคาดว่ากรณีการใช้งานทั่วไปดังต่อไปนี้: $ setxkbmap -device "$(get-keyboard-id)" -layout gb Press Enter to detect keyboard ID อินเทอร์เฟซใดให้ข้อมูลนี้บน Linux เป็นการดีที่มันควรจะทำงานโดยไม่มี X แต่นั่นไม่ใช่ข้อกำหนด (ดูเหมือนจะไม่มีเครื่องมือมากมายที่สนับสนุนสิ่งนี้หากไม่มี X) การค้นพบจนถึง: Linux ต้องรู้ว่าฉันใช้แป้นพิมพ์ตัวใดเพื่อรองรับรูปแบบที่แตกต่างกันสำหรับแป้นพิมพ์หลายตัวพร้อมกัน xinput→ list.c → list_xi2→ ให้รหัสอุปกรณ์ใช้งานได้โดยXIQueryDevicesetxkbmap showkeyและxevไม่พิมพ์รหัสคีย์บอร์ด xinput list-props $IDแสดงให้เห็นว่าเหตุการณ์ที่แป้นพิมพ์จะถูกส่ง อย่างไรก็ตามการใช้รหัสจากคำตอบอื่นดูเหมือนว่าอุปกรณ์นี้ไม่ได้พิมพ์อะไรเพื่อระบุแป้นพิมพ์ วิธีแก้ปัญหาหนึ่งที่เกือบจะเป็นไปได้ก็คือการเรียกใช้xinput --test <ID> &สำหรับแป้นพิมพ์แต่ละรหัสและดูว่าจะส่งคืนสิ่งใดก่อน ปัญหาที่จะหาที่ "คีย์บอร์ด" มีจริงคีย์บอร์ด: $ xinput | …