evdev

package module
v0.0.0-...-78854b2 Latest Latest
Warning

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

Go to latest
Published: Aug 15, 2024 License: BSD-3-Clause Imports: 10 Imported by: 0

README

*golang-evdev*
--------------

**Maintainer needed**

This project hasn't been maintained for some time. If anyone is interested in 
taking over please let me know. If a more up-to-date fork exists, I prefer 
archiving this repository and leaving a link to the new one. 

------


This package provides Go language bindings to the generic input event
interface in Linux. The *evdev* interface serves the purpose of
passing events generated in the kernel directly to userspace through
character devices that are typically located in `/dev/input/`.

Documentation:
    http://godoc.org/github.com/gvalkov/golang-evdev

Development:
    https://github.com/gvalkov/golang-evdev

Documentation

Overview

This package provides bindings to the generic input event interface in Linux. The evdev interface serves the purpose of passing events generated in the kernel directly to userspace through character devices that are typically located in /dev/input/.

Please refer to the godoc examples and the bin/evtest example program.

Example
device, _ := Open("/dev/input/event3")

fmt.Println(device)
// InputDevice /dev/input/event3 (fd 3)
//   name Logitech USB Laser Mouse
//   phys usb-0000:00:12.0-2/input0
//   bus 0x0003, vendor 0x046d, product 0xc069, version 0x110
//   events EV_KEY 1, EV_SYN 0, EV_REL 2, EV_MSC 4

fmt.Println(device.Capabilities)
// map[ 4:[4 272 273 274 275 276 277 278 279]
//      0:[0 1 2 4]
//      2:[0 1 6 8 272 273 274 275 276 277 278 279]
//      1:[272 273 274 275 276 277 278 279] ]

// fmt.Println(device.ResolveCapabilities())
// // map[ 4:[4 272 273 274 275 276 277 278 279]
// //      0:[0 1 2 4]
// //      2:[0 1 6 8 272 273 274 275 276 277 278 279]
// //      1:[272 273 274 275 276 277 278 279] ]
Output:

Index

Examples

Constants

