285 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			285 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			V
		
	
	
| module sdl
 | |
| 
 | |
| pub union C.SDL_Event {
 | |
| pub:
 | |
| 	@type u32
 | |
| 	display C.SDL_DisplayEvent
 | |
| 	window C.SDL_WindowEvent
 | |
| 	key C.SDL_KeyboardEvent
 | |
| 	edit C.SDL_TextEditingEvent
 | |
| 	text C.SDL_TextInputEvent
 | |
| 	motion C.SDL_MouseMotionEvent
 | |
| 	button C.SDL_MouseButtonEvent
 | |
| 	wheel C.SDL_MouseWheelEvent
 | |
| 	jaxis C.SDL_JoyAxisEvent
 | |
| 	jball C.SDL_JoyBallEvent
 | |
| 	jhat C.SDL_JoyHatEvent
 | |
| 	jbutton C.SDL_JoyButtonEvent
 | |
| 	jdevice C.SDL_JoyDeviceEvent
 | |
| 	caxis C.SDL_ControllerAxisEvent
 | |
| 	cbutton C.SDL_ControllerButtonEvent
 | |
| 	cdevice C.SDL_ControllerDeviceEvent
 | |
| 	adevice C.SDL_AudioDeviceEvent
 | |
| 	sensor C.SDL_SensorEvent
 | |
| 	quit C.SDL_QuitEvent
 | |
| 	user C.SDL_UserEvent
 | |
| 	tfinger C.SDL_TouchFingerEvent
 | |
| 	mgesture C.SDL_MultiGestureEvent
 | |
| 	drop C.SDL_DropEvent
 | |
| 
 | |
| 	_pad56 [56]byte
 | |
| }
 | |
| 
 | |
| // individual event declarations
 | |
