Your message dated Sun, 19 Feb 2012 14:49:15 +0100
with message-id <1329659355.18434.2.camel@puppet>
and subject line Re: add missing XTest bindings
has caused the Debian Bug report #619506,
regarding add missing XTest bindings
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
619506: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=619506
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: valac-0.10
Version: 0.10.4-1
Severity: wishlist
Tags: patch

Hi,

since I didn't find any vala bindings for the XTest extension, I tried
writing them myself. The results are attached. I have also attached a
small demonstration program which will start/pause your music player.

This is how it should work:

$ valac --vapidir=. --pkg=x11 --pkg=xtst demo.vala && ./demo
Display :0.0 opened
String XF86AudioPlay has keysym 0x1008FF14
Keysym 0x1008FF14 has keycode 172
Keycode 172 pressed
Keycode 172 released
Display :0.0 flushed
$

Please note that the program needs the patch from #619505[1].

I'm looking forward to any comments/criticism/whatever!

Best regards

Alexander Kurtz

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=619505
/* xtst.vapi
 *
 * Copyright (C) 2011  Alexander Kurtz
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 * Author:
 * 	Alexander Kurtz <[email protected]>
 */


[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "X11/extensions/XTest.h")]
namespace X {
	public class Test {
		[CCode (cname = "XTestQueryExtension")]
		public static bool query_extension(Display display, int event_base_return, int error_base_return, int major_version_return, int minor_version_return);

		//[CCode (cname = "XTestCompareCursorWithWindow")]
		//public static bool compare_cursor_with_window(Display display, Window window, Cursor cursor);

		[CCode (cname = "XTestCompareCurrentCursorWithWindow")]
		public static bool compare_current_cursor_with_window(Display display, Window window);

		[CCode (cname = "XTestFakeKeyEvent")]
		public static int fake_key_event(Display display, uint keycode, bool is_press, ulong delay);

		[CCode (cname = "XTestFakeButtonEvent")]
		public static int fake_button_event(Display display, uint button, bool is_press, ulong delay);

		[CCode (cname = "XTestFakeMotionEvent")]
		public static int fake_motion_event(Display display, int screen_number, int x, int y, ulong delay);
		
		[CCode (cname = "XTestFakeRelativeMotionEvent")]
		public static int fake_relative_motion_event(Display display, int screen_number, int x, int y, ulong delay);

		[CCode (cname = "XTestGrabControl")]
		public static int grab_control(Display display, bool impervious);

		//[CCode (cname = "XTestSetGContextOfGC")]
		//public static void set_g_context_of_gc(GC gc, GContext gid);

		//[CCode (cname = "XTestSetVisualIDOfVisual")]
		//public static void set_visual_id_of_visual(Visual visual, VisualID visualid);

		[CCode (cname = "XTestDiscard")]
		public static Status discard(Display display);
	}
}
x11
void main(){
	string keystr = "XF86AudioPlay";

	X.Display display = new X.Display();
	stdout.printf("Display %s opened\n", display.display_string());

	int keysym  = display.string_to_keysym(keystr);
	stdout.printf("String %s has keysym 0x%X\n", keystr, keysym);

	int keycode = display.keysym_to_keycode(keysym);
	stdout.printf("Keysym 0x%X has keycode %d\n", keysym, keycode);

	X.Test.fake_key_event(display, keycode, true, 0);
	stdout.printf("Keycode %d pressed\n", keycode);
	
	X.Test.fake_key_event(display, keycode, false, 0);
	stdout.printf("Keycode %d released\n", keycode);

	display.flush();
	stdout.printf("Display %s flushed\n", display.display_string());
}

Attachment: signature.asc
Description: This is a digitally signed message part


--- End Message ---
--- Begin Message ---
Version: 0.14.2-1

The latest update to Vala 0.14.2 contains the new xtst-bindings[0], so
I'm closing this bug now.

Best regards

Alexander Kurtz

[0] http://packages.qa.debian.org/v/vala-0.14/news/20120209T003357Z.html

Attachment: signature.asc
Description: This is a digitally signed message part


--- End Message ---

Reply via email to