View Source
const (
	EVIOCGID      = C.EVIOCGID      // get device ID
	EVIOCGVERSION = C.EVIOCGVERSION // get driver version
	EVIOCGREP     = C.EVIOCGREP     // get repeat settings
	EVIOCSREP     = C.EVIOCSREP     // set repeat settings

	EVIOCGKEYCODE    = C.EVIOCGKEYCODE    // get keycode
	EVIOCGKEYCODE_V2 = C.EVIOCGKEYCODE_V2 // get keycode

	EVIOCSKEYCODE    = C.EVIOCSKEYCODE    // set keycode
	EVIOCSKEYCODE_V2 = C.EVIOCSKEYCODE_V2 // set keycode

	EVIOCSFF      = C.EVIOCSFF      // send a force effect to a force feedback device
	EVIOCRMFF     = C.EVIOCRMFF     // erase a force effect
	EVIOCGEFFECTS = C.EVIOCGEFFECTS // report number of effects playable at the same time

	EVIOCGRAB     = C.EVIOCGRAB     // grab/release device
	EVIOCSCLOCKID = C.EVIOCSCLOCKID // set clockid to be used for timestamps
)
View Source
const (
	EV_VERSION                   = 0x010001
	ID_BUS                       = 0
	ID_VENDOR                    = 1
	ID_PRODUCT                   = 2
	ID_VERSION                   = 3
	BUS_PCI                      = 0x01
	BUS_ISAPNP                   = 0x02
	BUS_USB                      = 0x03
	BUS_HIL                      = 0x04
	BUS_BLUETOOTH                = 0x05
	BUS_VIRTUAL                  = 0x06
	BUS_ISA                      = 0x10
	BUS_I8042                    = 0x11
	BUS_XTKBD                    = 0x12
	BUS_RS232                    = 0x13
	BUS_GAMEPORT                 = 0x14
	BUS_PARPORT                  = 0x15
	BUS_AMIGA                    = 0x16
	BUS_ADB                      = 0x17
	BUS_I2C                      = 0x18
	BUS_HOST                     = 0x19
	BUS_GSC                      = 0x1A
	BUS_ATARI                    = 0x1B
	BUS_SPI                      = 0x1C
	BUS_RMI                      = 0x1D
	BUS_CEC                      = 0x1E
	BUS_INTEL_ISHTP              = 0x1F
	FF_STATUS_STOPPED            = 0x00
	FF_STATUS_PLAYING            = 0x01
	FF_STATUS_MAX                = 0x01
	FF_RUMBLE                    = 0x50
	FF_PERIODIC                  = 0x51
	FF_CONSTANT                  = 0x52
	FF_SPRING                    = 0x53
	FF_FRICTION                  = 0x54
	FF_DAMPER                    = 0x55
	FF_INERTIA                   = 0x56
	FF_RAMP                      = 0x57
	FF_EFFECT_MIN                = FF_RUMBLE
	FF_EFFECT_MAX                = FF_RAMP
	FF_SQUARE                    = 0x58
	FF_TRIANGLE                  = 0x59
	FF_SINE                      = 0x5a
	FF_SAW_UP                    = 0x5b
	FF_SAW_DOWN                  = 0x5c
	FF_CUSTOM                    = 0x5d
	FF_WAVEFORM_MIN              = FF_SQUARE
	FF_WAVEFORM_MAX              = FF_CUSTOM
	FF_GAIN                      = 0x60
	FF_AUTOCENTER                = 0x61
	FF_MAX_EFFECTS               = FF_GAIN
	FF_MAX                       = 0x7f
	EV_SYN                       = 0x00
	EV_KEY                       = 0x01
	EV_REL                       = 0x02
	EV_ABS                       = 0x03
	EV_MSC                       = 0x04
	EV_SW                        = 0x05
	EV_LED                       = 0x11
	EV_SND                       = 0x12
	EV_REP                       = 0x14
	EV_FF                        = 0x15
	EV_PWR                       = 0x16
	EV_FF_STATUS                 = 0x17
	EV_MAX                       = 0x1f
	SYN_REPORT                   = 0
	SYN_CONFIG                   = 1
	SYN_MT_REPORT                = 2
	SYN_DROPPED                  = 3
	SYN_MAX                      = 0xf
	KEY_RESERVED                 = 0
	KEY_ESC                      = 1
	KEY_1                        = 2
	KEY_2                        = 3
	KEY_3                        = 4
	KEY_4                        = 5
	KEY_5                        = 6
	KEY_6                        = 7
	KEY_7                        = 8
	KEY_8                        = 9
	KEY_9                        = 10
	KEY_0                        = 11
	KEY_MINUS                    = 12
	KEY_EQUAL                    = 13
	KEY_BACKSPACE                = 14
	KEY_TAB                      = 15
	KEY_Q                        = 16
	KEY_W                        = 17
	KEY_E                        = 18
	KEY_R                        = 19
	KEY_T                        = 20
	KEY_Y                        = 21
	KEY_U                        = 22
	KEY_I                        = 23
	KEY_O                        = 24
	KEY_P                        = 25
	KEY_LEFTBRACE                = 26
	KEY_RIGHTBRACE               = 27
	KEY_ENTER                    = 28
	KEY_LEFTCTRL                 = 29
	KEY_A                        = 30
	KEY_S                        = 31
	KEY_D                        = 32
	KEY_F                        = 33
	KEY_G                        = 34
	KEY_H                        = 35
	KEY_J                        = 36
	KEY_K                        = 37
	KEY_L                        = 38
	KEY_SEMICOLON                = 39
	KEY_APOSTROPHE               = 40
	KEY_GRAVE                    = 41
	KEY_LEFTSHIFT                = 42
	KEY_BACKSLASH                = 43
	KEY_Z                        = 44
	KEY_X                        = 45
	KEY_C                        = 46
	KEY_V                        = 47
	KEY_B                        = 48
	KEY_N                        = 49
	KEY_M                        = 50
	KEY_COMMA                    = 51
	KEY_DOT                      = 52
	KEY_SLASH                    = 53
	KEY_RIGHTSHIFT               = 54
	KEY_KPASTERISK               = 55
	KEY_LEFTALT                  = 56
	KEY_SPACE                    = 57
	KEY_CAPSLOCK                 = 58
	KEY_F1                       = 59
	KEY_F2                       = 60
	KEY_F3                       = 61
	KEY_F4                       = 62
	KEY_F5                       = 63
	KEY_F6                       = 64
	KEY_F7                       = 65
	KEY_F8                       = 66
	KEY_F9                       = 67
	KEY_F10                      = 68
	KEY_NUMLOCK                  = 69
	KEY_SCROLLLOCK               = 70
	KEY_KP7                      = 71
	KEY_KP8                      = 72
	KEY_KP9                      = 73
	KEY_KPMINUS                  = 74
	KEY_KP4                      = 75
	KEY_KP5                      = 76
	KEY_KP6                      = 77
	KEY_KPPLUS                   = 78
	KEY_KP1                      = 79
	KEY_KP2                      = 80
	KEY_KP3                      = 81
	KEY_KP0                      = 82
	KEY_KPDOT                    = 83
	KEY_ZENKAKUHANKAKU           = 85
	KEY_102ND                    = 86
	KEY_F11                      = 87
	KEY_F12                      = 88
	KEY_RO                       = 89
	KEY_KATAKANA                 = 90
	KEY_HIRAGANA                 = 91
	KEY_HENKAN                   = 92
	KEY_KATAKANAHIRAGANA         = 93
	KEY_MUHENKAN                 = 94
	KEY_KPJPCOMMA                = 95
	KEY_KPENTER                  = 96
	KEY_RIGHTCTRL                = 97
	KEY_KPSLASH                  = 98
	KEY_SYSRQ                    = 99
	KEY_RIGHTALT                 = 100
	KEY_LINEFEED                 = 101
	KEY_HOME                     = 102
	KEY_UP                       = 103
	KEY_PAGEUP                   = 104
	KEY_LEFT                     = 105
	KEY_RIGHT                    = 106
	KEY_END                      = 107
	KEY_DOWN                     = 108
	KEY_PAGEDOWN                 = 109
	KEY_INSERT                   = 110
	KEY_DELETE                   = 111
	KEY_MACRO                    = 112
	KEY_MUTE                     = 113
	KEY_VOLUMEDOWN               = 114
	KEY_VOLUMEUP                 = 115
	KEY_POWER                    = 116
	KEY_KPEQUAL                  = 117
	KEY_KPPLUSMINUS              = 118
	KEY_PAUSE                    = 119
	KEY_SCALE                    = 120
	KEY_KPCOMMA                  = 121
	KEY_HANGEUL                  = 122
	KEY_HANGUEL                  = KEY_HANGEUL
	KEY_HANJA                    = 123
	KEY_YEN                      = 124
	KEY_LEFTMETA                 = 125
	KEY_RIGHTMETA                = 126
	KEY_COMPOSE                  = 127
	KEY_STOP                     = 128
	KEY_AGAIN                    = 129
	KEY_PROPS                    = 130
	KEY_UNDO                     = 131
	KEY_FRONT                    = 132
	KEY_COPY                     = 133
	KEY_OPEN                     = 134
	KEY_PASTE                    = 135
	KEY_FIND                     = 136
	KEY_CUT                      = 137
	KEY_HELP                     = 138
	KEY_MENU                     = 139
	KEY_CALC                     = 140
	KEY_SETUP                    = 141
	KEY_SLEEP                    = 142
	KEY_WAKEUP                   = 143
	KEY_FILE                     = 144
	KEY_SENDFILE                 = 145
	KEY_DELETEFILE               = 146
	KEY_XFER                     = 147
	KEY_PROG1                    = 148
	KEY_PROG2                    = 149
	KEY_WWW                      = 150
	KEY_MSDOS                    = 151
	KEY_COFFEE                   = 152
	KEY_SCREENLOCK               = KEY_COFFEE
	KEY_ROTATE_DISPLAY           = 153
	KEY_DIRECTION                = KEY_ROTATE_DISPLAY
	KEY_CYCLEWINDOWS             = 154
	KEY_MAIL                     = 155
	KEY_BOOKMARKS                = 156
	KEY_COMPUTER                 = 157
	KEY_BACK                     = 158
	KEY_FORWARD                  = 159
	KEY_CLOSECD                  = 160
	KEY_EJECTCD                  = 161
	KEY_EJECTCLOSECD             = 162
	KEY_NEXTSONG                 = 163
	KEY_PLAYPAUSE                = 164
	KEY_PREVIOUSSONG             = 165
	KEY_STOPCD                   = 166
	KEY_RECORD                   = 167
	KEY_REWIND                   = 168
	KEY_PHONE                    = 169
	KEY_ISO                      = 170
	KEY_CONFIG                   = 171
	KEY_HOMEPAGE                 = 172
	KEY_REFRESH                  = 173
	KEY_EXIT                     = 174
	KEY_MOVE                     = 175
	KEY_EDIT                     = 176
	KEY_SCROLLUP                 = 177
	KEY_SCROLLDOWN               = 178
	KEY_KPLEFTPAREN              = 179
	KEY_KPRIGHTPAREN             = 180
	KEY_NEW                      = 181
	KEY_REDO                     = 182
	KEY_F13                      = 183
	KEY_F14                      = 184
	KEY_F15                      = 185
	KEY_F16                      = 186
	KEY_F17                      = 187
	KEY_F18                      = 188
	KEY_F19                      = 189
	KEY_F20                      = 190
	KEY_F21                      = 191
	KEY_F22                      = 192
	KEY_F23                      = 193
	KEY_F24                      = 194
	KEY_PLAYCD                   = 200
	KEY_PAUSECD                  = 201
	KEY_PROG3                    = 202
	KEY_PROG4                    = 203
	KEY_ALL_APPLICATIONS         = 204
	KEY_DASHBOARD                = KEY_ALL_APPLICATIONS
	KEY_SUSPEND                  = 205
	KEY_CLOSE                    = 206
	KEY_PLAY                     = 207
	KEY_FASTFORWARD              = 208
	KEY_BASSBOOST                = 209
	KEY_PRINT                    = 210
	KEY_HP                       = 211
	KEY_CAMERA                   = 212
	KEY_SOUND                    = 213
	KEY_QUESTION                 = 214
	KEY_EMAIL                    = 215
	KEY_CHAT                     = 216
	KEY_SEARCH                   = 217
	KEY_CONNECT                  = 218
	KEY_FINANCE                  = 219
	KEY_SPORT                    = 220
	KEY_SHOP                     = 221
	KEY_ALTERASE                 = 222
	KEY_CANCEL                   = 223
	KEY_BRIGHTNESSDOWN           = 224
	KEY_BRIGHTNESSUP             = 225
	KEY_MEDIA                    = 226
	KEY_SWITCHVIDEOMODE          = 227
	KEY_KBDILLUMTOGGLE           = 228
	KEY_KBDILLUMDOWN             = 229
	KEY_KBDILLUMUP               = 230
	KEY_SEND                     = 231
	KEY_REPLY                    = 232
	KEY_FORWARDMAIL              = 233
	KEY_SAVE                     = 234
	KEY_DOCUMENTS                = 235
	KEY_BATTERY                  = 236
	KEY_BLUETOOTH                = 237
	KEY_WLAN                     = 238
	KEY_UWB                      = 239
	KEY_UNKNOWN                  = 240
	KEY_VIDEO_NEXT               = 241
	KEY_VIDEO_PREV               = 242
	KEY_BRIGHTNESS_CYCLE         = 243
	KEY_BRIGHTNESS_AUTO          = 244
	KEY_BRIGHTNESS_ZERO          = KEY_BRIGHTNESS_AUTO
	KEY_DISPLAY_OFF              = 245
	KEY_WWAN                     = 246
	KEY_WIMAX                    = KEY_WWAN
	KEY_RFKILL                   = 247
	KEY_MICMUTE                  = 248
	BTN_MISC                     = 0x100
	BTN_0                        = 0x100
	BTN_1                        = 0x101
	BTN_2                        = 0x102
	BTN_3                        = 0x103
	BTN_4                        = 0x104
	BTN_5                        = 0x105
	BTN_6                        = 0x106
	BTN_7                        = 0x107
	BTN_8                        = 0x108
	BTN_9                        = 0x109
	BTN_MOUSE                    = 0x110
	BTN_LEFT                     = 0x110
	BTN_RIGHT                    = 0x111
	BTN_MIDDLE                   = 0x112
	BTN_SIDE                     = 0x113
	BTN_EXTRA                    = 0x114
	BTN_FORWARD                  = 0x115
	BTN_BACK                     = 0x116
	BTN_TASK                     = 0x117
	BTN_JOYSTICK                 = 0x120
	BTN_TRIGGER                  = 0x120
	BTN_THUMB                    = 0x121
	BTN_THUMB2                   = 0x122
	BTN_TOP                      = 0x123
	BTN_TOP2                     = 0x124
	BTN_PINKIE                   = 0x125
	BTN_BASE                     = 0x126
	BTN_BASE2                    = 0x127
	BTN_BASE3                    = 0x128
	BTN_BASE4                    = 0x129
	BTN_BASE5                    = 0x12a
	BTN_BASE6                    = 0x12b
	BTN_DEAD                     = 0x12f
	BTN_GAMEPAD                  = 0x130
	BTN_SOUTH                    = 0x130
	BTN_A                        = BTN_SOUTH
	BTN_EAST                     = 0x131
	BTN_B                        = BTN_EAST
	BTN_C                        = 0x132
	BTN_NORTH                    = 0x133
	BTN_X                        = BTN_NORTH
	BTN_WEST                     = 0x134
	BTN_Y                        = BTN_WEST
	BTN_Z                        = 0x135
	BTN_TL                       = 0x136
	BTN_TR                       = 0x137
	BTN_TL2                      = 0x138
	BTN_TR2                      = 0x139
	BTN_SELECT                   = 0x13a
	BTN_START                    = 0x13b
	BTN_MODE                     = 0x13c
	BTN_THUMBL                   = 0x13d
	BTN_THUMBR                   = 0x13e
	BTN_DIGI                     = 0x140
	BTN_TOOL_PEN                 = 0x140
	BTN_TOOL_RUBBER              = 0x141
	BTN_TOOL_BRUSH               = 0x142
	BTN_TOOL_PENCIL              = 0x143
	BTN_TOOL_AIRBRUSH            = 0x144
	BTN_TOOL_FINGER              = 0x145
	BTN_TOOL_MOUSE               = 0x146
	BTN_TOOL_LENS                = 0x147
	BTN_TOOL_QUINTTAP            = 0x148
	BTN_STYLUS3                  = 0x149
	BTN_TOUCH                    = 0x14a
	BTN_STYLUS                   = 0x14b
	BTN_STYLUS2                  = 0x14c
	BTN_TOOL_DOUBLETAP           = 0x14d
	BTN_TOOL_TRIPLETAP           = 0x14e
	BTN_TOOL_QUADTAP             = 0x14f
	BTN_WHEEL                    = 0x150
	BTN_GEAR_DOWN                = 0x150
	BTN_GEAR_UP                  = 0x151
	KEY_OK                       = 0x160
	KEY_SELECT                   = 0x161
	KEY_GOTO                     = 0x162
	KEY_CLEAR                    = 0x163
	KEY_POWER2                   = 0x164
	KEY_OPTION                   = 0x165
	KEY_INFO                     = 0x166
	KEY_TIME                     = 0x167
	KEY_VENDOR                   = 0x168
	KEY_ARCHIVE                  = 0x169
	KEY_PROGRAM                  = 0x16a
	KEY_CHANNEL                  = 0x16b
	KEY_FAVORITES                = 0x16c
	KEY_EPG                      = 0x16d
	KEY_PVR                      = 0x16e
	KEY_MHP                      = 0x16f
	KEY_LANGUAGE                 = 0x170
	KEY_TITLE                    = 0x171
	KEY_SUBTITLE                 = 0x172
	KEY_ANGLE                    = 0x173
	KEY_FULL_SCREEN              = 0x174
	KEY_ZOOM                     = KEY_FULL_SCREEN
	KEY_MODE                     = 0x175
	KEY_KEYBOARD                 = 0x176
	KEY_ASPECT_RATIO             = 0x177
	KEY_SCREEN                   = KEY_ASPECT_RATIO
	KEY_PC                       = 0x178
	KEY_TV                       = 0x179
	KEY_TV2                      = 0x17a
	KEY_VCR                      = 0x17b
	KEY_VCR2                     = 0x17c
	KEY_SAT                      = 0x17d
	KEY_SAT2                     = 0x17e
	KEY_CD                       = 0x17f
	KEY_TAPE                     = 0x180
	KEY_RADIO                    = 0x181
	KEY_TUNER                    = 0x182
	KEY_PLAYER                   = 0x183
	KEY_TEXT                     = 0x184
	KEY_DVD                      = 0x185
	KEY_AUX                      = 0x186
	KEY_MP3                      = 0x187
	KEY_AUDIO                    = 0x188
	KEY_VIDEO                    = 0x189
	KEY_DIRECTORY                = 0x18a
	KEY_LIST                     = 0x18b
	KEY_MEMO                     = 0x18c
	KEY_CALENDAR                 = 0x18d
	KEY_RED                      = 0x18e
	KEY_GREEN                    = 0x18f
	KEY_YELLOW                   = 0x190
	KEY_BLUE                     = 0x191
	KEY_CHANNELUP                = 0x192
	KEY_CHANNELDOWN              = 0x193
	KEY_FIRST                    = 0x194
	KEY_LAST                     = 0x195
	KEY_AB                       = 0x196
	KEY_NEXT                     = 0x197
	KEY_RESTART                  = 0x198
	KEY_SLOW                     = 0x199
	KEY_SHUFFLE                  = 0x19a
	KEY_BREAK                    = 0x19b
	KEY_PREVIOUS                 = 0x19c
	KEY_DIGITS                   = 0x19d
	KEY_TEEN                     = 0x19e
	KEY_TWEN                     = 0x19f
	KEY_VIDEOPHONE               = 0x1a0
	KEY_GAMES                    = 0x1a1
	KEY_ZOOMIN                   = 0x1a2
	KEY_ZOOMOUT                  = 0x1a3
	KEY_ZOOMRESET                = 0x1a4
	KEY_WORDPROCESSOR            = 0x1a5
	KEY_EDITOR                   = 0x1a6
	KEY_SPREADSHEET              = 0x1a7
	KEY_GRAPHICSEDITOR           = 0x1a8
	KEY_PRESENTATION             = 0x1a9
	KEY_DATABASE                 = 0x1aa
	KEY_NEWS                     = 0x1ab
	KEY_VOICEMAIL                = 0x1ac
	KEY_ADDRESSBOOK              = 0x1ad
	KEY_MESSENGER                = 0x1ae
	KEY_DISPLAYTOGGLE            = 0x1af
	KEY_BRIGHTNESS_TOGGLE        = KEY_DISPLAYTOGGLE
	KEY_SPELLCHECK               = 0x1b0
	KEY_LOGOFF                   = 0x1b1
	KEY_DOLLAR                   = 0x1b2
	KEY_EURO                     = 0x1b3
	KEY_FRAMEBACK                = 0x1b4
	KEY_FRAMEFORWARD             = 0x1b5
	KEY_CONTEXT_MENU             = 0x1b6
	KEY_MEDIA_REPEAT             = 0x1b7
	KEY_10CHANNELSUP             = 0x1b8
	KEY_10CHANNELSDOWN           = 0x1b9
	KEY_IMAGES                   = 0x1ba
	KEY_NOTIFICATION_CENTER      = 0x1bc
	KEY_PICKUP_PHONE             = 0x1bd
	KEY_HANGUP_PHONE             = 0x1be
	KEY_DEL_EOL                  = 0x1c0
	KEY_DEL_EOS                  = 0x1c1
	KEY_INS_LINE                 = 0x1c2
	KEY_DEL_LINE                 = 0x1c3
	KEY_FN                       = 0x1d0
	KEY_FN_ESC                   = 0x1d1
	KEY_FN_F1                    = 0x1d2
	KEY_FN_F2                    = 0x1d3
	KEY_FN_F3                    = 0x1d4
	KEY_FN_F4                    = 0x1d5
	KEY_FN_F5                    = 0x1d6
	KEY_FN_F6                    = 0x1d7
	KEY_FN_F7                    = 0x1d8
	KEY_FN_F8                    = 0x1d9
	KEY_FN_F9                    = 0x1da
	KEY_FN_F10                   = 0x1db
	KEY_FN_F11                   = 0x1dc
	KEY_FN_F12                   = 0x1dd
	KEY_FN_1                     = 0x1de
	KEY_FN_2                     = 0x1df
	KEY_FN_D                     = 0x1e0
	KEY_FN_E                     = 0x1e1
	KEY_FN_F                     = 0x1e2
	KEY_FN_S                     = 0x1e3
	KEY_FN_B                     = 0x1e4
	KEY_FN_RIGHT_SHIFT           = 0x1e5
	KEY_BRL_DOT1                 = 0x1f1
	KEY_BRL_DOT2                 = 0x1f2
	KEY_BRL_DOT3                 = 0x1f3
	KEY_BRL_DOT4                 = 0x1f4
	KEY_BRL_DOT5                 = 0x1f5
	KEY_BRL_DOT6                 = 0x1f6
	KEY_BRL_DOT7                 = 0x1f7
	KEY_BRL_DOT8                 = 0x1f8
	KEY_BRL_DOT9                 = 0x1f9
	KEY_BRL_DOT10                = 0x1fa
	KEY_NUMERIC_0                = 0x200
	KEY_NUMERIC_1                = 0x201
	KEY_NUMERIC_2                = 0x202
	KEY_NUMERIC_3                = 0x203
	KEY_NUMERIC_4                = 0x204
	KEY_NUMERIC_5                = 0x205
	KEY_NUMERIC_6                = 0x206
	KEY_NUMERIC_7                = 0x207
	KEY_NUMERIC_8                = 0x208
	KEY_NUMERIC_9                = 0x209
	KEY_NUMERIC_STAR             = 0x20a
	KEY_NUMERIC_POUND            = 0x20b
	KEY_NUMERIC_A                = 0x20c
	KEY_NUMERIC_B                = 0x20d
	KEY_NUMERIC_C                = 0x20e
	KEY_NUMERIC_D                = 0x20f
	KEY_CAMERA_FOCUS             = 0x210
	KEY_WPS_BUTTON               = 0x211
	KEY_TOUCHPAD_TOGGLE          = 0x212
	KEY_TOUCHPAD_ON              = 0x213
	KEY_TOUCHPAD_OFF             = 0x214
	KEY_CAMERA_ZOOMIN            = 0x215
	KEY_CAMERA_ZOOMOUT           = 0x216
	KEY_CAMERA_UP                = 0x217
	KEY_CAMERA_DOWN              = 0x218
	KEY_CAMERA_LEFT              = 0x219
	KEY_CAMERA_RIGHT             = 0x21a
	KEY_ATTENDANT_ON             = 0x21b
	KEY_ATTENDANT_OFF            = 0x21c
	KEY_ATTENDANT_TOGGLE         = 0x21d
	KEY_LIGHTS_TOGGLE            = 0x21e
	BTN_DPAD_UP                  = 0x220
	BTN_DPAD_DOWN                = 0x221
	BTN_DPAD_LEFT                = 0x222
	BTN_DPAD_RIGHT               = 0x223
	KEY_ALS_TOGGLE               = 0x230
	KEY_ROTATE_LOCK_TOGGLE       = 0x231
	KEY_BUTTONCONFIG             = 0x240
	KEY_TASKMANAGER              = 0x241
	KEY_JOURNAL                  = 0x242
	KEY_CONTROLPANEL             = 0x243
	KEY_APPSELECT                = 0x244
	KEY_SCREENSAVER              = 0x245
	KEY_VOICECOMMAND             = 0x246
	KEY_ASSISTANT                = 0x247
	KEY_KBD_LAYOUT_NEXT          = 0x248
	KEY_EMOJI_PICKER             = 0x249
	KEY_DICTATE                  = 0x24a
	KEY_BRIGHTNESS_MIN           = 0x250
	KEY_BRIGHTNESS_MAX           = 0x251
	KEY_KBDINPUTASSIST_PREV      = 0x260
	KEY_KBDINPUTASSIST_NEXT      = 0x261
	KEY_KBDINPUTASSIST_PREVGROUP = 0x262
	KEY_KBDINPUTASSIST_NEXTGROUP = 0x263
	KEY_KBDINPUTASSIST_ACCEPT    = 0x264
	KEY_KBDINPUTASSIST_CANCEL    = 0x265
	KEY_RIGHT_UP                 = 0x266
	KEY_RIGHT_DOWN               = 0x267
	KEY_LEFT_UP                  = 0x268
	KEY_LEFT_DOWN                = 0x269
	KEY_ROOT_MENU                = 0x26a
	KEY_MEDIA_TOP_MENU           = 0x26b
	KEY_NUMERIC_11               = 0x26c
	KEY_NUMERIC_12               = 0x26d
	KEY_AUDIO_DESC               = 0x26e
	KEY_3D_MODE                  = 0x26f
	KEY_NEXT_FAVORITE            = 0x270
	KEY_STOP_RECORD              = 0x271
	KEY_PAUSE_RECORD             = 0x272
	KEY_VOD                      = 0x273
	KEY_UNMUTE                   = 0x274
	KEY_FASTREVERSE              = 0x275
	KEY_SLOWREVERSE              = 0x276
	KEY_DATA                     = 0x277
	KEY_ONSCREEN_KEYBOARD        = 0x278
	KEY_PRIVACY_SCREEN_TOGGLE    = 0x279
	KEY_SELECTIVE_SCREENSHOT     = 0x27a
	KEY_MACRO1                   = 0x290
	KEY_MACRO2                   = 0x291
	KEY_MACRO3                   = 0x292
	KEY_MACRO4                   = 0x293
	KEY_MACRO5                   = 0x294
	KEY_MACRO6                   = 0x295
	KEY_MACRO7                   = 0x296
	KEY_MACRO8                   = 0x297
	KEY_MACRO9                   = 0x298
	KEY_MACRO10                  = 0x299
	KEY_MACRO11                  = 0x29a
	KEY_MACRO12                  = 0x29b
	KEY_MACRO13                  = 0x29c
	KEY_MACRO14                  = 0x29d
	KEY_MACRO15                  = 0x29e
	KEY_MACRO16                  = 0x29f
	KEY_MACRO17                  = 0x2a0
	KEY_MACRO18                  = 0x2a1
	KEY_MACRO19                  = 0x2a2
	KEY_MACRO20                  = 0x2a3
	KEY_MACRO21                  = 0x2a4
	KEY_MACRO22                  = 0x2a5
	KEY_MACRO23                  = 0x2a6
	KEY_MACRO24                  = 0x2a7
	KEY_MACRO25                  = 0x2a8
	KEY_MACRO26                  = 0x2a9
	KEY_MACRO27                  = 0x2aa
	KEY_MACRO28                  = 0x2ab
	KEY_MACRO29                  = 0x2ac
	KEY_MACRO30                  = 0x2ad
	KEY_MACRO_RECORD_START       = 0x2b0
	KEY_MACRO_RECORD_STOP        = 0x2b1
	KEY_MACRO_PRESET_CYCLE       = 0x2b2
	KEY_MACRO_PRESET1            = 0x2b3
	KEY_MACRO_PRESET2            = 0x2b4
	KEY_MACRO_PRESET3            = 0x2b5
	KEY_KBD_LCD_MENU1            = 0x2b8
	KEY_KBD_LCD_MENU2            = 0x2b9
	KEY_KBD_LCD_MENU3            = 0x2ba
	KEY_KBD_LCD_MENU4            = 0x2bb
	KEY_KBD_LCD_MENU5            = 0x2bc
	BTN_TRIGGER_HAPPY            = 0x2c0
	BTN_TRIGGER_HAPPY1           = 0x2c0
	BTN_TRIGGER_HAPPY2           = 0x2c1
	BTN_TRIGGER_HAPPY3           = 0x2c2
	BTN_TRIGGER_HAPPY4           = 0x2c3
	BTN_TRIGGER_HAPPY5           = 0x2c4
	BTN_TRIGGER_HAPPY6           = 0x2c5
	BTN_TRIGGER_HAPPY7           = 0x2c6
	BTN_TRIGGER_HAPPY8           = 0x2c7
	BTN_TRIGGER_HAPPY9           = 0x2c8
	BTN_TRIGGER_HAPPY10          = 0x2c9
	BTN_TRIGGER_HAPPY11          = 0x2ca
	BTN_TRIGGER_HAPPY12          = 0x2cb
	BTN_TRIGGER_HAPPY13          = 0x2cc
	BTN_TRIGGER_HAPPY14          = 0x2cd
	BTN_TRIGGER_HAPPY15          = 0x2ce
	BTN_TRIGGER_HAPPY16          = 0x2cf
	BTN_TRIGGER_HAPPY17          = 0x2d0
	BTN_TRIGGER_HAPPY18          = 0x2d1
	BTN_TRIGGER_HAPPY19          = 0x2d2
	BTN_TRIGGER_HAPPY20          = 0x2d3
	BTN_TRIGGER_HAPPY21          = 0x2d4
	BTN_TRIGGER_HAPPY22          = 0x2d5
	BTN_TRIGGER_HAPPY23          = 0x2d6
	BTN_TRIGGER_HAPPY24          = 0x2d7
	BTN_TRIGGER_HAPPY25          = 0x2d8
	BTN_TRIGGER_HAPPY26          = 0x2d9
	BTN_TRIGGER_HAPPY27          = 0x2da
	BTN_TRIGGER_HAPPY28          = 0x2db
	BTN_TRIGGER_HAPPY29          = 0x2dc
	BTN_TRIGGER_HAPPY30          = 0x2dd
	BTN_TRIGGER_HAPPY31          = 0x2de
	BTN_TRIGGER_HAPPY32          = 0x2df
	BTN_TRIGGER_HAPPY33          = 0x2e0
	BTN_TRIGGER_HAPPY34          = 0x2e1
	BTN_TRIGGER_HAPPY35          = 0x2e2
	BTN_TRIGGER_HAPPY36          = 0x2e3
	BTN_TRIGGER_HAPPY37          = 0x2e4
	BTN_TRIGGER_HAPPY38          = 0x2e5
	BTN_TRIGGER_HAPPY39          = 0x2e6
	BTN_TRIGGER_HAPPY40          = 0x2e7
	KEY_MIN_INTERESTING          = KEY_MUTE
	KEY_MAX                      = 0x2ff
	REL_X                        = 0x00
	REL_Y                        = 0x01
	REL_Z                        = 0x02
	REL_RX                       = 0x03
	REL_RY                       = 0x04
	REL_RZ                       = 0x05
	REL_HWHEEL                   = 0x06
	REL_DIAL                     = 0x07
	REL_WHEEL                    = 0x08
	REL_MISC                     = 0x09
	REL_RESERVED                 = 0x0a
	REL_WHEEL_HI_RES             = 0x0b
	REL_HWHEEL_HI_RES            = 0x0c
	REL_MAX                      = 0x0f
	ABS_X                        = 0x00
	ABS_Y                        = 0x01
	ABS_Z                        = 0x02
	ABS_RX                       = 0x03
	ABS_RY                       = 0x04
	ABS_RZ                       = 0x05
	ABS_THROTTLE                 = 0x06
	ABS_RUDDER                   = 0x07
	ABS_WHEEL                    = 0x08
	ABS_GAS                      = 0x09
	ABS_BRAKE                    = 0x0a
	ABS_HAT0X                    = 0x10
	ABS_HAT0Y                    = 0x11
	ABS_HAT1X                    = 0x12
	ABS_HAT1Y                    = 0x13
	ABS_HAT2X                    = 0x14
	ABS_HAT2Y                    = 0x15
	ABS_HAT3X                    = 0x16
	ABS_HAT3Y                    = 0x17
	ABS_PRESSURE                 = 0x18
	ABS_DISTANCE                 = 0x19
	ABS_TILT_X                   = 0x1a
	ABS_TILT_Y                   = 0x1b
	ABS_TOOL_WIDTH               = 0x1c
	ABS_VOLUME                   = 0x20
	ABS_MISC                     = 0x28
	ABS_RESERVED                 = 0x2e
	ABS_MT_SLOT                  = 0x2f
	ABS_MT_TOUCH_MAJOR           = 0x30
	ABS_MT_TOUCH_MINOR           = 0x31
	ABS_MT_WIDTH_MAJOR           = 0x32
	ABS_MT_WIDTH_MINOR           = 0x33
	ABS_MT_ORIENTATION           = 0x34
	ABS_MT_POSITION_X            = 0x35
	ABS_MT_POSITION_Y            = 0x36
	ABS_MT_TOOL_TYPE             = 0x37
	ABS_MT_BLOB_ID               = 0x38
	ABS_MT_TRACKING_ID           = 0x39
	ABS_MT_PRESSURE              = 0x3a
	ABS_MT_DISTANCE              = 0x3b
	ABS_MT_TOOL_X                = 0x3c
	ABS_MT_TOOL_Y                = 0x3d
	ABS_MAX                      = 0x3f
	SW_LID                       = 0x00
	SW_TABLET_MODE               = 0x01
	SW_HEADPHONE_INSERT          = 0x02
	SW_RFKILL_ALL                = 0x03
	SW_RADIO                     = SW_RFKILL_ALL
	SW_MICROPHONE_INSERT         = 0x04
	SW_DOCK                      = 0x05
	SW_LINEOUT_INSERT            = 0x06
	SW_JACK_PHYSICAL_INSERT      = 0x07
	SW_VIDEOOUT_INSERT           = 0x08
	SW_CAMERA_LENS_COVER         = 0x09
	SW_KEYPAD_SLIDE              = 0x0a
	SW_FRONT_PROXIMITY           = 0x0b
	SW_ROTATE_LOCK               = 0x0c
	SW_LINEIN_INSERT             = 0x0d
	SW_MUTE_DEVICE               = 0x0e
	SW_PEN_INSERTED              = 0x0f
	SW_MACHINE_COVER             = 0x10
	SW_MAX                       = 0x10
	MSC_SERIAL                   = 0x00
	MSC_PULSELED                 = 0x01
	MSC_GESTURE                  = 0x02
	MSC_RAW                      = 0x03
	MSC_SCAN                     = 0x04
	MSC_TIMESTAMP                = 0x05
	MSC_MAX                      = 0x07
	LED_NUML                     = 0x00
	LED_CAPSL                    = 0x01
	LED_SCROLLL                  = 0x02
	LED_COMPOSE                  = 0x03
	LED_KANA                     = 0x04
	LED_SLEEP                    = 0x05
	LED_SUSPEND                  = 0x06
	LED_MUTE                     = 0x07
	LED_MISC                     = 0x08
	LED_MAIL                     = 0x09
	LED_CHARGING                 = 0x0a
	LED_MAX                      = 0x0f
	REP_DELAY                    = 0x00
	REP_PERIOD                   = 0x01
	REP_MAX                      = 0x01
	SND_CLICK                    = 0x00
	SND_BELL                     = 0x01
	SND_TONE                     = 0x02
	SND_MAX                      = 0x07
)
View Source
const MAX_NAME_SIZE = 256

