Difference between revisions of "GE"
(→Build the test) |
|||
Line 3: | Line 3: | ||
GE is a cross-platform event library for handling input from keyboards, mice, and joysticks.<br /> | GE is a cross-platform event library for handling input from keyboards, mice, and joysticks.<br /> | ||
It can be used in Windows or Linux.<br /> | It can be used in Windows or Linux.<br /> | ||
− | It is released under the [http://www.gnu.org/licenses/gpl.html GPLv3 license] and is available in the [https://github.com/matlo/GIMX/tree/ | + | It is released under the [http://www.gnu.org/licenses/gpl.html GPLv3 license] and is available in the [https://github.com/matlo/GIMX/tree/dev/shared/event GIMX git repository].<br /> |
GE supports multiple mice, keyboards and joysticks, which means the source of each event can be identified.<br /> | GE supports multiple mice, keyboards and joysticks, which means the source of each event can be identified.<br /> | ||
In Linux, it directly interfaces with [http://en.wikipedia.org/wiki/Evdev evdev], and allows to write "interrupt-based" event processing.<br /> | In Linux, it directly interfaces with [http://en.wikipedia.org/wiki/Evdev evdev], and allows to write "interrupt-based" event processing.<br /> | ||
− | In Windows, it uses | + | In Windows, it interfaces with the RawInput API to get keyboard and mouse events. To get joystick events it uses the SDL 2.0 library, which handles standard joysticks and Xinput gamepads. RawInput event processing is "interrupt-based", whereas SDL 2.0 event processing is "polling-based".<br /> |
− | This page only gives pseudo-code | + | This page only gives a pseudo-code example. Check the [https://github.com/matlo/GIMX/tree/dev/shared/event/test/ test directory] for a complete example. |
− | |||
− | |||
To use GE in Linux, make sure to have [[Development_on_Linux#Set_Input_Device_Permissions_.28required_since_r1277.29|read access to the input devices]]. | To use GE in Linux, make sure to have [[Development_on_Linux#Set_Input_Device_Permissions_.28required_since_r1277.29|read access to the input devices]]. | ||
− | = | + | =Example= |
#include <GE.h> | #include <GE.h> | ||
Line 30: | Line 28: | ||
} | } | ||
− | + | GE_TimerStart(10000); //microseconds | |
− | |||
− | GE_TimerStart( | ||
GE_SetCallback(process_event); | GE_SetCallback(process_event); | ||
− | + | GE_grab(); //grab the mouse pointer | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
while(!done) | while(!done) | ||
{ | { | ||
− | + | GE_PumpEvents();//returns when timer fires | |
− | |||
− | GE_PumpEvents();// | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
//do something periodically | //do something periodically | ||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
Line 129: | Line 50: | ||
==Build the static library== | ==Build the static library== | ||
cd ~ | cd ~ | ||
− | git clone -b | + | git clone -b dev --single-branch --depth 1 <nowiki>https://github.com/matlo/GIMX.git</nowiki> |
cd GIMX/shared/event | cd GIMX/shared/event | ||
make | make | ||
Line 138: | Line 59: | ||
==Run the test== | ==Run the test== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
cd ~/GIMX/event/test | cd ~/GIMX/event/test | ||
− | ./ | + | ./GE_test |
The test displays all keyboards, mice and joysticks, and it then displays all input events. | The test displays all keyboards, mice and joysticks, and it then displays all input events. | ||
Press Escape or Ctrl+c to exit. | Press Escape or Ctrl+c to exit. |
Revision as of 15:31, 23 May 2014
Contents
The GIMX Event Library
GE is a cross-platform event library for handling input from keyboards, mice, and joysticks.
It can be used in Windows or Linux.
It is released under the GPLv3 license and is available in the GIMX git repository.
GE supports multiple mice, keyboards and joysticks, which means the source of each event can be identified.
In Linux, it directly interfaces with evdev, and allows to write "interrupt-based" event processing.
In Windows, it interfaces with the RawInput API to get keyboard and mouse events. To get joystick events it uses the SDL 2.0 library, which handles standard joysticks and Xinput gamepads. RawInput event processing is "interrupt-based", whereas SDL 2.0 event processing is "polling-based".
This page only gives a pseudo-code example. Check the test directory for a complete example.
To use GE in Linux, make sure to have read access to the input devices.
Example
#include <GE.h> int process_event(GE_Event* event) { //handle the event } int main(int argc, char* argv[]) { if (!GE_initialize()) { //handle the error } GE_TimerStart(10000); //microseconds GE_SetCallback(process_event); GE_grab(); //grab the mouse pointer while(!done) { GE_PumpEvents();//returns when timer fires //do something periodically } GE_quit(); return 0; }
Build and test
Build the static library
cd ~ git clone -b dev --single-branch --depth 1 https://github.com/matlo/GIMX.git cd GIMX/shared/event make
Build the test
cd ~/GIMX/event/test make
Run the test
cd ~/GIMX/event/test ./GE_test
The test displays all keyboards, mice and joysticks, and it then displays all input events. Press Escape or Ctrl+c to exit.