I've attached two samples that show this behavior outside of thinkfinger.
They both create a uinput device and send a KEY_ENTER event. In bad.c, when the device is only set up with a KEY_ENTER key, the KEY_ENTER event is not observed in X. However, in good.c, if another supported key (say KEY_A) is added to the uinput device as well, the sending of the KEY_ENTER event works just fine.
Both of the testcases work as expected outside of X in the terminal which leads to me to believe something is getting munged in X's input layer.
I've attached two samples that show this behavior outside of thinkfinger.
They both create a uinput device and send a KEY_ENTER event. In bad.c, when the device is only set up with a KEY_ENTER key, the KEY_ENTER event is not observed in X. However, in good.c, if another supported key (say KEY_A) is added to the uinput device as well, the sending of the KEY_ENTER event works just fine.
Both of the testcases work as expected outside of X in the terminal which leads to me to believe something is getting munged in X's input layer.