Mercurial > projects > mde
view mde/input/input.d @ 2:78eb491bd642
mergetag: partially redesigned dataset and text reader classes. Changed text format.
committer: Diggory Hardy <diggory.hardy@gmail.com>
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Sat, 03 Nov 2007 15:15:43 +0000 |
parents | d547009c104c |
children | 9a990644948c |
line wrap: on
line source
/** This module contains the interface to the input system; it should be the only module of the * input package imported from outside this package. */ module mde.input.input; // package imports import mde.input.core; import mde.input.config; import mde.input.eventstream; // sdl imports import derelict.sdl.events; /// Get key status at this ID bool button (uint id) { return b_tbl[cast(index_t) id]; } /// Get axis status at this ID (range -1.0 .. 1.0) real axis (uint id) { return axis_tbl[cast(index_t) id]; } /** Get mouse pointer position in screen coordinates. * Window managers only support one mouse, so there will only be one screen coordinate. * Unlike everything else, this is not configurable. */ void mouseScreenPos (uint x, uint y) { x = mouse_x; y = mouse_y; } /** Get relative mouse position (also for joystick balls). * * Converts to a real via sensitivity settings (defaults may be set and overriden per item). * * To avoid confusion over the ID here, the idea is for the input-layer upward to support * multiple mice, even though it's unlikely for the input system itself to support them. Also * joystick balls (supported by SDL) can be used in the same way as a mouse for relative * positions. Thus this must be configured only on one-mouse systems. */ void mouseRelativePos (out real x, out real y, uint id) { RelPair rp = axis_rel_tbl[cast(index_t) id]; x = rp.x; y = rp.y; } /// As it says. Optional. bool modifierStatus (uint id); /// Adds a callback delegate for key with this ID for both DOWN and UP events. /// Passes current status. void addKeyCallback (void delegate(bool) dg); /// Similar function for axis events. void addAxisCallback (void delegate(real) dg); /** Similar function for mouse/joystick ball motion. * Last parameter is true if it's for the window-manager mouse (use mouseScreenPos to get * mouse screen position). */ void addMouseCallback (void delegate(real,real,bool) dg); /** Feed an SDL_Event struct (only uses if it's a key, mouse or joystick event). * Other types of event functions may be added. */ void SDLEvent (SDL_Event event);