From: Maarten V. <maa...@te...> - 2005-09-22 10:51:42
|
> On 9/21/2005 11:37 PM, Alien wrote: > >> can't we send keys to the xine-ui application only? > > Unfortunately not. XTestFakeKeyEvent() doesn't take a window as a > parameter. There's XSendEvent() but my guess is that won't actually > generate an event that the screen saver will see. Though has anyone > actually tried this? If it works, just send some unbelievably weird key > combo that no one in their right mind would use for a key binding. > >> we can't look for screensavers, cause there isn't a standardized way to >> make a screensaver... > > Right... But I wonder how much of a big deal this is? Really pretty > much everyone uses xscreensaver, KDE's screensaver, or gnome-screensaver > (which IIRC is based on xscreensaver). > > Personally, I don't get why this is a real problem. In Xfmedia, I'm > using the old shift key press that xine-ui used to use. I only disable > the screensaver when in fullscreen mode. My logic is that the only > reason you wouldn't be using fullscreen mode is if you're doing > something else on the computer, so you don't need to disable the > screensaver. > > Of course, this doesn't handle the multihead case, where you might have > xine fullscreened on one monitor, and you're doing something on the > other monitor. > > Here's a thought, though it's a little more complicated. Is there a way > to snoop for X events globally (without using XEvIE)? If so, make the > screen saver disabler smart: only try to disable the screensaver if > there hasn't been any X activity in the past x seconds. > > Alternatively, is there a way to get at X's idle timer? Gaim seems to > be able to do this in order to set IM accounts idle after 10 minutes. > In this case, just check the idle timer every x seconds, and if the idle > time is greater than y seconds, do XTestFakeKeyEvent() to reset it > (using shift). The assumption here is that you can detect that the user > is *not* using their computer, so they're not going to care if we hit > the shift key on them. If the idle time is less than y seconds, then we > don't need to worry about disabling the screensaver. > > I'm overseas now, but I might try implementing this last one in Xfmedia > when I get home. well, we first should check XSendEvent() if that works, then we could do that what you suggest. a possible problem case for the later part is this: imagine, myself sitting about 4m from the PC on a little sofa, watching some movie, and it's running; suddenly i get this urge to do something and i take my remote and press some button. at that exact same time, a shift is momentarily pressed, and the resulting action is totally different from the intended one... if you can assure me that this is not a problem, then, it's ok, but i wonder... there is the thing that we must have a time inbetween up and down events, now, is it possible to send the up event, so it looks like it was sent in the past? then we get a timediff between both events... |