Variables

View Source
var ABS = map[int]string{}
View Source
var BTN = map[int]string{}
View Source
var BUS = map[int]string{}
View Source
var ByEventType = map[int]map[int]string{
	EV_KEY: KEY,
	EV_ABS: ABS,
	EV_REL: REL,
	EV_SW:  SW,
	EV_MSC: MSC,
	EV_LED: LED,
	EV_REP: REP,
	EV_SND: SND,
	EV_SYN: SYN,
	EV_FF:  FF,
}
View Source
var EV = map[int]string{}
View Source
var EVIOCGKEY = C._EVIOCGKEY(MAX_NAME_SIZE) // get global key state
View Source
var EVIOCGLED = C._EVIOCGLED(MAX_NAME_SIZE) // get all LEDs
View Source
var EVIOCGNAME = C._EVIOCGNAME(MAX_NAME_SIZE) // get device name
View Source
var EVIOCGPHYS = C._EVIOCGPHYS(MAX_NAME_SIZE) // get physical location
View Source
var EVIOCGPROP = C._EVIOCGPROP(MAX_NAME_SIZE) // get device properties
View Source
var EVIOCGSND = C._EVIOCGSND(MAX_NAME_SIZE) // get all sounds status
View Source
var EVIOCGSW = C._EVIOCGSW(MAX_NAME_SIZE) // get all switch states
View Source
var EVIOCGUNIQ = C._EVIOCGUNIQ(MAX_NAME_SIZE) // get unique identifier
View Source
var EventFactory map[uint16]interface{} = make(map[uint16]interface{})
View Source
var FF = map[int]string{}
View Source
var ID = map[int]string{}
View Source
var KEY = map[int]string{}
View Source
var LED = map[int]string{}
View Source
var MSC = map[int]string{}
View Source
var REL = map[int]string{}
View Source
var REP = map[int]string{}
View Source
var SND = map[int]string{}
View Source
var SW = map[int]string{}
View Source
var SYN = map[int]string{}

