Pesquisando rapidamente, parece que existe um Linux Joystick Mapper no Sourceforge que afirma fazer o que você quer.
Eu acredito que ele é construído sobre uinput , que é provavelmente o que você vai querer usar se você tem que construir o seu próprio. Há wrappers para isso em vários idiomas, então você não terá necessariamente que trabalhar em C. O Python parece ser definitivamente possível.