sig   val infinity : Tsdl.Sdl.uint32   type feature = int   val gain : Tsdl.Sdl.Haptic.feature   val autocenter : Tsdl.Sdl.Haptic.feature   val status : Tsdl.Sdl.Haptic.feature   val pause : Tsdl.Sdl.Haptic.feature   type direction_type = int   val polar : Tsdl.Sdl.Haptic.direction_type   val cartesian : Tsdl.Sdl.Haptic.direction_type   val spherical : Tsdl.Sdl.Haptic.direction_type   module Direction :     sig       type t       val create :         int -> int32 -> int32 -> int32 -> Tsdl.Sdl.Haptic.Direction.t       val typ : Tsdl.Sdl.Haptic.Direction.t -> Tsdl.Sdl.Haptic.direction_type       val dir_0 : Tsdl.Sdl.Haptic.Direction.t -> int32       val dir_1 : Tsdl.Sdl.Haptic.Direction.t -> int32       val dir_2 : Tsdl.Sdl.Haptic.Direction.t -> int32     end   type effect_type = int   type 'a field   val create_effect : unit -> Tsdl.Sdl.haptic_effect   val get : Tsdl.Sdl.haptic_effect -> 'Tsdl.Sdl.Haptic.field -> 'a   val set : Tsdl.Sdl.haptic_effect -> 'Tsdl.Sdl.Haptic.field -> '-> unit   val typ : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field   val constant : Tsdl.Sdl.Haptic.effect_type   val constant_type : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field   val constant_direction : Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field   val constant_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field   val constant_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val constant_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val constant_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val constant_level : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val constant_attack_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val constant_attack_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val constant_fade_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val constant_fade_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val sine : Tsdl.Sdl.Haptic.effect_type   val left_right : Tsdl.Sdl.Haptic.effect_type   val triangle : Tsdl.Sdl.Haptic.effect_type   val sawtooth_up : Tsdl.Sdl.Haptic.effect_type   val sawtooth_down : Tsdl.Sdl.Haptic.effect_type   val periodic_type : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field   val periodic_direction : Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field   val periodic_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field   val periodic_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val periodic_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val periodic_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val periodic_period : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val periodic_magnitude : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val periodic_offset : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val periodic_phase : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val periodic_attack_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val periodic_attack_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val periodic_fade_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val periodic_fade_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val spring : Tsdl.Sdl.Haptic.effect_type   val damper : Tsdl.Sdl.Haptic.effect_type   val inertia : Tsdl.Sdl.Haptic.effect_type   val friction : Tsdl.Sdl.Haptic.effect_type   val condition_type : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field   val condition_direction : Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field   val condition_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field   val condition_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_right_sat_0 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_right_sat_1 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_right_sat_2 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_left_sat_0 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_left_sat_1 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_left_sat_2 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_right_coeff_0 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val condition_right_coeff_1 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val condition_right_coeff_2 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val condition_left_coeff_0 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val condition_left_coeff_1 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val condition_left_coeff_2 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val condition_deadband_0 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_deadband_1 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_deadband_2 : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val condition_center_0 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val condition_center_1 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val condition_center_2 : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val ramp : Tsdl.Sdl.Haptic.effect_type   val ramp_type : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field   val ramp_direction : Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field   val ramp_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field   val ramp_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val ramp_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val ramp_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val ramp_start : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val ramp_end : Tsdl.Sdl.int16 Tsdl.Sdl.Haptic.field   val ramp_attack_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val ramp_attack_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val ramp_fade_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val ramp_fade_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val left_right_type : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field   val left_right_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field   val left_right_large_magnitude : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val left_right_small_magnitude : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom : Tsdl.Sdl.Haptic.effect_type   val custom_type : Tsdl.Sdl.Haptic.effect_type Tsdl.Sdl.Haptic.field   val custom_direction : Tsdl.Sdl.Haptic.Direction.t Tsdl.Sdl.Haptic.field   val custom_length : Tsdl.Sdl.uint32 Tsdl.Sdl.Haptic.field   val custom_delay : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom_button : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom_interval : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom_channels : Tsdl.Sdl.uint8 Tsdl.Sdl.Haptic.field   val custom_period : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom_samples : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom_data : Tsdl.Sdl.uint16 list Tsdl.Sdl.Haptic.field   val custom_attack_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom_attack_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom_fade_length : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field   val custom_fade_level : Tsdl.Sdl.uint16 Tsdl.Sdl.Haptic.field end