📄 uinput.h
字号:
/* * * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2003-2005 Marcel Holtmann <marcel@holtmann.org> * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */#ifndef __UINPUT_H#define __UINPUT_H#ifdef __cplusplusextern "C" {#endif#include <stdint.h>#include <sys/time.h>#include <sys/ioctl.h>/* Events */#define EV_SYN 0x00#define EV_KEY 0x01#define EV_REL 0x02#define EV_ABS 0x03#define EV_MSC 0x04#define EV_LED 0x11#define EV_SND 0x12#define EV_REP 0x14#define EV_FF 0x15#define EV_PWR 0x16#define EV_FF_STATUS 0x17#define EV_MAX 0x1f/* Synchronization events */#define SYN_REPORT 0#define SYN_CONFIG 1/* Keys and buttons */#define KEY_RESERVED 0#define KEY_ESC 1#define KEY_1 2#define KEY_2 3#define KEY_3 4#define KEY_4 5#define KEY_5 6#define KEY_6 7#define KEY_7 8#define KEY_8 9#define KEY_9 10#define KEY_0 11#define KEY_MINUS 12#define KEY_EQUAL 13#define KEY_BACKSPACE 14#define KEY_TAB 15#define KEY_Q 16#define KEY_W 17#define KEY_E 18#define KEY_R 19#define KEY_T 20#define KEY_Y 21#define KEY_U 22#define KEY_I 23#define KEY_O 24#define KEY_P 25#define KEY_LEFTBRACE 26#define KEY_RIGHTBRACE 27#define KEY_ENTER 28#define KEY_LEFTCTRL 29#define KEY_A 30#define KEY_S 31#define KEY_D 32#define KEY_F 33#define KEY_G 34#define KEY_H 35#define KEY_J 36#define KEY_K 37#define KEY_L 38#define KEY_SEMICOLON 39#define KEY_APOSTROPHE 40#define KEY_GRAVE 41#define KEY_LEFTSHIFT 42#define KEY_BACKSLASH 43#define KEY_Z 44#define KEY_X 45#define KEY_C 46#define KEY_V 47#define KEY_B 48#define KEY_N 49#define KEY_M 50#define KEY_COMMA 51#define KEY_DOT 52#define KEY_SLASH 53#define KEY_RIGHTSHIFT 54#define KEY_KPASTERISK 55#define KEY_LEFTALT 56#define KEY_SPACE 57#define KEY_CAPSLOCK 58#define KEY_F1 59#define KEY_F2 60#define KEY_F3 61#define KEY_F4 62#define KEY_F5 63#define KEY_F6 64#define KEY_F7 65#define KEY_F8 66#define KEY_F9 67#define KEY_F10 68#define KEY_NUMLOCK 69#define KEY_SCROLLLOCK 70#define KEY_KP7 71#define KEY_KP8 72#define KEY_KP9 73#define KEY_KPMINUS 74#define KEY_KP4 75#define KEY_KP5 76#define KEY_KP6 77#define KEY_KPPLUS 78#define KEY_KP1 79#define KEY_KP2 80#define KEY_KP3 81#define KEY_KP0 82#define KEY_KPDOT 83#define KEY_103RD 84#define KEY_F13 85#define KEY_102ND 86#define KEY_F11 87#define KEY_F12 88#define KEY_F14 89#define KEY_F15 90#define KEY_F16 91#define KEY_F17 92#define KEY_F18 93#define KEY_F19 94#define KEY_F20 95#define KEY_KPENTER 96#define KEY_RIGHTCTRL 97#define KEY_KPSLASH 98#define KEY_SYSRQ 99#define KEY_RIGHTALT 100#define KEY_LINEFEED 101#define KEY_HOME 102#define KEY_UP 103#define KEY_PAGEUP 104#define KEY_LEFT 105#define KEY_RIGHT 106#define KEY_END 107#define KEY_DOWN 108#define KEY_PAGEDOWN 109#define KEY_INSERT 110#define KEY_DELETE 111#define KEY_MACRO 112#define KEY_MUTE 113#define KEY_VOLUMEDOWN 114#define KEY_VOLUMEUP 115#define KEY_POWER 116#define KEY_KPEQUAL 117#define KEY_KPPLUSMINUS 118#define KEY_PAUSE 119#define KEY_F21 120#define KEY_F22 121#define KEY_F23 122#define KEY_F24 123#define KEY_KPCOMMA 124#define KEY_LEFTMETA 125#define KEY_RIGHTMETA 126#define KEY_COMPOSE 127#define KEY_STOP 128#define KEY_AGAIN 129#define KEY_PROPS 130#define KEY_UNDO 131#define KEY_FRONT 132#define KEY_COPY 133#define KEY_OPEN 134#define KEY_PASTE 135#define KEY_FIND 136#define KEY_CUT 137#define KEY_HELP 138#define KEY_MENU 139#define KEY_CALC 140#define KEY_SETUP 141#define KEY_SLEEP 142#define KEY_WAKEUP 143#define KEY_FILE 144#define KEY_SENDFILE 145#define KEY_DELETEFILE 146#define KEY_XFER 147#define KEY_PROG1 148#define KEY_PROG2 149#define KEY_WWW 150#define KEY_MSDOS 151#define KEY_COFFEE 152#define KEY_DIRECTION 153#define KEY_CYCLEWINDOWS 154#define KEY_MAIL 155#define KEY_BOOKMARKS 156#define KEY_COMPUTER 157#define KEY_BACK 158#define KEY_FORWARD 159#define KEY_CLOSECD 160#define KEY_EJECTCD 161#define KEY_EJECTCLOSECD 162#define KEY_NEXTSONG 163#define KEY_PLAYPAUSE 164#define KEY_PREVIOUSSONG 165#define KEY_STOPCD 166#define KEY_RECORD 167#define KEY_REWIND 168#define KEY_PHONE 169#define KEY_ISO 170#define KEY_CONFIG 171#define KEY_HOMEPAGE 172#define KEY_REFRESH 173#define KEY_EXIT 174#define KEY_MOVE 175#define KEY_EDIT 176#define KEY_SCROLLUP 177#define KEY_SCROLLDOWN 178#define KEY_KPLEFTPAREN 179#define KEY_KPRIGHTPAREN 180#define KEY_INTL1 181#define KEY_INTL2 182#define KEY_INTL3 183#define KEY_INTL4 184#define KEY_INTL5 185#define KEY_INTL6 186#define KEY_INTL7 187#define KEY_INTL8 188#define KEY_INTL9 189#define KEY_LANG1 190#define KEY_LANG2 191#define KEY_LANG3 192#define KEY_LANG4 193#define KEY_LANG5 194#define KEY_LANG6 195#define KEY_LANG7 196#define KEY_LANG8 197#define KEY_LANG9 198#define KEY_PLAYCD 200#define KEY_PAUSECD 201#define KEY_PROG3 202#define KEY_PROG4 203#define KEY_SUSPEND 205#define KEY_CLOSE 206#define KEY_UNKNOWN 220#define KEY_BRIGHTNESSDOWN 224#define KEY_BRIGHTNESSUP 225#define BTN_MISC 0x100#define BTN_0 0x100#define BTN_1 0x101#define BTN_2 0x102#define BTN_3 0x103#define BTN_4 0x104#define BTN_5 0x105#define BTN_6 0x106#define BTN_7 0x107#define BTN_8 0x108#define BTN_9 0x109#define BTN_MOUSE 0x110#define BTN_LEFT 0x110#define BTN_RIGHT 0x111#define BTN_MIDDLE 0x112#define BTN_SIDE 0x113#define BTN_EXTRA 0x114#define BTN_FORWARD 0x115#define BTN_BACK 0x116#define BTN_TASK 0x117#define BTN_JOYSTICK 0x120#define BTN_TRIGGER 0x120#define BTN_THUMB 0x121#define BTN_THUMB2 0x122#define BTN_TOP 0x123#define BTN_TOP2 0x124#define BTN_PINKIE 0x125#define BTN_BASE 0x126#define BTN_BASE2 0x127#define BTN_BASE3 0x128#define BTN_BASE4 0x129#define BTN_BASE5 0x12a#define BTN_BASE6 0x12b#define BTN_DEAD 0x12f#define BTN_GAMEPAD 0x130#define BTN_A 0x130#define BTN_B 0x131#define BTN_C 0x132#define BTN_X 0x133#define BTN_Y 0x134#define BTN_Z 0x135#define BTN_TL 0x136#define BTN_TR 0x137#define BTN_TL2 0x138#define BTN_TR2 0x139#define BTN_SELECT 0x13a#define BTN_START 0x13b#define BTN_MODE 0x13c#define BTN_THUMBL 0x13d#define BTN_THUMBR 0x13e#define BTN_DIGI 0x140#define BTN_TOOL_PEN 0x140#define BTN_TOOL_RUBBER 0x141#define BTN_TOOL_BRUSH 0x142#define BTN_TOOL_PENCIL 0x143#define BTN_TOOL_AIRBRUSH 0x144#define BTN_TOOL_FINGER 0x145#define BTN_TOOL_MOUSE 0x146#define BTN_TOOL_LENS 0x147#define BTN_TOUCH 0x14a#define BTN_STYLUS 0x14b#define BTN_STYLUS2 0x14c#define BTN_TOOL_DOUBLETAP 0x14d#define BTN_TOOL_TRIPLETAP 0x14e#define BTN_WHEEL 0x150#define BTN_GEAR_DOWN 0x150#define BTN_GEAR_UP 0x151#define KEY_MAX 0x1ff/* Relative axes */#define REL_X 0x00#define REL_Y 0x01#define REL_Z 0x02#define REL_RX 0x03#define REL_RY 0x04#define REL_RZ 0x05#define REL_HWHEEL 0x06#define REL_DIAL 0x07#define REL_WHEEL 0x08#define REL_MISC 0x09#define REL_MAX 0x0f/* Absolute axes */#define ABS_X 0x00#define ABS_Y 0x01#define ABS_Z 0x02#define ABS_RX 0x03#define ABS_RY 0x04#define ABS_RZ 0x05#define ABS_THROTTLE 0x06#define ABS_RUDDER 0x07#define ABS_WHEEL 0x08#define ABS_GAS 0x09#define ABS_BRAKE 0x0a#define ABS_HAT0X 0x10#define ABS_HAT0Y 0x11#define ABS_HAT1X 0x12#define ABS_HAT1Y 0x13#define ABS_HAT2X 0x14#define ABS_HAT2Y 0x15#define ABS_HAT3X 0x16#define ABS_HAT3Y 0x17#define ABS_PRESSURE 0x18#define ABS_DISTANCE 0x19#define ABS_TILT_X 0x1a#define ABS_TILT_Y 0x1b#define ABS_TOOL_WIDTH 0x1c#define ABS_VOLUME 0x20#define ABS_MISC 0x28#define ABS_MAX 0x3f/* Switch events */#define SW_0 0x00#define SW_1 0x01#define SW_2 0x02#define SW_3 0x03#define SW_4 0x04#define SW_5 0x05#define SW_6 0x06#define SW_7 0x07#define SW_MAX 0x0f/* Misc events */#define MSC_SERIAL 0x00#define MSC_PULSELED 0x01#define MSC_GESTURE 0x02#define MSC_RAW 0x03#define MSC_SCAN 0x04#define MSC_MAX 0x07/* LEDs */#define LED_NUML 0x00#define LED_CAPSL 0x01#define LED_SCROLLL 0x02#define LED_COMPOSE 0x03#define LED_KANA 0x04#define LED_SLEEP 0x05#define LED_SUSPEND 0x06#define LED_MUTE 0x07#define LED_MISC 0x08#define LED_MAIL 0x09#define LED_CHARGING 0x0a#define LED_MAX 0x0f/* Autorepeat values */#define REP_DELAY 0x00#define REP_PERIOD 0x01#define REP_MAX 0x01/* Sounds */#define SND_CLICK 0x00#define SND_BELL 0x01#define SND_TONE 0x02#define SND_MAX 0x07/* Identifiers */#define ID_BUS 0#define ID_VENDOR 1#define ID_PRODUCT 2#define ID_VERSION 3#define BUS_PCI 0x01#define BUS_ISAPNP 0x02#define BUS_USB 0x03#define BUS_HIL 0x04#define BUS_BLUETOOTH 0x05#define BUS_ISA 0x10#define BUS_I8042 0x11#define BUS_XTKBD 0x12#define BUS_RS232 0x13#define BUS_GAMEPORT 0x14#define BUS_PARPORT 0x15#define BUS_AMIGA 0x16#define BUS_ADB 0x17#define BUS_I2C 0x18#define BUS_HOST 0x19#define BUS_GSC 0x1A/* User input interface */#define UINPUT_IOCTL_BASE 'U'#define UI_DEV_CREATE _IO(UINPUT_IOCTL_BASE, 1)#define UI_DEV_DESTROY _IO(UINPUT_IOCTL_BASE, 2)#define UI_SET_EVBIT _IOW(UINPUT_IOCTL_BASE, 100, int)#define UI_SET_KEYBIT _IOW(UINPUT_IOCTL_BASE, 101, int)#define UI_SET_RELBIT _IOW(UINPUT_IOCTL_BASE, 102, int)#define UI_SET_ABSBIT _IOW(UINPUT_IOCTL_BASE, 103, int)#define UI_SET_MSCBIT _IOW(UINPUT_IOCTL_BASE, 104, int)#define UI_SET_LEDBIT _IOW(UINPUT_IOCTL_BASE, 105, int)#define UI_SET_SNDBIT _IOW(UINPUT_IOCTL_BASE, 106, int)#define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int)#define UI_SET_PHYS _IOW(UINPUT_IOCTL_BASE, 108, char*)#define UI_SET_SWBIT _IOW(UINPUT_IOCTL_BASE, 109, int)#ifndef NBITS#define NBITS(x) ((((x) - 1) / (sizeof(long) * 8)) + 1)#endif#define UINPUT_MAX_NAME_SIZE 80struct uinput_id { uint16_t bustype; uint16_t vendor; uint16_t product; uint16_t version;};struct uinput_dev { char name[UINPUT_MAX_NAME_SIZE]; struct uinput_id id; int ff_effects_max; int absmax[ABS_MAX + 1]; int absmin[ABS_MAX + 1]; int absfuzz[ABS_MAX + 1]; int absflat[ABS_MAX + 1];};struct uinput_event { struct timeval time; uint16_t type; uint16_t code; int32_t value;};#ifdef __cplusplus}#endif#endif /* __UINPUT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -