Also ein kurzer Check mit strace ergab :
open("/dev/input/mice", O_RDONLY) = -1 EACCES (Permission denied)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

Genau wie schon vemutet.

Code:
if(!fmouse) {
    printf("Can't open /dev/input/mice.\n");
   return 0;
}
Sollte das abfangen.

Also entweder als root laufen lassen, was eigentlich ganz sinnvoll ist wenn du noch mehr Hardware IO über device-files hast und der Pc außer dir niemandem zugänglich is (Sicherheit) is das höchstens ein Eleganzproblem.

Oder halt als root chmod 666 /dev/input/mice .
Dann muss es nicht als root laufen. Hat imho keine Nebenwirkung, aber man verlagert das Ich-hab-keine-root-rechte-Problem nur an eine andere Stelle.
Aber z.b. ein Init-Skript könnte dir dann alle Rechte für alle Devicefiles die du so brauchst geben.

Übrigens ein nettes Projekt.

Sebastian