Ctrl K
ComunidadGuías…

example/grabInput.py

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/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)