ebiten/event/event.go
Hajime Hoshi 25a2bf3c1f event: Add Modifier
Modifier keys are selected of a common set of GLFW keys [1] and Web
API keys [2].

This change also renames the member Modifiers to Modifer to
follow the convension (e.g., [3]).

Updates #926

[1] https://www.glfw.org/docs/latest/group__mods.html
[2] https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState
[3] https://godoc.org/golang.org/x/tools/go/packages#Config
2019-09-03 01:12:50 +09:00

238 lines
8.1 KiB
Go

// Copyright 2019 The Ebiten Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Package event is a package that models events that occur during
// the execution of a program.
//
// This package is still experimental and there is no guarantee for
// backward compatibility so far.
package event
// Event is an interface that custom events should implement.
// It is empty for now because there are no general methods
// required of events yet.
type Event interface {
}
// KeyboardKeyCharacter is an event that occurs when a character is actually typed on
// the keyboard. This may be provided by an input method.
type KeyboardKeyCharacter struct {
// Key is the key code of the key typed.
Key Key
// Modifier is the logical-or value of the modifiers pressed together with the key.
Modifier Modifier
// Character is the character that was typed.
Character rune
}
// KeyboardKeyDown is an event that occurs when a key is pressed on the keyboard.
type KeyboardKeyDown struct {
// Key is the key code of the key pressed or released.
Key Key
// Modifier is the logical-or value of the modifiers pressed together with the key.
Modifier Modifier
}
// KeyboardKeyUp is an event that occurs when a key is released on the keyboard.
// The data is the same as for a KeyboardKeyDown event.
type KeyboardKeyUp KeyboardKeyDown
// GamepadAxis is for event where an axis on a gamepad changes.
type GamepadAxis struct {
// ID represents which gamepad caused the event.
ID int
// Axis is the axis of the game pad that changed position.
Axis int
// Position is the psoition of the axis after the change.
// It varies between -1.0 and 1.0.
Position float32
}
// GamepadButtonDown is a gamepad button press event.
type GamepadButtonDown struct {
// ID represents which gamepad caused the event.
ID int
// Button is the button that was pressed on the game pad.
Button int
// Pressure is the pressure that is applied to the gamepad button.
// It varies between 0.0 for not pressed, and 1.0 for completely pressed.
Pressure float32
}
// GamepadButtonDown is a gamepad button release event.
// The data is identical to a GamePadButtonDown event.
type GamepadButtonUp GamepadButtonDown
// GamepadAttach happens when a new gamepad is attached.
type GamepadAttach struct {
// ID represents which gamepad caused the event.
ID int
// Axes represents the amount of axes the gamepad has.
Axes int
// Buttons represents the amount of buttons the gamepad has.
Buttons int
}
// GamepadDetach happens when a gamepad is detached.
type GamepadDetach struct {
// ID represents which gamepad caused the event.
ID int
}
// MouseMove is a mouse movement event.
type MouseMove struct {
// X is the X position of the mouse pointer.
// This value is expressed in device independent pixels.
X float32
// Y is the Y position of the mouse pointer.
// This value is expressed in device independent pixels.
Y float32
// DeltaX is the change in X since the last MouseMove event.
// This value is expressed in device independent pixels.
DeltaX float32
// DeltaY is the change in Y since the last MouseMove event.
// This value is expressed in device independent pixels.
DeltaY float32
}
// MouseWheel is a mouse wheel event.
type MouseWheel struct {
// X is the X position of the mouse wheel.
// This value is expressed in arbitrary units.
// It increases when the mouse wheel is scrolled downwards,
// and decreases when the mouse is scrolled upwards.
X float32
// Y is the Y position of the mouse wheel.
// This value is expressed in arbitrary units.
// It increases when the mouse wheel is scrolled to the right,
// and decreases when the mouse is scrolled to the left.
Y float32
// DeltaX is the change in X since the last MouseWheel event.
// This value is expressed in arbitrary units.
// It is positive when the mouse wheel is scrolled downwards,
// and negative when the mouse is scrolled upwards.
DeltaX float32
// DeltaY is the change in Y since the last MouseWheel event.
// This value is expressed in arbitrary units.
// It is positive when the mouse wheel is scrolled to the right,
// and negative when the mouse is scrolled to the left.
DeltaY float32
}
// MouseButtonDown is a mouse button press event.
type MouseButtonDown struct {
// X is the X position of the mouse pointer.
// This value is expressed in device independent pixels.
X float32
// Y is the Y position of the mouse pointer.
// This value is expressed in device independent pixels.
Y float32
// Button is the button on the mouse that was pressed.
// TODO: this should change later from an int to an enumeration type.
Button int
// Pressure is the pressure applied on the mouse button.
// It varies between 0.0 for not pressed, and 1.0 for completely pressed.
Pressure float32
}
// MouseButtonDown is a mouse button Release event.
// The data is identical to a MouseButtonDown event.
type MouseButtonUp MouseButtonDown
// MouseEnter occurs when the mouse enters the view window.
type MouseEnter struct {
// X is the X position of the mouse pointer.
// This value is expressed in device independent pixels.
X float32
// Y is the Y position of the mouse pointer.
// This value is expressed in device independent pixels.
Y float32
}
// MouseLeave occurs when the mouse leaves the view window.
// The data is identical to MouseEnter.
type MouseLeave MouseEnter
// ViewUpdate occurs when the application is ready to update
// the next frame on the view port.
type ViewUpdate struct {
// No data neccesary, for now.
}
// ViewSize occurs when the size of the application's view port changes.
type ViewSize struct {
// Width is the width of the view.
// This value is expressed in device independent pixels.
Width int
// Height is the height of the view.
// This value is expressed in device independent pixels.
Height int
}
// TouchBegin occurs when a touch begins.
type TouchBegin struct {
// ID identifies the touch that caused the touch event.
ID int
// X is the X position of the touch.
// This value is expressed in device independent pixels.
X float32
// Y is the Y position of the touch.
// This value is expressed in device independent pixels.
Y float32
// Pressure is the pressure applied to the touch.
// It varies between 0.0 for not pressed, and 1.0 for completely pressed.
Pressure float32
// Primary represents whether the touch event is the primary touch or not.
// If it is true, then it is a primary touch.
// Otherwise it is false.
Primary bool
}
// TouchMove occurs when a touch moved, or in other words, is dragged.
type TouchMove struct {
// ID identifies the touch that caused the touch event.
ID int
// X is the X position of the touch.
// This value is expressed in device independent pixels.
X float32
// Y is the Y position of the touch.
// This value is expressed in device independent pixels.
Y float32
// DeltaX is the change in X since last touch event.
// This value is expressed in device independent pixels.
DeltaX float32
// Deltay is the change in Y since last touch event.
// This value is expressed in device independent pixels.
DeltaY float32
// Pressure of applied touch.
// It varies between 0.0 for not pressed, and 1.0 for completely pressed.
Pressure float32
// Primary represents whether the touch event is the primary touch or not.
// If it is true, then it is a primary touch.
// If it is false then it is not.
Primary bool
}
// TouchEnd occurs when a touch ends.
// The data is the same as for a TouchMove event.
type TouchEnd TouchMove
// TouchCancel occurs when a touch is canceled.
// This can happen in various situations, depending on the underlying platform,
// for example when the aplication loses focus.
type TouchCancel struct {
// ID identifies the touch that caused the touch event.
ID int
}