Вы можете отключить клавиатуру из других приложений с помощью "xinput float" или «xinput --disable» или отключив ее в xorg.conf (отключите автоматическое добавление устройств и настройте нужные устройства)
Затем вы можете написать приложение, которое читает события с плавающей клавиатуры или из /dev /input /eventX и отправляет события геймпада в /dev /uinput.
Новое устройство uinput создается с ioctl в /dev /uinput и событиями, отправляемыми путем записи структур uinput_user_dev в /dev /uinput. Для этого есть библиотека python: http://tjjr.fi/sw/python-uinput/
Быстрое подтверждение концепции может быть написано путем передачи вывода «xinput test-xi2 number» в программу python-uinput.