User Input Natives

Natives
native GetMouseTerrainX          takes nothing returns real
native GetMouseTerrainY          takes nothing returns real
native GetMouseTerrainZ          takes nothing returns real
native GetMouseScaleX            takes nothing returns real
native GetMouseScaleY            takes nothing returns real
native GetMouseScreenX           takes nothing returns integer
native GetMouseScreenY           takes nothing returns integer
native SetMouseScreenX           takes integer x returns nothing
native SetMouseScreenY           takes integer y returns nothing
native SetMouseScreenPos         takes integer x, integer y returns nothing
native IsMouseOverUI             takes nothing returns boolean
native SetMouseBlock             takes integer key, boolean doBlock returns nothing
native GetTriggerWheelDelta      takes nothing returns integer
native TriggerRegisterMouseEvent takes trigger trig, integer key returns nothing
native TriggerRegisterKeyEvent   takes trigger trig, integer key returns nothing
native GetTriggerKey             takes nothing returns integer
native SetKeyBlock               takes integer key, boolean doBlock returns nothing

vJass Library
library UserInputAPI
    globals
        // - Mouse Constants
        constant integer EVENT_MOUSE_LEFT_UP        = 0
        constant integer EVENT_MOUSE_LEFT_DOWN      = 1
        constant integer EVENT_MOUSE_RIGHT_UP       = 2
        constant integer EVENT_MOUSE_RIGHT_DOWN     = 3
        constant integer EVENT_MOUSE_MIDDLE_UP      = 4
        constant integer EVENT_MOUSE_MIDDLE_DOWN    = 5
        constant integer EVENT_MOUSE_WHEEL_SCROLL   = 6

        constant integer MOUSE_BUTTON_LEFT          = 0
        constant integer MOUSE_BUTTON_RIGHT         = 1
        constant integer MOUSE_BUTTON_MIDDLE        = 2
        constant integer MOUSE_BUTTON_4             = 4
        constant integer MOUSE_BUTTON_5             = 5
        
        // - Keyboard Constants
        constant integer EVENT_KEY_UP               = 0
        constant integer EVENT_KEY_DOWN             = 1
        constant integer EVENT_KEY_TYPE             = 2
    endglobals
    
    native GetMouseTerrainX takes nothing returns real
    native GetMouseTerrainY takes nothing returns real
    native GetMouseTerrainZ takes nothing returns real
    native GetMouseScaleX takes nothing returns real
    native GetMouseScaleY takes nothing returns real
    native GetMouseScreenX takes nothing returns integer
    native GetMouseScreenY takes nothing returns integer
    native SetMouseScreenX takes integer x returns nothing
    native SetMouseScreenY takes integer y returns nothing
    native SetMouseScreenPos takes integer x, integer y returns nothing
    native IsMouseOverUI takes nothing returns boolean
    native TriggerRegisterMouseEvent takes trigger trig, integer key returns nothing
    native GetTriggerWheelDelta takes nothing returns integer
    native SetMouseBlock takes integer key, boolean doBlock returns nothing

    native TriggerRegisterKeyEvent takes trigger trig, integer key returns nothing
    native GetTriggerKey takes nothing returns integer
    native SetKeyBlock takes integer key, boolean doBlock returns nothing
endlibrary