diff options
-rw-r--r-- | share/man/man4/joy.4 | 19 | ||||
-rw-r--r-- | share/man/man4/man4.i386/joy.4 | 19 | ||||
-rw-r--r-- | sys/dev/joy/joy.c | 12 | ||||
-rw-r--r-- | sys/i386/include/joystick.h | 7 | ||||
-rw-r--r-- | sys/i386/isa/joy.c | 12 | ||||
-rw-r--r-- | sys/isa/joy.c | 12 | ||||
-rw-r--r-- | sys/sys/joystick.h | 7 |
7 files changed, 58 insertions, 30 deletions
diff --git a/share/man/man4/joy.4 b/share/man/man4/joy.4 index 70d148e..76bcbc8 100644 --- a/share/man/man4/joy.4 +++ b/share/man/man4/joy.4 @@ -12,12 +12,19 @@ the PC joystick. .Pp This device may be opened by only one process at a time. .Pp -The joystick status is get in an array of 4 integers via a read() -call. -.br -The X and Y positions are stored in values 0 and 1 of the array, -and the state of the 2 buttons are stores in values 2 and 3 of the -array. Positions are typically in the range 0-2000. +The joystick status is get in an structure joystick via a read() +call. The structure is defined in the header file as follows: +.Pp +.Bd -literal -offset indent + struct joystick { + int x; /* x position */ + int y; /* y position */ + int b1; /* button 1 status */ + int b2; /* button 2 status */ + }; +.Ed +.Pp +Positions are typically in the range 0-2000. .Ss One line perl example: perl -e 'open(JOY,"/dev/joy0")||die;while(1) .br diff --git a/share/man/man4/man4.i386/joy.4 b/share/man/man4/man4.i386/joy.4 index 70d148e..76bcbc8 100644 --- a/share/man/man4/man4.i386/joy.4 +++ b/share/man/man4/man4.i386/joy.4 @@ -12,12 +12,19 @@ the PC joystick. .Pp This device may be opened by only one process at a time. .Pp -The joystick status is get in an array of 4 integers via a read() -call. -.br -The X and Y positions are stored in values 0 and 1 of the array, -and the state of the 2 buttons are stores in values 2 and 3 of the -array. Positions are typically in the range 0-2000. +The joystick status is get in an structure joystick via a read() +call. The structure is defined in the header file as follows: +.Pp +.Bd -literal -offset indent + struct joystick { + int x; /* x position */ + int y; /* y position */ + int b1; /* button 1 status */ + int b2; /* button 2 status */ + }; +.Ed +.Pp +Positions are typically in the range 0-2000. .Ss One line perl example: perl -e 'open(JOY,"/dev/joy0")||die;while(1) .br diff --git a/sys/dev/joy/joy.c b/sys/dev/joy/joy.c index aacd92e..77ef121 100644 --- a/sys/dev/joy/joy.c +++ b/sys/dev/joy/joy.c @@ -129,7 +129,7 @@ joyread (dev_t dev, struct uio *uio, int flag) int port = joy[unit].port; int i, t0, t1; int state = 0, x = 0, y = 0; - int c[4]; + struct joystick c; disable_intr (); outb (port, 0xff); @@ -151,12 +151,12 @@ joyread (dev_t dev, struct uio *uio, int flag) break; } enable_intr (); - c[0] = x ? joy[unit].x_off[joypart(dev)] + ticks2usec(t0-x) : 0x80000000; - c[1] = y ? joy[unit].y_off[joypart(dev)] + ticks2usec(t0-y) : 0x80000000; + c.x = x ? joy[unit].x_off[joypart(dev)] + ticks2usec(t0-x) : 0x80000000; + c.y = y ? joy[unit].y_off[joypart(dev)] + ticks2usec(t0-y) : 0x80000000; state >>= 4; - c[2] = ~state & 1; - c[3] = ~(state >> 1) & 1; - return uiomove (c, 4*sizeof(int), uio); + c.b1 = ~state & 1; + c.b2 = ~(state >> 1) & 1; + return uiomove (&c, sizeof(struct joystick), uio); } int joyioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) { diff --git a/sys/i386/include/joystick.h b/sys/i386/include/joystick.h index 2ba31a6..d070ac0 100644 --- a/sys/i386/include/joystick.h +++ b/sys/i386/include/joystick.h @@ -4,6 +4,13 @@ #include <sys/types.h> #include <sys/ioctl.h> +struct joystick { + int x; + int y; + int b1; + int b2; +}; + #define JOY_SETTIMEOUT _IOW('J', 1, int) /* set timeout */ #define JOY_GETTIMEOUT _IOR('J', 2, int) /* get timeout */ #define JOY_SET_X_OFFSET _IOW('J', 3, int) /* set offset on X-axis */ diff --git a/sys/i386/isa/joy.c b/sys/i386/isa/joy.c index aacd92e..77ef121 100644 --- a/sys/i386/isa/joy.c +++ b/sys/i386/isa/joy.c @@ -129,7 +129,7 @@ joyread (dev_t dev, struct uio *uio, int flag) int port = joy[unit].port; int i, t0, t1; int state = 0, x = 0, y = 0; - int c[4]; + struct joystick c; disable_intr (); outb (port, 0xff); @@ -151,12 +151,12 @@ joyread (dev_t dev, struct uio *uio, int flag) break; } enable_intr (); - c[0] = x ? joy[unit].x_off[joypart(dev)] + ticks2usec(t0-x) : 0x80000000; - c[1] = y ? joy[unit].y_off[joypart(dev)] + ticks2usec(t0-y) : 0x80000000; + c.x = x ? joy[unit].x_off[joypart(dev)] + ticks2usec(t0-x) : 0x80000000; + c.y = y ? joy[unit].y_off[joypart(dev)] + ticks2usec(t0-y) : 0x80000000; state >>= 4; - c[2] = ~state & 1; - c[3] = ~(state >> 1) & 1; - return uiomove (c, 4*sizeof(int), uio); + c.b1 = ~state & 1; + c.b2 = ~(state >> 1) & 1; + return uiomove (&c, sizeof(struct joystick), uio); } int joyioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) { diff --git a/sys/isa/joy.c b/sys/isa/joy.c index aacd92e..77ef121 100644 --- a/sys/isa/joy.c +++ b/sys/isa/joy.c @@ -129,7 +129,7 @@ joyread (dev_t dev, struct uio *uio, int flag) int port = joy[unit].port; int i, t0, t1; int state = 0, x = 0, y = 0; - int c[4]; + struct joystick c; disable_intr (); outb (port, 0xff); @@ -151,12 +151,12 @@ joyread (dev_t dev, struct uio *uio, int flag) break; } enable_intr (); - c[0] = x ? joy[unit].x_off[joypart(dev)] + ticks2usec(t0-x) : 0x80000000; - c[1] = y ? joy[unit].y_off[joypart(dev)] + ticks2usec(t0-y) : 0x80000000; + c.x = x ? joy[unit].x_off[joypart(dev)] + ticks2usec(t0-x) : 0x80000000; + c.y = y ? joy[unit].y_off[joypart(dev)] + ticks2usec(t0-y) : 0x80000000; state >>= 4; - c[2] = ~state & 1; - c[3] = ~(state >> 1) & 1; - return uiomove (c, 4*sizeof(int), uio); + c.b1 = ~state & 1; + c.b2 = ~(state >> 1) & 1; + return uiomove (&c, sizeof(struct joystick), uio); } int joyioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) { diff --git a/sys/sys/joystick.h b/sys/sys/joystick.h index 2ba31a6..d070ac0 100644 --- a/sys/sys/joystick.h +++ b/sys/sys/joystick.h @@ -4,6 +4,13 @@ #include <sys/types.h> #include <sys/ioctl.h> +struct joystick { + int x; + int y; + int b1; + int b2; +}; + #define JOY_SETTIMEOUT _IOW('J', 1, int) /* set timeout */ #define JOY_GETTIMEOUT _IOR('J', 2, int) /* get timeout */ #define JOY_SET_X_OFFSET _IOW('J', 3, int) /* set offset on X-axis */ |