coninput

package module
v0.0.0-...-1c3628e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2021 License: MIT Imports: 4 Imported by: 4

README

coninput

Go library for input handling using Windows Console API

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ButtonState

type ButtonState uint32

ButtonState holds the state of the mouse buttons (see https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str).

const (
	FROM_LEFT_1ST_BUTTON_PRESSED ButtonState = 0x0001
	RIGHTMOST_BUTTON_PRESSED     ButtonState = 0x0002
	FROM_LEFT_2ND_BUTTON_PRESSED ButtonState = 0x0004
	FROM_LEFT_3RD_BUTTON_PRESSED ButtonState = 0x0008
	FROM_LEFT_4TH_BUTTON_PRESSED ButtonState = 0x0010
)

Valid values for ButtonState.

func (ButtonState) Contains

func (bs ButtonState) Contains(state ButtonState) bool

func (ButtonState) IsReleased

func (bs ButtonState) IsReleased() bool

func (ButtonState) String

func (bs ButtonState) String() string

String ensures that ButtonState satisfies the fmt.Stringer interface.

type ControlKeyState

type ControlKeyState uint32

ControlKeyState holds the state of the control keys for key and mouse events (see https://docs.microsoft.com/en-us/windows/console/key-event-record-str and https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str).

const (
	CAPSLOCK_ON        ControlKeyState = 0x0080
	ENHANCED_KEY       ControlKeyState = 0x0100
	LEFT_ALT_PRESSED   ControlKeyState = 0x0002
	LEFT_CTRL_PRESSED  ControlKeyState = 0x0008
	NUMLOCK_ON         ControlKeyState = 0x0020
	RIGHT_ALT_PRESSED  ControlKeyState = 0x0001
	RIGHT_CTRL_PRESSED ControlKeyState = 0x0004
	SCROLLLOCK_ON      ControlKeyState = 0x0040
	SHIFT_PRESSED      ControlKeyState = 0x0010
	NO_CONTROL_KEY     ControlKeyState = 0x0000
)

Valid values for ControlKeyState.

func (ControlKeyState) Contains

func (cks ControlKeyState) Contains(state ControlKeyState) bool

func (ControlKeyState) String

func (cks ControlKeyState) String() string

String ensures that ControlKeyState satisfies the fmt.Stringer interface.

type Coord

type Coord struct {
	// X is the horizontal coordinate or column value. The units depend on the function call.
	X uint16
	// Y is the vertical coordinate or row value. The units depend on the function call.
	Y uint16
}

Coord represent the COORD structure from the Windows console API (see https://docs.microsoft.com/en-us/windows/console/coord-str).

func (Coord) String

func (c Coord) String() string

String ensures that Coord satisfies the fmt.Stringer interface.

type EventFlags

type EventFlags uint32

EventFlags specifies the type of a mouse event (see https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str).

const (
	CLICK          EventFlags = 0x0000
	MOUSE_MOVED    EventFlags = 0x0001
	DOUBLE_CLICK   EventFlags = 0x0002
	MOUSE_WHEELED  EventFlags = 0x0004
	MOUSE_HWHEELED EventFlags = 0x0008
)

Valid values for EventFlags.

func (EventFlags) Contains

func (ef EventFlags) Contains(flag EventFlags) bool

func (EventFlags) String

func (ef EventFlags) String() string

String ensures that EventFlags satisfies the fmt.Stringer interface.

type EventRecord

type EventRecord interface {
	Type() string
	fmt.Stringer
}

EventRecord represents one of the following event types: TypeFocusEventRecord, TypeKeyEventRecord, TypeMouseEventRecord, TypeWindowBufferSizeEvent, TypeMenuEventRecord and UnknownEvent.

type EventType

type EventType uint16

EventType denots the type of an event

const FocusEventType EventType = 0x0010

FocusEventType is the event type for a FocusEventRecord (see https://docs.microsoft.com/en-us/windows/console/input-record-str).

const KeyEventType EventType = 0x0001

KeyEventType is the event type for a KeyEventRecord (see https://docs.microsoft.com/en-us/windows/console/input-record-str).

const MenuEventType EventType = 0x0008

MenuEventType is the event type for a MenuEventRecord (see https://docs.microsoft.com/en-us/windows/console/input-record-str).

const MouseEventType EventType = 0x0002

MouseEventType is the event type for a MouseEventRecord (see https://docs.microsoft.com/en-us/windows/console/input-record-str).

const WindowBufferSizeEventType EventType = 0x0004

WindowBufferSizeEventType is the event type for a WindowBufferSizeEventRecord (see https://docs.microsoft.com/en-us/windows/console/input-record-str).

type EventUnion

type EventUnion [maxEventSize]byte

EventUnion is the union data type that contains the data for any event.

type FocusEventRecord

type FocusEventRecord struct {
	// SetFocus is reserved and should not be used.
	SetFocus bool
}

FocusEventRecord represent the FOCUS_EVENT_RECORD structure from the Windows console API (see https://docs.microsoft.com/en-us/windows/console/focus-event-record-str). These events are used internally by the Windows console API and should be ignored.

func (FocusEventRecord) String

func (e FocusEventRecord) String() string

String ensures that FocusEventRecord satisfies EventRecord and fmt.Stringer interfaces.

func (FocusEventRecord) Type

func (e FocusEventRecord) Type() string

Type ensures that FocusEventRecord satisfies EventRecord interface.

type InputRecord

type InputRecord struct {
	// EventType specifies the type of event that helt in Event.
	EventType EventType

	// Event holds the actual event data. Use Unrap to access it as its
	// respective event type.
	Event EventUnion
	// contains filtered or unexported fields
}

InputRecord corresponds to the INPUT_RECORD structure from the Windows console API (see https://docs.microsoft.com/en-us/windows/console/input-record-str).

func (InputRecord) String

func (ir InputRecord) String() string

String implements fmt.Stringer for InputRecord.

func (InputRecord) Unwrap

func (ir InputRecord) Unwrap() EventRecord

Unwrap parses the event data into an EventRecord of the respective event type. The data in the returned EventRecord does not contain any references to the passed InputRecord.

type KeyEventRecord

type KeyEventRecord struct {
	// KeyDown specified whether the key is pressed or released.
	KeyDown bool

	//  RepeatCount indicates that a key is being held down. For example, when a
	//  key is held down, five events with RepeatCount equal to 1 may be
	//  generated, one event with RepeatCount equal to 5, or multiple events
	//  with RepeatCount greater than or equal to 1.
	RepeatCount uint16

	// VirtualKeyCode identifies the given key in a device-independent manner
	// (see
	// https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes).
	VirtualKeyCode VirtualKeyCode

	//  VirtualScanCode represents the device-dependent value generated by the
	//  keyboard hardware.
	VirtualScanCode VirtualKeyCode

	// Char is the character that corresponds to the pressed key. Char can be
	// zero for some keys.
	Char rune

	//ControlKeyState holds the state of the control keys.
	ControlKeyState ControlKeyState
}

KeyEventRecord represent the KEY_EVENT_RECORD structure from the Windows console API (see https://docs.microsoft.com/en-us/windows/console/key-event-record-str).

func (KeyEventRecord) String

func (e KeyEventRecord) String() string

String ensures that KeyEventRecord satisfies EventRecord and fmt.Stringer interfaces.

func (KeyEventRecord) Type

func (e KeyEventRecord) Type() string

Type ensures that KeyEventRecord satisfies EventRecord interface.

type MenuEventRecord struct {
	CommandID uint32
}

MenuEventRecord represent the MENU_EVENT_RECORD structure from the Windows console API (see https://docs.microsoft.com/en-us/windows/console/menu-event-record-str). These events are deprecated by the Windows console API and should be ignored.

func (e MenuEventRecord) String() string

String ensures that MenuEventRecord satisfies EventRecord and fmt.Stringer interfaces.

func (e MenuEventRecord) Type() string

Type ensures that MenuEventRecord satisfies EventRecord interface.

type MouseEventRecord

type MouseEventRecord struct {
	// MousePosition contains the location of the cursor, in terms of the
	// console screen buffer's character-cell coordinates.
	MousePositon Coord

	// ButtonState holds the status of the mouse buttons.
	ButtonState ButtonState

	// ControlKeyState holds the state of the control keys.
	ControlKeyState ControlKeyState

	// EventFlags specify tge type of mouse event.
	EventFlags EventFlags

	// WheelDirection specified the direction in which the mouse wheel is
	// spinning when EventFlags contains MOUSE_HWHEELED or MOUSE_WHEELED. When
	// the event flags specify MOUSE_WHEELED it is 1 if the wheel rotated
	// forward (away from the user) or -1 when it rotates backwards. When
	// MOUSE_HWHEELED is specified it is 1 when the wheel rotates right and -1
	// when it rotates left. When the EventFlags do not indicate a mouse wheel
	// event it is 0.
	WheelDirection int
}

MouseEventRecord represent the MOUSE_EVENT_RECORD structure from the Windows console API (see https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str).

func (MouseEventRecord) String

func (e MouseEventRecord) String() string

String ensures that MouseEventRecord satisfies EventRecord and fmt.Stringer interfaces.

func (MouseEventRecord) Type

func (e MouseEventRecord) Type() string

Type ensures that MouseEventRecord satisfies EventRecord interface.

func (MouseEventRecord) WheelDirectionName

func (e MouseEventRecord) WheelDirectionName() string

type UnknownEvent

type UnknownEvent struct {
	InputRecord
}

UnknownEvent is generated when the event type does not match one of the following types: TypeFocusEventRecord, TypeKeyEventRecord, TypeMouseEventRecord, TypeWindowBufferSizeEvent, TypeMenuEventRecord and UnknownEvent.

func (UnknownEvent) String

func (e UnknownEvent) String() string

String ensures that UnknownEvent satisfies EventRecord and fmt.Stringer interfaces.

func (UnknownEvent) Type

func (e UnknownEvent) Type() string

Type ensures that UnknownEvent satisfies EventRecord interface.

type VirtualKeyCode

type VirtualKeyCode uint16

VirtualKeyCode holds a virtual key code (see https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes).

const (
	VK_LBUTTON             VirtualKeyCode = 0x01
	VK_RBUTTON             VirtualKeyCode = 0x02
	VK_CANCEL              VirtualKeyCode = 0x03
	VK_MBUTTON             VirtualKeyCode = 0x04
	VK_XBUTTON1            VirtualKeyCode = 0x05
	VK_XBUTTON2            VirtualKeyCode = 0x06
	VK_BACK                VirtualKeyCode = 0x08
	VK_TAB                 VirtualKeyCode = 0x09
	VK_CLEAR               VirtualKeyCode = 0x0C
	VK_RETURN              VirtualKeyCode = 0x0D
	VK_SHIFT               VirtualKeyCode = 0x10
	VK_CONTROL             VirtualKeyCode = 0x11
	VK_MENU                VirtualKeyCode = 0x12
	VK_PAUSE               VirtualKeyCode = 0x13
	VK_CAPITAL             VirtualKeyCode = 0x14
	VK_KANA                VirtualKeyCode = 0x15
	VK_HANGEUL             VirtualKeyCode = 0x15
	VK_HANGUL              VirtualKeyCode = 0x15
	VK_IME_ON              VirtualKeyCode = 0x16
	VK_JUNJA               VirtualKeyCode = 0x17
	VK_FINAL               VirtualKeyCode = 0x18
	VK_HANJA               VirtualKeyCode = 0x19
	VK_KANJI               VirtualKeyCode = 0x19
	VK_IME_OFF             VirtualKeyCode = 0x1A
	VK_ESCAPE              VirtualKeyCode = 0x1B
	VK_CONVERT             VirtualKeyCode = 0x1C
	VK_NONCONVERT          VirtualKeyCode = 0x1D
	VK_ACCEPT              VirtualKeyCode = 0x1E
	VK_MODECHANGE          VirtualKeyCode = 0x1F
	VK_SPACE               VirtualKeyCode = 0x20
	VK_PRIOR               VirtualKeyCode = 0x21
	VK_NEXT                VirtualKeyCode = 0x22
	VK_END                 VirtualKeyCode = 0x23
	VK_HOME                VirtualKeyCode = 0x24
	VK_LEFT                VirtualKeyCode = 0x25
	VK_UP                  VirtualKeyCode = 0x26
	VK_RIGHT               VirtualKeyCode = 0x27
	VK_DOWN                VirtualKeyCode = 0x28
	VK_SELECT              VirtualKeyCode = 0x29
	VK_PRINT               VirtualKeyCode = 0x2A
	VK_EXECUTE             VirtualKeyCode = 0x2B
	VK_SNAPSHOT            VirtualKeyCode = 0x2C
	VK_INSERT              VirtualKeyCode = 0x2D
	VK_DELETE              VirtualKeyCode = 0x2E
	VK_HELP                VirtualKeyCode = 0x2F
	VK_0                   VirtualKeyCode = 0x30
	VK_1                   VirtualKeyCode = 0x31
	VK_2                   VirtualKeyCode = 0x32
	VK_3                   VirtualKeyCode = 0x33
	VK_4                   VirtualKeyCode = 0x34
	VK_5                   VirtualKeyCode = 0x35
	VK_6                   VirtualKeyCode = 0x36
	VK_7                   VirtualKeyCode = 0x37
	VK_8                   VirtualKeyCode = 0x38
	VK_9                   VirtualKeyCode = 0x39
	VK_A                   VirtualKeyCode = 0x41
	VK_B                   VirtualKeyCode = 0x42
	VK_C                   VirtualKeyCode = 0x43
	VK_D                   VirtualKeyCode = 0x44
	VK_E                   VirtualKeyCode = 0x45
	VK_F                   VirtualKeyCode = 0x46
	VK_G                   VirtualKeyCode = 0x47
	VK_H                   VirtualKeyCode = 0x48
	VK_I                   VirtualKeyCode = 0x49
	VK_J                   VirtualKeyCode = 0x4A
	VK_K                   VirtualKeyCode = 0x4B
	VK_L                   VirtualKeyCode = 0x4C
	VK_M                   VirtualKeyCode = 0x4D
	VK_N                   VirtualKeyCode = 0x4E
	VK_O                   VirtualKeyCode = 0x4F
	VK_P                   VirtualKeyCode = 0x50
	VK_Q                   VirtualKeyCode = 0x51
	VK_R                   VirtualKeyCode = 0x52
	VK_S                   VirtualKeyCode = 0x53
	VK_T                   VirtualKeyCode = 0x54
	VK_U                   VirtualKeyCode = 0x55
	VK_V                   VirtualKeyCode = 0x56
	VK_W                   VirtualKeyCode = 0x57
	VK_X                   VirtualKeyCode = 0x58
	VK_Y                   VirtualKeyCode = 0x59
	VK_Z                   VirtualKeyCode = 0x5A
	VK_LWIN                VirtualKeyCode = 0x5B
	VK_RWIN                VirtualKeyCode = 0x5C
	VK_APPS                VirtualKeyCode = 0x5D
	VK_SLEEP               VirtualKeyCode = 0x5F
	VK_NUMPAD0             VirtualKeyCode = 0x60
	VK_NUMPAD1             VirtualKeyCode = 0x61
	VK_NUMPAD2             VirtualKeyCode = 0x62
	VK_NUMPAD3             VirtualKeyCode = 0x63
	VK_NUMPAD4             VirtualKeyCode = 0x64
	VK_NUMPAD5             VirtualKeyCode = 0x65
	VK_NUMPAD6             VirtualKeyCode = 0x66
	VK_NUMPAD7             VirtualKeyCode = 0x67
	VK_NUMPAD8             VirtualKeyCode = 0x68
	VK_NUMPAD9             VirtualKeyCode = 0x69
	VK_MULTIPLY            VirtualKeyCode = 0x6A
	VK_ADD                 VirtualKeyCode = 0x6B
	VK_SEPARATOR           VirtualKeyCode = 0x6C
	VK_SUBTRACT            VirtualKeyCode = 0x6D
	VK_DECIMAL             VirtualKeyCode = 0x6E
	VK_DIVIDE              VirtualKeyCode = 0x6F
	VK_F1                  VirtualKeyCode = 0x70
	VK_F2                  VirtualKeyCode = 0x71
	VK_F3                  VirtualKeyCode = 0x72
	VK_F4                  VirtualKeyCode = 0x73
	VK_F5                  VirtualKeyCode = 0x74
	VK_F6                  VirtualKeyCode = 0x75
	VK_F7                  VirtualKeyCode = 0x76
	VK_F8                  VirtualKeyCode = 0x77
	VK_F9                  VirtualKeyCode = 0x78
	VK_F10                 VirtualKeyCode = 0x79
	VK_F11                 VirtualKeyCode = 0x7A
	VK_F12                 VirtualKeyCode = 0x7B
	VK_F13                 VirtualKeyCode = 0x7C
	VK_F14                 VirtualKeyCode = 0x7D
	VK_F15                 VirtualKeyCode = 0x7E
	VK_F16                 VirtualKeyCode = 0x7F
	VK_F17                 VirtualKeyCode = 0x80
	VK_F18                 VirtualKeyCode = 0x81
	VK_F19                 VirtualKeyCode = 0x82
	VK_F20                 VirtualKeyCode = 0x83
	VK_F21                 VirtualKeyCode = 0x84
	VK_F22                 VirtualKeyCode = 0x85
	VK_F23                 VirtualKeyCode = 0x86
	VK_F24                 VirtualKeyCode = 0x87
	VK_NUMLOCK             VirtualKeyCode = 0x90
	VK_SCROLL              VirtualKeyCode = 0x91
	VK_OEM_NEC_EQUAL       VirtualKeyCode = 0x92
	VK_OEM_FJ_JISHO        VirtualKeyCode = 0x92
	VK_OEM_FJ_MASSHOU      VirtualKeyCode = 0x93
	VK_OEM_FJ_TOUROKU      VirtualKeyCode = 0x94
	VK_OEM_FJ_LOYA         VirtualKeyCode = 0x95
	VK_OEM_FJ_ROYA         VirtualKeyCode = 0x96
	VK_LSHIFT              VirtualKeyCode = 0xA0
	VK_RSHIFT              VirtualKeyCode = 0xA1
	VK_LCONTROL            VirtualKeyCode = 0xA2
	VK_RCONTROL            VirtualKeyCode = 0xA3
	VK_LMENU               VirtualKeyCode = 0xA4
	VK_RMENU               VirtualKeyCode = 0xA5
	VK_BROWSER_BACK        VirtualKeyCode = 0xA6
	VK_BROWSER_FORWARD     VirtualKeyCode = 0xA7
	VK_BROWSER_REFRESH     VirtualKeyCode = 0xA8
	VK_BROWSER_STOP        VirtualKeyCode = 0xA9
	VK_BROWSER_SEARCH      VirtualKeyCode = 0xAA
	VK_BROWSER_FAVORITES   VirtualKeyCode = 0xAB
	VK_BROWSER_HOME        VirtualKeyCode = 0xAC
	VK_VOLUME_MUTE         VirtualKeyCode = 0xAD
	VK_VOLUME_DOWN         VirtualKeyCode = 0xAE
	VK_VOLUME_UP           VirtualKeyCode = 0xAF
	VK_MEDIA_NEXT_TRACK    VirtualKeyCode = 0xB0
	VK_MEDIA_PREV_TRACK    VirtualKeyCode = 0xB1
	VK_MEDIA_STOP          VirtualKeyCode = 0xB2
	VK_MEDIA_PLAY_PAUSE    VirtualKeyCode = 0xB3
	VK_LAUNCH_MAIL         VirtualKeyCode = 0xB4
	VK_LAUNCH_MEDIA_SELECT VirtualKeyCode = 0xB5
	VK_LAUNCH_APP1         VirtualKeyCode = 0xB6
	VK_LAUNCH_APP2         VirtualKeyCode = 0xB7
	VK_OEM_1               VirtualKeyCode = 0xBA
	VK_OEM_PLUS            VirtualKeyCode = 0xBB
	VK_OEM_COMMA           VirtualKeyCode = 0xBC
	VK_OEM_MINUS           VirtualKeyCode = 0xBD
	VK_OEM_PERIOD          VirtualKeyCode = 0xBE
	VK_OEM_2               VirtualKeyCode = 0xBF
	VK_OEM_3               VirtualKeyCode = 0xC0
	VK_OEM_4               VirtualKeyCode = 0xDB
	VK_OEM_5               VirtualKeyCode = 0xDC
	VK_OEM_6               VirtualKeyCode = 0xDD
	VK_OEM_7               VirtualKeyCode = 0xDE
	VK_OEM_8               VirtualKeyCode = 0xDF
	VK_OEM_AX              VirtualKeyCode = 0xE1
	VK_OEM_102             VirtualKeyCode = 0xE2
	VK_ICO_HELP            VirtualKeyCode = 0xE3
	VK_ICO_00              VirtualKeyCode = 0xE4
	VK_PROCESSKEY          VirtualKeyCode = 0xE5
	VK_ICO_CLEAR           VirtualKeyCode = 0xE6
	VK_OEM_RESET           VirtualKeyCode = 0xE9
	VK_OEM_JUMP            VirtualKeyCode = 0xEA
	VK_OEM_PA1             VirtualKeyCode = 0xEB
	VK_OEM_PA2             VirtualKeyCode = 0xEC
	VK_OEM_PA3             VirtualKeyCode = 0xED
	VK_OEM_WSCTRL          VirtualKeyCode = 0xEE
	VK_OEM_CUSEL           VirtualKeyCode = 0xEF
	VK_OEM_ATTN            VirtualKeyCode = 0xF0
	VK_OEM_FINISH          VirtualKeyCode = 0xF1
	VK_OEM_COPY            VirtualKeyCode = 0xF2
	VK_OEM_AUTO            VirtualKeyCode = 0xF3
	VK_OEM_ENLW            VirtualKeyCode = 0xF4
	VK_OEM_BACKTAB         VirtualKeyCode = 0xF5
	VK_ATTN                VirtualKeyCode = 0xF6
	VK_CRSEL               VirtualKeyCode = 0xF7
	VK_EXSEL               VirtualKeyCode = 0xF8
	VK_EREOF               VirtualKeyCode = 0xF9
	VK_PLAY                VirtualKeyCode = 0xFA
	VK_ZOOM                VirtualKeyCode = 0xFB
	VK_NONAME              VirtualKeyCode = 0xFC
	VK_PA1                 VirtualKeyCode = 0xFD
	VK_OEM_CLEAR           VirtualKeyCode = 0xFE
)

type WindowBufferSizeEventRecord

type WindowBufferSizeEventRecord struct {
	// Size contains the size of the console screen buffer, in character cell columns and rows.
	Size Coord
}

WindowBufferSizeEventRecord represent the WINDOW_BUFFER_SIZE_RECORD structure from the Windows console API (see https://docs.microsoft.com/en-us/windows/console/window-buffer-size-record-str).

func (WindowBufferSizeEventRecord) String

String ensures that WindowBufferSizeEventRecord satisfies EventRecord and fmt.Stringer interfaces.

func (WindowBufferSizeEventRecord) Type

Type ensures that WindowBufferSizeEventRecord satisfies EventRecord interface.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL