blob: abb61f919c22d8c537dd90505b0e86bc7195dc54 [file] [log] [blame]
module core.sys.linux.uinput;
version (linux):
extern(C):
nothrow:
import core.sys.posix.sys.ioctl;
public import core.sys.linux.input;
public import core.sys.linux.input_event_codes;
enum UINPUT_VERSION = 5;
enum UINPUT_MAX_NAME_SIZE = 80;
struct uinput_ff_upload
{
uint request_id;
int retval;
ff_effect effect;
ff_effect old;
}
struct uinput_ff_erase
{
uint request_id;
int retval;
uint effect_id;
}
enum UINPUT_IOCTL_BASE = 'U';
enum UI_DEV_CREATE = _IO(UINPUT_IOCTL_BASE, 1);
enum UI_DEV_DESTROY = _IO(UINPUT_IOCTL_BASE, 2);
struct uinput_setup
{
input_id id;
char[UINPUT_MAX_NAME_SIZE] name;
uint ff_effects_max;
}
enum UI_DEV_SETUP = _IOW!uinput_setup(UINPUT_IOCTL_BASE, 3);
struct uinput_abs_setup
{
ushort code;
input_absinfo absinfo;
}
enum UI_ABS_SETUP = _IOW!uinput_abs_setup(UINPUT_IOCTL_BASE, 4);
enum UI_SET_EVBIT = _IOW!int(UINPUT_IOCTL_BASE, 100);
enum UI_SET_KEYBIT = _IOW!int(UINPUT_IOCTL_BASE, 101);
enum UI_SET_RELBIT = _IOW!int(UINPUT_IOCTL_BASE, 102);
enum UI_SET_ABSBIT = _IOW!int(UINPUT_IOCTL_BASE, 103);
enum UI_SET_MSCBIT = _IOW!int(UINPUT_IOCTL_BASE, 104);
enum UI_SET_LEDBIT = _IOW!int(UINPUT_IOCTL_BASE, 105);
enum UI_SET_SNDBIT = _IOW!int(UINPUT_IOCTL_BASE, 106);
enum UI_SET_FFBIT = _IOW!int(UINPUT_IOCTL_BASE, 107);
enum UI_SET_PHYS = _IOW!(char*)(UINPUT_IOCTL_BASE, 108);
enum UI_SET_SWBIT = _IOW!int(UINPUT_IOCTL_BASE, 109);
enum UI_SET_PROPBIT = _IOW!int(UINPUT_IOCTL_BASE, 110);
enum UI_BEGIN_FF_UPLOAD = _IOWR!uinput_ff_upload(UINPUT_IOCTL_BASE, 200);
enum UI_END_FF_UPLOAD = _IOW!uinput_ff_upload(UINPUT_IOCTL_BASE, 201);
enum UI_BEGIN_FF_ERASE = _IOWR!uinput_ff_erase(UINPUT_IOCTL_BASE, 202);
enum UI_END_FF_ERASE = _IOW!uinput_ff_erase(UINPUT_IOCTL_BASE, 203);
enum UI_GET_SYSNAME(len) = _IOC(_IOC_READ, UINPUT_IOCTL_BASE, 44, len);
enum UI_GET_VERSION = _IOR!uint(UINPUT_IOCTL_BASE, 45);
enum EV_UINPUT = 0x0101;
enum UI_FF_UPLOAD = 1;
enum UI_FF_ERASE = 2;
struct uinput_user_dev {
char[UINPUT_MAX_NAME_SIZE] name;
input_id id;
uint ff_effects_max;
int[ABS_CNT] absmax;
int[ABS_CNT] absmin;
int[ABS_CNT] absfuzz;
int[ABS_CNT] absflat;
}