142 lines
3.2 KiB
Groff
142 lines
3.2 KiB
Groff
.TH MiniLibX 3 "September 19, 2002"
|
|
.SH NAME
|
|
MiniLibX - Handle events
|
|
.SH SYNOPSYS
|
|
|
|
.nf
|
|
.I int
|
|
.fi
|
|
.B mlx_loop
|
|
(
|
|
.I void *mlx_ptr
|
|
);
|
|
|
|
.nf
|
|
.I int
|
|
.fi
|
|
.B mlx_key_hook
|
|
(
|
|
.I void *win_ptr, int (*funct_ptr)(), void *param
|
|
);
|
|
|
|
.nf
|
|
.I int
|
|
.fi
|
|
.B mlx_mouse_hook
|
|
(
|
|
.I void *win_ptr, int (*funct_ptr)(), void *param
|
|
);
|
|
|
|
.nf
|
|
.I int
|
|
.fi
|
|
.B mlx_expose_hook
|
|
(
|
|
.I void *win_ptr, int (*funct_ptr)(), void *param
|
|
);
|
|
|
|
.nf
|
|
.I int
|
|
.fi
|
|
.B mlx_loop_hook
|
|
(
|
|
.I void *mlx_ptr, int (*funct_ptr)(), void *param
|
|
);
|
|
|
|
.SH X-WINDOW EVENTS
|
|
|
|
The X-Window system is bi-directionnal. On one hand, the program sends orders to
|
|
the screen to display pixels, images, and so on. On the other hand,
|
|
it can get information from the keyboard and mouse associated to
|
|
the screen. To do so, the program receives "events" from the keyboard or the
|
|
mouse.
|
|
|
|
.SH DESCRIPTION
|
|
|
|
To receive events, you must use
|
|
.B mlx_loop
|
|
(). This function never returns. It is an infinite loop that waits for
|
|
an event, and then calls a user-defined function associated with this event.
|
|
A single parameter is needed, the connection identifier
|
|
.I mlx_ptr
|
|
(see the
|
|
.B mlx manual).
|
|
|
|
You can assign different functions to the three following events:
|
|
.br
|
|
- A key is pressed
|
|
.br
|
|
- The mouse button is pressed
|
|
.br
|
|
- A part of the window should be re-drawn
|
|
(this is called an "expose" event, and it is your program's job to handle it).
|
|
.br
|
|
|
|
Each window can define a different function for the same event.
|
|
|
|
The three functions
|
|
.B mlx_key_hook
|
|
(),
|
|
.B mlx_mouse_hook
|
|
() and
|
|
.B mlx_expose_hook
|
|
() work exactly the same way.
|
|
.I funct_ptr
|
|
is a pointer to the function you want to be called
|
|
when an event occurs. This assignment is specific to the window defined by the
|
|
.I win_ptr
|
|
identifier. The
|
|
.I param
|
|
adress will be passed to the function everytime it is called, and should be
|
|
used to store the parameters it might need.
|
|
|
|
The syntax for the
|
|
.B mlx_loop_hook
|
|
() function is identical to the previous ones, but the given function will be
|
|
called when no event occurs.
|
|
|
|
When it catches an event, the MiniLibX calls the corresponding function
|
|
with fixed parameters:
|
|
.nf
|
|
|
|
expose_hook(void *param);
|
|
key_hook(int keycode,void *param);
|
|
mouse_hook(int button,int x,int y,void *param);
|
|
loop_hook(void *param);
|
|
|
|
.fi
|
|
These function names are arbitrary. They here are used to distinguish
|
|
parameters according to the event. These functions are NOT part of the
|
|
MiniLibX.
|
|
|
|
.I param
|
|
is the address specified in the mlx_*_hook calls. This address is never
|
|
used nor modified by the MiniLibX. On key and mouse events, additional
|
|
information is passed:
|
|
.I keycode
|
|
tells you which key is pressed (look for the X11 include file "keysymdef.h"),
|
|
(
|
|
.I x
|
|
,
|
|
.I y
|
|
) are the coordinates of the mouse click in the window, and
|
|
.I button
|
|
tells you which mouse button was pressed.
|
|
|
|
.SH GOING FURTHER WITH EVENTS
|
|
The MiniLibX provides a much generic access to all X-Window events. The
|
|
.I mlx.h
|
|
include define
|
|
.B mlx_hook()
|
|
in the same manner mlx_*_hook functions work. The event and mask values
|
|
will be taken from the X11 include file "X.h".
|
|
|
|
See source code of mlx_int_param_event.c to find out how the MiniLibX will
|
|
call your own function for a specific event.
|
|
|
|
.SH SEE ALSO
|
|
mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3)
|
|
|
|
.SH AUTHOR
|
|
Copyright ol@ - 2002-2014 - Olivier Crouzet
|