| module core.sys.linux.input; |
| |
| version (linux): |
| extern(C): |
| nothrow: |
| |
| import core.sys.linux.sys.time; |
| import core.sys.posix.sys.ioctl; |
| |
| public import core.sys.linux.input_event_codes; |
| |
| struct input_event |
| { |
| timeval time; |
| ushort type; |
| ushort code; |
| int value; |
| } |
| |
| enum EV_VERSION = 0x010001; |
| |
| struct input_id |
| { |
| ushort bustype; |
| ushort vendor; |
| ushort product; |
| ushort version_; |
| } |
| |
| struct input_absinfo |
| { |
| int value; |
| int minimum; |
| int maximum; |
| int fuzz; |
| int flat; |
| int resolution; |
| } |
| |
| enum INPUT_KEYMAP_BY_INDEX = (1 << 0); |
| struct input_keymap_entry |
| { |
| ubyte flags; |
| ubyte len; |
| ushort index; |
| uint keycode; |
| ubyte[32] scancode; |
| } |
| |
| struct input_mask |
| { |
| uint type; |
| uint codes_size; |
| ulong codes_ptr; |
| } |
| |
| enum EVIOCGVERSION = _IOR!int('E', 0x01); |
| enum EVIOCGID = _IOR!input_id('E', 0x02); |
| enum EVIOCGREP = _IOR!(uint[2])('E', 0x03); |
| enum EVIOCSREP = _IOW!(uint[2])('E', 0x03); |
| |
| enum EVIOCGKEYCODE = _IOR!(uint[2])('E', 0x04); |
| enum EVIOCGKEYCODE_V2 = _IOR!input_keymap_entry('E', 0x04); |
| enum EVIOCSKEYCODE = _IOW!(uint[2])('E', 0x04); |
| enum EVIOCSKEYCODE_V2 = _IOW!input_keymap_entry('E', 0x04); |
| |
| enum EVIOCGNAME(len) = _IOC(_IOC_READ, 'E', 0x06, len); |
| enum EVIOCGPHYS(len) = _IOC(_IOC_READ, 'E', 0x07, len); |
| enum EVIOCGUNIQ(len) = _IOC(_IOC_READ, 'E', 0x08, len); |
| enum EVIOCGPROP(len) = _IOC(_IOC_READ, 'E', 0x09, len); |
| |
| enum EVIOCGMTSLOTS(len) = _IOC(_IOC_READ, 'E', 0x0a, len); |
| |
| enum EVIOCGKEY(len) = _IOC(_IOC_READ, 'E', 0x18, len); |
| enum EVIOCGLED(len) = _IOC(_IOC_READ, 'E', 0x19, len); |
| enum EVIOCGSND(len) = _IOC(_IOC_READ, 'E', 0x1a, len); |
| enum EVIOCGSW(len) = _IOC(_IOC_READ, 'E', 0x1b, len); |
| |
| enum EVIOCGBIT(ev,len) = _IOC(_IOC_READ, 'E', 0x20 + (ev), len); |
| enum EVIOCGABS(abs) = _IOR!input_absinfo('E', 0x40 + (abs)); |
| enum EVIOCSABS(abs) = _IOW!input_absinfo('E', 0xc0 + (abs)); |
| |
| enum EVIOCSFF = _IOW!ff_effect('E', 0x80); |
| enum EVIOCRMFF = _IOW!int('E', 0x81); |
| enum EVIOCGEFFECTS = _IOR!int('E', 0x84); |
| |
| enum EVIOCGRAB = _IOW!int('E', 0x90); |
| enum EVIOCREVOKE = _IOW!int('E', 0x91); |
| |
| enum EVIOCGMASK = _IOR!input_mask('E', 0x92); |
| |
| enum EVIOCSMASK = _IOW!input_mask('E', 0x93); |
| |
| enum EVIOCSCLOCKID = _IOW!int('E', 0xa0); |
| |
| enum ID_BUS = 0; |
| enum ID_VENDOR = 1; |
| enum ID_PRODUCT = 2; |
| enum ID_VERSION = 3; |
| |
| enum BUS_PCI = 0x01; |
| enum BUS_ISAPNP = 0x02; |
| enum BUS_USB = 0x03; |
| enum BUS_HIL = 0x04; |
| enum BUS_BLUETOOTH = 0x05; |
| enum BUS_VIRTUAL = 0x06; |
| |
| enum BUS_ISA = 0x10; |
| enum BUS_I8042 = 0x11; |
| enum BUS_XTKBD = 0x12; |
| enum BUS_RS232 = 0x13; |
| enum BUS_GAMEPORT = 0x14; |
| enum BUS_PARPORT = 0x15; |
| enum BUS_AMIGA = 0x16; |
| enum BUS_ADB = 0x17; |
| enum BUS_I2C = 0x18; |
| enum BUS_HOST = 0x19; |
| enum BUS_GSC = 0x1A; |
| enum BUS_ATARI = 0x1B; |
| enum BUS_SPI = 0x1C; |
| enum BUS_RMI = 0x1D; |
| enum BUS_CEC = 0x1E; |
| enum BUS_INTEL_ISHTP = 0x1F; |
| |
| enum MT_TOOL_FINGER = 0; |
| enum MT_TOOL_PEN = 1; |
| enum MT_TOOL_PALM = 2; |
| enum MT_TOOL_MAX = 2; |
| |
| enum FF_STATUS_STOPPED = 0x00; |
| enum FF_STATUS_PLAYING = 0x01; |
| enum FF_STATUS_MAX = 0x01; |
| |
| struct ff_replay { |
| ushort length; |
| ushort delay; |
| }; |
| |
| struct ff_trigger { |
| ushort button; |
| ushort interval; |
| }; |
| |
| struct ff_envelope { |
| ushort attack_length; |
| ushort attack_level; |
| ushort fade_length; |
| ushort fade_level; |
| }; |
| |
| struct ff_constant_effect { |
| short level; |
| ff_envelope envelope; |
| }; |
| |
| struct ff_ramp_effect { |
| short start_level; |
| short end_level; |
| ff_envelope envelope; |
| }; |
| |
| struct ff_condition_effect { |
| ushort right_saturation; |
| ushort left_saturation; |
| |
| short right_coeff; |
| short left_coeff; |
| |
| ushort deadband; |
| short center; |
| }; |
| |
| struct ff_periodic_effect { |
| ushort waveform; |
| ushort period; |
| short magnitude; |
| short offset; |
| ushort phase; |
| |
| ff_envelope envelope; |
| |
| uint custom_len; |
| short *custom_data; |
| }; |
| |
| struct ff_rumble_effect { |
| ushort strong_magnitude; |
| ushort weak_magnitude; |
| }; |
| |
| struct ff_effect { |
| ushort type; |
| short id; |
| ushort direction; |
| ff_trigger trigger; |
| ff_replay replay; |
| |
| union U { |
| ff_constant_effect constant; |
| ff_ramp_effect ramp; |
| ff_periodic_effect periodic; |
| ff_condition_effect[2] condition; |
| ff_rumble_effect rumble; |
| } |
| U u; |
| }; |
| |
| enum FF_RUMBLE = 0x50; |
| enum FF_PERIODIC = 0x51; |
| enum FF_CONSTANT = 0x52; |
| enum FF_SPRING = 0x53; |
| enum FF_FRICTION = 0x54; |
| enum FF_DAMPER = 0x55; |
| enum FF_INERTIA = 0x56; |
| enum FF_RAMP = 0x57; |
| |
| enum FF_EFFECT_MIN = FF_RUMBLE; |
| enum FF_EFFECT_MAX = FF_RAMP; |
| |
| enum FF_SQUARE = 0x58; |
| enum FF_TRIANGLE = 0x59; |
| enum FF_SINE = 0x5a; |
| enum FF_SAW_UP = 0x5b; |
| enum FF_SAW_DOWN = 0x5c; |
| enum FF_CUSTOM = 0x5d; |
| |
| enum FF_WAVEFORM_MIN = FF_SQUARE; |
| enum FF_WAVEFORM_MAX = FF_CUSTOM; |
| |
| enum FF_GAIN = 0x60; |
| enum FF_AUTOCENTER = 0x61; |
| |
| enum FF_MAX_EFFECTS = FF_GAIN; |
| |
| enum FF_MAX = 0x7f; |
| enum FF_CNT = (FF_MAX+1); |