Functions

func EVIOCGABS

func EVIOCGABS(abs int) int

func EVIOCGBIT

func EVIOCGBIT(ev, l int) int

func EVIOCSABS

func EVIOCSABS(abs int) int

func IsInputDevice

func IsInputDevice(path string) bool

Determine if a path exist and is a character input device.

func ListInputDevicePaths

func ListInputDevicePaths(deviceGlob string) ([]string, error)

Return a list of accessible input device names matched by deviceglob (default '/dev/input/event*').

Types

type CapabilityCode

type CapabilityCode struct {
	Code int
	Name string
}

type CapabilityType

type CapabilityType struct {
	Type int
	Name string
}

type InputDevice

type InputDevice struct {
	Fn string // path to input device (devnode)

	Name  string   // device name
	Phys  string   // physical topology of device
	Ident string   // unique identifier
	File  *os.File // an open file handle to the input device

	Bustype uint16 // bus type identifier
	Vendor  uint16 // vendor identifier
	Product uint16 // product identifier
	Version uint16 // version identifier

	EvdevVersion int // evdev protocol version

	Capabilities     map[CapabilityType][]CapabilityCode // supported event types and codes.
	CapabilitiesFlat map[int][]int
}

A Linux input device from which events can be read.

func ListInputDevices

func ListInputDevices(deviceGlobArg ...string) ([]*InputDevice, error)

