summaryrefslogtreecommitdiffstats
path: root/input
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-03-24 16:02:48 +0100
committerwm4 <wm4@nowhere>2015-03-24 16:04:44 +0100
commit9b5a7241e88f8147a391f1bb79ce01593a02d443 (patch)
treec6b986d7d29b9828c9d7e1c758416f3988763f41 /input
parent1e659a9f0f3a3836912c66ab75b5af38e632ef12 (diff)
downloadmpv-9b5a7241e88f8147a391f1bb79ce01593a02d443.tar.bz2
mpv-9b5a7241e88f8147a391f1bb79ce01593a02d443.tar.xz
input: remove Linux joystick support
Why did this exist in the first place? Other than being completely useless, this even caused some regressions in the past. For example, there was the case of a laptop exposing its accelerometer as joystick device, which led to extremely fun things due to the default mappings of axis movement being mapped to seeking. I suppose those who really want to use their joystick to control a media player (???) can configure it as mouse device or so.
Diffstat (limited to 'input')
-rw-r--r--input/input.c9
-rw-r--r--input/input.h1
-rw-r--r--input/joystick.c216
-rw-r--r--input/keycodes.c36
-rw-r--r--input/keycodes.h37
5 files changed, 0 insertions, 299 deletions
diff --git a/input/input.c b/input/input.c
index b6719fc297..6bbba907d1 100644
--- a/input/input.c
+++ b/input/input.c
@@ -163,8 +163,6 @@ struct input_opts {
// Autorepeat config (be aware of mp_input_set_repeat_info())
int ar_delay;
int ar_rate;
- char *js_dev;
- int use_joystick;
int use_alt_gr;
int use_appleremote;
int use_media_keys;
@@ -182,11 +180,9 @@ const struct m_sub_options input_config = {
OPT_INT("ar-rate", ar_rate, CONF_GLOBAL),
OPT_PRINT("keylist", mp_print_key_list),
OPT_PRINT("cmdlist", mp_print_cmd_list),
- OPT_STRING("js-dev", js_dev, CONF_GLOBAL),
OPT_FLAG("default-bindings", default_bindings, CONF_GLOBAL),
OPT_FLAG("test", test, CONF_GLOBAL),
OPT_INTRANGE("doubleclick-time", doubleclick_time, 0, 0, 1000),
- OPT_FLAG("joystick", use_joystick, CONF_GLOBAL),
OPT_FLAG("right-alt-gr", use_alt_gr, CONF_GLOBAL),
OPT_INTRANGE("key-fifo-size", key_fifo_size, CONF_GLOBAL, 2, 65000),
OPT_FLAG("cursor", enable_mouse_movements, CONF_GLOBAL),
@@ -1244,11 +1240,6 @@ void mp_input_load(struct input_ctx *ictx)
MP_VERBOSE(ictx, "Falling back on default (hardcoded) input config\n");
}
-#if HAVE_JOYSTICK
- if (input_conf->use_joystick)
- mp_input_joystick_add(ictx, input_conf->js_dev);
-#endif
-
if (input_conf->use_alt_gr) {
ictx->using_alt_gr = true;
}
diff --git a/input/input.h b/input/input.h
index b684903ef5..c26273088f 100644
--- a/input/input.h
+++ b/input/input.h
@@ -257,7 +257,6 @@ void mp_input_run_cmd(struct input_ctx *ictx, const char **cmd);
void mp_input_set_repeat_info(struct input_ctx *ictx, int rate, int delay);
void mp_input_pipe_add(struct input_ctx *ictx, const char *filename);
-void mp_input_joystick_add(struct input_ctx *ictx, char *dev);
struct mp_ipc_ctx;
struct mp_client_api;
diff --git a/input/joystick.c b/input/joystick.c
deleted file mode 100644
index e3df106735..0000000000
--- a/input/joystick.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * This file is part of MPlayer.
- *
- * MPlayer is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * MPlayer is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with MPlayer; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "input.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <poll.h>
-
-#include "common/common.h"
-#include "common/msg.h"
-#include "keycodes.h"
-
-#ifndef JOY_AXIS_DELTA
-#define JOY_AXIS_DELTA 500
-#endif
-
-#ifndef JS_DEV
-#define JS_DEV "/dev/input/js0"
-#endif
-
-#include <linux/joystick.h>
-
-struct ctx {
- struct mp_log *log;
- int axis[256];
- int btns;
- int fd;
-};
-
-static int close_js(void *ctx, int fd)
-{
- close(fd);
- talloc_free(ctx);
- return 0;
-}
-
-static struct ctx *joystick_init(struct input_ctx *ictx, struct mp_log *log, char *dev)
-{
- int fd,l=0;
- int initialized = 0;
- struct js_event ev;
-
- mp_verbose(log, "Opening joystick device %s\n",dev ? dev : JS_DEV);
-
- fd = open( dev ? dev : JS_DEV , O_RDONLY | O_NONBLOCK );
- if(fd < 0) {
- mp_err(log, "Can't open joystick device %s: %s\n",dev ? dev : JS_DEV,
- mp_strerror(errno));
- return NULL;
- }
-
- struct ctx *ctx = talloc_ptrtype(NULL, ctx);
- *ctx = (struct ctx) {.log = log};
-
- while(! initialized) {
- l = 0;
- while((unsigned int)l < sizeof(struct js_event)) {
- int r = read(fd,((char*)&ev)+l,sizeof(struct js_event)-l);
- if(r < 0) {
- if(errno == EINTR)
- continue;
- else if(errno == EAGAIN) {
- initialized = 1;
- break;
- }
- MP_ERR(ctx, "Error while reading joystick device: %s\n",
- mp_strerror(errno));
- close(fd);
- talloc_free(ctx);
- return NULL;
- }
- l += r;
- }
- if((unsigned int)l < sizeof(struct js_event)) {
- if(l > 0)
- MP_WARN(ctx, "Joystick: We lose %d bytes of data\n",l);
- break;
- }
- if(ev.type == JS_EVENT_BUTTON)
- ctx->btns |= (ev.value << ev.number);
- if(ev.type == JS_EVENT_AXIS)
- ctx->axis[ev.number] = ev.value;
- }
-
- ctx->fd = fd;
- return ctx;
-}
-
-static int mp_input_joystick_read(void *pctx, int fd) {
- struct ctx *ctx = pctx;
- struct js_event ev;
- int l=0;
-
- while((unsigned int)l < sizeof(struct js_event)) {
- int r = read(fd,((char*)&ev)+l,sizeof(struct js_event)-l);
- if(r <= 0) {
- if(errno == EINTR)
- continue;
- else if(errno == EAGAIN)
- return 0;
- if( r < 0) {
- MP_ERR(ctx, "Error while reading joystick device: %s\n",
- mp_strerror(errno));
- } else {
- MP_ERR(ctx, "Error while reading joystick device: %s\n","EOF");
- }
- return -1;
- }
- l += r;
- }
-
- if((unsigned int)l < sizeof(struct js_event)) {
- if(l > 0)
- MP_WARN(ctx, "Joystick: We lose %d bytes of data\n",l);
- return 0;
- }
-
- if(ev.type & JS_EVENT_INIT) {
- MP_WARN(ctx, "Joystick: warning init event, we have lost sync with driver.\n");
- ev.type &= ~JS_EVENT_INIT;
- if(ev.type == JS_EVENT_BUTTON) {
- int s = (ctx->btns >> ev.number) & 1;
- if(s == ev.value) // State is the same : ignore
- return 0;
- }
- if(ev.type == JS_EVENT_AXIS) {
- if( ( ctx->axis[ev.number] == 1 && ev.value > JOY_AXIS_DELTA) ||
- (ctx->axis[ev.number] == -1 && ev.value < -JOY_AXIS_DELTA) ||
- (ctx->axis[ev.number] == 0 && ev.value >= -JOY_AXIS_DELTA && ev.value <= JOY_AXIS_DELTA)
- ) // State is the same : ignore
- return 0;
- }
- }
-
- if(ev.type & JS_EVENT_BUTTON) {
- ctx->btns &= ~(1 << ev.number);
- ctx->btns |= (ev.value << ev.number);
- if(ev.value == 1)
- return (MP_JOY_BTN0 + ev.number) | MP_KEY_STATE_DOWN;
- else
- return (MP_JOY_BTN0 + ev.number) | MP_KEY_STATE_UP;
- } else if(ev.type & JS_EVENT_AXIS) {
- if(ev.value < -JOY_AXIS_DELTA && ctx->axis[ev.number] != -1) {
- ctx->axis[ev.number] = -1;
- return (MP_JOY_AXIS0_MINUS+(2*ev.number)) | MP_KEY_STATE_DOWN;
- } else if(ev.value > JOY_AXIS_DELTA && ctx->axis[ev.number] != 1) {
- ctx->axis[ev.number] = 1;
- return (MP_JOY_AXIS0_PLUS+(2*ev.number)) | MP_KEY_STATE_DOWN;
- } else if(ev.value <= JOY_AXIS_DELTA && ev.value >= -JOY_AXIS_DELTA && ctx->axis[ev.number] != 0) {
- int r = ctx->axis[ev.number] == 1 ? MP_JOY_AXIS0_PLUS+(2*ev.number) : MP_JOY_AXIS0_MINUS+(2*ev.number);
- ctx->axis[ev.number] = 0;
- return r | MP_KEY_STATE_UP;
- } else
- return 0;
- } else {
- MP_WARN(ctx, "Joystick warning unknown event type %d\n",ev.type);
- return -1;
- }
-
- return 0;
-}
-
-static void read_joystick_thread(struct mp_input_src *src, void *param)
-{
- int wakeup_fd = mp_input_src_get_wakeup_fd(src);
- struct ctx *ctx = joystick_init(src->input_ctx, src->log, param);
-
- if (!ctx)
- return;
-
- mp_input_src_init_done(src);
-
- while (1) {
- struct pollfd fds[2] = {
- { .fd = ctx->fd, .events = POLLIN },
- { .fd = wakeup_fd, .events = POLLIN },
- };
- poll(fds, 2, -1);
- if (!(fds[0].revents & POLLIN))
- break;
- int r = mp_input_joystick_read(ctx, ctx->fd);
- if (r < 0)
- break;
- if (r > 0)
- mp_input_put_key(src->input_ctx, r);
- }
-
- close_js(ctx, ctx->fd);
-}
-
-void mp_input_joystick_add(struct input_ctx *ictx, char *dev)
-{
- mp_input_add_thread_src(ictx, (void *)dev, read_joystick_thread);
-}
diff --git a/input/keycodes.c b/input/keycodes.c
index 012fd006ce..ce59bd7e9b 100644
--- a/input/keycodes.c
+++ b/input/keycodes.c
@@ -118,42 +118,6 @@ static const struct key_name key_names[] = {
{ MP_MOUSE_BTN17_DBL, "MOUSE_BTN17_DBL" },
{ MP_MOUSE_BTN18_DBL, "MOUSE_BTN18_DBL" },
{ MP_MOUSE_BTN19_DBL, "MOUSE_BTN19_DBL" },
- { MP_JOY_AXIS1_MINUS, "JOY_UP" },
- { MP_JOY_AXIS1_PLUS, "JOY_DOWN" },
- { MP_JOY_AXIS0_MINUS, "JOY_LEFT" },
- { MP_JOY_AXIS0_PLUS, "JOY_RIGHT" },
-
- { MP_JOY_AXIS0_PLUS, "JOY_AXIS0_PLUS" },
- { MP_JOY_AXIS0_MINUS, "JOY_AXIS0_MINUS" },
- { MP_JOY_AXIS1_PLUS, "JOY_AXIS1_PLUS" },
- { MP_JOY_AXIS1_MINUS, "JOY_AXIS1_MINUS" },
- { MP_JOY_AXIS2_PLUS, "JOY_AXIS2_PLUS" },
- { MP_JOY_AXIS2_MINUS, "JOY_AXIS2_MINUS" },
- { MP_JOY_AXIS3_PLUS, "JOY_AXIS3_PLUS" },
- { MP_JOY_AXIS3_MINUS, "JOY_AXIS3_MINUS" },
- { MP_JOY_AXIS4_PLUS, "JOY_AXIS4_PLUS" },
- { MP_JOY_AXIS4_MINUS, "JOY_AXIS4_MINUS" },
- { MP_JOY_AXIS5_PLUS, "JOY_AXIS5_PLUS" },
- { MP_JOY_AXIS5_MINUS, "JOY_AXIS5_MINUS" },
- { MP_JOY_AXIS6_PLUS, "JOY_AXIS6_PLUS" },
- { MP_JOY_AXIS6_MINUS, "JOY_AXIS6_MINUS" },
- { MP_JOY_AXIS7_PLUS, "JOY_AXIS7_PLUS" },
- { MP_JOY_AXIS7_MINUS, "JOY_AXIS7_MINUS" },
- { MP_JOY_AXIS8_PLUS, "JOY_AXIS8_PLUS" },
- { MP_JOY_AXIS8_MINUS, "JOY_AXIS8_MINUS" },
- { MP_JOY_AXIS9_PLUS, "JOY_AXIS9_PLUS" },
- { MP_JOY_AXIS9_MINUS, "JOY_AXIS9_MINUS" },
-
- { MP_JOY_BTN0, "JOY_BTN0" },
- { MP_JOY_BTN1, "JOY_BTN1" },
- { MP_JOY_BTN2, "JOY_BTN2" },
- { MP_JOY_BTN3, "JOY_BTN3" },
- { MP_JOY_BTN4, "JOY_BTN4" },
- { MP_JOY_BTN5, "JOY_BTN5" },
- { MP_JOY_BTN6, "JOY_BTN6" },
- { MP_JOY_BTN7, "JOY_BTN7" },
- { MP_JOY_BTN8, "JOY_BTN8" },
- { MP_JOY_BTN9, "JOY_BTN9" },
{ MP_AR_PLAY, "AR_PLAY" },
{ MP_AR_PLAY_HOLD, "AR_PLAY_HOLD" },
diff --git a/input/keycodes.h b/input/keycodes.h
index 7df93af6f4..44d71b3872 100644
--- a/input/keycodes.h
+++ b/input/keycodes.h
@@ -97,43 +97,6 @@
#define MP_KEY_KPDEL (MP_KEY_KEYPAD+12)
#define MP_KEY_KPENTER (MP_KEY_KEYPAD+13)
-
-// Joystick input module
-#define MP_JOY_BASE (MP_KEY_BASE+0x70)
-#define MP_JOY_AXIS0_PLUS (MP_JOY_BASE+0)
-#define MP_JOY_AXIS0_MINUS (MP_JOY_BASE+1)
-#define MP_JOY_AXIS1_PLUS (MP_JOY_BASE+2)
-#define MP_JOY_AXIS1_MINUS (MP_JOY_BASE+3)
-#define MP_JOY_AXIS2_PLUS (MP_JOY_BASE+4)
-#define MP_JOY_AXIS2_MINUS (MP_JOY_BASE+5)
-#define MP_JOY_AXIS3_PLUS (MP_JOY_BASE+6)
-#define MP_JOY_AXIS3_MINUS (MP_JOY_BASE+7)
-#define MP_JOY_AXIS4_PLUS (MP_JOY_BASE+8)
-#define MP_JOY_AXIS4_MINUS (MP_JOY_BASE+9)
-#define MP_JOY_AXIS5_PLUS (MP_JOY_BASE+10)
-#define MP_JOY_AXIS5_MINUS (MP_JOY_BASE+11)
-#define MP_JOY_AXIS6_PLUS (MP_JOY_BASE+12)
-#define MP_JOY_AXIS6_MINUS (MP_JOY_BASE+13)
-#define MP_JOY_AXIS7_PLUS (MP_JOY_BASE+14)
-#define MP_JOY_AXIS7_MINUS (MP_JOY_BASE+15)
-#define MP_JOY_AXIS8_PLUS (MP_JOY_BASE+16)
-#define MP_JOY_AXIS8_MINUS (MP_JOY_BASE+17)
-#define MP_JOY_AXIS9_PLUS (MP_JOY_BASE+18)
-#define MP_JOY_AXIS9_MINUS (MP_JOY_BASE+19)
-
-#define MP_JOY_BTN_BASE ((MP_KEY_BASE+0x90)|MP_NO_REPEAT_KEY)
-#define MP_JOY_BTN0 (MP_JOY_BTN_BASE+0)
-#define MP_JOY_BTN1 (MP_JOY_BTN_BASE+1)
-#define MP_JOY_BTN2 (MP_JOY_BTN_BASE+2)
-#define MP_JOY_BTN3 (MP_JOY_BTN_BASE+3)
-#define MP_JOY_BTN4 (MP_JOY_BTN_BASE+4)
-#define MP_JOY_BTN5 (MP_JOY_BTN_BASE+5)
-#define MP_JOY_BTN6 (MP_JOY_BTN_BASE+6)
-#define MP_JOY_BTN7 (MP_JOY_BTN_BASE+7)
-#define MP_JOY_BTN8 (MP_JOY_BTN_BASE+8)
-#define MP_JOY_BTN9 (MP_JOY_BTN_BASE+9)
-
-
// Mouse events from VOs
#define MP_MOUSE_BASE ((MP_KEY_BASE+0xA0)|MP_NO_REPEAT_KEY|MP_KEY_EMIT_ON_UP)
#define MP_MOUSE_BTN0 (MP_MOUSE_BASE+0)