| pub struct C.SDL_DisplayEvent {
 | |
|     @type u32        /**< ::SDL_DISPLAYEVENT */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     display u32     /**< The associated display index */
 | |
|     event byte        /**< ::SDL_DisplayEventID */
 | |
|     padding1 byte
 | |
|     padding2 byte
 | |
|     padding3 byte
 | |
|     data1 int       /**< event dependent data */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_WindowEvent {
 | |
| pub:
 | |
| 	@type u32           /**< ::SDL_WINDOWEVENT */
 | |
| 	timestamp u32       /**< In milliseconds, populated using SDL_GetTicks() */
 | |
| 	windowID u32        /**< The associated window */
 | |
| 	event byte          /**< ::SDL_WindowEventID */
 | |
| 	padding1 byte
 | |
| 	padding2 byte
 | |
| 	padding3 byte
 | |
| 	data1 int
 | |
| 	data2 int
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_KeyboardEvent {
 | |
| pub:
 | |
| 	@type u32   	/**< ::SDL_KEYDOWN or ::SDL_KEYUP */
 | |
| 	timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
| 	windowID u32   /**< The window with keyboard focus, if any */
 | |
| 	state byte  	/**< ::SDL_PRESSED or ::SDL_RELEASED */
 | |
| 	repeat byte     /**< Non-zero if this is a key repeat */
 | |
| 	padding2 byte
 | |
| 	padding3 byte
 | |
| 	keysym Keysym
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_TextEditingEvent {
 | |
| pub:
 | |
|     @type u32                                /**< ::SDL_TEXTEDITING */
 | |
|     timestamp u32                           /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     windowID u32                            /**< The window with keyboard focus, if any */
 | |
|     text [32]byte  /**< The editing text */
 | |
|     start int                               /**< The start cursor of selected editing text */
 | |
|     length int                              /**< The length of selected editing text */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_TextInputEvent {
 | |
| pub:
 | |
|     @type u32                              /**< ::SDL_TEXTINPUT */
 | |
|     timestamp u32                         /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     windowID u32                          /**< The window with keyboard focus, if any */
 | |
|     text [32]byte  /**< The input text */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_MouseMotionEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_MOUSEMOTION */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     windowID u32    /**< The window with mouse focus, if any */
 | |
|     which u32       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | |
|     state u32       /**< The current button state */
 | |
|     x int           /**< X coordinate, relative to window */
 | |
|     y int           /**< Y coordinate, relative to window */
 | |
|     xrel int        /**< The relative motion in the X direction */
 | |
|     yrel int        /**< The relative motion in the Y direction */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_MouseButtonEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     windowID u32    /**< The window with mouse focus, if any */
 | |
|     which u32       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | |
|     button byte       /**< The mouse button index */
 | |
|     state byte        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | |
|     clicks byte       /**< 1 for single-click, 2 for double-click, etc. */
 | |
|     padding1 byte
 | |
|     x int           /**< X coordinate, relative to window */
 | |
|     y int           /**< Y coordinate, relative to window */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_MouseWheelEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_MOUSEWHEEL */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     windowID u32    /**< The window with mouse focus, if any */
 | |
|     which u32       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | |
|     x int           /**< The amount scrolled horizontally, positive to the right and negative to the left */
 | |
|     y int           /**< The amount scrolled vertically, positive away from the user and negative toward the user */
 | |
|     direction u32   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_JoyAxisEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_JOYAXISMOTION */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     which int /**< The joystick instance id */
 | |
|     axis byte         /**< The joystick axis index */
 | |
|     padding1 byte
 | |
|     padding2 byte
 | |
|     padding3 byte
 | |
|     value i16       /**< The axis value (range: -32768 to 32767) */
 | |
|     padding4 u16
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_JoyBallEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_JOYBALLMOTION */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     which int /**< The joystick instance id */
 | |
|     ball byte         /**< The joystick trackball index */
 | |
|     padding1 byte
 | |
|     padding2 byte
 | |
|     padding3 byte
 | |
|     xrel i16        /**< The relative motion in the X direction */
 | |
|     yrel i16        /**< The relative motion in the Y direction */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_JoyHatEvent {
 | |
| pub:
 | |
| 	@type u32       /**< SDL_JOYHATMOTION */
 | |
| 	timestamp u32
 | |
| 	which int       /**< The joystick device index */
 | |
| 	hat byte        /**< The joystick hat index */
 | |
| 	value byte      /**< The hat position value:
 | |
| 						*   SDL_HAT_LEFTUP   SDL_HAT_UP       SDL_HAT_RIGHTUP
 | |
| 						*   SDL_HAT_LEFT     SDL_HAT_CENTERED SDL_HAT_RIGHT
 | |
| 						*   SDL_HAT_LEFTDOWN SDL_HAT_DOWN     SDL_HAT_RIGHTDOWN
 | |
| 						*  Note that zero means the POV is centered.
 | |
| 						*/
 | |
|     padding1 byte
 | |
|     padding2 byte
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_JoyButtonEvent {
 | |
| pub:
 | |
| 	@type u32 		/**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */
 | |
| 	timestamp u32
 | |
| 	which int 		/**< The joystick device index */
 | |
| 	button byte		/**< The joystick button index */
 | |
| 	state byte		/**< SDL_PRESSED or SDL_RELEASED */
 | |
|     padding1 byte
 | |
|     padding2 byte
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_JoyDeviceEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     which int       /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_ControllerAxisEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_CONTROLLERAXISMOTION */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     which int /**< The joystick instance id */
 | |
|     axis byte         /**< The controller axis (SDL_GameControllerAxis) */
 | |
|     padding1 byte
 | |
|     padding2 byte
 | |
|     padding3 byte
 | |
|     value i16       /**< The axis value (range: -32768 to 32767) */
 | |
|     padding4 u16
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_ControllerButtonEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     which int /**< The joystick instance id */
 | |
|     button byte       /**< The controller button (SDL_GameControllerButton) */
 | |
|     state byte        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | |
|     padding1 byte
 | |
|     padding2 byte
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_ControllerDeviceEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     which int       /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_AudioDeviceEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     which u32       /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
 | |
|     iscapture byte    /**< zero if an output device, non-zero if a capture device. */
 | |
|     padding1 byte
 | |
|     padding2 byte
 | |
|     padding3 byte
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_TouchFingerEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     touchId i64 /**< The touch device id */
 | |
|     fingerId i64
 | |
|     x f32            /**< Normalized in the range 0...1 */
 | |
|     y f32            /**< Normalized in the range 0...1 */
 | |
|     dx f32           /**< Normalized in the range -1...1 */
 | |
|     dy f32           /**< Normalized in the range -1...1 */
 | |
|     pressure f32     /**< Normalized in the range 0...1 */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_MultiGestureEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_MULTIGESTURE */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     touchId i64 /**< The touch device id */
 | |
|     dTheta f32
 | |
|     dDist f32
 | |
|     x f32
 | |
|     y f32
 | |
|     numFingers u16
 | |
|     padding u16
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_DropEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     file byteptr         /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
 | |
|     windowID u32    /**< The window that was dropped on, if any */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_SensorEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_SENSORUPDATE */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     which int       /**< The instance ID of the sensor */
 | |
|     data [6]f32      /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_QuitEvent {
 | |
| pub:
 | |
| 	@type u32 /**< SDL_QUIT */
 | |
| 	timestamp u32
 | |
| }
 | |
| 
 | |
| pub struct C.SDL_UserEvent {
 | |
| pub:
 | |
|     @type u32        /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
 | |
|     timestamp u32   /**< In milliseconds, populated using SDL_GetTicks() */
 | |
|     windowID u32    /**< The associated window if any */
 | |
|     code int        /**< User defined event code */
 | |
|     data1 voidptr        /**< User defined data pointer */
 | |
|     data2 voidptr        /**< User defined data pointer */
 | |
| }
 |