<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Sending fake keypress events to an X11 window</title>
	<atom:link href="http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/feed" rel="self" type="application/rss+xml" />
	<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html</link>
	<description>Maker of Finest Quality Digital Things</description>
	<lastBuildDate>Fri, 12 Mar 2010 07:37:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Jordan Sissel</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14410</link>
		<dc:creator>Jordan Sissel</dc:creator>
		<pubDate>Fri, 12 Mar 2010 07:37:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14410</guid>
		<description>Howdy!

This is an old post, but you may be interested in xdotool (and libxdo). It&#039;s an open source tool that helps you automate a bunch of the madness that is dealing with X11. It&#039;ll help you simulate key and mouse events in addition to doing window operations (resize, move, close, unmap/map), and some window manager actions (move windows to another desktop, etc), and searching for windows by property and title.</description>
		<content:encoded><![CDATA[<p>Howdy!</p>
<p>This is an old post, but you may be interested in xdotool (and libxdo). It&#8217;s an open source tool that helps you automate a bunch of the madness that is dealing with X11. It&#8217;ll help you simulate key and mouse events in addition to doing window operations (resize, move, close, unmap/map), and some window manager actions (move windows to another desktop, etc), and searching for windows by property and title.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy Balaam</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14395</link>
		<dc:creator>Andy Balaam</dc:creator>
		<pubDate>Wed, 03 Feb 2010 17:06:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14395</guid>
		<description>Thanks Adam!  Brilliant.  I needed* to send an F5 to Empathy to make it show all chat windows after starting.  This worked perfectly first time.

* For some definition of &quot;needed&quot;.</description>
		<content:encoded><![CDATA[<p>Thanks Adam!  Brilliant.  I needed* to send an F5 to Empathy to make it show all chat windows after starting.  This worked perfectly first time.</p>
<p>* For some definition of &#8220;needed&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jcl</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14393</link>
		<dc:creator>jcl</dc:creator>
		<pubDate>Thu, 28 Jan 2010 09:47:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14393</guid>
		<description>Nice code thanks at all 
it does not work for  me @Antonio

I can get the window handler if i set the focus i become a Parameter error

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  42 (X_SetInputFocus)
  Serial number of failed request:  156
  Current serial number in output stream:  157



My Problem is after a localhost Webserver Update i will send a ctrl+f5 to firefox for reload it not works for me
dbus and firefox as option the same</description>
		<content:encoded><![CDATA[<p>Nice code thanks at all<br />
it does not work for  me @Antonio</p>
<p>I can get the window handler if i set the focus i become a Parameter error</p>
<p>X Error of failed request:  BadMatch (invalid parameter attributes)<br />
  Major opcode of failed request:  42 (X_SetInputFocus)<br />
  Serial number of failed request:  156<br />
  Current serial number in output stream:  157</p>
<p>My Problem is after a localhost Webserver Update i will send a ctrl+f5 to firefox for reload it not works for me<br />
dbus and firefox as option the same</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: HyperHacker</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14391</link>
		<dc:creator>HyperHacker</dc:creator>
		<pubDate>Sat, 23 Jan 2010 04:05:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14391</guid>
		<description>Very helpful, thank you.

A word of warning to those who try to modify it: multiple calls to XOpenDisplay() with the same parameter return different handles; sending the press event with one handle and the release event with another will not work.</description>
		<content:encoded><![CDATA[<p>Very helpful, thank you.</p>
<p>A word of warning to those who try to modify it: multiple calls to XOpenDisplay() with the same parameter return different handles; sending the press event with one handle and the release event with another will not work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: palcu</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14312</link>
		<dc:creator>palcu</dc:creator>
		<pubDate>Fri, 08 May 2009 09:53:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14312</guid>
		<description>This example was very useful,thanks very much!</description>
		<content:encoded><![CDATA[<p>This example was very useful,thanks very much!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: n9986</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14286</link>
		<dc:creator>n9986</dc:creator>
		<pubDate>Sat, 28 Mar 2009 02:37:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14286</guid>
		<description>Many thanks for this tutorial! Really helped clear up the concept. :)</description>
		<content:encoded><![CDATA[<p>Many thanks for this tutorial! Really helped clear up the concept. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: skande</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14267</link>
		<dc:creator>skande</dc:creator>
		<pubDate>Sun, 08 Mar 2009 23:31:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14267</guid>
		<description>Please , can you show me where can i document myself about X11 .
I need documentation to develop a keylogger . THANKS</description>
		<content:encoded><![CDATA[<p>Please , can you show me where can i document myself about X11 .<br />
I need documentation to develop a keylogger . THANKS</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrei</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14263</link>
		<dc:creator>Andrei</dc:creator>
		<pubDate>Sat, 28 Feb 2009 01:27:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14263</guid>
		<description>I&#039;ve been searching for several hours trying to find something like this, thank you very much.

For some reason this doesn&#039;t seem to send the key event to the focused window (a urxvt terminal in my case), but I read at this website (http://www.handhelds.org/moin/moin.cgi/GeneratingSyntheticX11Events) that a key event generated in this way is tagged as fake and many programs ignore events with that tag.  However, as the site suggests, the thing to do is use the XTest function instead.  So, I made this small change:

XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&amp;event);
was changed to
XTestFakeKeyEvent(event.display, event.keycode, True, CurrentTime);

To complie this I had to do g++ -o XFakeKey XFakeKey.cpp -L/usr/X11R6/lib -lX11 -lXtst

Now it works perfectly.

Again, thank you.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been searching for several hours trying to find something like this, thank you very much.</p>
<p>For some reason this doesn&#8217;t seem to send the key event to the focused window (a urxvt terminal in my case), but I read at this website (<a href="http://www.handhelds.org/moin/moin.cgi/GeneratingSyntheticX11Events" rel="nofollow">http://www.handhelds.org/moin/moin.cgi/GeneratingSyntheticX11Events</a>) that a key event generated in this way is tagged as fake and many programs ignore events with that tag.  However, as the site suggests, the thing to do is use the XTest function instead.  So, I made this small change:</p>
<p>XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&amp;event);<br />
was changed to<br />
XTestFakeKeyEvent(event.display, event.keycode, True, CurrentTime);</p>
<p>To complie this I had to do g++ -o XFakeKey XFakeKey.cpp -L/usr/X11R6/lib -lX11 -lXtst</p>
<p>Now it works perfectly.</p>
<p>Again, thank you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Benjamin</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14252</link>
		<dc:creator>Benjamin</dc:creator>
		<pubDate>Thu, 12 Feb 2009 01:15:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14252</guid>
		<description>Oh man, you are a hero!

Thank you very much for this excellent code. I have been searching for this for hours!

Best regards,
Benjamin</description>
		<content:encoded><![CDATA[<p>Oh man, you are a hero!</p>
<p>Thank you very much for this excellent code. I have been searching for this for hours!</p>
<p>Best regards,<br />
Benjamin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Antonio</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14250</link>
		<dc:creator>Antonio</dc:creator>
		<pubDate>Sat, 07 Feb 2009 13:27:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14250</guid>
		<description>With the method of the last comment   you can automate any application (sending &quot;keypresses&quot; to its window). 

This method needs that the window is not minimized, maybe some hacker can find a method that is valid even if the window is minimized.</description>
		<content:encoded><![CDATA[<p>With the method of the last comment   you can automate any application (sending &#8220;keypresses&#8221; to its window). </p>
<p>This method needs that the window is not minimized, maybe some hacker can find a method that is valid even if the window is minimized.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Antonio</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14215</link>
		<dc:creator>Antonio</dc:creator>
		<pubDate>Sun, 28 Dec 2008 01:03:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14215</guid>
		<description>Thanks Adam!

&gt; But what I need is to be able to do is set keyboard focus 
Feel free to correct me, what I&#039;m using now is:

/*
 * Window_With_Name: routine to locate a window with a given name on a display.
 *                   If no window with the given name is found, 0 is returned.
 *                   If more than one window has the given name, the first
 *                   one found will be returned.  Only top and its subwindows
 *                   are looked at.  Normally, top should be the RootWindow.
 */
Window 
Window_With_Name(Display *display, Window top, const char *name)
{
	Window *children, dummy;
	unsigned int nchildren;
	unsigned int i;
	Window w=0;
	char *window_name;

	if (XFetchName(display, top, &amp;window_name) &amp;&amp; !strcmp(window_name, name))
	  return(top);

	if (!XQueryTree(display, top, &amp;dummy, &amp;dummy, &amp;children, &amp;nchildren))
	  return(0);

	for (i=0; i&lt;nchildren; i++) {
		w = Window_With_Name(display, children[i], name);
		if (w)
		  break;
	}
	if (children) XFree ((char *)children);
	return(w);
}

int 
main(int argc, char *argv[])
{
	display = XOpenDisplay(0); 
	if (!display)
		exit(EXIT_FAILURE);

	Window window_root = DefaultRootWindow(display);
	if (!window_root)
		exit(EXIT_FAILURE);

	Window window_found = Window_With_Name(display, window_root, &quot;put here the name of the window&quot;); 
	
	if (window_found)
	{
		XSetInputFocus(display, window_found, RevertToNone, CurrentTime);

		// Send keys to window_found</description>
		<content:encoded><![CDATA[<p>Thanks Adam!</p>
<p>&gt; But what I need is to be able to do is set keyboard focus<br />
Feel free to correct me, what I&#8217;m using now is:</p>
<p>/*<br />
 * Window_With_Name: routine to locate a window with a given name on a display.<br />
 *                   If no window with the given name is found, 0 is returned.<br />
 *                   If more than one window has the given name, the first<br />
 *                   one found will be returned.  Only top and its subwindows<br />
 *                   are looked at.  Normally, top should be the RootWindow.<br />
 */<br />
Window<br />
Window_With_Name(Display *display, Window top, const char *name)<br />
{<br />
	Window *children, dummy;<br />
	unsigned int nchildren;<br />
	unsigned int i;<br />
	Window w=0;<br />
	char *window_name;</p>
<p>	if (XFetchName(display, top, &amp;window_name) &amp;&amp; !strcmp(window_name, name))<br />
	  return(top);</p>
<p>	if (!XQueryTree(display, top, &amp;dummy, &amp;dummy, &amp;children, &amp;nchildren))<br />
	  return(0);</p>
<p>	for (i=0; i&lt;nchildren; i++) {<br />
		w = Window_With_Name(display, children[i], name);<br />
		if (w)<br />
		  break;<br />
	}<br />
	if (children) XFree ((char *)children);<br />
	return(w);<br />
}</p>
<p>int<br />
main(int argc, char *argv[])<br />
{<br />
	display = XOpenDisplay(0);<br />
	if (!display)<br />
		exit(EXIT_FAILURE);</p>
<p>	Window window_root = DefaultRootWindow(display);<br />
	if (!window_root)<br />
		exit(EXIT_FAILURE);</p>
<p>	Window window_found = Window_With_Name(display, window_root, &#8220;put here the name of the window&#8221;); </p>
<p>	if (window_found)<br />
	{<br />
		XSetInputFocus(display, window_found, RevertToNone, CurrentTime);</p>
<p>		// Send keys to window_found</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Carlson</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14154</link>
		<dc:creator>Scott Carlson</dc:creator>
		<pubDate>Sat, 01 Nov 2008 06:27:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14154</guid>
		<description>This has got me one step closer.  But what I need is to be able to do is set keyboard focus on an already open window (in this case firefox), and then hit a key.  how do you change window focus?  I&#039;ve Googled and not found a simple way yet.  Oh and I&#039;m trying to do it in Ruby but if you point me to a lib or just a C example I&#039;ll probly find a method to bind to it.
   Thanks and fine work Adam</description>
		<content:encoded><![CDATA[<p>This has got me one step closer.  But what I need is to be able to do is set keyboard focus on an already open window (in this case firefox), and then hit a key.  how do you change window focus?  I&#8217;ve Googled and not found a simple way yet.  Oh and I&#8217;m trying to do it in Ruby but if you point me to a lib or just a C example I&#8217;ll probly find a method to bind to it.<br />
   Thanks and fine work Adam</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14149</link>
		<dc:creator>Kevin</dc:creator>
		<pubDate>Fri, 17 Oct 2008 01:54:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14149</guid>
		<description>Wow!  Thanks Adam!  This is invaluable.  I just used XFakeKey to talk to my &quot;headless firefox&quot; inside of xvfb.  The down clicks are working, the screenshots are changing!!  Very exciting.</description>
		<content:encoded><![CDATA[<p>Wow!  Thanks Adam!  This is invaluable.  I just used XFakeKey to talk to my &#8220;headless firefox&#8221; inside of xvfb.  The down clicks are working, the screenshots are changing!!  Very exciting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Izkata</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14139</link>
		<dc:creator>Izkata</dc:creator>
		<pubDate>Fri, 03 Oct 2008 00:52:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14139</guid>
		<description>FYI for those who don&#039;t know, you can run &#039;xev&#039; in a terminal to get keycodes - it opens a small window while it runs, then information on all keypresses are output to the terminal.  For example:  I typed &quot;hi&quot;

KeyPress event, serial 23, synthetic NO, window 0x4c00001,
    root 0x59, subw 0x0, time 153093161, (423,461), root:(424,491),
    state 0x10, keycode 43 (keysym 0x68, h), same_screen YES,
    XLookupString gives 1 bytes: (68) &quot;h&quot;
    XmbLookupString gives 1 bytes: (68) &quot;h&quot;
    XFilterEvent returns: False

KeyRelease event, serial 26, synthetic NO, window 0x4c00001,
    root 0x59, subw 0x0, time 153093232, (423,461), root:(424,491),
    state 0x10, keycode 43 (keysym 0x68, h), same_screen YES,
    XLookupString gives 1 bytes: (68) &quot;h&quot;
    XFilterEvent returns: False

KeyPress event, serial 26, synthetic NO, window 0x4c00001,
    root 0x59, subw 0x0, time 153093374, (423,461), root:(424,491),
    state 0x10, keycode 31 (keysym 0x69, i), same_screen YES,
    XLookupString gives 1 bytes: (69) &quot;i&quot;
    XmbLookupString gives 1 bytes: (69) &quot;i&quot;
    XFilterEvent returns: False

KeyRelease event, serial 26, synthetic NO, window 0x4c00001,
    root 0x59, subw 0x0, time 153093434, (423,461), root:(424,491),
    state 0x10, keycode 31 (keysym 0x69, i), same_screen YES,
    XLookupString gives 1 bytes: (69) &quot;i&quot;
    XFilterEvent returns: False

So, keycode 43 is &#039;h&#039; and 31 is &#039;i&#039; - *on my keyboard*.  It may or may not be different for you.. I&#039;m not really sure.

In any case, this should help a lot.  I&#039;ve been having troubles with Super and CTRL getting stuck on this new laptop somehow, so maybe I can use this to force a key-release...</description>
		<content:encoded><![CDATA[<p>FYI for those who don&#8217;t know, you can run &#8216;xev&#8217; in a terminal to get keycodes &#8211; it opens a small window while it runs, then information on all keypresses are output to the terminal.  For example:  I typed &#8220;hi&#8221;</p>
<p>KeyPress event, serial 23, synthetic NO, window 0&#215;4c00001,<br />
    root 0&#215;59, subw 0&#215;0, time 153093161, (423,461), root:(424,491),<br />
    state 0&#215;10, keycode 43 (keysym 0&#215;68, h), same_screen YES,<br />
    XLookupString gives 1 bytes: (68) &#8220;h&#8221;<br />
    XmbLookupString gives 1 bytes: (68) &#8220;h&#8221;<br />
    XFilterEvent returns: False</p>
<p>KeyRelease event, serial 26, synthetic NO, window 0&#215;4c00001,<br />
    root 0&#215;59, subw 0&#215;0, time 153093232, (423,461), root:(424,491),<br />
    state 0&#215;10, keycode 43 (keysym 0&#215;68, h), same_screen YES,<br />
    XLookupString gives 1 bytes: (68) &#8220;h&#8221;<br />
    XFilterEvent returns: False</p>
<p>KeyPress event, serial 26, synthetic NO, window 0&#215;4c00001,<br />
    root 0&#215;59, subw 0&#215;0, time 153093374, (423,461), root:(424,491),<br />
    state 0&#215;10, keycode 31 (keysym 0&#215;69, i), same_screen YES,<br />
    XLookupString gives 1 bytes: (69) &#8220;i&#8221;<br />
    XmbLookupString gives 1 bytes: (69) &#8220;i&#8221;<br />
    XFilterEvent returns: False</p>
<p>KeyRelease event, serial 26, synthetic NO, window 0&#215;4c00001,<br />
    root 0&#215;59, subw 0&#215;0, time 153093434, (423,461), root:(424,491),<br />
    state 0&#215;10, keycode 31 (keysym 0&#215;69, i), same_screen YES,<br />
    XLookupString gives 1 bytes: (69) &#8220;i&#8221;<br />
    XFilterEvent returns: False</p>
<p>So, keycode 43 is &#8216;h&#8217; and 31 is &#8216;i&#8217; &#8211; *on my keyboard*.  It may or may not be different for you.. I&#8217;m not really sure.</p>
<p>In any case, this should help a lot.  I&#8217;ve been having troubles with Super and CTRL getting stuck on this new laptop somehow, so maybe I can use this to force a key-release&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: adam</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14096</link>
		<dc:creator>adam</dc:creator>
		<pubDate>Tue, 02 Sep 2008 23:45:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14096</guid>
		<description>Try setting the &quot;modifiers&quot; parameter of the createKeyEvent function with values like XK_Shift_L or XK_Meta_L. See /usr/include/X11/keysymdef.h for a list of possible values.</description>
		<content:encoded><![CDATA[<p>Try setting the &#8220;modifiers&#8221; parameter of the createKeyEvent function with values like XK_Shift_L or XK_Meta_L. See /usr/include/X11/keysymdef.h for a list of possible values.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Johen</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14095</link>
		<dc:creator>Johen</dc:creator>
		<pubDate>Tue, 02 Sep 2008 14:38:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14095</guid>
		<description>How about hotkeys like CTRL+L. How can I simulate it?</description>
		<content:encoded><![CDATA[<p>How about hotkeys like CTRL+L. How can I simulate it?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Windsor Schmidt</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14092</link>
		<dc:creator>Windsor Schmidt</dc:creator>
		<pubDate>Wed, 27 Aug 2008 00:06:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14092</guid>
		<description>Thanks, just what I needed!</description>
		<content:encoded><![CDATA[<p>Thanks, just what I needed!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14041</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Sat, 21 Jun 2008 15:26:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14041</guid>
		<description>nice! i searched 10 hours for something like this in QT4, but now i use this.</description>
		<content:encoded><![CDATA[<p>nice! i searched 10 hours for something like this in QT4, but now i use this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ewald</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-14015</link>
		<dc:creator>Ewald</dc:creator>
		<pubDate>Sun, 18 May 2008 16:00:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-14015</guid>
		<description>Excellent example. However, one thing should be noted:
I found out you have to request the focus window for every new key event you send

getfocus(), keypress(), keyrelease() will not work
while 
getfocus(), keypress(), getfocus(), keyrelease() works perfectly.</description>
		<content:encoded><![CDATA[<p>Excellent example. However, one thing should be noted:<br />
I found out you have to request the focus window for every new key event you send</p>
<p>getfocus(), keypress(), keyrelease() will not work<br />
while<br />
getfocus(), keypress(), getfocus(), keyrelease() works perfectly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html/comment-page-1#comment-12245</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Sat, 06 Oct 2007 22:59:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.doctort.org/adam/nerd-notes/x11-fake-keypress-event.html#comment-12245</guid>
		<description>Brilliant, I have thought for ages that there must be a way to do this programmatically but had real trouble finding it actually written out somewhere online.

Thanks a lot.</description>
		<content:encoded><![CDATA[<p>Brilliant, I have thought for ages that there must be a way to do this programmatically but had real trouble finding it actually written out somewhere online.</p>
<p>Thanks a lot.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
