On using the mouse A brief introduction to LIBGPM the General Purpose Mouse programming interface The Linux gpm package It s a mouse server for the Linux console It hides details about mouse hardware Intended for use with text based programs But we can use it with graphics programs Requires that the gpm daemon is running Type info gpm to see official information Also an online article by Pradeep Padala Programming steps Your client application must establish a connection with the gpm server daemon You need a header file include gpm h You declare an important data structure Gpm Connect conn You will need to initialize its four fields Then you call Gpm Open conn 0 Returns 1 if unsuccessful otherwise 0 Fields to be initialized conn eventMask 0 conn defaultMask 0 conn minMod 0 conn maxMod 0 events of interest to handle for you lowest modifier highest modifer Responding to mouse activity You create your own handler function for those mouse events that you wish to act upon Prototype of the handler function is int my handler Gpm Event evt void my data To install the handler use this assignment gpm handler my handler Whenever the mouse is moved or its buttons are pressed or released your function executes Useful fields in Gpm Event Gpm Event evt evt type 1 indicates a mouse move evt x evt y current mouse hot spot evt dx evt dy changes in position NOTE Remember that GPM was developed for text based applications so the hot spot coordinates are character cell locations not graphics pixel locations A typical program loop This loop allows normal keyboard input to continue being processed e g echoed buffered while any mouse activities are processed by your handler or else by a default handler supplied by the daemon int c While c Gpm Getc stdin EOF Gpm Close A simple text mode demo Pradeep Padala has published a short C program that illustrates barebones usage of the gpm package from Linux Journal We have adapted his code for C Our demo is called trymouse cpp It s compiled like this g trymouse cpp lgpm o trymouse A simple graphics demo We have created a minimal graphics demo It shows how you could use the mouse to move a slider object e g in Pong game It s called gpmslide cpp You compile it like this g gpmslide cpp lgpm o gpmslide In class exercises Compile and run the trymouse cpp demo Compile and run the gpmslide cpp demo Look at the C source code in the demos Can you replace the keyboard based user controls in your earlier pong animation with mouse based user controls Can you incorporate mouse based control into your 3D wire frame model animation
View Full Document