notes/Card Scanner and other HID background reader RFID-dtJCpL8a.py
#!/usr/bin/env python


# Copyright Kris Occhipinti

# June 27th 2018

# https://filmsbykris.com

# Licensed under the GPLv3

# https://www.gnu.org/licenses/gpl-3.0.txt

#    

# Allows normal HID Keyboard like device to be read in background

# Install needed files

# sudo apt install xinput python-evdev

# 

# Disable device as HID in Xorg (Sycreader in my exmaple)

# xinput --disable "$(xinput|grep "Sycreader RFID Technology"|cut -d\= -f2|awk '{print $1}')"

#

# You will probably want to make the device readable rather then run this script as root

# sudo chmod +r /dev/input/by-id/usb-Sycreader_RFID_Technology_Co.__Ltd_SYC_ID_IC_USB_Reader_08FF20140315-event-kbd

# (again Sycreader_RFID is my device change to your device


import os
from evdev import InputDevice, categorize, ecodes

output = "" 

#set your device

dev = "/dev/input/by-id/usb-Sycreader_RFID_Technology_Co.__Ltd_SYC_ID_IC_USB_Reader_08FF20140315-event-kbd"
device = InputDevice(dev) # my keyboard

       
#check list of codes and run command if cound

def find_command(code):
    for line in open("codes.lst"):
        if code in line:
            command = line.split("|")[1].rstrip("\n\r") + " &"
            print(command)
            os.system(command)

#main loop

for event in device.read_loop():
    if event.type == ecodes.EV_KEY & event.value == 1:
        #print(categorize(event))

        # 28 is enter key.

        #so when "Enter" is pressed

        if event.code == 28:
            print(output)
            find_command(output)
#            if output == "2267233788":

#                os.system("/usr/games/minetest &")

            #clear Variable

            output = ""
        else:
            #if "Enter" is not pressed add last value to string

            output += str(event.code)

syntax highlighted by Code2HTML, v. 0.9.1