summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/man/man4/joy.419
-rw-r--r--share/man/man4/man4.i386/joy.419
-rw-r--r--sys/dev/joy/joy.c12
-rw-r--r--sys/i386/include/joystick.h7
-rw-r--r--sys/i386/isa/joy.c12
-rw-r--r--sys/isa/joy.c12
-rw-r--r--sys/sys/joystick.h7
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 */
OpenPOWER on IntegriCloud