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);