Mercurial > mplayer.hg
annotate input/input.c @ 10579:f25d93203a71
From: Kir Kostuchenko <kir@users.sourceforge.net>
Hi, I found that command line options brightness, hue, contrast and
saturation does not works, becouse mplayer apply it, before open tv
(kernel says invalid ioctl). Here are simple fix. Please apply.
author | gabucino |
---|---|
date | Tue, 12 Aug 2003 11:32:51 +0000 |
parents | 7e5733a8c33b |
children | e4c79edf2be9 |
rev | line source |
---|---|
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1 #include "../config.h" |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
2 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
3 #include <stdlib.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
4 #include <string.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
5 #include <stdio.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
6 #include <unistd.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
7 #include <errno.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
8 #include <signal.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
9 #include <sys/types.h> |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
10 #include <sys/stat.h> |
4525 | 11 #include <sys/time.h> |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
12 #include <fcntl.h> |
6394 | 13 #include <ctype.h> |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
14 |
7870
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
15 #ifdef USE_SETLOCALE |
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
16 #include <locale.h> |
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
17 #endif |
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
18 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
19 #include "input.h" |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
20 #include "mouse.h" |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
21 #ifdef MP_DEBUG |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
22 #include <assert.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
23 #endif |
9380 | 24 #include "../osdep/getch2.h" |
25 #include "../osdep/keycodes.h" | |
26 #include "../osdep/timer.h" | |
8164
487cfc28525d
New config system + cleanup of header inter dependency
albeu
parents:
7912
diff
changeset
|
27 #include "../mp_msg.h" |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
28 #include "../cfgparser.h" |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
29 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
30 #include "joystick.h" |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
31 |
4432 | 32 #ifdef HAVE_LIRC |
33 #include "lirc.h" | |
34 #endif | |
35 | |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
36 #ifdef HAVE_LIRCC |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
37 #include <lirc/lircc.h> |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
38 #endif |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
39 |
10398 | 40 /// This array defines all known commands. |
41 /// The first field is an id used to recognize the command without too many strcmp. | |
42 /// The second is obviously the command name. | |
43 /// The third is the minimum number of arguments this command needs. | |
44 /// Then comes the definition of each argument, terminated with an arg of type -1. | |
45 /// A command can take a maximum of MP_CMD_MAX_ARGS-1 arguments (-1 because of | |
46 /// the last one) which is actually 9. | |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
47 |
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
48 /// For the args, the first field is the type (actually int, float or string), the second |
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
49 /// is the default value wich is used for optional arguments |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
50 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
51 static mp_cmd_t mp_cmds[] = { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
52 { MP_CMD_SEEK, "seek", 1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
53 #ifdef USE_EDL |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
54 { MP_CMD_EDL_MARK, "edl_mark", 0, { {-1,{0}} } }, |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
55 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
56 { MP_CMD_AUDIO_DELAY, "audio_delay", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
57 { MP_CMD_QUIT, "quit", 0, { {-1,{0}} } }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
58 { MP_CMD_PAUSE, "pause", 0, { {-1,{0}} } }, |
5053
146513806b2f
lexical fixes (COSMETIC :)) and one 'real fix': grap_frames -> grab_frames -- feel free to flame and reverse
alex
parents:
5046
diff
changeset
|
59 { MP_CMD_GRAB_FRAMES, "grab_frames",0, { {-1,{0}} } }, |
5135 | 60 { MP_CMD_PLAY_TREE_STEP, "pt_step",1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } }, |
61 { MP_CMD_PLAY_TREE_UP_STEP, "pt_up_step",1, { { MP_CMD_ARG_INT,{0} }, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } }, | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
62 { MP_CMD_PLAY_ALT_SRC_STEP, "alt_src_step",1, { { MP_CMD_ARG_INT,{0} }, {-1,{0}} } }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
63 { MP_CMD_SUB_DELAY, "sub_delay",1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
8365
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
64 { MP_CMD_SUB_STEP, "sub_step",1, { { MP_CMD_ARG_INT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
65 { MP_CMD_OSD, "osd",0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
10116
add63fea61ac
new slave mode command to show text via osd, patch by Lars Gemeinhardt <lars.gemeinhardt at searchbroker.de> (reviewed by albeu)
faust3
parents:
9891
diff
changeset
|
66 { MP_CMD_OSD_SHOW_TEXT, "osd_show_text", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
7055 | 67 { MP_CMD_VOLUME, "volume", 1, { { MP_CMD_ARG_INT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
68 { MP_CMD_MIXER_USEMASTER, "use_master", 0, { {-1,{0}} } }, |
6311
da2dda48b7ec
add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents:
6304
diff
changeset
|
69 { MP_CMD_MUTE, "mute", 0, { {-1,{0}} } }, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
70 { MP_CMD_CONTRAST, "contrast",1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
7517
9d433771b6d0
-vf eq2, LUT-based brightness/contrast/gamma correction (Y-only)
arpi
parents:
7111
diff
changeset
|
71 { MP_CMD_GAMMA, "gamma", 1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
72 { MP_CMD_BRIGHTNESS, "brightness",1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
73 { MP_CMD_HUE, "hue",1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
74 { MP_CMD_SATURATION, "saturation",1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
75 { MP_CMD_FRAMEDROPPING, "frame_drop",0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } }, |
5015
9842148f6053
-subpos key bindings with new input layer - patch by Tomas Konir <moje@molly.vabo.cz>
arpi
parents:
4956
diff
changeset
|
76 { MP_CMD_SUB_POS, "sub_pos", 1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
8534
922ce27eb683
This patch adds support for vertical subtitle alignment
arpi
parents:
8531
diff
changeset
|
77 { MP_CMD_SUB_ALIGNMENT, "sub_alignment",0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
7628
d6608342591d
This patch adds the functionality to disable/enable subtitles while playing
arpi
parents:
7517
diff
changeset
|
78 { MP_CMD_SUB_VISIBILITY, "sub_visibility", 0, { {-1,{0}} } }, |
7779
f3166c864e9e
Mplayer can switch between subtitles of different languages during
kmkaplan
parents:
7628
diff
changeset
|
79 { MP_CMD_VOBSUB_LANG, "vobsub_lang", 0, { {-1,{0}} } }, |
8364 | 80 { MP_CMD_GET_PERCENT_POS, "get_percent_pos", 0, { {-1,{0}} } }, |
81 { MP_CMD_GET_TIME_LENGTH, "get_time_length", 0, { {-1,{0}} } }, | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
82 #ifdef USE_TV |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
83 { MP_CMD_TV_STEP_CHANNEL, "tv_step_channel", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
84 { MP_CMD_TV_STEP_NORM, "tv_step_norm",0, { {-1,{0}} } }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
85 { MP_CMD_TV_STEP_CHANNEL_LIST, "tv_step_chanlist", 0, { {-1,{0}} } }, |
8494 | 86 { MP_CMD_TV_SET_CHANNEL, "tv_set_channel", 1, { { MP_CMD_ARG_STRING, {0}}, {-1,{0}} }}, |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8534
diff
changeset
|
87 { MP_CMD_TV_LAST_CHANNEL, "tv_last_channel", 0, { {-1,{0}} } }, |
10521
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10398
diff
changeset
|
88 { MP_CMD_TV_SET_FREQ, "tv_set_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10398
diff
changeset
|
89 { MP_CMD_TV_SET_NORM, "tv_set_norm", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
10577 | 90 { MP_CMD_TV_SET_BRIGHTNESS, "tv_set_brightness", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, |
91 { MP_CMD_TV_SET_CONTRAST, "tv_set_contrast", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, | |
92 { MP_CMD_TV_SET_HUE, "tv_set_hue", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, | |
93 { MP_CMD_TV_SET_SATURATION, "tv_set_saturation", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, | |
10579
f25d93203a71
From: Kir Kostuchenko <kir@users.sourceforge.net>
gabucino
parents:
10577
diff
changeset
|
94 { MP_CMD_TV_SET_BRIGHTNESS, "tv_set_brightness", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, |
f25d93203a71
From: Kir Kostuchenko <kir@users.sourceforge.net>
gabucino
parents:
10577
diff
changeset
|
95 { MP_CMD_TV_SET_CONTRAST, "tv_set_contrast", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, |
f25d93203a71
From: Kir Kostuchenko <kir@users.sourceforge.net>
gabucino
parents:
10577
diff
changeset
|
96 { MP_CMD_TV_SET_HUE, "tv_set_hue", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, |
f25d93203a71
From: Kir Kostuchenko <kir@users.sourceforge.net>
gabucino
parents:
10577
diff
changeset
|
97 { MP_CMD_TV_SET_SATURATION, "tv_set_saturation", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
98 #endif |
4732 | 99 { MP_CMD_VO_FULLSCREEN, "vo_fullscreen", 0, { {-1,{0}} } }, |
6112 | 100 { MP_CMD_SCREENSHOT, "screenshot", 0, { {-1,{0}} } }, |
6304
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6183
diff
changeset
|
101 { MP_CMD_PANSCAN, "panscan",1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
6818
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6757
diff
changeset
|
102 { MP_CMD_LOADFILE, "loadfile", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6757
diff
changeset
|
103 { MP_CMD_LOADLIST, "loadlist", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
6888
2dde1a1bc03a
Add the input command "change_rectangle" to control the rectangle
kmkaplan
parents:
6818
diff
changeset
|
104 { MP_CMD_VF_CHANGE_RECTANGLE, "change_rectangle", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}}}}, |
4858 | 105 |
106 #ifdef HAVE_NEW_GUI | |
107 { MP_CMD_GUI_LOADFILE, "gui_loadfile", 0, { {-1,{0}} } }, | |
108 { MP_CMD_GUI_LOADSUBTITLE, "gui_loadsubtitle", 0, { {-1,{0}} } }, | |
109 { MP_CMD_GUI_ABOUT, "gui_about", 0, { {-1,{0}} } }, | |
110 { MP_CMD_GUI_PLAY, "gui_play", 0, { {-1,{0}} } }, | |
111 { MP_CMD_GUI_STOP, "gui_stop", 0, { {-1,{0}} } }, | |
112 { MP_CMD_GUI_PLAYLIST, "gui_playlist", 0, { {-1,{0}} } }, | |
113 { MP_CMD_GUI_PREFERENCES, "gui_preferences", 0, { {-1,{0}} } }, | |
114 { MP_CMD_GUI_SKINBROWSER, "gui_skinbrowser", 0, { {-1,{0}} } }, | |
115 #endif | |
5380
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
116 |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
117 #ifdef USE_DVDNAV |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
118 { MP_CMD_DVDNAV, "dvdnav", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
5473
39dae98304af
dvdnav event added, queue size 10->100, added void* event arg type - dvdnav patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5380
diff
changeset
|
119 { MP_CMD_DVDNAV_EVENT, "dvdnav_event", 1, { { MP_CMD_ARG_VOID, {0}}, {-1, {0}} } }, |
5380
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
120 #endif |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
121 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
122 #ifdef HAVE_MENU |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
123 { MP_CMD_MENU, "menu",1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
124 { MP_CMD_SET_MENU, "set_menu",1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
125 { MP_CMD_CHELP, "help", 0, { {-1,{0}} } }, |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
126 { MP_CMD_CEXIT, "exit", 0, { {-1,{0}} } }, |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
127 { MP_CMD_CHIDE, "hide", 0, { {MP_CMD_ARG_INT,{3000}}, {-1,{0}} } }, |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
128 { MP_CMD_CRUN, "run", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
129 #endif |
4858 | 130 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
131 { 0, NULL, 0, {} } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
132 }; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
133 |
10398 | 134 /// The names of the keys as used in input.conf |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
135 /// If you add some new keys, you also need to add them here |
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
136 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
137 static mp_key_name_t key_names[] = { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
138 { ' ', "SPACE" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
139 { KEY_ENTER, "ENTER" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
140 { KEY_TAB, "TAB" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
141 { KEY_CTRL, "CTRL" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
142 { KEY_BACKSPACE, "BS" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
143 { KEY_DELETE, "DEL" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
144 { KEY_INSERT, "INS" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
145 { KEY_HOME, "HOME" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
146 { KEY_END, "END" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
147 { KEY_PAGE_UP, "PGUP" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
148 { KEY_PAGE_DOWN, "PGDWN" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
149 { KEY_ESC, "ESC" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
150 { KEY_RIGHT, "RIGHT" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
151 { KEY_LEFT, "LEFT" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
152 { KEY_DOWN, "DOWN" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
153 { KEY_UP, "UP" }, |
9891
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
154 { KEY_F+1, "F1" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
155 { KEY_F+2, "F2" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
156 { KEY_F+3, "F3" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
157 { KEY_F+4, "F4" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
158 { KEY_F+5, "F5" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
159 { KEY_F+6, "F6" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
160 { KEY_F+7, "F7" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
161 { KEY_F+8, "F8" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
162 { KEY_F+9, "F9" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
163 { KEY_F+10, "F10" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
164 { KEY_KP0, "KP0" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
165 { KEY_KP1, "KP1" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
166 { KEY_KP2, "KP2" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
167 { KEY_KP3, "KP3" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
168 { KEY_KP4, "KP4" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
169 { KEY_KP5, "KP5" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
170 { KEY_KP6, "KP6" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
171 { KEY_KP7, "KP7" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
172 { KEY_KP8, "KP8" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
173 { KEY_KP9, "KP9" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
174 { KEY_KPDEL, "KP_DEL" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
175 { KEY_KPDEC, "KP_DEL" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
176 { KEY_KPINS, "KP0" }, |
150d1ef4204d
keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents:
9836
diff
changeset
|
177 { KEY_KPENTER, "KP_ENTER" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
178 { MOUSE_BTN0, "MOUSE_BTN0" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
179 { MOUSE_BTN1, "MOUSE_BTN1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
180 { MOUSE_BTN2, "MOUSE_BTN2" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
181 { MOUSE_BTN3, "MOUSE_BTN3" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
182 { MOUSE_BTN4, "MOUSE_BTN4" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
183 { MOUSE_BTN5, "MOUSE_BTN5" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
184 { MOUSE_BTN6, "MOUSE_BTN6" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
185 { MOUSE_BTN7, "MOUSE_BTN7" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
186 { MOUSE_BTN8, "MOUSE_BTN8" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
187 { MOUSE_BTN9, "MOUSE_BTN9" }, |
4524
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
188 { JOY_AXIS1_MINUS, "JOY_UP" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
189 { JOY_AXIS1_PLUS, "JOY_DOWN" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
190 { JOY_AXIS0_MINUS, "JOY_LEFT" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
191 { JOY_AXIS0_PLUS, "JOY_RIGHT" }, |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
192 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
193 { JOY_AXIS0_PLUS, "JOY_AXIS0_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
194 { JOY_AXIS0_MINUS, "JOY_AXIS0_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
195 { JOY_AXIS1_PLUS, "JOY_AXIS1_PLUS" }, |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
196 { JOY_AXIS1_MINUS, "JOY_AXIS1_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
197 { JOY_AXIS2_PLUS, "JOY_AXIS2_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
198 { JOY_AXIS2_MINUS, "JOY_AXIS2_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
199 { JOY_AXIS3_PLUS, "JOY_AXIS3_PLUS" }, |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
200 { JOY_AXIS3_MINUS, "JOY_AXIS3_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
201 { JOY_AXIS4_PLUS, "JOY_AXIS4_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
202 { JOY_AXIS4_MINUS, "JOY_AXIS4_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
203 { JOY_AXIS5_PLUS, "JOY_AXIS5_PLUS" }, |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
204 { JOY_AXIS5_MINUS, "JOY_AXIS5_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
205 { JOY_AXIS6_PLUS, "JOY_AXIS6_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
206 { JOY_AXIS6_MINUS, "JOY_AXIS6_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
207 { JOY_AXIS7_PLUS, "JOY_AXIS7_PLUS" }, |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
208 { JOY_AXIS7_MINUS, "JOY_AXIS7_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
209 { JOY_AXIS8_PLUS, "JOY_AXIS8_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
210 { JOY_AXIS8_MINUS, "JOY_AXIS8_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
211 { JOY_AXIS9_PLUS, "JOY_AXIS9_PLUS" }, |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
212 { JOY_AXIS9_MINUS, "JOY_AXIS9_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
213 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
214 { JOY_BTN0, "JOY_BTN0" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
215 { JOY_BTN1, "JOY_BTN1" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
216 { JOY_BTN2, "JOY_BTN2" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
217 { JOY_BTN3, "JOY_BTN3" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
218 { JOY_BTN4, "JOY_BTN4" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
219 { JOY_BTN5, "JOY_BTN5" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
220 { JOY_BTN6, "JOY_BTN6" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
221 { JOY_BTN7, "JOY_BTN7" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
222 { JOY_BTN8, "JOY_BTN8" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
223 { JOY_BTN9, "JOY_BTN9" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
224 |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
225 { KEY_XF86_PAUSE, "XF86_PAUSE" }, |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
226 { KEY_XF86_STOP, "XF86_STOP" }, |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
227 { KEY_XF86_PREV, "XF86_PREV" }, |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
228 { KEY_XF86_NEXT, "XF86_NEXT" }, |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
229 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
230 { 0, NULL } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
231 }; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
232 |
10398 | 233 // This is the default binding. The content of input.conf overrides these. |
234 // The first arg is a null terminated array of key codes. | |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
235 // The second is the command |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
236 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
237 static mp_cmd_bind_t def_cmd_binds[] = { |
5061 | 238 |
239 { { MOUSE_BTN3, 0 }, "seek 10" }, | |
240 { { MOUSE_BTN4, 0 }, "seek -10" }, | |
241 { { MOUSE_BTN5, 0 }, "volume 1" }, | |
242 { { MOUSE_BTN6, 0 }, "volume -1" }, | |
243 | |
5380
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
244 #ifdef USE_DVDNAV |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
245 { { 'K', 0 }, "dvdnav 1" }, // up |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
246 { { 'J', 0 }, "dvdnav 2" }, // down |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
247 { { 'H', 0 }, "dvdnav 3" }, // left |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
248 { { 'L', 0 }, "dvdnav 4" }, // right |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
249 { { 'M', 0 }, "dvdnav 5" }, // menu |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
250 { { 'S', 0 }, "dvdnav 6" }, // select |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
251 #endif |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
252 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
253 { { KEY_RIGHT, 0 }, "seek 10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
254 { { KEY_LEFT, 0 }, "seek -10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
255 { { KEY_UP, 0 }, "seek 60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
256 { { KEY_DOWN, 0 }, "seek -60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
257 { { KEY_PAGE_UP, 0 }, "seek 600" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
258 { { KEY_PAGE_DOWN, 0 }, "seek -600" }, |
5136 | 259 { { '-', 0 }, "audio_delay 0.100" }, |
260 { { '+', 0 }, "audio_delay -0.100" }, | |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
261 { { 'q', 0 }, "quit" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
262 { { KEY_ESC, 0 }, "quit" }, |
5135 | 263 #ifndef HAVE_NEW_GUI |
264 { { 'p', 0 }, "pause" }, | |
265 #endif | |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
266 { { ' ', 0 }, "pause" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
267 { { KEY_HOME, 0 }, "pt_up_step 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
268 { { KEY_END, 0 }, "pt_up_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
269 { { '>', 0 }, "pt_step 1" }, |
5135 | 270 #ifndef HAVE_NEW_GUI |
271 { { KEY_ENTER, 0 }, "pt_step 1 1" }, | |
272 #endif | |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
273 { { '<', 0 }, "pt_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
274 { { KEY_INS, 0 }, "alt_src_step 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
275 { { KEY_DEL, 0 }, "alt_src_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
276 { { 'o', 0 }, "osd" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
277 { { 'z', 0 }, "sub_delay -0.1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
278 { { 'x', 0 }, "sub_delay +0.1" }, |
8365
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
279 { { 'g', 0 }, "sub_step -1" }, |
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
280 { { 'y', 0 }, "sub_step +1" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
281 { { '9', 0 }, "volume -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
282 { { '/', 0 }, "volume -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
283 { { '0', 0 }, "volume 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
284 { { '*', 0 }, "volume 1" }, |
6311
da2dda48b7ec
add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents:
6304
diff
changeset
|
285 { { 'm', 0 }, "mute" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
286 { { '1', 0 }, "contrast -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
287 { { '2', 0 }, "contrast 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
288 { { '3', 0 }, "brightness -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
289 { { '4', 0 }, "brightness 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
290 { { '5', 0 }, "hue -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
291 { { '6', 0 }, "hue 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
292 { { '7', 0 }, "saturation -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
293 { { '8', 0 }, "saturation 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
294 { { 'd', 0 }, "frame_drop" }, |
5015
9842148f6053
-subpos key bindings with new input layer - patch by Tomas Konir <moje@molly.vabo.cz>
arpi
parents:
4956
diff
changeset
|
295 { { 'r', 0 }, "sub_pos -1" }, |
9842148f6053
-subpos key bindings with new input layer - patch by Tomas Konir <moje@molly.vabo.cz>
arpi
parents:
4956
diff
changeset
|
296 { { 't', 0 }, "sub_pos +1" }, |
8921
b06f6d56d039
use 'a' for subtitle aligment instead for useless gui aboutbox
arpi
parents:
8627
diff
changeset
|
297 { { 'a', 0 }, "sub_alignment" }, |
7628
d6608342591d
This patch adds the functionality to disable/enable subtitles while playing
arpi
parents:
7517
diff
changeset
|
298 { { 'v', 0 }, "sub_visibility" }, |
7779
f3166c864e9e
Mplayer can switch between subtitles of different languages during
kmkaplan
parents:
7628
diff
changeset
|
299 { { 'j', 0 }, "vobsub_lang" }, |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
300 #ifdef USE_EDL |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
301 { { 'i', 0 }, "edl_mark" }, |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
302 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
303 #ifdef USE_TV |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
304 { { 'h', 0 }, "tv_step_channel 1" }, |
4858 | 305 { { 'k', 0 }, "tv_step_channel -1" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
306 { { 'n', 0 }, "tv_step_norm" }, |
6311
da2dda48b7ec
add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents:
6304
diff
changeset
|
307 { { 'u', 0 }, "tv_step_chanlist" }, |
4858 | 308 #endif |
309 #ifdef HAVE_NEW_GUI | |
310 { { 'l', 0 }, "gui_loadfile" }, | |
311 { { 't', 0 }, "gui_loadsubtitle" }, | |
312 { { KEY_ENTER, 0 }, "gui_play" }, | |
313 { { 's', 0 }, "gui_stop" }, | |
314 { { 'p', 0 }, "gui_playlist" }, | |
315 { { 'r', 0 }, "gui_preferences" }, | |
316 { { 'c', 0 }, "gui_skinbrowser" }, | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
317 #endif |
4525 | 318 #ifdef HAVE_JOYSTICK |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
319 { { JOY_AXIS0_PLUS, 0 }, "seek 10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
320 { { JOY_AXIS0_MINUS, 0 }, "seek -10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
321 { { JOY_AXIS1_MINUS, 0 }, "seek 60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
322 { { JOY_AXIS1_PLUS, 0 }, "seek -60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
323 { { JOY_BTN0, 0 }, "pause" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
324 { { JOY_BTN1, 0 }, "osd" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
325 { { JOY_BTN2, 0 }, "volume 1"}, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
326 { { JOY_BTN3, 0 }, "volume -1"}, |
4525 | 327 #endif |
4732 | 328 { { 'f', 0 }, "vo_fullscreen" }, |
6112 | 329 { { 's', 0 }, "screenshot" }, |
6304
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6183
diff
changeset
|
330 { { 'w', 0 }, "panscan -0.1" }, |
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6183
diff
changeset
|
331 { { 'e', 0 }, "panscan +0.1" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
332 |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
333 { { KEY_XF86_PAUSE, 0 }, "pause" }, |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
334 { { KEY_XF86_STOP, 0 }, "quit" }, |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
335 { { KEY_XF86_PREV, 0 }, "seek -60" }, |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
336 { { KEY_XF86_NEXT, 0 }, "seek +60" }, |
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
337 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
338 { { 0 }, NULL } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
339 }; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
340 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
341 #ifndef MP_MAX_KEY_FD |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
342 #define MP_MAX_KEY_FD 10 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
343 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
344 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
345 #ifndef MP_MAX_CMD_FD |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
346 #define MP_MAX_CMD_FD 10 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
347 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
348 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
349 #define MP_FD_EOF (1<<0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
350 #define MP_FD_DROP (1<<1) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
351 #define MP_FD_DEAD (1<<2) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
352 #define MP_FD_GOT_CMD (1<<3) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
353 #define MP_FD_NO_SELECT (1<<4) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
354 |
5473
39dae98304af
dvdnav event added, queue size 10->100, added void* event arg type - dvdnav patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5380
diff
changeset
|
355 #define CMD_QUEUE_SIZE 100 |
4821 | 356 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
357 typedef struct mp_input_fd { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
358 int fd; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
359 void* read_func; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
360 mp_close_func_t close_func; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
361 int flags; |
10398 | 362 // These fields are for the cmd fds. |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
363 char* buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
364 int pos,size; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
365 } mp_input_fd_t; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
366 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
367 typedef struct mp_cmd_filter_st mp_cmd_filter_t; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
368 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
369 struct mp_cmd_filter_st { |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
370 mp_input_cmd_filter filter; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
371 void* ctx; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
372 mp_cmd_filter_t* next; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
373 }; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
374 |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
375 // These are the user defined binds |
4842 | 376 static mp_cmd_bind_t* cmd_binds = NULL; |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
377 static mp_cmd_filter_t* cmd_filters = NULL; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
378 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
379 // Callback to allow the menu filter to grab the incoming keys |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
380 void (*mp_input_key_cb)(int code) = NULL; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
381 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
382 static mp_input_fd_t key_fds[MP_MAX_KEY_FD]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
383 static unsigned int num_key_fd = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
384 static mp_input_fd_t cmd_fds[MP_MAX_CMD_FD]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
385 static unsigned int num_cmd_fd = 0; |
4821 | 386 static mp_cmd_t* cmd_queue[CMD_QUEUE_SIZE]; |
387 static unsigned int cmd_queue_length = 0,cmd_queue_start = 0, cmd_queue_end = 0; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
388 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
389 // this is the key currently down |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
390 static int key_down[MP_MAX_KEY_DOWN]; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
391 static unsigned int num_key_down = 0, last_key_down = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
392 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
393 // Autorepeat stuff |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
394 static short ar_state = -1; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
395 static mp_cmd_t* ar_cmd = NULL; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
396 static unsigned int ar_delay = 100, ar_rate = 8, last_ar = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
397 |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
398 static int use_joystick = 1, use_lirc = 1, use_lircc = 1; |
6551
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
399 static char* config_file = "input.conf"; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
400 |
5722
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
401 static char* js_dev = NULL; |
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
402 |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
403 static char* in_file = NULL; |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
404 static int in_file_fd = -1; |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
405 |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
406 static int mp_input_print_key_list(config_t* cfg); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
407 static int mp_input_print_cmd_list(config_t* cfg); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
408 |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
409 // Our command line options |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
410 static config_t input_conf[] = { |
4836 | 411 { "conf", &config_file, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL }, |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
412 { "ar-delay", &ar_delay, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, NULL }, |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
413 { "ar-rate", &ar_rate, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, NULL }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
414 { "keylist", mp_input_print_key_list, CONF_TYPE_FUNC, CONF_GLOBAL, 0, 0, NULL }, |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
415 { "cmdlist", mp_input_print_cmd_list, CONF_TYPE_FUNC, CONF_GLOBAL, 0, 0, NULL }, |
5722
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
416 { "js-dev", &js_dev, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL }, |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
417 { "file", &in_file, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL }, |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
418 { NULL, NULL, 0, 0, 0, 0, NULL} |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
419 }; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
420 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
421 static config_t mp_input_opts[] = { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
422 { "input", &input_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
423 { "nojoystick", &use_joystick, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL }, |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
424 { "joystick", &use_joystick, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL }, |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
425 { "nolirc", &use_lirc, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL }, |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
426 { "lirc", &use_lirc, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL }, |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
427 { "nolircc", &use_lircc, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL }, |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
428 { "lircc", &use_lircc, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL }, |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
429 { NULL, NULL, 0, 0, 0, 0, NULL} |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
430 }; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
431 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
432 static int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
433 mp_input_default_key_func(int fd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
434 |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
435 static int |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
436 mp_input_default_cmd_func(int fd,char* buf, int l); |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
437 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
438 static char* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
439 mp_input_get_key_name(int key); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
440 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
441 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
442 int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
443 mp_input_add_cmd_fd(int fd, int select, mp_cmd_func_t read_func, mp_close_func_t close_func) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
444 if(num_cmd_fd == MP_MAX_CMD_FD) { |
10398 | 445 mp_msg(MSGT_INPUT,MSGL_ERR,"Too many command fds, unable to register fd %d.\n",fd); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
446 return 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
447 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
448 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
449 memset(&cmd_fds[num_cmd_fd],0,sizeof(mp_input_fd_t)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
450 cmd_fds[num_cmd_fd].fd = fd; |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
451 cmd_fds[num_cmd_fd].read_func = read_func ? read_func : mp_input_default_cmd_func; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
452 cmd_fds[num_cmd_fd].close_func = close_func; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
453 if(!select) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
454 cmd_fds[num_cmd_fd].flags = MP_FD_NO_SELECT; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
455 num_cmd_fd++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
456 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
457 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
458 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
459 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
460 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
461 mp_input_rm_cmd_fd(int fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
462 unsigned int i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
463 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
464 for(i = 0; i < num_cmd_fd; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
465 if(cmd_fds[i].fd == fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
466 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
467 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
468 if(i == num_cmd_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
469 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
470 if(cmd_fds[i].close_func) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
471 cmd_fds[i].close_func(cmd_fds[i].fd); |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
472 if(cmd_fds[i].buffer) |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
473 free(cmd_fds[i].buffer); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
474 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
475 if(i + 1 < num_cmd_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
476 memmove(&cmd_fds[i],&cmd_fds[i+1],(num_cmd_fd - i - 1)*sizeof(mp_input_fd_t)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
477 num_cmd_fd--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
478 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
479 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
480 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
481 mp_input_rm_key_fd(int fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
482 unsigned int i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
483 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
484 for(i = 0; i < num_key_fd; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
485 if(key_fds[i].fd == fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
486 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
487 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
488 if(i == num_key_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
489 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
490 if(key_fds[i].close_func) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
491 key_fds[i].close_func(key_fds[i].fd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
492 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
493 if(i + 1 < num_key_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
494 memmove(&key_fds[i],&key_fds[i+1],(num_key_fd - i - 1)*sizeof(mp_input_fd_t)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
495 num_key_fd--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
496 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
497 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
498 int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
499 mp_input_add_key_fd(int fd, int select, mp_key_func_t read_func, mp_close_func_t close_func) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
500 if(num_key_fd == MP_MAX_KEY_FD) { |
10398 | 501 mp_msg(MSGT_INPUT,MSGL_ERR,"Too many key fds, unable to register fd %d.\n",fd); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
502 return 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
503 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
504 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
505 memset(&key_fds[num_key_fd],0,sizeof(mp_input_fd_t)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
506 key_fds[num_key_fd].fd = fd; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
507 key_fds[num_key_fd].read_func = read_func ? read_func : mp_input_default_key_func; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
508 key_fds[num_key_fd].close_func = close_func; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
509 if(!select) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
510 key_fds[num_key_fd].flags |= MP_FD_NO_SELECT; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
511 num_key_fd++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
512 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
513 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
514 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
515 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
516 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
517 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
518 mp_cmd_t* |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
519 mp_input_parse_cmd(char* str) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
520 int i,l; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
521 char *ptr,*e; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
522 mp_cmd_t *cmd, *cmd_def; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
523 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
524 #ifdef MP_DEBUG |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
525 assert(str != NULL); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
526 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
527 |
4842 | 528 for(ptr = str ; ptr[0] != '\0' && ptr[0] != '\t' && ptr[0] != ' ' ; ptr++) |
529 /* NOTHING */; | |
530 if(ptr[0] != '\0') | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
531 l = ptr-str; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
532 else |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
533 l = strlen(str); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
534 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
535 if(l == 0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
536 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
537 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
538 for(i=0; mp_cmds[i].name != NULL; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
539 if(strncasecmp(mp_cmds[i].name,str,l) == 0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
540 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
541 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
542 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
543 if(mp_cmds[i].name == NULL) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
544 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
545 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
546 cmd_def = &mp_cmds[i]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
547 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
548 cmd = (mp_cmd_t*)malloc(sizeof(mp_cmd_t)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
549 cmd->id = cmd_def->id; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
550 cmd->name = strdup(cmd_def->name); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
551 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
552 ptr = str; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
553 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
554 for(i=0; ptr && i < MP_CMD_MAX_ARGS; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
555 ptr = strchr(ptr,' '); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
556 if(!ptr) break; |
4826 | 557 while(ptr[0] == ' ' || ptr[0] == '\t') ptr++; |
6757
f72fc85934e5
10L bugs founds by Jindrich Makovicka <makovicki at KMLinux dot fjfi dot cvuti dot cz>
albeu
parents:
6551
diff
changeset
|
558 if(ptr[0] == '\0') break; |
f72fc85934e5
10L bugs founds by Jindrich Makovicka <makovicki at KMLinux dot fjfi dot cvuti dot cz>
albeu
parents:
6551
diff
changeset
|
559 cmd->args[i].type = cmd_def->args[i].type; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
560 switch(cmd_def->args[i].type) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
561 case MP_CMD_ARG_INT: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
562 errno = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
563 cmd->args[i].v.i = atoi(ptr); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
564 if(errno != 0) { |
10398 | 565 mp_msg(MSGT_INPUT,MSGL_ERR,"Command %s: argument %d isn't an integer.\n",cmd_def->name,i+1); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
566 ptr = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
567 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
568 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
569 case MP_CMD_ARG_FLOAT: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
570 errno = 0; |
7870
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
571 /* <olo@altkom.com.pl> Use portable C locale for parsing floats: */ |
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
572 #ifdef USE_SETLOCALE |
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
573 setlocale(LC_NUMERIC, "C"); |
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
574 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
575 cmd->args[i].v.f = atof(ptr); |
7870
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
576 #ifdef USE_SETLOCALE |
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
577 setlocale(LC_NUMERIC, ""); |
b571ae470520
Fixed a bug in MPlayer which would prevent proper parsing of
arpi
parents:
7862
diff
changeset
|
578 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
579 if(errno != 0) { |
10398 | 580 mp_msg(MSGT_INPUT,MSGL_ERR,"Command %s: argument %d isn't a float.\n",cmd_def->name,i+1); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
581 ptr = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
582 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
583 break; |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
584 case MP_CMD_ARG_STRING: { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
585 char term; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
586 char* ptr2 = ptr, *start; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
587 |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
588 if(ptr[0] == '\'' || ptr[0] == '"') { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
589 term = ptr[0]; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
590 ptr2++; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
591 } else |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
592 term = ' '; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
593 start = ptr2; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
594 while(1) { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
595 e = strchr(ptr2,term); |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
596 if(!e) break; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
597 if(e <= ptr2 || *(e - 1) != '\\') break; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
598 ptr2 = e + 1; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
599 } |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
600 |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
601 if(term != ' ' && (!e || e[0] == '\0')) { |
10398 | 602 mp_msg(MSGT_INPUT,MSGL_ERR,"Command %s: argument %d is unterminated.\n",cmd_def->name,i+1); |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
603 ptr = NULL; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
604 break; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
605 } else if(!e) e = ptr+strlen(ptr); |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
606 l = e-start; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
607 cmd->args[i].v.s = (char*)malloc((l+1)*sizeof(char)); |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
608 strncpy(cmd->args[i].v.s,start,l); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
609 cmd->args[i].v.s[l] = '\0'; |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
610 ptr2 = start; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
611 for(e = strchr(ptr2,'\\') ; e ; e = strchr(ptr2,'\\')) { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
612 memmove(e,e+1,strlen(e)); |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
613 ptr2 = e + 1; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
614 } |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
615 } break; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
616 case -1: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
617 ptr = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
618 default : |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
619 mp_msg(MSGT_INPUT,MSGL_ERR,"Unknown argument %d\n",i); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
620 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
621 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
622 cmd->nargs = i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
623 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
624 if(cmd_def->nargs > cmd->nargs) { |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
625 mp_msg(MSGT_INPUT,MSGL_ERR,"Got command '%s' but\n",str); |
10398 | 626 mp_msg(MSGT_INPUT,MSGL_ERR,"command %s requires at least %d arguments, we found only %d so far.\n",cmd_def->name,cmd_def->nargs,cmd->nargs); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
627 mp_cmd_free(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
628 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
629 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
630 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
631 for( ; i < MP_CMD_MAX_ARGS && cmd_def->args[i].type != -1 ; i++) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
632 memcpy(&cmd->args[i],&cmd_def->args[i],sizeof(mp_cmd_arg_t)); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
633 if(cmd_def->args[i].type == MP_CMD_ARG_STRING && cmd_def->args[i].v.s != NULL) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
634 cmd->args[i].v.s = strdup(cmd_def->args[i].v.s); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
635 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
636 |
5200
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
637 if(i < MP_CMD_MAX_ARGS) |
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
638 cmd->args[i].type = -1; |
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
639 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
640 return cmd; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
641 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
642 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
643 static int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
644 mp_input_default_key_func(int fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
645 int r,code=0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
646 unsigned int l; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
647 l = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
648 while(l < sizeof(int)) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
649 r = read(fd,(&code)+l,sizeof(int)-l); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
650 if(r <= 0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
651 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
652 l +=r; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
653 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
654 return code; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
655 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
656 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
657 #define MP_CMD_MAX_SIZE 256 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
658 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
659 static int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
660 mp_input_read_cmd(mp_input_fd_t* mp_fd, char** ret) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
661 char* end; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
662 (*ret) = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
663 |
10398 | 664 // Allocate the buffer if it doesn't exist |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
665 if(!mp_fd->buffer) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
666 mp_fd->buffer = (char*)malloc(MP_CMD_MAX_SIZE*sizeof(char)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
667 mp_fd->pos = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
668 mp_fd->size = MP_CMD_MAX_SIZE; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
669 } |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
670 |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
671 // Get some data if needed/possible |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
672 while( !(mp_fd->flags & MP_FD_GOT_CMD) && !(mp_fd->flags & MP_FD_EOF) && (mp_fd->size - mp_fd->pos > 1) ) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
673 int r = ((mp_cmd_func_t)mp_fd->read_func)(mp_fd->fd,mp_fd->buffer+mp_fd->pos,mp_fd->size - 1 - mp_fd->pos); |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
674 // Error ? |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
675 if(r < 0) { |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
676 switch(r) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
677 case MP_INPUT_ERROR: |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
678 case MP_INPUT_DEAD: |
10398 | 679 mp_msg(MSGT_INPUT,MSGL_ERR,"Error while reading cmd fd %d: %s\n",mp_fd->fd,strerror(errno)); |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
680 case MP_INPUT_NOTHING: |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
681 return r; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
682 } |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
683 // EOF ? |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
684 } else if(r == 0) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
685 mp_fd->flags |= MP_FD_EOF; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
686 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
687 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
688 mp_fd->pos += r; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
689 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
690 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
691 |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
692 // Reset the got_cmd flag |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
693 mp_fd->flags &= ~MP_FD_GOT_CMD; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
694 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
695 while(1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
696 int l = 0; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
697 // Find the cmd end |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
698 mp_fd->buffer[mp_fd->pos] = '\0'; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
699 end = strchr(mp_fd->buffer,'\n'); |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
700 // No cmd end ? |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
701 if(!end) { |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
702 // If buffer is full we must drop all until the next \n |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
703 if(mp_fd->size - mp_fd->pos <= 1) { |
10398 | 704 mp_msg(MSGT_INPUT,MSGL_ERR,"Cmd buffer of fd %d is full: dropping content\n",mp_fd->fd); |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
705 mp_fd->pos = 0; |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
706 mp_fd->flags |= MP_FD_DROP; |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
707 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
708 break; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
709 } |
10398 | 710 // We already have a cmd : set the got_cmd flag |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
711 else if((*ret)) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
712 mp_fd->flags |= MP_FD_GOT_CMD; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
713 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
714 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
715 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
716 l = end - mp_fd->buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
717 |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
718 // Not dropping : put the cmd in ret |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
719 if( ! (mp_fd->flags & MP_FD_DROP)) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
720 (*ret) = (char*)malloc((l+1)*sizeof(char)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
721 strncpy((*ret),mp_fd->buffer,l); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
722 (*ret)[l] = '\0'; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
723 } else { // Remove the dropping flag |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
724 mp_fd->flags &= ~MP_FD_DROP; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
725 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
726 if( mp_fd->pos - (l+1) > 0) |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
727 memmove(mp_fd->buffer,end+1,mp_fd->pos-(l+1)); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
728 mp_fd->pos -= l+1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
729 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
730 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
731 if(*ret) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
732 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
733 else |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
734 return MP_INPUT_NOTHING; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
735 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
736 |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
737 static int |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
738 mp_input_default_cmd_func(int fd,char* buf, int l) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
739 |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
740 while(1) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
741 int r = read(fd,buf,l); |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
742 // Error ? |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
743 if(r < 0) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
744 if(errno == EINTR) |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
745 continue; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
746 else if(errno == EAGAIN) |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
747 return MP_INPUT_NOTHING; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
748 return MP_INPUT_ERROR; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
749 // EOF ? |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
750 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
751 return r; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
752 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
753 |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
754 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
755 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
756 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
757 void |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
758 mp_input_add_cmd_filter(mp_input_cmd_filter func, void* ctx) { |
8254
772d6d27fd66
warning patch by (Dominik Mierzejewski <dominik at rangers dot eu dot org>)
michael
parents:
8225
diff
changeset
|
759 mp_cmd_filter_t* filter = malloc(sizeof(mp_cmd_filter_t))/*, *prev*/; |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
760 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
761 filter->filter = func; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
762 filter->ctx = ctx; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
763 filter->next = cmd_filters; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
764 cmd_filters = filter; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
765 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
766 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
767 |
4842 | 768 static char* |
769 mp_input_find_bind_for_key(mp_cmd_bind_t* binds, int n,int* keys) { | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
770 int j; |
4842 | 771 |
772 for(j = 0; binds[j].cmd != NULL; j++) { | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
773 if(n > 0) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
774 int found = 1,s; |
4842 | 775 for(s = 0; s < n && binds[j].input[s] != 0; s++) { |
776 if(binds[j].input[s] != keys[s]) { | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
777 found = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
778 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
779 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
780 } |
4842 | 781 if(found && binds[j].input[s] == 0 && s == n) |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
782 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
783 else |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
784 continue; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
785 } else if(n == 1){ |
4842 | 786 if(binds[j].input[0] == keys[0] && binds[j].input[1] == 0) |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
787 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
788 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
789 } |
4842 | 790 return binds[j].cmd; |
791 } | |
792 | |
793 static mp_cmd_t* | |
794 mp_input_get_cmd_from_keys(int n,int* keys, int paused) { | |
795 char* cmd = NULL; | |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
796 mp_cmd_t* ret; |
4842 | 797 |
798 if(cmd_binds) | |
799 cmd = mp_input_find_bind_for_key(cmd_binds,n,keys); | |
800 if(cmd == NULL) | |
801 cmd = mp_input_find_bind_for_key(def_cmd_binds,n,keys); | |
802 | |
803 if(cmd == NULL) { | |
6183
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6138
diff
changeset
|
804 mp_msg(MSGT_INPUT,MSGL_WARN,"No bind found for key %s",mp_input_get_key_name(keys[0])); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
805 if(n > 1) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
806 int s; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
807 for(s=1; s < n; s++) |
6183
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6138
diff
changeset
|
808 mp_msg(MSGT_INPUT,MSGL_WARN,"-%s",mp_input_get_key_name(keys[s])); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
809 } |
6183
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6138
diff
changeset
|
810 mp_msg(MSGT_INPUT,MSGL_WARN," \n"); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
811 return NULL; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
812 } |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
813 ret = mp_input_parse_cmd(cmd); |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
814 if(!ret) { |
10398 | 815 mp_msg(MSGT_INPUT,MSGL_ERR,"Invalid command for bound key %s",mp_input_get_key_name(key_down[0])); |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
816 if( num_key_down > 1) { |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
817 unsigned int s; |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
818 for(s=1; s < num_key_down; s++) |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
819 mp_msg(MSGT_INPUT,MSGL_ERR,"-%s",mp_input_get_key_name(key_down[s])); |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
820 } |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
821 mp_msg(MSGT_INPUT,MSGL_ERR," : %s \n",cmd); |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
822 } |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
823 return ret; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
824 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
825 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
826 int |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
827 mp_input_read_key_code(int time) { |
9836 | 828 #ifndef HAVE_NO_POSIX_SELECT |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
829 fd_set fds; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
830 struct timeval tv,*time_val; |
9836 | 831 #endif |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
832 int i,n=0,max_fd = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
833 static int last_loop = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
834 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
835 if(num_key_fd == 0) |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
836 return MP_INPUT_NOTHING; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
837 |
9836 | 838 #ifndef HAVE_NO_POSIX_SELECT |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
839 FD_ZERO(&fds); |
9836 | 840 #endif |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
841 // Remove fd marked as dead and build the fd_set |
9734
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
842 // n == number of fd's to be select() checked |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
843 for(i = 0; (unsigned int)i < num_key_fd; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
844 if( (key_fds[i].flags & MP_FD_DEAD) ) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
845 mp_input_rm_key_fd(key_fds[i].fd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
846 i--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
847 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
848 } else if(key_fds[i].flags & MP_FD_NO_SELECT) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
849 continue; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
850 if(key_fds[i].fd > max_fd) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
851 max_fd = key_fds[i].fd; |
9836 | 852 #ifndef HAVE_NO_POSIX_SELECT |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
853 FD_SET(key_fds[i].fd,&fds); |
9836 | 854 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
855 n++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
856 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
857 |
9734
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
858 if(num_key_fd == 0) |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
859 return MP_INPUT_NOTHING; |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
860 |
9836 | 861 #ifndef HAVE_NO_POSIX_SELECT |
9734
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
862 // if we have fd's without MP_FD_NO_SELECT flag, call select(): |
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
863 if(n>0){ |
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
864 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
865 if(time >= 0 ) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
866 tv.tv_sec=time/1000; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
867 tv.tv_usec = (time%1000)*1000; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
868 time_val = &tv; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
869 } else |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
870 time_val = NULL; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
871 |
9734
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
872 while(1) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
873 if(select(max_fd+1,&fds,NULL,NULL,time_val) < 0) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
874 if(errno == EINTR) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
875 continue; |
10398 | 876 mp_msg(MSGT_INPUT,MSGL_ERR,"Select error: %s\n",strerror(errno)); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
877 } |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
878 break; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
879 } |
9734
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
880 |
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
881 } |
9836 | 882 #endif |
9734
09e5b03209e9
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
arpi
parents:
9380
diff
changeset
|
883 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
884 for(i = last_loop + 1 ; i != last_loop ; i++) { |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
885 int code = -1; |
10398 | 886 // This is to check all fds in turn |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
887 if((unsigned int)i >= num_key_fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
888 i = -1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
889 last_loop++; |
4892 | 890 last_loop %= (num_key_fd+1); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
891 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
892 } |
9836 | 893 #ifndef HAVE_NO_POSIX_SELECT |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
894 // No input from this fd |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
895 if(! (key_fds[i].flags & MP_FD_NO_SELECT) && ! FD_ISSET(key_fds[i].fd,&fds)) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
896 continue; |
9836 | 897 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
898 if(key_fds[i].fd == 0) { // stdin is handled by getch2 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
899 code = getch2(time); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
900 if(code < 0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
901 code = MP_INPUT_NOTHING; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
902 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
903 else |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
904 code = ((mp_key_func_t)key_fds[i].read_func)(key_fds[i].fd); |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
905 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
906 if(code >= 0) |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
907 return code; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
908 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
909 if(code == MP_INPUT_ERROR) |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
910 mp_msg(MSGT_INPUT,MSGL_ERR,"Error on key input fd %d\n",key_fds[i].fd); |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
911 else if(code == MP_INPUT_DEAD) { |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
912 mp_msg(MSGT_INPUT,MSGL_ERR,"Dead key input on fd %d\n",key_fds[i].fd); |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
913 key_fds[i].flags |= MP_FD_DEAD; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
914 } |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
915 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
916 return MP_INPUT_NOTHING; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
917 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
918 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
919 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
920 static mp_cmd_t* |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
921 mp_input_read_keys(int time,int paused) { |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
922 int code = mp_input_read_key_code(time); |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
923 unsigned int j; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
924 mp_cmd_t* ret; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
925 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
926 if(mp_input_key_cb) { |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
927 for( ; code >= 0 ; code = mp_input_read_key_code(0) ) { |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
928 if(code & MP_KEY_DOWN) continue; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
929 code &= ~(MP_KEY_DOWN|MP_NO_REPEAT_KEY); |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
930 mp_input_key_cb(code); |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
931 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
932 return NULL; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
933 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
934 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
935 for( ; code >= 0 ; code = mp_input_read_key_code(0) ) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
936 // key pushed |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
937 if(code & MP_KEY_DOWN) { |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
938 if(num_key_down > MP_MAX_KEY_DOWN) { |
10398 | 939 mp_msg(MSGT_INPUT,MSGL_ERR,"Too many key down events at the same time\n"); |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
940 continue; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
941 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
942 code &= ~MP_KEY_DOWN; |
5053
146513806b2f
lexical fixes (COSMETIC :)) and one 'real fix': grap_frames -> grab_frames -- feel free to flame and reverse
alex
parents:
5046
diff
changeset
|
943 // Check if we don't already have this key as pushed |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
944 for(j = 0; j < num_key_down; j++) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
945 if(key_down[j] == code) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
946 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
947 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
948 if(j != num_key_down) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
949 continue; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
950 key_down[num_key_down] = code; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
951 num_key_down++; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
952 last_key_down = GetTimer(); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
953 ar_state = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
954 continue; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
955 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
956 // key released |
5053
146513806b2f
lexical fixes (COSMETIC :)) and one 'real fix': grap_frames -> grab_frames -- feel free to flame and reverse
alex
parents:
5046
diff
changeset
|
957 // Check if the key is in the down key, driver which can't send push event |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
958 // send only release event |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
959 for(j = 0; j < num_key_down; j++) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
960 if(key_down[j] == code) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
961 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
962 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
963 if(j == num_key_down) { // key was not in the down keys : add it |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
964 if(num_key_down > MP_MAX_KEY_DOWN) { |
10398 | 965 mp_msg(MSGT_INPUT,MSGL_ERR,"Too many key down events at the same time\n"); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
966 continue; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
967 } |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
968 key_down[num_key_down] = code; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
969 num_key_down++; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
970 last_key_down = 1; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
971 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
972 // We ignore key from last combination |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
973 ret = last_key_down ? mp_input_get_cmd_from_keys(num_key_down,key_down,paused) : NULL; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
974 // Remove the key |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
975 if(j+1 < num_key_down) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
976 memmove(&key_down[j],&key_down[j+1],(num_key_down-(j+1))*sizeof(int)); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
977 num_key_down--; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
978 last_key_down = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
979 ar_state = -1; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
980 if(ar_cmd) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
981 mp_cmd_free(ar_cmd); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
982 ar_cmd = NULL; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
983 } |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
984 if(ret) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
985 return ret; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
986 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
987 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
988 // No input : autorepeat ? |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
989 if(ar_rate > 0 && ar_state >=0 && num_key_down > 0 && ! (key_down[num_key_down-1] & MP_NO_REPEAT_KEY)) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
990 unsigned int t = GetTimer(); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
991 // First time : wait delay |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
992 if(ar_state == 0 && (t - last_key_down) >= ar_delay*1000) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
993 ar_cmd = mp_input_get_cmd_from_keys(num_key_down,key_down,paused); |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
994 if(!ar_cmd) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
995 ar_state = -1; |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
996 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
997 } |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
998 ar_state = 1; |
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
999 last_ar = t; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1000 return mp_cmd_clone(ar_cmd); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1001 // Then send rate / sec event |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1002 } else if(ar_state == 1 && (t -last_ar) >= 1000000/ar_rate) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1003 last_ar = t; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1004 return mp_cmd_clone(ar_cmd); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1005 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1006 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1007 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1008 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1009 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1010 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1011 static mp_cmd_t* |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1012 mp_input_read_cmds(int time) { |
9836 | 1013 #ifndef HAVE_NO_POSIX_SELECT |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1014 fd_set fds; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1015 struct timeval tv,*time_val; |
9836 | 1016 #endif |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
1017 int i,n = 0,max_fd = 0,got_cmd = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1018 mp_cmd_t* ret; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1019 static int last_loop = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1020 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1021 if(num_cmd_fd == 0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1022 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1023 |
9836 | 1024 #ifndef HAVE_NO_POSIX_SELECT |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1025 FD_ZERO(&fds); |
9836 | 1026 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1027 for(i = 0; (unsigned int)i < num_cmd_fd ; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1028 if( (cmd_fds[i].flags & MP_FD_DEAD) || (cmd_fds[i].flags & MP_FD_EOF) ) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1029 mp_input_rm_cmd_fd(cmd_fds[i].fd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1030 i--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1031 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1032 } else if(cmd_fds[i].flags & MP_FD_NO_SELECT) |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1033 continue; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
1034 if(cmd_fds[i].flags & MP_FD_GOT_CMD) |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
1035 got_cmd = 1; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1036 if(cmd_fds[i].fd > max_fd) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1037 max_fd = cmd_fds[i].fd; |
9836 | 1038 #ifndef HAVE_NO_POSIX_SELECT |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1039 FD_SET(cmd_fds[i].fd,&fds); |
9836 | 1040 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1041 n++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1042 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1043 |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1044 if(num_cmd_fd == 0) |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1045 return NULL; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1046 |
9836 | 1047 #ifndef HAVE_NO_POSIX_SELECT |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1048 if(time >= 0) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1049 tv.tv_sec=time/1000; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1050 tv.tv_usec = (time%1000)*1000; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1051 time_val = &tv; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1052 } else |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1053 time_val = NULL; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1054 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1055 while(n > 0) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1056 if((i = select(max_fd+1,&fds,NULL,NULL,time_val)) <= 0) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1057 if(i < 0) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1058 if(errno == EINTR) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1059 continue; |
10398 | 1060 mp_msg(MSGT_INPUT,MSGL_ERR,"Select error: %s\n",strerror(errno)); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1061 } |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
1062 if(!got_cmd) |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
1063 return NULL; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1064 } |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1065 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1066 } |
9836 | 1067 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1068 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1069 for(i = last_loop + 1; i != last_loop ; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1070 int r = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1071 char* cmd; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1072 if((unsigned int)i >= num_cmd_fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1073 i = -1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1074 last_loop++; |
4892 | 1075 last_loop %= (num_cmd_fd+1); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1076 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1077 } |
9836 | 1078 #ifndef HAVE_NO_POSIX_SELECT |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1079 if( ! (cmd_fds[i].flags & MP_FD_NO_SELECT) && ! FD_ISSET(cmd_fds[i].fd,&fds) && ! (cmd_fds[i].flags & MP_FD_GOT_CMD) ) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1080 continue; |
9836 | 1081 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1082 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1083 r = mp_input_read_cmd(&cmd_fds[i],&cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1084 if(r < 0) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1085 if(r == MP_INPUT_ERROR) |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1086 mp_msg(MSGT_INPUT,MSGL_ERR,"Error on cmd fd %d\n",cmd_fds[i].fd); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1087 else if(r == MP_INPUT_DEAD) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1088 cmd_fds[i].flags |= MP_FD_DEAD; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1089 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1090 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1091 ret = mp_input_parse_cmd(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1092 free(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1093 if(!ret) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1094 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1095 last_loop = i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1096 return ret; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1097 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1098 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1099 last_loop = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1100 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1101 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1102 |
4821 | 1103 int |
1104 mp_input_queue_cmd(mp_cmd_t* cmd) { | |
1105 if(cmd_queue_length >= CMD_QUEUE_SIZE) | |
1106 return 0; | |
1107 cmd_queue[cmd_queue_end] = cmd; | |
1108 cmd_queue_end = (cmd_queue_end + 1) % CMD_QUEUE_SIZE; | |
1109 cmd_queue_length++; | |
1110 return 1; | |
1111 } | |
1112 | |
1113 static mp_cmd_t* | |
1114 mp_input_get_queued_cmd(void) { | |
1115 mp_cmd_t* ret; | |
1116 | |
1117 if(cmd_queue_length == 0) | |
1118 return NULL; | |
1119 | |
1120 ret = cmd_queue[cmd_queue_start]; | |
1121 | |
1122 cmd_queue_length--; | |
1123 cmd_queue_start = (cmd_queue_start + 1) % CMD_QUEUE_SIZE; | |
1124 | |
1125 return ret; | |
1126 } | |
1127 | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1128 mp_cmd_t* |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1129 mp_input_get_cmd(int time, int paused) { |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1130 mp_cmd_t* ret = NULL; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1131 mp_cmd_filter_t* cf; |
4821 | 1132 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1133 while(1) { |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1134 ret = mp_input_get_queued_cmd(); |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1135 if(ret) break; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1136 ret = mp_input_read_keys(time,paused); |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1137 if(ret) break; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1138 ret = mp_input_read_cmds(time); |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1139 break; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1140 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1141 if(!ret) return NULL; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1142 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1143 for(cf = cmd_filters ; cf ; cf = cf->next) { |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1144 if(cf->filter(ret,paused,cf->ctx)) |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1145 return NULL; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1146 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1147 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1148 return ret; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1149 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1150 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1151 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1152 mp_cmd_free(mp_cmd_t* cmd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1153 int i; |
5046 | 1154 //#ifdef MP_DEBUG |
1155 // assert(cmd != NULL); | |
1156 //#endif | |
1157 if ( !cmd ) return; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1158 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1159 if(cmd->name) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1160 free(cmd->name); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1161 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1162 for(i=0; i < MP_CMD_MAX_ARGS && cmd->args[i].type != -1; i++) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1163 if(cmd->args[i].type == MP_CMD_ARG_STRING && cmd->args[i].v.s != NULL) |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1164 free(cmd->args[i].v.s); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1165 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1166 free(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1167 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1168 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1169 mp_cmd_t* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1170 mp_cmd_clone(mp_cmd_t* cmd) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1171 mp_cmd_t* ret; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1172 int i; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1173 #ifdef MP_DEBUG |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1174 assert(cmd != NULL); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1175 #endif |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1176 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1177 ret = (mp_cmd_t*)malloc(sizeof(mp_cmd_t)); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1178 memcpy(ret,cmd,sizeof(mp_cmd_t)); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1179 if(cmd->name) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1180 ret->name = strdup(cmd->name); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1181 for(i = 0; i < MP_CMD_MAX_ARGS && cmd->args[i].type != -1; i++) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1182 if(cmd->args[i].type == MP_CMD_ARG_STRING && cmd->args[i].v.s != NULL) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1183 ret->args[i].v.s = strdup(cmd->args[i].v.s); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1184 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1185 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1186 return ret; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1187 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1188 |
6394 | 1189 static char key_str[12]; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1190 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1191 static char* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1192 mp_input_get_key_name(int key) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1193 int i; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1194 |
4821 | 1195 for(i = 0; key_names[i].name != NULL; i++) { |
1196 if(key_names[i].key == key) | |
1197 return key_names[i].name; | |
1198 } | |
1199 | |
6394 | 1200 if(isascii(key)) { |
1201 snprintf(key_str,12,"%c",(char)key); | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1202 return key_str; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1203 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1204 |
6394 | 1205 // Print the hex key code |
1206 snprintf(key_str,12,"%#-8x",key); | |
1207 return key_str; | |
1208 | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1209 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1210 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1211 static int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1212 mp_input_get_key_from_name(char* name) { |
6394 | 1213 int i,ret = 0,len = strlen(name); |
1214 if(len == 1) { // Direct key code | |
1215 ret = (unsigned char)name[0]; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1216 return ret; |
6394 | 1217 } else if(len > 2 && strncasecmp("0x",name,2) == 0) |
1218 return strtol(name,NULL,16); | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1219 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1220 for(i = 0; key_names[i].name != NULL; i++) { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1221 if(strcasecmp(key_names[i].name,name) == 0) |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1222 return key_names[i].key; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1223 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1224 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1225 return -1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1226 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1227 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1228 static int |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1229 mp_input_get_input_from_name(char* name,int* keys) { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1230 char *end,*ptr; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1231 int n=0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1232 |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1233 ptr = name; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1234 n = 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1235 for(end = strchr(ptr,'-') ; ptr != NULL ; end = strchr(ptr,'-')) { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1236 if(end && end[1] != '\0') { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1237 if(end[1] == '-') |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1238 end = &end[1]; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1239 end[0] = '\0'; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1240 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1241 keys[n] = mp_input_get_key_from_name(ptr); |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1242 if(keys[n] < 0) { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1243 return 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1244 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1245 n++; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1246 if(end && end[1] != '\0' && n < MP_MAX_KEY_DOWN) |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1247 ptr = &end[1]; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1248 else |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1249 break; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1250 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1251 keys[n] = 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1252 return 1; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1253 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1254 |
4842 | 1255 void |
1256 mp_input_bind_keys(int keys[MP_MAX_KEY_DOWN+1], char* cmd) { | |
1257 int i = 0,j; | |
1258 mp_cmd_bind_t* bind = NULL; | |
1259 | |
1260 #ifdef MP_DEBUG | |
1261 assert(keys != NULL); | |
1262 assert(cmd != NULL); | |
1263 #endif | |
1264 | |
1265 if(cmd_binds) { | |
1266 for(i = 0; cmd_binds[i].cmd != NULL ; i++) { | |
1267 for(j = 0 ; cmd_binds[i].input[j] == keys[j] && keys[j] != 0 ; j++) | |
1268 /* NOTHING */; | |
1269 if(keys[j] == 0 && cmd_binds[i].input[j] == 0 ) { | |
1270 bind = &cmd_binds[i]; | |
1271 break; | |
1272 } | |
1273 } | |
1274 } | |
1275 | |
1276 if(!bind) { | |
1277 cmd_binds = (mp_cmd_bind_t*)realloc(cmd_binds,(i+2)*sizeof(mp_cmd_bind_t)); | |
1278 memset(&cmd_binds[i],0,2*sizeof(mp_cmd_bind_t)); | |
1279 bind = &cmd_binds[i]; | |
1280 } | |
1281 if(bind->cmd) | |
1282 free(bind->cmd); | |
1283 bind->cmd = strdup(cmd); | |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1284 memcpy(bind->input,keys,(MP_MAX_KEY_DOWN+1)*sizeof(int)); |
4842 | 1285 } |
1286 | |
1287 | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1288 static void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1289 mp_input_free_binds(mp_cmd_bind_t* binds) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1290 int i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1291 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1292 if(!binds) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1293 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1294 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1295 for(i = 0; binds[i].cmd != NULL; i++) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1296 free(binds[i].cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1297 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1298 free(binds); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1299 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1300 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1301 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1302 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1303 #define BS_MAX 256 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1304 #define SPACE_CHAR " \n\r\t" |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1305 |
4525 | 1306 static int |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1307 mp_input_parse_config(char *file) { |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1308 int fd; |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1309 int bs = 0,r,eof = 0,comments = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1310 char *iter,*end; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1311 char buffer[BS_MAX]; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1312 int n_binds = 0, keys[MP_MAX_KEY_DOWN+1] = { 0 }; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1313 mp_cmd_bind_t* binds = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1314 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1315 fd = open(file,O_RDONLY); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1316 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1317 if(fd < 0) { |
10398 | 1318 mp_msg(MSGT_INPUT,MSGL_ERR,"Can't open input config file %s: %s\n",file,strerror(errno)); |
4525 | 1319 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1320 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1321 |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1322 mp_msg(MSGT_INPUT,MSGL_V,"Parsing input config file %s\n",file); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1323 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1324 while(1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1325 if(! eof && bs < BS_MAX-1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1326 if(bs > 0) bs--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1327 r = read(fd,buffer+bs,BS_MAX-1-bs); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1328 if(r < 0) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1329 if(errno == EINTR) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1330 continue; |
10398 | 1331 mp_msg(MSGT_INPUT,MSGL_ERR,"Error while reading input config file %s: %s\n",file,strerror(errno)); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1332 mp_input_free_binds(binds); |
6463 | 1333 close(fd); |
4525 | 1334 return 0; |
8274 | 1335 } else if(r == 0) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1336 eof = 1; |
8274 | 1337 } else { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1338 bs += r+1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1339 buffer[bs-1] = '\0'; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1340 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1341 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1342 // Empty buffer : return |
8275
1fb6b78d62d6
10l my last fix choked the last command definition, this fix seems to work correct.
atmos4
parents:
8274
diff
changeset
|
1343 if(bs <= 1) { |
10398 | 1344 mp_msg(MSGT_INPUT,MSGL_INFO,"Input config file %s parsed: %d binds\n",file,n_binds); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1345 if(binds) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1346 cmd_binds = binds; |
6463 | 1347 close(fd); |
4525 | 1348 return 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1349 } |
4826 | 1350 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1351 iter = buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1352 |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1353 if(comments) { |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1354 for( ; iter[0] != '\0' && iter[0] != '\n' ; iter++) |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1355 /* NOTHING */; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1356 if(iter[0] == '\0') { // Buffer was full of comment |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1357 bs = 0; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1358 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1359 } |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1360 iter++; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1361 r = strlen(iter); |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1362 if(r) |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1363 memmove(buffer,iter,r+1); |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1364 bs = r+1; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1365 if(iter[0] != '#') |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1366 comments = 0; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1367 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1368 } |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1369 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1370 // Find the wanted key |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1371 if(keys[0] == 0) { |
5053
146513806b2f
lexical fixes (COSMETIC :)) and one 'real fix': grap_frames -> grab_frames -- feel free to flame and reverse
alex
parents:
5046
diff
changeset
|
1372 // Jump beginning space |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1373 for( ; iter[0] != '\0' && strchr(SPACE_CHAR,iter[0]) != NULL ; iter++) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1374 /* NOTHING */; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1375 if(iter[0] == '\0') { // Buffer was full of space char |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1376 bs = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1377 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1378 } |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1379 if(iter[0] == '#') { // Comments |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1380 comments = 1; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1381 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1382 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1383 // Find the end of the key code name |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1384 for(end = iter; end[0] != '\0' && strchr(SPACE_CHAR,end[0]) == NULL ; end++) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1385 /*NOTHING */; |
10398 | 1386 if(end[0] == '\0') { // Key name doesn't fit in the buffer |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1387 if(buffer == iter) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1388 if(eof && (buffer-iter) == bs) |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1389 mp_msg(MSGT_INPUT,MSGL_ERR,"Unfinished binding %s\n",iter); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1390 else |
10398 | 1391 mp_msg(MSGT_INPUT,MSGL_ERR,"Buffer is too small for this key name: %s\n",iter); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1392 mp_input_free_binds(binds); |
4525 | 1393 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1394 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1395 memmove(buffer,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1396 bs = end-iter; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1397 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1398 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1399 { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1400 char name[end-iter+1]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1401 strncpy(name,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1402 name[end-iter] = '\0'; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1403 if(! mp_input_get_input_from_name(name,keys)) { |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1404 mp_msg(MSGT_INPUT,MSGL_ERR,"Unknown key '%s'\n",name); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1405 mp_input_free_binds(binds); |
6463 | 1406 close(fd); |
4525 | 1407 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1408 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1409 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1410 if( bs > (end-buffer)) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1411 memmove(buffer,end,bs - (end-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1412 bs -= end-buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1413 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1414 } else { // Get the command |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1415 while(iter[0] == ' ' || iter[0] == '\t') iter++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1416 // Found new line |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1417 if(iter[0] == '\n' || iter[0] == '\r') { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1418 int i; |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1419 mp_msg(MSGT_INPUT,MSGL_ERR,"No command found for key %s" ,mp_input_get_key_name(keys[0])); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1420 for(i = 1; keys[i] != 0 ; i++) |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1421 mp_msg(MSGT_INPUT,MSGL_ERR,"-%s",mp_input_get_key_name(keys[i])); |
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1422 mp_msg(MSGT_INPUT,MSGL_ERR,"\n"); |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1423 keys[0] = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1424 if(iter > buffer) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1425 memmove(buffer,iter,bs- (iter-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1426 bs -= (iter-buffer); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1427 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1428 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1429 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1430 for(end = iter ; end[0] != '\n' && end[0] != '\r' && end[0] != '\0' ; end++) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1431 /* NOTHING */; |
4821 | 1432 if(end[0] == '\0' && ! (eof && ((end+1) - buffer) == bs)) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1433 if(iter == buffer) { |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1434 mp_msg(MSGT_INPUT,MSGL_ERR,"Buffer is too small for command %s\n",buffer); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1435 mp_input_free_binds(binds); |
6463 | 1436 close(fd); |
4525 | 1437 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1438 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1439 memmove(buffer,iter,end - iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1440 bs = end - iter; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1441 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1442 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1443 { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1444 char cmd[end-iter+1]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1445 strncpy(cmd,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1446 cmd[end-iter] = '\0'; |
8275
1fb6b78d62d6
10l my last fix choked the last command definition, this fix seems to work correct.
atmos4
parents:
8274
diff
changeset
|
1447 //printf("Set bind %d => %s\n",keys[0],cmd); |
4842 | 1448 mp_input_bind_keys(keys,cmd); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1449 n_binds++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1450 } |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1451 keys[0] = 0; |
4821 | 1452 end++; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1453 if(bs > (end-buffer)) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1454 memmove(buffer,end,bs-(end-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1455 bs -= (end-buffer); |
4821 | 1456 buffer[bs-1] = '\0'; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1457 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1458 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1459 } |
10398 | 1460 mp_msg(MSGT_INPUT,MSGL_ERR,"What are we doing here?\n"); |
6463 | 1461 close(fd); |
4525 | 1462 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1463 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1464 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1465 extern char *get_path(char *filename); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1466 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1467 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1468 mp_input_init(void) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1469 char* file; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1470 |
4836 | 1471 file = config_file[0] != '/' ? get_path(config_file) : config_file; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1472 if(!file) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1473 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1474 |
6551
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
1475 if(! mp_input_parse_config(file)) { |
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
1476 // Try global conf dir |
10272
7b0bc557987b
renames: DATADIR->MPLAYER_DATADIR, CONFDIR->MPLAYER_CONFDIR, LIBDIR->MPLAYER_LIBDIR
arpi
parents:
10215
diff
changeset
|
1477 file = MPLAYER_CONFDIR "/input.conf"; |
6551
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
1478 if(! mp_input_parse_config(file)) |
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
1479 mp_msg(MSGT_INPUT,MSGL_WARN,"Falling back on default (hardcoded) input config\n"); |
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
1480 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1481 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1482 #ifdef HAVE_JOYSTICK |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1483 if(use_joystick) { |
5722
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
1484 int fd = mp_input_joystick_init(js_dev); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1485 if(fd < 0) |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1486 mp_msg(MSGT_INPUT,MSGL_ERR,"Can't init input joystick\n"); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1487 else |
4524
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
1488 mp_input_add_key_fd(fd,1,mp_input_joystick_read,(mp_close_func_t)close); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1489 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1490 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1491 |
4432 | 1492 #ifdef HAVE_LIRC |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1493 if(use_lirc) { |
4432 | 1494 int fd = mp_input_lirc_init(); |
1495 if(fd > 0) | |
7883 | 1496 mp_input_add_cmd_fd(fd,0,mp_input_lirc_read,mp_input_lirc_close); |
4432 | 1497 } |
1498 #endif | |
1499 | |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1500 #ifdef HAVE_LIRCC |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1501 if(use_lircc) { |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1502 int fd = lircc_init("mplayer", NULL); |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1503 if(fd >= 0) |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1504 mp_input_add_cmd_fd(fd,1,NULL,(mp_close_func_t)lircc_cleanup); |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1505 } |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1506 #endif |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1507 |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1508 if(in_file) { |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1509 struct stat st; |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1510 if(stat(in_file,&st)) |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1511 mp_msg(MSGT_INPUT,MSGL_ERR,"Can't stat %s: %s\n",in_file,strerror(errno)); |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1512 else { |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1513 in_file_fd = open(in_file,S_ISFIFO(st.st_mode) ? O_RDWR : O_RDONLY); |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1514 if(in_file_fd >= 0) |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1515 mp_input_add_cmd_fd(in_file_fd,1,NULL,(mp_close_func_t)close); |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1516 else |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1517 mp_msg(MSGT_INPUT,MSGL_ERR,"Can't open %s: %s\n",in_file,strerror(errno)); |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1518 } |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1519 } |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1520 |
4432 | 1521 } |
1522 | |
1523 void | |
1524 mp_input_uninit(void) { | |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1525 unsigned int i; |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1526 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1527 for(i=0; i < num_key_fd; i++) { |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1528 if(key_fds[i].close_func) |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1529 key_fds[i].close_func(key_fds[i].fd); |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1530 } |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1531 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1532 for(i=0; i < num_cmd_fd; i++) { |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1533 if(cmd_fds[i].close_func) |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1534 cmd_fds[i].close_func(cmd_fds[i].fd); |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1535 } |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1536 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1537 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1538 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1539 void |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1540 mp_input_register_options(m_config_t* cfg) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1541 m_config_register_options(cfg,mp_input_opts); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1542 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1543 |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1544 static int mp_input_print_key_list(config_t* cfg) { |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1545 int i; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1546 printf("\n"); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1547 for(i= 0; key_names[i].name != NULL ; i++) |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1548 printf("%s\n",key_names[i].name); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1549 exit(0); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1550 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1551 |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1552 static int mp_input_print_cmd_list(config_t* cfg) { |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1553 mp_cmd_t *cmd; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1554 int i,j; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1555 char* type; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1556 |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1557 for(i = 0; (cmd = &mp_cmds[i])->name != NULL ; i++) { |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1558 printf("%-20.20s",cmd->name); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1559 for(j= 0 ; j < MP_CMD_MAX_ARGS && cmd->args[j].type != -1 ; j++) { |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1560 switch(cmd->args[j].type) { |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1561 case MP_CMD_ARG_INT: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1562 type = "Integer"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1563 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1564 case MP_CMD_ARG_FLOAT: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1565 type = "Float"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1566 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1567 case MP_CMD_ARG_STRING: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1568 type = "String"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1569 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1570 default: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1571 type = "??"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1572 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1573 if(j+1 > cmd->nargs) |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1574 printf(" [%s]",type); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1575 else |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1576 printf(" %s",type); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1577 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1578 printf("\n"); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1579 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1580 exit(0); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1581 } |
7862
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1582 |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1583 int |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1584 mp_input_check_interrupt(int time) { |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1585 mp_cmd_t* cmd; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1586 if((cmd = mp_input_get_cmd(time,0)) == NULL) |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1587 return 0; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1588 switch(cmd->id) { |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1589 case MP_CMD_QUIT: |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1590 case MP_CMD_PLAY_TREE_STEP: |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1591 case MP_CMD_PLAY_TREE_UP_STEP: |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1592 case MP_CMD_PLAY_ALT_SRC_STEP: |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1593 // The cmd will be executed when we are back in the main loop |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1594 if(! mp_input_queue_cmd(cmd)) { |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1595 mp_msg(MSGT_INPUT,MSGL_ERR,"mpdemux_check_interrupt: can't queue cmd %s\n",cmd->name); |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1596 mp_cmd_free(cmd); |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1597 } |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1598 return 1; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1599 } |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1600 mp_cmd_free(cmd); |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1601 return 0; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1602 } |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1603 |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1604 |