diff options
Diffstat (limited to 'input')
-rw-r--r-- | input/input.c | 9 | ||||
-rw-r--r-- | input/input.h | 1 | ||||
-rw-r--r-- | input/joystick.c | 216 | ||||
-rw-r--r-- | input/keycodes.c | 36 | ||||
-rw-r--r-- | input/keycodes.h | 37 |
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) |