Вы можете использовать /dev/uhid
для создания собственного HID устройства. Это позволяет легко предоставлять не только клавиатуры из пользовательского пространства, но и мыши, джойстики и т. д. Вновь созданное HID-устройство автоматически получит связанное устройство /dev/input
. В исходниках ядра есть пример программы, samples/uhid/uhid-example.c
. Я думаю, что это самый портативный способ, устройства HID очень стандартизированы. В основном все USB-клавиатуры и мыши являются HID-устройствами.
Вы также можете использовать /dev/uinput
или /dev/input/uinput
(в зависимости от вашего дистрибутива) для непосредственного создания устройства входного уровня. См., например. Подробности здесь. Для этого нужен модуль ядра uinput
.