📄 input.h
字号:
#ifndef _INPUT_H#define _INPUT_H/* * $Id: input.h,v 1.18 2000/07/25 21:36:56 vojtech Exp $ * * Copyright (c) 1999-2000 Vojtech Pavlik * * Sponsored by SuSE *//* * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Should you need to contact me, the author, you can do so either by * e-mail - mail your message to <vojtech@suse.cz>, or by paper mail: * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic */#ifdef __KERNEL__#include <linux/time.h>#else#include <sys/time.h>#include <sys/ioctl.h>#endif/* * The event structure itself */struct input_event { struct timeval time; unsigned short type; unsigned short code; unsigned int value;};/* * Protocol version. */#define EV_VERSION 0x010000/* * IOCTLs (0x00 - 0x7f) */#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */#define EVIOCGID _IOR('E', 0x02, short[4]) /* get device ID */#define EVIOCGREP _IOR('E', 0x03, int[2]) /* get repeat settings */#define EVIOCSREP _IOW('E', 0x03, int[2]) /* get repeat settings */#define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */#define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */#define EVIOCGKEY _IOR('E', 0x05, int[2]) /* get key value */#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + ev, len) /* get event bits */#define EVIOCGABS(abs) _IOR('E', 0x40 + abs, int[5]) /* get abs value/limits */ /* * Event types */#define EV_RST 0x00#define EV_KEY 0x01#define EV_REL 0x02#define EV_ABS 0x03#define EV_LED 0x11#define EV_SND 0x12#define EV_REP 0x14#define EV_MAX 0x1f/* * 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_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_UNKNOWN 200#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_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_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_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 KEY_MAX 0x1ff/* * Relative axes */#define REL_X 0x00#define REL_Y 0x01#define REL_Z 0x02#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_MISC 0x1c#define ABS_MAX 0x1f/* * LEDs */#define LED_NUML 0x00#define LED_CAPSL 0x01#define LED_SCROLLL 0x02#define LED_COMPOSE 0x03#define LED_KANA 0x04#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_MAX 0x07/* * IDs. */#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_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#ifdef __KERNEL__/* * In-kernel definitions. */#include <linux/sched.h>#include <linux/devfs_fs_kernel.h>#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)#define BIT(x) (1UL<<((x)%BITS_PER_LONG))#define LONG(x) ((x)/BITS_PER_LONG)struct input_dev { void *private; int number; char *name; unsigned short idbus; unsigned short idvendor; unsigned short idproduct; unsigned short idversion; unsigned long evbit[NBITS(EV_MAX)]; unsigned long keybit[NBITS(KEY_MAX)]; unsigned long relbit[NBITS(REL_MAX)]; unsigned long absbit[NBITS(ABS_MAX)]; unsigned long ledbit[NBITS(LED_MAX)]; unsigned long sndbit[NBITS(SND_MAX)]; unsigned int keycodemax; unsigned int keycodesize; void *keycode; unsigned int repeat_key; struct timer_list timer; int abs[ABS_MAX + 1]; int rep[REP_MAX + 1]; unsigned long key[NBITS(KEY_MAX)]; unsigned long led[NBITS(LED_MAX)]; unsigned long snd[NBITS(SND_MAX)]; int absmax[ABS_MAX + 1]; int absmin[ABS_MAX + 1]; int absfuzz[ABS_MAX + 1]; int absflat[ABS_MAX + 1]; int (*open)(struct input_dev *dev); void (*close)(struct input_dev *dev); int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value); struct input_handle *handle; struct input_dev *next;};struct input_handler { void *private; void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value); struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev); void (*disconnect)(struct input_handle *handle); struct file_operations *fops; int minor; struct input_handle *handle; struct input_handler *next;};struct input_handle { void *private; int open; struct input_dev *dev; struct input_handler *handler; struct input_handle *dnext; struct input_handle *hnext;};void input_register_device(struct input_dev *);void input_unregister_device(struct input_dev *);void input_register_handler(struct input_handler *);void input_unregister_handler(struct input_handler *);int input_open_device(struct input_handle *);void input_close_device(struct input_handle *);devfs_handle_t input_register_minor(char *name, int minor, int minor_base);void input_unregister_minor(devfs_handle_t handle);void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);#define input_report_key(a,b,c) input_event(a, EV_KEY, b, !!(c))#define input_report_rel(a,b,c) input_event(a, EV_REL, b, c)#define input_report_abs(a,b,c) input_event(a, EV_ABS, b, c)#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -