There are issues with mouse handling in cl-tcod. I'm sure you're aware of this as there is a comment mentioning it in the source. You mention reading the current state, but I've also found that there are issues with mouse events. For example, I'll make a call to
tcod:sys-wait-for-event and click all over the window, and get only sporadic
Mouse events are pretty important for my project, so I'm considering writing some code to interface with SDL directly to retrieve events. Does this sound useful to merge into the main library? If not I'll make it a separate little module in my project rather than integrating it with cl-tcod.
Of course the ideal solution would be to fix the cl-tcod event functions, but I have no idea where to even start with that. It seems to work correctly in the current libtcod-1.5.1, as the mouse section of the sample program functions perfectly. I don't know what it could be about cl-tcod that makes this particular usage of CFFI broken, as I have no experience working with it.
If you have any pointers as to what could be causing this I'd be happy to try and investigate, as fixing the existing functions would be much nicer than bypassing libtcod altogether.