Module for getting keyboard and mouse input. is* functions return info based on a us QWERTY layout. They are supposed to be used for game controls. For text input use getStr.

Keycode constants

type Key* = enum { mouse1 = 1 // NOTE: mouse 2 and 3 key codes are swapped mouse2 = 3 // because sokol uses 3 for middle mouse mouse3 = 2 // button. ctrl = 16 shift = 17 alt = 18 space = 32 apostrophe = 39 /* ' */ comma = 44 /* , */ minus = 45 /* - */ dot = 46 /* . */ slash = 47 /* / */ num0 = 48 num1 = 49 num2 = 50 num3 = 51 num4 = 52 num5 = 53 num6 = 54 num7 = 55 num8 = 56 num9 = 57 semicolon = 59 /* ; */ equal = 61 /* = */ a = 65 b = 66 c = 67 d = 68 e = 69 f = 70 g = 71 h = 72 i = 73 j = 74 k = 75 l = 76 m = 77 n = 78 o = 79 p = 80 q = 81 r = 82 s = 83 t = 84 u = 85 v = 86 w = 87 x = 88 y = 89 z = 90 leftBracket = 91 /* [ */ backslash = 92 /* \ */ rightBracket = 93 /* ] */ graveAccent = 96 /* ` */ world1 = 161 /* non-US #1 */ world2 = 162 /* non-US #2 */ escape = 256 enter = 257 tab = 258 backspace = 259 insert = 260 delete = 261 right = 262 left = 263 down = 264 up = 265 pageUp = 266 pageDown = 267 home = 268 end = 269 capsLock = 280 scrollLock = 281 numLock = 282 printScreen = 283 pause = 284 fn0 = 289 fn1 = 290 fn2 = 291 fn3 = 292 fn4 = 293 fn5 = 294 fn6 = 295 fn7 = 296 fn8 = 297 fn9 = 298 fn10 = 299 fn11 = 300 fn12 = 301 fn13 = 302 fn14 = 303 fn15 = 304 fn16 = 305 fn17 = 306 fn18 = 307 fn19 = 308 fn20 = 309 fn21 = 310 fn22 = 311 fn23 = 312 fn24 = 313 fn25 = 314 kp0 = 320 kp1 = 321 kp2 = 322 kp3 = 323 kp4 = 324 kp5 = 325 kp6 = 326 kp7 = 327 kp8 = 328 kp9 = 329 kpDecimal = 330 kpDivide = 331 kpMultiply = 332 kpSubtract = 333 kpAdd = 334 kpEnter = 335 kpEqual = 336 leftShift = 340 leftControl = 341 leftAlt = 342 leftSuper = 343 rightShift = 344 rightControl = 345 rightAlt = 346 rightSuper = 347 menu = 348 }

Gamepad button number

type GamepadButton* = enum { a b x y lt rt lb rb select start up down left right lstick rstick _count }

Gamepad stick number

type GamepadStick* = enum { left right }

fn getMousePos

fn getMousePos*(): th::Vf2 {

Returns the position of mouse cursor in relation to the screen.

fn getGlobalMousePos

fn getGlobalMousePos*(): th::Vf2 {

Returns the position of mouse cursor in relation to cam.

fn isPressed

fn isPressed*(code: Key): bool {

Returns true if key is pressed. Either use codes defined in the file above, or pass lower case char/number.

fn isPressedc

fn isPressedc*(code: char): bool {

Like isPressed, but you can pass char as the code.

fn isJustPressed

fn isJustPressed*(code: Key): bool {

Returns, whether code was just pressed this loop.

fn isJustPressedc

fn isJustPressedc*(code: char): bool {

Like isJustPressed, but you can pass char as the code.

fn isPressedRepeat

fn isPressedRepeat*(code: Key): bool {

Returns, whether code was just pressed this loop, with key repeat.

fn isPressedRepeatc

fn isPressedRepeatc*(code: char): bool {

Like isPressedRepeat, but you can pass char as the code.

fn isJustReleased

fn isJustReleased*(code: Key): bool {

Returns true if a key was just released.

fn isJustReleasedc

fn isJustReleasedc*(code: char): bool {

Like isJustReleased, but you can pass char as the code.

fn clear

fn clear*(code: Key) {

Clears both the pressed and justPressed state of a code.

fn clearc

fn clearc*(code: char) {

Like clear, but you can pass char as the code.

fn getStr

fn getStr*(): str {

Returns a string entered by the user in the last cycle.

fn getMouseDelta

fn getMouseDelta*(): th::Vf2 {

Returns the difference between mouse positions in the last cycle. Will work even if window.freezeCursor is enabled.

fn getMouseScroll

fn getMouseScroll*(): th::Vf2 {

Returns the scroll wheel value

fn gamepads

fn gamepads*(): []Gamepad {

Returns a list of gamepads that are currently connected.

fn gamepad

fn gamepad*(): Gamepad {

Returns the connected gamepad.

fn isPressed

fn (g: ^Gamepad) isPressed*(button: GamepadButton): bool {

Returns true if the gamepad button is pressed.

fn isJustPressed

fn (g: ^Gamepad) isJustPressed*(button: GamepadButton): bool {

Returns true if the gamepad button was just pressed.

fn isJustReleased

fn (g: ^Gamepad) isJustReleased*(button: GamepadButton): bool {

Returns true if the gamepad button was just released.

fn pressure

fn (g: ^Gamepad) pressure*(button: GamepadButton): th::fu {

Returns the pressure of the gamepad button in the range [0, 1].

fn stick

fn (g: ^Gamepad) stick*(stick: GamepadStick): th::Vf2 {

Returns the movement of the gamepad stick in the range [-1, 1] for each axis.

fn rumble

fn (g: ^Gamepad) rumble*(left, right: th::fu) {

Rumbles/vibrates the gamepad.