Return a list of accessible input devices matched by deviceglob (default '/dev/input/event/*').

Example

Listing accessible input devices.

devices, _ := ListInputDevices()

for _, dev := range devices {
	fmt.Printf("%s %s %s", dev.Fn, dev.Name, dev.Phys)
}
Output:

func Open

func Open(devnode string) (*InputDevice, error)

Open an evdev input device.

Example
device, _ := Open("/dev/input/event3")
fmt.Println(device)
Output:

func (*InputDevice) GetRepeatRate

func (dev *InputDevice) GetRepeatRate() *[2]uint

Get repeat rate as a two element array.

[0] repeat rate in characters per second
[1] amount of time that a key must be depressed before it will start
    to repeat (in milliseconds)

func (*InputDevice) Grab

func (dev *InputDevice) Grab() error

Grab the input device exclusively.

func (*InputDevice) Read

func (dev *InputDevice) Read() ([]InputEvent, error)

Read and return a slice of input events from device.

func (*InputDevice) ReadOne

func (dev *InputDevice) ReadOne() (*InputEvent, error)

Read and return a single input event.

func (*InputDevice) Release

func (dev *InputDevice) Release() error

Release a grabbed input device.

func (*InputDevice) SetRepeatRate

func (dev *InputDevice) SetRepeatRate(repeat, delay uint)

