indexing
	description: "Objects to synthesize keystrokes, mouse motions and button clicks."
	status: "See notice at end of class."
	date: "$Date$"
	revision: "$Revision$"

class interface
	WEL_INPUT_EVENT

feature -- Keyboard events

	send_keyboard_key_down (virtual_key_code: INTEGER)
			-- The keybd_event function synthesizes a keystroke. The system
			-- can use such a synthesized keystroke to generate a
			-- WM_KEYDOWN message.
			--
			-- An application can simulate a press of the PRINTSCRN key in
			-- order to obtain a screen snapshot and save it to the
			-- clipboard.
			-- To do this, call `send_keyboard_key_down(Vk_snapshot)'.
			--
			-- Windows NT: The send_keyboard_key_down can toggle the
			-- NUM LOCK, CAPS LOCK, and SCROLL LOCK keys.
			--
			-- Windows 95: The send_keyboard_key_down function can toggle
			-- only the CAPS LOCK and SCROLL LOCK keys. It cannot toggle
			-- the NUM LOCK key.

	send_keyboard_key_up (virtual_key_code: INTEGER)
			-- The keybd_event function synthesizes a keystroke. The system
			-- can use such a synthesized keystroke to generate a
			-- WM_KEYUP message.
			--
			-- Windows NT: The send_keyboard_key_down can toggle the
			-- NUM LOCK, CAPS LOCK, and SCROLL LOCK keys.
			--
			-- Windows 95: The send_keyboard_key_down function can toggle
			-- only the CAPS LOCK and SCROLL LOCK keys. It cannot toggle
			-- the NUM LOCK key.
	
feature -- Mouse events

	send_mouse_absolute_move (a_x, a_y: INTEGER)
			-- Synthesize a fake mouse move to absolute
			-- screen position a_x, a_y.
			--
			-- a_x and a_y contain normalized absolute coordinates
			-- between 0 and 65,535. The event procedure maps these
			-- coordinates onto the display surface. Coordinate (0,0)
			-- maps onto the upper-left corner of the display surface,
			-- (65535,65535) maps onto the lower-right corner.
			--
			-- To determine the size of the screen use
			-- {WEL_SYSTEM_METRICS}.screen_width and
			-- {WEL_SYSTEM_METRICS}.screen_height.

	send_mouse_left_button_down
			-- Synthesize a fake press on the left button of the
			-- mouse.

	send_mouse_left_button_up
			-- Synthesize a fake press on the left button of the
			-- mouse.

	send_mouse_middle_button_down
			-- Synthesize a fake press on the middle button of the
			-- mouse.

	send_mouse_middle_button_up
			-- Synthesize a fake press on the middle button of the
			-- mouse.

	send_mouse_relative_move (a_x, a_y: INTEGER)
			-- Synthesize a fake mouse move.
			-- a_x and a_y are the number of mickeys moved.
			--
			-- A mickey is the amount that a mouse has to move
			-- for it to report that it has moved.

	send_mouse_right_button_down
			-- Synthesize a fake press on the right button of the
			-- mouse.

	send_mouse_right_button_up
			-- Synthesize a fake press on the right button of the
			-- mouse.
	
invariant

		-- from ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)

end -- class WEL_INPUT_EVENT