example/grabInput.py
Rama master · réplica de lectura del repositorio original.
#!/usr/bin/python
#Currently this script needs to be run as root. Eventually a udev rule could
#solve this problem
import sys
import os
from evdev import InputDevice, list_devices, ecodes, categorize
#import requests
SCRIPT_LOCATION = "/var/www/html/barcodebuddy/index.php"
#SERVER_ADDRESS = "https://your.bbuddy.url/api/"
#API_KEY = "YourApiKey"
CODE_MAP_CHAR = {
'KEY_0': "0",
'KEY_1': "1",
'KEY_2': "2",
'KEY_3': "3",
'KEY_4': "4",
'KEY_5': "5",
'KEY_6': "6",
'KEY_7': "7",
'KEY_8': "8",
'KEY_9': "9",
'KEY_KP0': "0",
'KEY_KP1': "1",
'KEY_KP2': "2",
'KEY_KP3': "3",
'KEY_KP4': "4",
'KEY_KP5': "5",
'KEY_KP6': "6",
'KEY_KP7': "7",
'KEY_KP8': "8",
'KEY_KP9': "9",
'KEY_NUMERIC_0': "0",
'KEY_NUMERIC_1': "1",
'KEY_NUMERIC_2': "2",
'KEY_NUMERIC_3': "3",
'KEY_NUMERIC_4': "4",
'KEY_NUMERIC_5': "5",
'KEY_NUMERIC_6': "6",
'KEY_NUMERIC_7': "7",
'KEY_NUMERIC_8': "8",
'KEY_NUMERIC_9': "9",
'KEY_A': "A",
'KEY_B': "B",
'KEY_C': "C",
'KEY_D': "D",
'KEY_E': "E",
'KEY_F': "F",
'KEY_G': "G",
'KEY_H': "H",
'KEY_I': "I",
'KEY_J': "J",
'KEY_K': "K",
'KEY_L': "L",
'KEY_M': "M",
'KEY_N': "N",
'KEY_O': "O",
'KEY_P': "P",
'KEY_Q': "Q",
'KEY_R': "R",
'KEY_S': "S",
'KEY_T': "T",
'KEY_U': "U",
'KEY_V': "V",
'KEY_W': "W",
'KEY_X': "X",
'KEY_Y': "Y",
'KEY_Z': "Z",
'KEY_DOT': ".",
'KEY_MINUS': "-",
'KEY_SEMICOLON': ":",
'KEY_KPMINUS': "-"
}
def parse_key_to_char(val):
return CODE_MAP_CHAR[val] if val in CODE_MAP_CHAR else ""
if __name__ == "__main__":
print ("List of your devices :")
devices = [InputDevice(fn) for fn in list_devices()]
for device in devices:
print ("\t{}\t{}".format(device.fn, device.name))
print ("Choose event ID :")
event_id = raw_input()
device = InputDevice('/dev/input/event{}'.format(event_id))
device.grab()
data = ""
for event in device.read_loop():
if event.type == ecodes.EV_KEY:
e = categorize(event)
if e.keystate == e.key_up:
if e.keycode == "KEY_ENTER":
print ("Sending :" + data)
os.system("sudo -H -u www-data /usr/bin/screen -dm /usr/bin/php " + SCRIPT_LOCATION + " " + data)
#If you want to send GET requests instead, uncomment the line below and the "import requests". The method above is preferred
#requests.get(SERVER_ADDRESS+'action/scan?apikey='+API_KEY+'&add='+data)
data = ""
else:
data += parse_key_to_char(e.keycode)