Set repeat rate and delay.

func (*InputDevice) String

func (dev *InputDevice) String() string

Get a useful description for an input device. Example:

InputDevice /dev/input/event3 (fd 3)
  name Logitech USB Laser Mouse
  phys usb-0000:00:12.0-2/input0
  bus 0x3, vendor 0x46d, product 0xc069, version 0x110
  events EV_KEY 1, EV_SYN 0, EV_REL 2, EV_MSC 4

type InputEvent

type InputEvent struct {
	Time  syscall.Timeval // time in seconds since epoch at which event occurred
	Type  uint16          // event type - one of ecodes.EV_*
	Code  uint16          // event code related to the event type
	Value int32           // event value related to the event type
}

func (*InputEvent) String

func (ev *InputEvent) String() string

Get a useful description for an input event. Example:

event at 1347905437.435795, code 01, type 02, val 02

type KeyEvent

type KeyEvent struct {
	Event    *InputEvent
	Scancode uint16
	Keycode  uint16
	State    KeyEventState
}

KeyEvents are used to describe state changes of keyboards, buttons, or other key-like devices.

func NewKeyEvent

func NewKeyEvent(ev *InputEvent) *KeyEvent

func (*KeyEvent) New

func (kev *KeyEvent) New(ev *InputEvent)

func (*KeyEvent) String

func (ev *KeyEvent) String() string

type KeyEventState

type KeyEventState uint8
const (
	KeyUp   KeyEventState = 0x0
	KeyDown KeyEventState = 0x1
	KeyHold KeyEventState = 0x2
)

type RelEvent

type RelEvent struct {
	Event *InputEvent
}

RelEvents are used to describe relative axis value changes, e.g. moving the mouse 5 units to the left.

func NewRelEvent

func NewRelEvent(ev *InputEvent) *RelEvent

func (*RelEvent) New

func (rev *RelEvent) New(ev *InputEvent)

func (*RelEvent) String

func (ev *RelEvent) String() string

Directories

Path Synopsis
Input device event monitor.
Input device event monitor.

Jump to

Keyboard shortcuts

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