2011-05-15 16 views
11

सेटअप के साथ यूएसबी कीबोर्ड को सुनें: एक minimalistic लिनक्स (ASUS रूटर पर OpenWRT), एक यूएसबी कीबोर्ड (मान मैं/dev/hiddev0 तरह डिवाइस का नाम जानते हैं)अजगर

एक लक्ष्य: एक अजगर बारे में (या खोल, इस मामले में मैं इसे पाइथन के लिए प्रॉक्सी की तरह उपयोग कर सकता हूं) स्क्रिप्ट जो इस डिवाइस को सुनती है और उपयोगकर्ता इनपुट

के आधार पर कुछ क्रियाएं करती है - शुरुआत में - उपयोगकर्ता द्वारा दर्ज किए गए वर्णों को टेक्स्ट फ़ाइल में गूंजने के लिए पर्याप्त दिए गए नाम का

पायसबी वास्तव में भ्रमित लग रहा है। मैं PySerial के साथ ठीक हूं, हालांकि मुझे यकीन नहीं है कि यह कार्य को उपयुक्त बनाता है - डिवाइस को खोलने का प्रयास करते समय यह कहता है "serial.serialutil.SerialException: पोर्ट कॉन्फ़िगर नहीं किया जा सका: (22, 'अमान्य तर्क')"

युपीडी: ठीक है, ठीक है, तुच्छ जवाब था "बिल्ली/dev/इनपुट/EVENT1"

लेकिन उत्पादन वास्तव में गुप्त है - यह (के रूप में चरित्र पूर्णांक कोड) को समझने के लिए किसी भी संकेत?

UPD UPD: हेक्सडम्प/देव/इनपुट/ईवेंट 1 बहुत बेहतर है! यह प्रत्येक कुंजी प्रेस के लिए 6 से 9-tuples देता है (मुझे लगता है, 3 कुंजी के लिए नीचे, 3 कुंजी को ऊपर के लिए) यह शायद तो डिक्रिप्ट करने के लिए नहीं मुश्किल यह

लेकिन अधिक नागरिक जिस तरह से अभी भी अत्यधिक सराहना की होगी

http://svn.navi.cx/misc/trunk/python/evdev/evdev.py दिलचस्प लग रहा है ...

+0

आप क्यों नहीं बस उपयोगकर्ता इनपुट के रूप में वर्ण पर कब्जा न? –

+0

क्या आपका मतलब कंसोल इनपुट पढ़ना है? प्रश्न पढ़ें - यह एम्बेडेड सिस्टम (राउटर) है, कीबोर्ड स्क्रिप्ट "स्क्रीन" – Guard

+2

से संभव नहीं है [प्रारूप/dev/input/event *?] के प्रारूप [http://stackoverflow.com/questions/5060710/ प्रारूप-ऑफ-डीवी-इनपुट-इवेंट) –

उत्तर

6

http://svn.navi.cx/misc/trunk/python/evdev/evdev.py असली जवाब है - उत्पादन बहुत विस्तृत है, और वहाँ के लिए तैयार .poll() विधि है कि घटनाओं देता है।

समस्या सिर्फ मैं का सामना करना पड़ा - readMetadata() इसके बाद 22 त्रुटि के साथ विफल रहा है अपने कॉल पर टिप्पणी की है, और यह

वास्तव में एक आकर्षण की तरह काम किया, मैं से http://autokey.googlecode.com/svn/trunk/src/lib/evdev.py

जोड़ें कुछ और नवीनतम संस्करण डाउनलोड : वास्तविक eventN की खोज करने,

cat /proc/bus/input/devices 

और ध्यान से यह

3

के माध्यम से पढ़ने किसी को भी जो थी को पता चलता है रों सवाल बाद में (के रूप में मुझे क्या हुआ): एक अद्भुत पुस्तकालय evdev के लिए जॉर्जी Valkov से होती है:

https://github.com/gvalkov/python-evdev

http://python-evdev.readthedocs.org/en/latest/index.html