Files
Iain Buclaw e9251fea2d d: Merge upstream dmd, druntime a88e1335f7, phobos 1921d29df.
D front-end changes:

	- Import dmd v2.104.1.
	- Deprecation phase ended for access to private method when
	  overloaded with public method.

D runtime changes:

	- Import druntime v2.104.1.
	- Linux input header translations were added to druntime.
	- Integration with the Valgrind `memcheck' tool has been added
	  to the garbage collector.

Phobos changes:

	- Import phobos v2.104.1.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd a88e1335f7.
	* dmd/VERSION: Bump version to v2.104.1.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime a88e1335f7.
	* src/MERGE: Merge upstream phobos 1921d29df.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* configure.ac (libphobos-checking): Add valgrind flag.
	(DRUNTIME_LIBRARIES_VALGRIND): Call.
	* libdruntime/Makefile.am (DRUNTIME_CSOURCES): Add
	etc/valgrind/valgrind_.c.
	(DRUNTIME_DSOURCES): Add etc/valgrind/valgrind.d.
	(DRUNTIME_DSOURCES_LINUX): Add core/sys/linux/input.d,
	core/sys/linux/input_event_codes.d, core/sys/linux/uinput.d.
	* libdruntime/Makefile.in: Regenerate.
	* m4/druntime/libraries.m4 (DRUNTIME_LIBRARIES_VALGRIND): Define.
2023-07-10 23:31:29 +02:00

237 lines
5.0 KiB
D

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