evtest
This commit is contained in:
parent
90832d382c
commit
faed182239
|
|
@ -1,26 +1,50 @@
|
|||
import re
|
||||
|
||||
import evdev
|
||||
from evdev import InputDevice, categorize, ecodes
|
||||
from six import unichr
|
||||
|
||||
key_map = {
|
||||
evdev.ecodes.KEY_A: 'a', evdev.ecodes.KEY_B: 'b', evdev.ecodes.KEY_C: 'c', evdev.ecodes.KEY_D: 'd', evdev.ecodes.KEY_E: 'e',
|
||||
evdev.ecodes.KEY_F: 'f', evdev.ecodes.KEY_G: 'g', evdev.ecodes.KEY_H: 'h', evdev.ecodes.KEY_I: 'i', evdev.ecodes.KEY_J: 'j',
|
||||
evdev.ecodes.KEY_K: 'k', evdev.ecodes.KEY_L: 'l', evdev.ecodes.KEY_M: 'm', evdev.ecodes.KEY_N: 'n', evdev.ecodes.KEY_O: 'o',
|
||||
evdev.ecodes.KEY_P: 'p', evdev.ecodes.KEY_Q: 'q', evdev.ecodes.KEY_R: 'r', evdev.ecodes.KEY_S: 's', evdev.ecodes.KEY_T: 't',
|
||||
evdev.ecodes.KEY_U: 'u', evdev.ecodes.KEY_V: 'v', evdev.ecodes.KEY_W: 'w', evdev.ecodes.KEY_X: 'x', evdev.ecodes.KEY_Y: 'y',
|
||||
evdev.ecodes.KEY_Z: 'z',
|
||||
evdev.ecodes.KEY_1: '1', evdev.ecodes.KEY_2: '2', evdev.ecodes.KEY_3: '3', evdev.ecodes.KEY_4: '4', evdev.ecodes.KEY_5: '5',
|
||||
evdev.ecodes.KEY_6: '6', evdev.ecodes.KEY_7: '7', evdev.ecodes.KEY_8: '8', evdev.ecodes.KEY_9: '9', evdev.ecodes.KEY_0: '0',
|
||||
evdev.ecodes.KEY_SPACE: ' ',
|
||||
evdev.ecodes.KEY_DOT: '.',
|
||||
evdev.ecodes.KEY_ENTER: '\n', # Or handle enter as needed
|
||||
evdev.ecodes.KEY_BACKSPACE: '\b',
|
||||
evdev.ecodes.KEY_LEFTSHIFT: '',
|
||||
evdev.ecodes.KEY_SLASH: '/',
|
||||
|
||||
}
|
||||
|
||||
def capture_input_events():
|
||||
try:
|
||||
# List available input devices
|
||||
devices = [InputDevice(path) for path in evdev.list_devices()]
|
||||
for device in devices:
|
||||
print(device.path, device.name, device.phys)
|
||||
|
||||
# Prompt the user to select a device
|
||||
device_path = input("Enter the path of the device you want to capture (e.g., /dev/input/eventX): ")
|
||||
device_path = find_barcode_scanner_event(devices)
|
||||
device = InputDevice(device_path)
|
||||
|
||||
print(f"Capturing events from {device.name}...")
|
||||
|
||||
for event in device.read_loop():
|
||||
if event.type == ecodes.EV_KEY:
|
||||
print(categorize(event))
|
||||
if event.code in key_map and event.value == 1:
|
||||
print(key_map[event.code],end='')
|
||||
else:
|
||||
if event.value == 0:
|
||||
continue
|
||||
print(categorize(event))
|
||||
#print("UNKNOWN CODE ",event.code)
|
||||
elif event.type == ecodes.EV_REL:
|
||||
pass # print(categorize(event))
|
||||
pass #print(categorize(event))
|
||||
elif event.type == ecodes.EV_ABS:
|
||||
pass # print(categorize(event))
|
||||
print(categorize(event))
|
||||
else:
|
||||
pass # print(event)
|
||||
|
||||
|
|
@ -29,5 +53,22 @@ def capture_input_events():
|
|||
except KeyboardInterrupt:
|
||||
print("Capture stopped.")
|
||||
|
||||
|
||||
def find_barcode_scanner_event(input_list):
|
||||
"""
|
||||
Finds the input identifier for the "Symbol Bar Code Scanner" in a list of input device strings.
|
||||
|
||||
Args:
|
||||
input_list: A list of strings, each representing an input device.
|
||||
|
||||
Returns:
|
||||
The input identifier (e.g., "/dev/input/event3") if found, otherwise None.
|
||||
"""
|
||||
for line in input_list:
|
||||
if "Symbol Bar Code Scanner" in line.name:
|
||||
return line.path
|
||||
return None
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
capture_input_events()
|
||||
38
src/test/pynput_test.py
Normal file
38
src/test/pynput_test.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
from pynput import keyboard
|
||||
|
||||
def on_press(key):
|
||||
try:
|
||||
print('{0}'.format(key.char),end='')
|
||||
except AttributeError:
|
||||
if key == keyboard.Key.enter:
|
||||
print("\r\n")
|
||||
#print('special key {0} pressed'.format(key))
|
||||
|
||||
def on_release(key):
|
||||
return
|
||||
print('{0} released'.format(key))
|
||||
if key == keyboard.Key.esc:
|
||||
# Stop listener
|
||||
return False
|
||||
|
||||
def on_click(x, y, button, pressed):
|
||||
print('{0} {1} at {2}'.format('Pressed' if pressed else 'Released', button, (x, y)))
|
||||
if not pressed:
|
||||
# Stop listener
|
||||
return False
|
||||
|
||||
def on_scroll(x, y, dx, dy):
|
||||
print('Scrolled {0} at {1}'.format((dx, dy), (x, y)))
|
||||
|
||||
def capture_pynput():
|
||||
# Collect events until released
|
||||
keyboard_listener = keyboard.Listener(on_press=on_press, on_release=on_release)
|
||||
|
||||
|
||||
keyboard_listener.start()
|
||||
|
||||
|
||||
keyboard_listener.join()
|
||||
|
||||
if __name__ == "__main__":
|
||||
capture_pynput()
|
||||
Loading…
Reference in New Issue
Block a user