Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08791e5c authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: ressurect EVIOCGREP and EVIOCSREP



While writing to an event device allows to set repeat rate for an
individual input device there is no way to retrieve current settings
so we need to ressurect EVIOCGREP. Also ressurect EVIOCSREP so we
have a symmetrical interface.

Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 89c9b480
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -403,6 +403,27 @@ static long evdev_ioctl_handler(struct file *file, unsigned int cmd,
		case EVIOCGID:
			if (copy_to_user(p, &dev->id, sizeof(struct input_id)))
				return -EFAULT;
			return 0;

		case EVIOCGREP:
			if (!test_bit(EV_REP, dev->evbit))
				return -ENOSYS;
			if (put_user(dev->rep[REP_DELAY], ip))
				return -EFAULT;
			if (put_user(dev->rep[REP_PERIOD], ip + 1))
				return -EFAULT;
			return 0;

		case EVIOCSREP:
			if (!test_bit(EV_REP, dev->evbit))
				return -ENOSYS;
			if (get_user(u, ip))
				return -EFAULT;
			if (get_user(v, ip + 1))
				return -EFAULT;

			input_event(dev, EV_REP, REP_DELAY, u);
			input_event(dev, EV_REP, REP_PERIOD, v);

			return 0;

+2 −0
Original line number Diff line number Diff line
@@ -56,6 +56,8 @@ struct input_absinfo {

#define EVIOCGVERSION		_IOR('E', 0x01, int)			/* get driver version */
#define EVIOCGID		_IOR('E', 0x02, struct input_id)	/* get device ID */
#define EVIOCGREP		_IOR('E', 0x03, int[2])			/* get repeat settings */
#define EVIOCSREP		_IOW('E', 0x03, int[2])			/* set repeat settings */
#define EVIOCGKEYCODE		_IOR('E', 0x04, int[2])			/* get keycode */
#define EVIOCSKEYCODE		_IOW('E', 0x04, int[2])			/* set keycode */