134 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */2/*3 * Copyright (C) 1996-2000 Vojtech Pavlik4 *5 * Sponsored by SuSE6 */7/*8 * This program is free software; you can redistribute it and/or modify9 * it under the terms of the GNU General Public License as published by10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version.12 * 13 * This program is distributed in the hope that it will be useful,14 * but WITHOUT ANY WARRANTY; without even the implied warranty of15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the16 * GNU General Public License for more details.17 * 18 * You should have received a copy of the GNU General Public License19 * along with this program; if not, write to the Free Software20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA21 */22#ifndef _UAPI_LINUX_JOYSTICK_H23#define _UAPI_LINUX_JOYSTICK_H24 25 26 27#include <linux/types.h>28#include <linux/input.h>29 30/*31 * Version32 */33 34#define JS_VERSION 0x02010035 36/*37 * Types and constants for reading from /dev/js38 */39 40#define JS_EVENT_BUTTON 0x01 /* button pressed/released */41#define JS_EVENT_AXIS 0x02 /* joystick moved */42#define JS_EVENT_INIT 0x80 /* initial state of device */43 44struct js_event {45 __u32 time; /* event timestamp in milliseconds */46 __s16 value; /* value */47 __u8 type; /* event type */48 __u8 number; /* axis/button number */49};50 51/*52 * IOCTL commands for joystick driver53 */54 55#define JSIOCGVERSION _IOR('j', 0x01, __u32) /* get driver version */56 57#define JSIOCGAXES _IOR('j', 0x11, __u8) /* get number of axes */58#define JSIOCGBUTTONS _IOR('j', 0x12, __u8) /* get number of buttons */59#define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) /* get identifier string */60 61#define JSIOCSCORR _IOW('j', 0x21, struct js_corr) /* set correction values */62#define JSIOCGCORR _IOR('j', 0x22, struct js_corr) /* get correction values */63 64#define JSIOCSAXMAP _IOW('j', 0x31, __u8[ABS_CNT]) /* set axis mapping */65#define JSIOCGAXMAP _IOR('j', 0x32, __u8[ABS_CNT]) /* get axis mapping */66#define JSIOCSBTNMAP _IOW('j', 0x33, __u16[KEY_MAX - BTN_MISC + 1]) /* set button mapping */67#define JSIOCGBTNMAP _IOR('j', 0x34, __u16[KEY_MAX - BTN_MISC + 1]) /* get button mapping */68 69/*70 * Types and constants for get/set correction71 */72 73#define JS_CORR_NONE 0x00 /* returns raw values */74#define JS_CORR_BROKEN 0x01 /* broken line */75 76struct js_corr {77 __s32 coef[8];78 __s16 prec;79 __u16 type;80};81 82/*83 * v0.x compatibility definitions84 */85 86#define JS_RETURN sizeof(struct JS_DATA_TYPE)87#define JS_TRUE 188#define JS_FALSE 089#define JS_X_0 0x0190#define JS_Y_0 0x0291#define JS_X_1 0x0492#define JS_Y_1 0x0893#define JS_MAX 294 95#define JS_DEF_TIMEOUT 0x130096#define JS_DEF_CORR 097#define JS_DEF_TIMELIMIT 10L98 99#define JS_SET_CAL 1100#define JS_GET_CAL 2101#define JS_SET_TIMEOUT 3102#define JS_GET_TIMEOUT 4103#define JS_SET_TIMELIMIT 5104#define JS_GET_TIMELIMIT 6105#define JS_GET_ALL 7106#define JS_SET_ALL 8107 108struct JS_DATA_TYPE {109 __s32 buttons;110 __s32 x;111 __s32 y;112};113 114struct JS_DATA_SAVE_TYPE_32 {115 __s32 JS_TIMEOUT;116 __s32 BUSY;117 __s32 JS_EXPIRETIME;118 __s32 JS_TIMELIMIT;119 struct JS_DATA_TYPE JS_SAVE;120 struct JS_DATA_TYPE JS_CORR;121};122 123struct JS_DATA_SAVE_TYPE_64 {124 __s32 JS_TIMEOUT;125 __s32 BUSY;126 __s64 JS_EXPIRETIME;127 __s64 JS_TIMELIMIT;128 struct JS_DATA_TYPE JS_SAVE;129 struct JS_DATA_TYPE JS_CORR;130};131 132 133#endif /* _UAPI_LINUX_JOYSTICK_H */134