If you write the button codes to /proc/empeg_notify, then they will receive full Hijack processing.. menu and all.

The player sets itself to Real-Time priorirty at startup, which is why it runs and your app doesn't run when things are really busy. You may be able to use strace to see exactly how it accomplishes that.

Cheers