Skip to content

Input Manager

The input manager provides an easy to use API for adding input binding to your mod.

Example Use Case

Pressing ctrl+p to fast-forward time to the next day.

Including

lua
local inputManager = mjrequire "hammerstone/input/inputManager"

Using Input Manager

The input system in Sapiens is fully rebindable, so we have to use strings to keep track of inputs. Input can also be grouped together.

Groups

The built in groups for Sapiens are as follows:

  • menu: Contains menu navigation controls
  • game: Contains hotkeys for opening various in-game menus
  • movement: Contains forward, backwards, left & right, among other things
  • building: Contains various building shortcuts & hotkeys.
  • textEntry: Contains keys like send and backspace.
  • multiSelect: Contains the subtract modifier for multiselect.
  • debug: Contains various debug controls
  • cinematicCamera: Contains all the control for the cinematic camera

When adding a key mapping, you have to use one of these groups:

lua
inputManager:addMapping("groupName", ...)

Adding a Group

Hammerstone has support for adding a group like this:

lua
inputManager:addGroup("groupName")

Key Codes & Modifiers

Sapiens uses key codes instead of strings to determine default keys. The keyCodes and modifiers can be accessed with:

lua
local keyMapping = mjrequire "mainThread/keyMapping"
local keyCodes = keyMapping.keyCodes
local modifiers = keyMapping.modifiers
Full list of all keycodes
  • backspace
  • tab
  • key_return
  • escape
  • space
  • exclaim
  • quotedbl
  • hash
  • dollar
  • percent
  • ampersand
  • quote
  • leftparen
  • rightparen
  • asterisk
  • plus
  • comma
  • minus
  • period
  • slash
  • key_0
  • key_1
  • key_2
  • key_3
  • key_4
  • key_5
  • key_6
  • key_7
  • key_8
  • key_9
  • colon
  • semicolon
  • less
  • equals
  • greater
  • question
  • at
  • leftbracket
  • backslash
  • rightbracket
  • caret
  • underscore
  • backquote
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h
  • i
  • j
  • k
  • l
  • m
  • n
  • o
  • p
  • q
  • r
  • s
  • t
  • u
  • v
  • w
  • x
  • y
  • z
  • delete
  • capslock
  • f1
  • f2
  • f3
  • f4
  • f5
  • f6
  • f7
  • f8
  • f9
  • f10
  • f11
  • f12
  • printscreen
  • scrolllock
  • pause
  • insert
  • home
  • pageup
  • key_end
  • pagedown
  • right
  • left
  • down
  • up
  • numlockclear
  • kp_divide
  • kp_multiply
  • kp_minus
  • kp_plus
  • kp_enter
  • kp_1
  • kp_2
  • kp_3
  • kp_4
  • kp_5
  • kp_6
  • kp_7
  • kp_8
  • kp_9
  • kp_0
  • kp_period
  • application
  • power
  • kp_equals
  • f13
  • f14
  • f15
  • f16
  • f17
  • f18
  • f19
  • f20
  • f21
  • f22
  • f23
  • f24
  • execute
  • help
  • menu
  • select
  • stop
  • again
  • undo
  • cut
  • copy
  • paste
  • find
  • mute
  • volumeup
  • volumedown
  • kp_comma
  • kp_equalsas400
  • alterase
  • sysreq
  • cancel
  • clear
  • prior
  • return2
  • separator
  • out
  • oper
  • clearagain
  • crsel
  • exsel
  • kp_00
  • kp_000
  • thousandsseparator
  • decimalseparator
  • currencyunit
  • currencysubunit
  • kp_leftparen
  • kp_rightparen
  • kp_leftbrace
  • kp_rightbrace
  • kp_tab
  • kp_backspace
  • kp_a
  • kp_b
  • kp_c
  • kp_d
  • kp_e
  • kp_f
  • kp_xor
  • kp_power
  • kp_percent
  • kp_less
  • kp_greater
  • kp_ampersand
  • kp_dblampersand
  • kp_verticalbar
  • kp_dblverticalbar
  • kp_colon
  • kp_hash
  • kp_space
  • kp_at
  • kp_exclam
  • kp_memstore
  • kp_memrecall
  • kp_memclear
  • kp_memadd
  • kp_memsubtract
  • kp_memmultiply
  • kp_memdivide
  • kp_plusminus
  • kp_clear
  • kp_clearentry
  • kp_binary
  • kp_octal
  • kp_decimal
  • kp_hexadecimal
  • lctrl
  • lshift
  • lalt
  • lgui
  • rctrl
  • rshift
  • ralt
  • rgui
  • mode
  • audionext
  • audioprev
  • audiostop
  • audioplay
  • audiomute
  • mediaselect
  • www
  • mail
  • calculator
  • computer
  • ac_search
  • ac_home
  • ac_back
  • ac_forward
  • ac_stop
  • ac_refresh
  • ac_bookmarks
  • brightnessdown
  • brightnessup
  • displayswitch
  • kbdillumtoggle
  • kbdillumdown
  • kbdillumup
  • eject
  • sleep
Full list of modifiers
  • none (default)
  • shift
  • ctrl
  • alt
  • cmd (Windows key)

Adding a mapping

The full process for adding a mapping is as follows. First, add the mapping:

lua
inputManager:addMapping("groupName", "keyBindName", keyCodes.[default key], modifiers.[modifier] or 0)

Then, bind a function to it:

lua
inputManager:addKeyChangedCallback("groupName", "keyBindName", function (isDown, isRepeat)
   -- Do whatever you want
end)

Everything should be working now!

Created with ♥ by the Sapiens Modding Community