golang-evdev: github.com/gvalkov/golang-evdev Index | Examples | Files | Directories

package evdev

import "github.com/gvalkov/golang-evdev"

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.

Code:

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] ]

Index

Examples

Package Files

cdefs.go device.go doc.go ecodes.go events.go

Constants

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
)
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
    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_DASHBOARD                = 204
    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_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_ZOOM                     = 0x174
    KEY_MODE                     = 0x175
    KEY_KEYBOARD                 = 0x176
    KEY_SCREEN                   = 0x177
    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_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_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_BUTTONCONFIG             = 0x240
    KEY_TASKMANAGER              = 0x241
    KEY_JOURNAL                  = 0x242
    KEY_CONTROLPANEL             = 0x243
    KEY_APPSELECT                = 0x244
    KEY_SCREENSAVER              = 0x245
    KEY_VOICECOMMAND             = 0x246
    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                     = 0x275
    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_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_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_MAX                       = 0x0f
    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
)
const MAX_NAME_SIZE = 256

Variables

var ABS = map[int]string{}
var BTN = map[int]string{}
var BUS = map[int]string{}
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,
}
var EV = map[int]string{}
var EVIOCGKEY = C._EVIOCGKEY(MAX_NAME_SIZE) // get global key state
var EVIOCGLED = C._EVIOCGLED(MAX_NAME_SIZE) // get all LEDs
var EVIOCGNAME = C._EVIOCGNAME(MAX_NAME_SIZE) // get device name
var EVIOCGPHYS = C._EVIOCGPHYS(MAX_NAME_SIZE) // get physical location
var EVIOCGPROP = C._EVIOCGPROP(MAX_NAME_SIZE) // get device properties
var EVIOCGSND = C._EVIOCGSND(MAX_NAME_SIZE) // get all sounds status
var EVIOCGSW = C._EVIOCGSW(MAX_NAME_SIZE) // get all switch states
var EVIOCGUNIQ = C._EVIOCGUNIQ(MAX_NAME_SIZE) // get unique identifier
var EventFactory map[uint16]interface{} = make(map[uint16]interface{})
var FF = map[int]string{}
var ID = map[int]string{}
var KEY = map[int]string{}
var LED = map[int]string{}
var MSC = map[int]string{}
var REL = map[int]string{}
var REP = map[int]string{}
var SND = map[int]string{}
var SW = map[int]string{}
var SYN = map[int]string{}

func EVIOCGABS Uses

func EVIOCGABS(abs int) int

func EVIOCGBIT Uses

func EVIOCGBIT(ev, l int) int

func EVIOCSABS Uses

func EVIOCSABS(abs int) int

func IsInputDevice Uses

func IsInputDevice(path string) bool

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

func ListInputDevicePaths Uses

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

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

type AbsInfo Uses

type AbsInfo struct {
    // contains filtered or unexported fields
}

type CapabilityCode Uses

type CapabilityCode struct {
    Code int
    Name string
}

type CapabilityType Uses

type CapabilityType struct {
    Type int
    Name string
}

type InputDevice Uses

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

    Name string   // device name
    Phys string   // physical topology of device
    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 Uses

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

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

Listing accessible input devices.

Code:

devices, _ := evdev.ListInputDevices()

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

func Open Uses

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

Open an evdev input device.

Code:

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

func (*InputDevice) GetRepeatRate Uses

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 Uses

func (dev *InputDevice) Grab() error

Grab the input device exclusively.

func (*InputDevice) Read Uses

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

Read and return a slice of input events from device.

func (*InputDevice) ReadOne Uses

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

Read and return a single input event.

func (*InputDevice) Release Uses

func (dev *InputDevice) Release() error

Release a grabbed input device.

func (*InputDevice) SetRepeatRate Uses

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

Set repeat rate and delay.

func (*InputDevice) String Uses

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 Uses

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 Uses

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 Uses

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 Uses

func NewKeyEvent(ev *InputEvent) *KeyEvent

func (*KeyEvent) New Uses

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

func (*KeyEvent) String Uses

func (ev *KeyEvent) String() string

type KeyEventState Uses

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

type RelEvent Uses

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 Uses

func NewRelEvent(ev *InputEvent) *RelEvent

func (*RelEvent) New Uses

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

func (*RelEvent) String Uses

func (ev *RelEvent) String() string

Directories

PathSynopsis
bin

Package evdev imports 9 packages (graph) and is imported by 10 packages. Updated 2018-05-17. Refresh now. Tools for package owners.