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)