Framebuffer Input
data class FramebufferInput(val pointerX: Int = 0, val pointerY: Int = 0, val buttons: Int = 0, val modifiers: Int = 0, val wheel: Double = 0.0, val horizontalWheel: Double = 0.0, val hasFocus: Boolean = false, val visible: Boolean = true, val pointerOver: Boolean = false)
The pointer state as it is now, plus what else the plugin should know. Keys travel separately because a pointer only has a current position, while presses must not be dropped.