2016-12-10 15 views
6

के लिए पाइथन evdev समतुल्य मैंने एक पायथन लिपि लिखा है कि एक छिपाई बारकोड स्कैनर (कीबोर्ड को अनुकरण करता है) के लिए चुनाव evdev: लिपि लिनक्स प्लेटफॉर्म (उबंटू) पर अच्छी तरह से काम करता है। क्या evdev के लिए एक ओएस एक्स पायथन समकक्ष है जो मौजूदा पायथन लिपि के मामूली पोर्टिंग की अनुमति देगा?ओएसएक्स

यदि आपके पास पाइथन अनुभव है और इसे छुपा डिवाइस इनपुट के लिए कॉन्फ़िगर किया गया है, तो कृपया इसे अपनी प्रतिक्रिया में इंगित करें।

+0

कोई जवाब नहीं, लेकिन मुझे [यह] (http://www.signal11.us/oss/hidapi/) और 'ioreg -rtn IOHIDKeyboard' आदेश मिला। – Potatoswatter

+1

क्या आपने https://github.com/apmorton/pyhidapi कोशिश की है? – pigletfly

उत्तर

2

मुझे लगता है कि मैक ओएस के लिए कोई evdev पोर्ट नहीं है क्योंकि अंतिम एक लिनक्स कर्नेल पर निर्भर करता है। यदि आप मैक ओएस में छिपाई पर कुछ व्यावसायिक तर्क लागू करना चाहते हैं तो आपको कुछ उच्च स्तरीय अमूर्तता के सुझावों के रूप में उपयोग करना चाहिए। लेकिन अगर आप निम्न स्तर पर evdev चाहते हैं, तो मुझे ऐसा लगता है कि using the Docker ऐसा करने का आसान तरीका है। मैक ओएस पर छुपा उपकरणों के साथ मुझे कोई अनुभव नहीं है, लेकिन मैंने दूसरे ड्राइवर के साथ एक ही समस्या का समाधान किया।

4

मुझे cython-hidapi (pip install hidapi के रूप में स्थापित करने योग्य) का उपयोग करके एक साधारण परीक्षण मिल गया - ध्यान दें कि यह टिप्पणियों में लिंक किए गए एक से अलग है लेकिन फ़ंक्शन में समान लगता है)। मैंने मैकपोर्ट से hidapi-devel भी स्थापित किया था लेकिन मुझे यकीन नहीं है कि यह आवश्यक है क्योंकि यह बंदरगाह को निष्क्रिय करने के बाद काम करना जारी रखता है।

उदाहरण try.py संशोधित VID उपयोग करने के लिए इनके द्वारा/एक Microsoft यूएसबी वायरलेस कीबोर्ड/माउस डिवाइस के पीआईडी ​​इस प्रकार

from __future__ import print_function 

import hid 
import time 

print("Opening the device") 

h = hid.device() 
h.open(1118, 2048) # A Microsoft wireless combo keyboard & mouse 

print("Manufacturer: %s" % h.get_manufacturer_string()) 
print("Product: %s" % h.get_product_string()) 
print("Serial No: %s" % h.get_serial_number_string()) 

try: 
    while True: 
     d = h.read(64) 
     if d: 
      print('read: "{}"'.format(d)) 
finally: 
    print("Closing the device") 
    h.close() 

और $ sudo python try.py के साथ चल मैं निम्नलिखित उत्पादन प्राप्त करने में सक्षम था के रूप में:

Opening the device 
Manufacturer: Microsoft 
Product: Microsoft® Nano Transceiver v2.0 
Serial No: None 
read: "[0, 0, 0, 0, 0, 0, 0, 0]" 
read: "[0, 0, 0, 0, 0, 0, 0, 0]" 
read: "[0, 0, 0, 0, 0, 0, 0, 0]" 

--8<-- snip lots of repeated lines --8<-- 

read: "[0, 0, 0, 0, 0, 0, 0, 0]" 
read: "[0, 0, 0, 0, 0, 0, 0, 0]" 
read: "[0, 0, 21, 0, 0, 0, 0, 0]" 
read: "[0, 0, 21, 0, 0, 0, 0, 0]" 
read: "[0, 0, 21, 0, 0, 0, 0, 0]" 
read: "[0, 0, 21, 0, 0, 0, 0, 0]" 
read: "[0, 0, 0, 0, 0, 0, 0, 0]" 
read: "[0, 0, 4, 0, 0, 0, 0, 0]" 
read: "[0, 0, 4, 22, 0, 0, 0, 0]" 
read: "[0, 0, 4, 22, 0, 0, 0, 0]" 
read: "[0, 0, 4, 22, 0, 0, 0, 0]" 
read: "[0, 0, 4, 22, 0, 0, 0, 0]" 
read: "[0, 0, 4, 22, 0, 0, 0, 0]" 
read: "[0, 0, 4, 0, 0, 0, 0, 0]" 
read: "[0, 0, 4, 0, 0, 0, 0, 0]" 
read: "[0, 0, 4, 9, 0, 0, 0, 0]" 
read: "[0, 0, 4, 9, 0, 0, 0, 0]" 
read: "[0, 0, 4, 9, 0, 0, 0, 0]" 
read: "[0, 0, 4, 9, 0, 0, 0, 0]" 
read: "[0, 0, 4, 9, 7, 0, 0, 0]" 
read: "[0, 0, 4, 9, 7, 0, 0, 0]" 
read: "[0, 0, 7, 0, 0, 0, 0, 0]" 
^CClosing the device 
Traceback (most recent call last): 
    File "try.py", line 17, in <module> 
    d = h.read(64) 
KeyboardInterrupt 

मैं जिस विशेष डिवाइस का उपयोग कर रहा हूं वह कुंजीपटल & माउस के लिए अन्य चीजों के साथ कई छुपा उपकरणों के रूप में गिनती प्रतीत होता है, इसलिए ऐसा लगता है कि आपको थोड़ा यादृच्छिक लगता है, लेकिन बारकोड स्कैनर के लिए यह बहुत सीधे आगे होना चाहिए।