Ok, currently I have been only creating one connection to the XWindow for events... Though, this has proved difficult in my seperation of devices... Where each device requires you to call capture (ie. mouse->capture() keyboard->capture()).. Now, with one conenction both keyboard & mouse events are recieved from the same event loop capture, this messes up mouse relative values (movements from last capture call) - as it is captured, then recaptured again. I tried some hackish frame counter... but, now that I think of it.. two connections would easily resolve this.. Now, I do not know much of X.. BUt I do not think 3 connections will hurt performance noticeably (main app - eg Ogre window, Mouse, and keyboard), so this is the way I am going to go right now.