gadgets-OSC/functions/joyutils.c
2024-03-31 21:25:19 +02:00

68 lines
1.5 KiB
C

/*
* joystick utility functions
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <linux/joystick.h>
#include "joyutils.h"
/* ----------------------------------------------------------------- */
static char *type2txt(unsigned char type)
{
static char temp[100];
if (!(type & JS_EVENT_INIT)) {
switch(type) {
case JS_EVENT_BUTTON: return "button";
case JS_EVENT_AXIS: return "axis";
}
}
else {
sprintf(temp, "init %d", type & 0x7f);
return temp;
}
return "???";
}
/* ----------------------------------------------------------------- */
void dump_my_joystick(char *joy_device)
{
int joy_fd, foo;
struct js_event js;
int flag = 0;
unsigned long debut;
char joy_name[128];
if( ( joy_fd = open(joy_device , O_RDONLY)) == -1 ) {
fprintf(stderr, "%s: couldn't open %s\n", __func__, joy_device);
exit(1);
}
if (ioctl(joy_fd, JSIOCGNAME(sizeof(joy_name)), joy_name) < 0)
strncpy(joy_name, "Unknown", sizeof(joy_name));
fprintf(stderr, "Name: \"%s\"\n", joy_name);
for (;;) {
foo = read(joy_fd, &js, sizeof(struct js_event));
if (8 != foo) {
fprintf(stderr, "%s: err reading joy\n", __func__);
exit(1);
}
if ( ! flag ) {
debut = js.time;
flag = 1;
}
printf("%8lu %4d %-8s %3d %7d\n",
js.time-debut,
js.type, type2txt(js.type),
js.number, js.value);
}
}
/* ----------------------------------------------------------------- */
/* ----------------------------------------------------------------- */