मैं अक्सर उन स्टेशनों को बाँधने का काम करता हूँ जहाँ कई कीबोर्ड स्थापित होते हैं। मैं उपयोग कर सकते हैं setxkbmap
के साथ -device <ID>
एक विशिष्ट कुंजीपटल (एक प्रयोग करने के लिए लेआउट सेट करने के लिए से आईडीxinput
), लेकिन अक्सर यह स्पष्ट नहीं है जो कुंजीपटल मैं यहां हूं। दोनों कीबोर्ड की कोशिश करने से आगे और पीछे से बचना बेहतर होगा, इसलिए मैं इस जानकारी को प्राप्त करने के लिए एक त्वरित उपकरण लिखना चाहूंगा setxkbmap
। मुझे निम्नलिखित की तरह एक सामान्य उपयोग के मामले की उम्मीद है:
$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
कौन सा इंटरफ़ेस लिनक्स पर यह जानकारी प्रदान करता है? आदर्श रूप से इसे एक्स के बिना काम करना चाहिए, लेकिन यह एक आवश्यकता नहीं है (एक्स के बिना इसका समर्थन करने वाले कई उपकरण प्रतीत नहीं होते हैं)।
अब तक की खोजें:
- लिनक्स को पता होना चाहिए कि मैं एक साथ कई कीबोर्ड के लिए अलग-अलग लेआउट का समर्थन करने के लिए किस कीबोर्ड पर टाइप कर रहा हूं।
xinput
→ list.c →list_xi2
→XIQueryDevice
डिवाइस आईडी प्रदान करता हैsetxkbmap
।showkey
औरxev
कीबोर्ड आईडी प्रिंट न करें।xinput list-props $ID
दिखाता है कि कीबोर्ड ईवेंट कहां भेजे जाते हैं । हालाँकि, एक अन्य उत्तर से कोड का उपयोग करने से ऐसा लगता है कि यह डिवाइस कीबोर्ड की पहचान करने के लिए कुछ भी प्रिंट नहीं करता है।एक लगभग संभव समाधान
xinput --test <ID> &
प्रत्येक कीबोर्ड आईडी के लिए चलना है और देखना है कि कौन सा पहले कुछ देता है। उस समस्या के बारे में पता लगाया जा रहा है कि कौन से "कीबोर्ड" वास्तव में कीबोर्ड हैं:$ xinput | grep keyboard ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ WebCam SC-13HDL10931N id=10 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
less -f /dev/input/eventX
और संबंधित कीबोर्ड पर एक कुंजी मारते हैं, तो आपको "कचरा" दिखाते हुए देखना चाहिए, इसलिए आपके कीबोर्ड वास्तव में एक देव फ़ाइल में निर्देशित होते हैं, अन्य नहीं।