OSX

2016-12-10 20 views
6
için Python evdev eşdeğeri

Bir HID barkod tarayıcısını (klavye öykünür) barındıran bir python betiği yazdım: betik Linux platformlarında iyi çalışır (Ubuntu). Varolan python betiğinin küçük bir şekilde taşınmasına izin verecek olan, evdevi için bir OS X Python eşdeğeri var mı?OSX

Python deneyiminiz varsa ve bunu bir HID aygıt girişi için yapılandırdıysanız, lütfen cevabınızda bunu belirtin.

+0

Yanıt yok, ancak [this] (http://www.signal11.us/oss/hidapi/) ve 'ioreg -rtn IOHIDKeyboard' komutunu buldum. – Potatoswatter

+1

https://github.com/apmorton/pyhidapi adresini denediniz mi? – pigletfly

cevap

2

Sanırım mac os için hiçbir sitev bağlantı noktası yok çünkü sonuncusu linux çekirdeğine bağlı. Mac OS'de bir iş mantığını uygulamak istiyorsanız, bazı üst düzey soyutlama önerilerinde olduğu gibi kullanmalısınız. Ama eğer düşük seviyede evdev istiyorsanız, bunu using the Docker yapmanın kolay bir yol olduğunu düşünüyorum. Mac OS'de HID aygıtlarıyla hiç deneyimim yok, ancak diğer sürücüyle aynı sorunu çözdüm.

4

cython-hidapi (pip install hidapi aracılığıyla yüklenebilir) kullanılarak yapılan basit bir sınama çalışmam var - bu, yorumlarda bağlantılı olandan farklıdır, ancak işlevde benzer gibi görünüyor). Ayrıca, hidapi-devel'u macport'lardan yüklemiştim, ancak bağlantı noktasının devre dışı bırakılmasından sonra çalışmaya devam ettiğinden bunun gerekli olduğundan emin değilim. VID kullanmaya örnek try.py değiştirerek

/Microsoft USB kablosuz klavye/fare cihazının PID

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() 

aşağıdaki Ve şu çıktıyı elde edebildi $ sudo python try.py ile çalışan olarak:

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 

Kullandığım belirli aygıt, diğer şeyler arasında klavye & fare için birden çok HID aygıtı olarak numaralandırma gibi görünüyor, bu yüzden bir aldığınız, ancak bir barkod tarayıcı için biraz rastgele gibi görünüyor oldukça düz olmalı.