Mercurial > mplayer.hg
annotate input/input.c @ 34092:dbf5042ab255
Don't use the Windows style path separator character in Win32 GUI.
We use the Unix style path separator character throughout everywhere
else, so use it here as well.
Although Cygwin and MinGW tolerate a mixed Unix and Windows style, it
beautifies the messages.
author | ib |
---|---|
date | Thu, 06 Oct 2011 12:09:05 +0000 |
parents | ef9b6445fc55 |
children | 6edabf4151e9 |
rev | line source |
---|---|
28112 | 1 /* |
2 * This file is part of MPlayer. | |
3 * | |
4 * MPlayer is free software; you can redistribute it and/or modify | |
5 * it under the terms of the GNU General Public License as published by | |
6 * the Free Software Foundation; either version 2 of the License, or | |
7 * (at your option) any later version. | |
8 * | |
9 * MPlayer is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License along | |
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
17 */ | |
18 | |
16860 | 19 #include "config.h" |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
20 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
21 #include <stdlib.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
22 #include <string.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
23 #include <stdio.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
24 #include <unistd.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
25 #include <errno.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
26 #include <sys/types.h> |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
27 #include <sys/stat.h> |
4525 | 28 #include <sys/time.h> |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
29 #include <fcntl.h> |
6394 | 30 #include <ctype.h> |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
31 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
32 #include "input.h" |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
33 #include "mouse.h" |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
34 #ifdef MP_DEBUG |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
35 #include <assert.h> |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
36 #endif |
24129 | 37 #include "mp_fifo.h" |
16860 | 38 #include "osdep/getch2.h" |
39 #include "osdep/keycodes.h" | |
40 #include "osdep/timer.h" | |
26543 | 41 #include "libavutil/avstring.h" |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
42 #include "mp_msg.h" |
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
43 #include "help_mp.h" |
16860 | 44 #include "m_config.h" |
45 #include "m_option.h" | |
30901 | 46 #include "path.h" |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
47 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
48 #include "joystick.h" |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
49 |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
50 #ifdef CONFIG_LIRC |
4432 | 51 #include "lirc.h" |
52 #endif | |
53 | |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
54 #ifdef CONFIG_LIRCC |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
55 #include <lirc/lircc.h> |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
56 #endif |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
57 |
24037 | 58 #include "ar.h" |
59 | |
10398 | 60 /// This array defines all known commands. |
61 /// The first field is an id used to recognize the command without too many strcmp. | |
62 /// The second is obviously the command name. | |
63 /// The third is the minimum number of arguments this command needs. | |
64 /// Then comes the definition of each argument, terminated with an arg of type -1. | |
65 /// A command can take a maximum of MP_CMD_MAX_ARGS-1 arguments (-1 because of | |
66 /// 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
|
67 |
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
68 /// 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
|
69 /// 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
|
70 |
25709
24ee00528e18
Make several mapping tables related to input processing const.
reimar
parents:
25626
diff
changeset
|
71 static const mp_cmd_t mp_cmds[] = { |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
72 #ifdef CONFIG_RADIO |
19568
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
73 { MP_CMD_RADIO_STEP_CHANNEL, "radio_step_channel", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
74 { MP_CMD_RADIO_SET_CHANNEL, "radio_set_channel", 1, { { MP_CMD_ARG_STRING, {0}}, {-1,{0}} }}, |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
75 { MP_CMD_RADIO_SET_FREQ, "radio_set_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
21042 | 76 { MP_CMD_RADIO_STEP_FREQ, "radio_step_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
19568
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
77 #endif |
14718 | 78 { MP_CMD_SEEK, "seek", 1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
31956
a6c25d94e60e
Add new slave mode command for loading EDL file on demand.
reynaldo
parents:
31319
diff
changeset
|
79 { MP_CMD_EDL_LOADFILE, "edl_loadfile", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
80 { MP_CMD_EDL_MARK, "edl_mark", 0, { {-1,{0}} } }, |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17911
diff
changeset
|
81 { MP_CMD_AUDIO_DELAY, "audio_delay", 1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
13710 | 82 { MP_CMD_SPEED_INCR, "speed_incr", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
83 { MP_CMD_SPEED_MULT, "speed_mult", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, | |
84 { MP_CMD_SPEED_SET, "speed_set", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, | |
13338
1820ef597cdb
quit slave mode command now accepts an exit value, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13228
diff
changeset
|
85 { MP_CMD_QUIT, "quit", 0, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
26877 | 86 { MP_CMD_STOP, "stop", 0, { {-1,{0}} } }, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
87 { MP_CMD_PAUSE, "pause", 0, { {-1,{0}} } }, |
13626
741649fe31cb
allow to step only one frame forward by pressing s.
reimar
parents:
13603
diff
changeset
|
88 { MP_CMD_FRAME_STEP, "frame_step", 0, { {-1,{0}} } }, |
5135 | 89 { MP_CMD_PLAY_TREE_STEP, "pt_step",1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } }, |
90 { 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
|
91 { MP_CMD_PLAY_ALT_SRC_STEP, "alt_src_step",1, { { MP_CMD_ARG_INT,{0} }, {-1,{0}} } }, |
23727 | 92 { MP_CMD_LOOP, "loop", 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
|
93 { 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
|
94 { 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
|
95 { MP_CMD_OSD, "osd",0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
18223 | 96 { MP_CMD_OSD_SHOW_TEXT, "osd_show_text", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{-1}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
18222
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
97 { MP_CMD_OSD_SHOW_PROPERTY_TEXT, "osd_show_property_text",1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{-1}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
30986
2186c040f9e0
Add osd_show_progression: Show progress bar and elapsed/total time.
cehoyos
parents:
30960
diff
changeset
|
98 { MP_CMD_OSD_SHOW_PROGRESSION, "osd_show_progression", 0, { {-1,{0}} } }, |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17890
diff
changeset
|
99 { MP_CMD_VOLUME, "volume", 1, { { MP_CMD_ARG_FLOAT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
23568 | 100 { MP_CMD_BALANCE, "balance", 1, { { MP_CMD_ARG_FLOAT,{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
|
101 { MP_CMD_MIXER_USEMASTER, "use_master", 0, { {-1,{0}} } }, |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17890
diff
changeset
|
102 { MP_CMD_MUTE, "mute", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
103 { 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
|
104 { 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
|
105 { 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
|
106 { 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
|
107 { 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
|
108 { 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
|
109 { 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
|
110 { MP_CMD_SUB_ALIGNMENT, "sub_alignment",0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17928
diff
changeset
|
111 { MP_CMD_SUB_VISIBILITY, "sub_visibility", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
15706 | 112 { MP_CMD_SUB_LOAD, "sub_load", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
113 { MP_CMD_SUB_REMOVE, "sub_remove", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, | |
15128
96512bcb2eca
allow sub_select and vobsub_lang to select particular subtitle
henry
parents:
15046
diff
changeset
|
114 { MP_CMD_SUB_SELECT, "vobsub_lang", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } }, // for compatibility |
96512bcb2eca
allow sub_select and vobsub_lang to select particular subtitle
henry
parents:
15046
diff
changeset
|
115 { MP_CMD_SUB_SELECT, "sub_select", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } }, |
25129
c04b64054255
Support select subtitle by source, add 4 properties:
ulion
parents:
24959
diff
changeset
|
116 { MP_CMD_SUB_SOURCE, "sub_source", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } }, |
c04b64054255
Support select subtitle by source, add 4 properties:
ulion
parents:
24959
diff
changeset
|
117 { MP_CMD_SUB_VOB, "sub_vob", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } }, |
c04b64054255
Support select subtitle by source, add 4 properties:
ulion
parents:
24959
diff
changeset
|
118 { MP_CMD_SUB_DEMUX, "sub_demux", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } }, |
c04b64054255
Support select subtitle by source, add 4 properties:
ulion
parents:
24959
diff
changeset
|
119 { MP_CMD_SUB_FILE, "sub_file", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } }, |
14684 | 120 { MP_CMD_SUB_LOG, "sub_log", 0, { {-1,{0}} } }, |
23725 | 121 { MP_CMD_SUB_SCALE, "sub_scale",1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
122 #ifdef CONFIG_ASS |
25814
4ba9b9bdf123
Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents:
25766
diff
changeset
|
123 { MP_CMD_ASS_USE_MARGINS, "ass_use_margins", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
4ba9b9bdf123
Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents:
25766
diff
changeset
|
124 #endif |
8364 | 125 { MP_CMD_GET_PERCENT_POS, "get_percent_pos", 0, { {-1,{0}} } }, |
15504 | 126 { MP_CMD_GET_TIME_POS, "get_time_pos", 0, { {-1,{0}} } }, |
8364 | 127 { MP_CMD_GET_TIME_LENGTH, "get_time_length", 0, { {-1,{0}} } }, |
19533 | 128 { MP_CMD_GET_FILENAME, "get_file_name", 0, { {-1,{0}} } }, |
129 { MP_CMD_GET_VIDEO_CODEC, "get_video_codec", 0, { {-1,{0}} } }, | |
130 { MP_CMD_GET_VIDEO_BITRATE, "get_video_bitrate", 0, { {-1,{0}} } }, | |
131 { MP_CMD_GET_VIDEO_RESOLUTION, "get_video_resolution", 0, { {-1,{0}} } }, | |
132 { MP_CMD_GET_AUDIO_CODEC, "get_audio_codec", 0, { {-1,{0}} } }, | |
133 { MP_CMD_GET_AUDIO_BITRATE, "get_audio_bitrate", 0, { {-1,{0}} } }, | |
134 { MP_CMD_GET_AUDIO_SAMPLES, "get_audio_samples", 0, { {-1,{0}} } }, | |
135 { MP_CMD_GET_META_TITLE, "get_meta_title", 0, { {-1,{0}} } }, | |
136 { MP_CMD_GET_META_ARTIST, "get_meta_artist", 0, { {-1,{0}} } }, | |
137 { MP_CMD_GET_META_ALBUM, "get_meta_album", 0, { {-1,{0}} } }, | |
138 { MP_CMD_GET_META_YEAR, "get_meta_year", 0, { {-1,{0}} } }, | |
139 { MP_CMD_GET_META_COMMENT, "get_meta_comment", 0, { {-1,{0}} } }, | |
140 { MP_CMD_GET_META_TRACK, "get_meta_track", 0, { {-1,{0}} } }, | |
141 { MP_CMD_GET_META_GENRE, "get_meta_genre", 0, { {-1,{0}} } }, | |
15285
39eb8a327ea9
adds a parameter to the switch_audio command to directly select a track.
reimar
parents:
15162
diff
changeset
|
142 { MP_CMD_SWITCH_AUDIO, "switch_audio", 0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } }, |
25576
54512595b406
properties to change angle; patch by oattila chello hu
nicodvb
parents:
25502
diff
changeset
|
143 { MP_CMD_SWITCH_ANGLE, "switch_angle", 0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } }, |
25817 | 144 { MP_CMD_SWITCH_TITLE, "switch_title", 0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } }, |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
145 #ifdef CONFIG_TV |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
24037
diff
changeset
|
146 { MP_CMD_TV_START_SCAN, "tv_start_scan", 0, { {-1,{0}} }}, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
147 { 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
|
148 { 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
|
149 { MP_CMD_TV_STEP_CHANNEL_LIST, "tv_step_chanlist", 0, { {-1,{0}} } }, |
8494 | 150 { 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
|
151 { 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
|
152 { MP_CMD_TV_SET_FREQ, "tv_set_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
22667 | 153 { MP_CMD_TV_STEP_FREQ, "tv_step_freq", 1, { {MP_CMD_ARG_FLOAT,{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
|
154 { MP_CMD_TV_SET_NORM, "tv_set_norm", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
18206
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18100
diff
changeset
|
155 { MP_CMD_TV_SET_BRIGHTNESS, "tv_set_brightness", 1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT,{1} }, {-1,{0}} }}, |
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18100
diff
changeset
|
156 { MP_CMD_TV_SET_CONTRAST, "tv_set_contrast", 1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT,{1} }, {-1,{0}} }}, |
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18100
diff
changeset
|
157 { MP_CMD_TV_SET_HUE, "tv_set_hue", 1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT,{1} }, {-1,{0}} }}, |
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18100
diff
changeset
|
158 { MP_CMD_TV_SET_SATURATION, "tv_set_saturation", 1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT,{1} }, {-1,{0}} }}, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
159 #endif |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17928
diff
changeset
|
160 { MP_CMD_SUB_FORCED_ONLY, "forced_subs_only", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27345
diff
changeset
|
161 #ifdef CONFIG_DVBIN |
12306
661a6e80030f
slave command dvb_set_channel now takes 2 arguments: channel card
nicodvb
parents:
11793
diff
changeset
|
162 { MP_CMD_DVB_SET_CHANNEL, "dvb_set_channel", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}}}}, |
10626
fd97f3727f15
Finnaly commit Nico's dvb menu. Sorry for committing this
albeu
parents:
10624
diff
changeset
|
163 #endif |
13339
1c787349d286
slave mode command to switch aspect ratio, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13338
diff
changeset
|
164 { MP_CMD_SWITCH_RATIO, "switch_ratio", 0, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
165 { MP_CMD_VO_FULLSCREEN, "vo_fullscreen", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
166 { MP_CMD_VO_ONTOP, "vo_ontop", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
19491
10d8f2cae948
added new filter option to menu file browser to only display some files according to extension
ben
parents:
19342
diff
changeset
|
167 { MP_CMD_FILE_FILTER, "file_filter", 1, { { MP_CMD_ARG_INT, {0}}, {-1,{0}}}}, |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
168 { MP_CMD_VO_ROOTWIN, "vo_rootwin", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
169 { MP_CMD_VO_BORDER, "vo_border", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
19833 | 170 { MP_CMD_SCREENSHOT, "screenshot", 0, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
6304
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6183
diff
changeset
|
171 { MP_CMD_PANSCAN, "panscan",1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
13228
a47aaa6b7324
slave mode command to en/disable vsync, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13091
diff
changeset
|
172 { MP_CMD_SWITCH_VSYNC, "switch_vsync", 0, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
16227
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16071
diff
changeset
|
173 { MP_CMD_LOADFILE, "loadfile", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16071
diff
changeset
|
174 { MP_CMD_LOADLIST, "loadlist", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
14087 | 175 { MP_CMD_RUN, "run", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
32438
faefba58f413
Implement a basic capture feature, available through -capture.
diego
parents:
32419
diff
changeset
|
176 { MP_CMD_CAPTURING, "capturing", 0, { {-1,{0}} } }, |
6888
2dde1a1bc03a
Add the input command "change_rectangle" to control the rectangle
kmkaplan
parents:
6818
diff
changeset
|
177 { MP_CMD_VF_CHANGE_RECTANGLE, "change_rectangle", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}}}}, |
23900 | 178 { MP_CMD_TV_TELETEXT_ADD_DEC, "teletext_add_dec", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
24244 | 179 { MP_CMD_TV_TELETEXT_GO_LINK, "teletext_go_link", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
32392 | 180 { MP_CMD_OVERLAY_ADD, "overlay_add", 5, { {MP_CMD_ARG_STRING,{0}}, {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
181 { MP_CMD_OVERLAY_REMOVE, "overlay_remove", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, | |
4858 | 182 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
183 #ifdef CONFIG_DVDNAV |
27068 | 184 { MP_CMD_DVDNAV, "dvdnav", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
5380
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
185 #endif |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
186 |
27345
b597fd2924b4
Rename preprocessor directive HAVE_MENU --> CONFIG_MENU.
diego
parents:
27343
diff
changeset
|
187 #ifdef CONFIG_MENU |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
188 { 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
|
189 { 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
|
190 { 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
|
191 { 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
|
192 { MP_CMD_CHIDE, "hide", 0, { {MP_CMD_ARG_INT,{3000}}, {-1,{0}} } }, |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
193 #endif |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
194 |
10884
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10802
diff
changeset
|
195 { MP_CMD_GET_VO_FULLSCREEN, "get_vo_fullscreen", 0, { {-1,{0}} } }, |
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10802
diff
changeset
|
196 { MP_CMD_GET_SUB_VISIBILITY, "get_sub_visibility", 0, { {-1,{0}} } }, |
16323
60c6693b2b2b
add key_down_eventto slave mode, used to inject key down event with mplayer_put_key
nplourde
parents:
16227
diff
changeset
|
197 { MP_CMD_KEYDOWN_EVENTS, "key_down_event", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17890
diff
changeset
|
198 { MP_CMD_SET_PROPERTY, "set_property", 2, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17890
diff
changeset
|
199 { MP_CMD_GET_PROPERTY, "get_property", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
23412
f6c225ffe60d
Allow setting the direction in the step_property command.
albeu
parents:
22751
diff
changeset
|
200 { MP_CMD_STEP_PROPERTY, "step_property", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
201 |
19342 | 202 { MP_CMD_SEEK_CHAPTER, "seek_chapter", 1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
19850
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19833
diff
changeset
|
203 { MP_CMD_SET_MOUSE_POS, "set_mouse_pos", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
204 |
30988
8d840754a921
Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents:
30986
diff
changeset
|
205 { MP_CMD_AF_SWITCH, "af_switch", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
8d840754a921
Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents:
30986
diff
changeset
|
206 { MP_CMD_AF_ADD, "af_add", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
8d840754a921
Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents:
30986
diff
changeset
|
207 { MP_CMD_AF_DEL, "af_del", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
8d840754a921
Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents:
30986
diff
changeset
|
208 { MP_CMD_AF_CLR, "af_clr", 0, { {-1,{0}} } }, |
32419
8f35fc25523f
Add experimental af_cmdline slave command to allow changing filter options at runtime.
reimar
parents:
32413
diff
changeset
|
209 { MP_CMD_AF_CMDLINE, "af_cmdline", 2, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, |
30988
8d840754a921
Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents:
30986
diff
changeset
|
210 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
211 { 0, NULL, 0, {} } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
212 }; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
213 |
10398 | 214 /// 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
|
215 /// 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
|
216 |
25709
24ee00528e18
Make several mapping tables related to input processing const.
reimar
parents:
25626
diff
changeset
|
217 static const mp_key_name_t key_names[] = { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
218 { ' ', "SPACE" }, |
22444 | 219 { '#', "SHARP" }, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
220 { KEY_ENTER, "ENTER" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
221 { KEY_TAB, "TAB" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
222 { KEY_CTRL, "CTRL" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
223 { KEY_BACKSPACE, "BS" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
224 { KEY_DELETE, "DEL" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
225 { KEY_INSERT, "INS" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
226 { KEY_HOME, "HOME" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
227 { KEY_END, "END" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
228 { KEY_PAGE_UP, "PGUP" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
229 { KEY_PAGE_DOWN, "PGDWN" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
230 { KEY_ESC, "ESC" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
231 { KEY_RIGHT, "RIGHT" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
232 { KEY_LEFT, "LEFT" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
233 { KEY_DOWN, "DOWN" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
234 { 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
|
235 { 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
|
236 { 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
|
237 { 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
|
238 { 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
|
239 { 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
|
240 { 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
|
241 { 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
|
242 { 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
|
243 { 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
|
244 { KEY_F+10, "F10" }, |
11793 | 245 { KEY_F+11, "F11" }, |
246 { KEY_F+12, "F12" }, | |
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
|
247 { 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
|
248 { 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
|
249 { 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
|
250 { 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
|
251 { 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
|
252 { 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
|
253 { 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
|
254 { 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
|
255 { 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
|
256 { 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
|
257 { KEY_KPDEL, "KP_DEL" }, |
10802 | 258 { KEY_KPDEC, "KP_DEC" }, |
259 { KEY_KPINS, "KP_INS" }, | |
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
|
260 { KEY_KPENTER, "KP_ENTER" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
261 { MOUSE_BTN0, "MOUSE_BTN0" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
262 { MOUSE_BTN1, "MOUSE_BTN1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
263 { MOUSE_BTN2, "MOUSE_BTN2" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
264 { MOUSE_BTN3, "MOUSE_BTN3" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
265 { MOUSE_BTN4, "MOUSE_BTN4" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
266 { MOUSE_BTN5, "MOUSE_BTN5" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
267 { MOUSE_BTN6, "MOUSE_BTN6" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
268 { MOUSE_BTN7, "MOUSE_BTN7" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
269 { MOUSE_BTN8, "MOUSE_BTN8" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
270 { MOUSE_BTN9, "MOUSE_BTN9" }, |
33304
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
271 { MOUSE_BTN10, "MOUSE_BTN10" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
272 { MOUSE_BTN11, "MOUSE_BTN11" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
273 { MOUSE_BTN12, "MOUSE_BTN12" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
274 { MOUSE_BTN13, "MOUSE_BTN13" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
275 { MOUSE_BTN14, "MOUSE_BTN14" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
276 { MOUSE_BTN15, "MOUSE_BTN15" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
277 { MOUSE_BTN16, "MOUSE_BTN16" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
278 { MOUSE_BTN17, "MOUSE_BTN17" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
279 { MOUSE_BTN18, "MOUSE_BTN18" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
280 { MOUSE_BTN19, "MOUSE_BTN19" }, |
16974 | 281 { MOUSE_BTN0_DBL, "MOUSE_BTN0_DBL" }, |
282 { MOUSE_BTN1_DBL, "MOUSE_BTN1_DBL" }, | |
283 { MOUSE_BTN2_DBL, "MOUSE_BTN2_DBL" }, | |
284 { MOUSE_BTN3_DBL, "MOUSE_BTN3_DBL" }, | |
285 { MOUSE_BTN4_DBL, "MOUSE_BTN4_DBL" }, | |
286 { MOUSE_BTN5_DBL, "MOUSE_BTN5_DBL" }, | |
287 { MOUSE_BTN6_DBL, "MOUSE_BTN6_DBL" }, | |
288 { MOUSE_BTN7_DBL, "MOUSE_BTN7_DBL" }, | |
289 { MOUSE_BTN8_DBL, "MOUSE_BTN8_DBL" }, | |
290 { MOUSE_BTN9_DBL, "MOUSE_BTN9_DBL" }, | |
33304
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
291 { MOUSE_BTN10_DBL, "MOUSE_BTN10_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
292 { MOUSE_BTN11_DBL, "MOUSE_BTN11_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
293 { MOUSE_BTN12_DBL, "MOUSE_BTN12_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
294 { MOUSE_BTN13_DBL, "MOUSE_BTN13_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
295 { MOUSE_BTN14_DBL, "MOUSE_BTN14_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
296 { MOUSE_BTN15_DBL, "MOUSE_BTN15_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
297 { MOUSE_BTN16_DBL, "MOUSE_BTN16_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
298 { MOUSE_BTN17_DBL, "MOUSE_BTN17_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
299 { MOUSE_BTN18_DBL, "MOUSE_BTN18_DBL" }, |
d63bf64a2094
Support up to 20 mouse buttons, there really seem to be input devices
reimar
parents:
33019
diff
changeset
|
300 { MOUSE_BTN19_DBL, "MOUSE_BTN19_DBL" }, |
4524
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
301 { JOY_AXIS1_MINUS, "JOY_UP" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
302 { JOY_AXIS1_PLUS, "JOY_DOWN" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
303 { JOY_AXIS0_MINUS, "JOY_LEFT" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
304 { JOY_AXIS0_PLUS, "JOY_RIGHT" }, |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
305 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
306 { JOY_AXIS0_PLUS, "JOY_AXIS0_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
307 { JOY_AXIS0_MINUS, "JOY_AXIS0_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
308 { 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
|
309 { JOY_AXIS1_MINUS, "JOY_AXIS1_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
310 { JOY_AXIS2_PLUS, "JOY_AXIS2_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
311 { JOY_AXIS2_MINUS, "JOY_AXIS2_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
312 { 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
|
313 { JOY_AXIS3_MINUS, "JOY_AXIS3_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
314 { JOY_AXIS4_PLUS, "JOY_AXIS4_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
315 { JOY_AXIS4_MINUS, "JOY_AXIS4_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
316 { 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
|
317 { JOY_AXIS5_MINUS, "JOY_AXIS5_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
318 { JOY_AXIS6_PLUS, "JOY_AXIS6_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
319 { JOY_AXIS6_MINUS, "JOY_AXIS6_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
320 { 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
|
321 { JOY_AXIS7_MINUS, "JOY_AXIS7_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
322 { JOY_AXIS8_PLUS, "JOY_AXIS8_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
323 { JOY_AXIS8_MINUS, "JOY_AXIS8_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
324 { 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
|
325 { JOY_AXIS9_MINUS, "JOY_AXIS9_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
326 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
327 { JOY_BTN0, "JOY_BTN0" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
328 { JOY_BTN1, "JOY_BTN1" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
329 { JOY_BTN2, "JOY_BTN2" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
330 { JOY_BTN3, "JOY_BTN3" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
331 { JOY_BTN4, "JOY_BTN4" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
332 { JOY_BTN5, "JOY_BTN5" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
333 { JOY_BTN6, "JOY_BTN6" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
334 { JOY_BTN7, "JOY_BTN7" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
335 { JOY_BTN8, "JOY_BTN8" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
336 { JOY_BTN9, "JOY_BTN9" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
337 |
24037 | 338 { AR_PLAY, "AR_PLAY" }, |
339 { AR_PLAY_HOLD, "AR_PLAY_HOLD" }, | |
340 { AR_NEXT, "AR_NEXT" }, | |
341 { AR_NEXT_HOLD, "AR_NEXT_HOLD" }, | |
342 { AR_PREV, "AR_PREV" }, | |
343 { AR_PREV_HOLD, "AR_PREV_HOLD" }, | |
344 { AR_MENU, "AR_MENU" }, | |
345 { AR_MENU_HOLD, "AR_MENU_HOLD" }, | |
346 { AR_VUP, "AR_VUP" }, | |
347 { AR_VDOWN, "AR_VDOWN" }, | |
348 | |
16892
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
349 { KEY_POWER, "POWER" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
350 { KEY_MENU, "MENU" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
351 { KEY_PLAY, "PLAY" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
352 { KEY_PAUSE, "PAUSE" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
353 { KEY_PLAYPAUSE, "PLAYPAUSE" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
354 { KEY_STOP, "STOP" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
355 { KEY_FORWARD, "FORWARD" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
356 { KEY_REWIND, "REWIND" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
357 { KEY_NEXT, "NEXT" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
358 { KEY_PREV, "PREV" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
359 { KEY_VOLUME_UP, "VOLUME_UP" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
360 { KEY_VOLUME_DOWN, "VOLUME_DOWN" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
361 { KEY_MUTE, "MUTE" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
362 |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
363 // These are kept for backward compatibility |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
364 { KEY_PAUSE, "XF86_PAUSE" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
365 { KEY_STOP, "XF86_STOP" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
366 { KEY_PREV, "XF86_PREV" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
367 { KEY_NEXT, "XF86_NEXT" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
368 |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
369 { KEY_CLOSE_WIN, "CLOSE_WIN" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
370 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
371 { 0, NULL } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
372 }; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
373 |
10398 | 374 // This is the default binding. The content of input.conf overrides these. |
375 // 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
|
376 // The second is the command |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
377 |
25709
24ee00528e18
Make several mapping tables related to input processing const.
reimar
parents:
25626
diff
changeset
|
378 static const mp_cmd_bind_t def_cmd_binds[] = { |
5061 | 379 |
380 { { MOUSE_BTN3, 0 }, "seek 10" }, | |
381 { { MOUSE_BTN4, 0 }, "seek -10" }, | |
382 { { MOUSE_BTN5, 0 }, "volume 1" }, | |
383 { { MOUSE_BTN6, 0 }, "volume -1" }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
384 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
385 #ifdef CONFIG_DVDNAV |
27068 | 386 { { KEY_KP8, 0 }, "dvdnav up" }, // up |
387 { { KEY_KP2, 0 }, "dvdnav down" }, // down | |
388 { { KEY_KP4, 0 }, "dvdnav left" }, // left | |
389 { { KEY_KP6, 0 }, "dvdnav right" }, // right | |
390 { { KEY_KP5, 0 }, "dvdnav menu" }, // menu | |
391 { { KEY_KPENTER, 0 }, "dvdnav select" }, // select | |
392 { { MOUSE_BTN0, 0 }, "dvdnav mouse" }, //select | |
393 { { KEY_KP7, 0 }, "dvdnav prev" }, // previous menu | |
5380
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
394 #endif |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
395 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
396 { { KEY_RIGHT, 0 }, "seek 10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
397 { { KEY_LEFT, 0 }, "seek -10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
398 { { KEY_UP, 0 }, "seek 60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
399 { { KEY_DOWN, 0 }, "seek -60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
400 { { KEY_PAGE_UP, 0 }, "seek 600" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
401 { { KEY_PAGE_DOWN, 0 }, "seek -600" }, |
18100
826a0faa2a0f
Switch audio delay keys to something more sane (+ to increase, - to decrease)
diego
parents:
17935
diff
changeset
|
402 { { '+', 0 }, "audio_delay 0.100" }, |
826a0faa2a0f
Switch audio delay keys to something more sane (+ to increase, - to decrease)
diego
parents:
17935
diff
changeset
|
403 { { '-', 0 }, "audio_delay -0.100" }, |
13710 | 404 { { '[', 0 }, "speed_mult 0.9091" }, |
405 { { ']', 0 }, "speed_mult 1.1" }, | |
406 { { '{', 0 }, "speed_mult 0.5" }, | |
407 { { '}', 0 }, "speed_mult 2.0" }, | |
408 { { KEY_BACKSPACE, 0 }, "speed_set 1.0" }, | |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
409 { { 'q', 0 }, "quit" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
410 { { KEY_ESC, 0 }, "quit" }, |
5135 | 411 { { 'p', 0 }, "pause" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
412 { { ' ', 0 }, "pause" }, |
13642 | 413 { { '.', 0 }, "frame_step" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
414 { { KEY_HOME, 0 }, "pt_up_step 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
415 { { KEY_END, 0 }, "pt_up_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
416 { { '>', 0 }, "pt_step 1" }, |
5135 | 417 { { KEY_ENTER, 0 }, "pt_step 1 1" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
418 { { '<', 0 }, "pt_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
419 { { KEY_INS, 0 }, "alt_src_step 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
420 { { KEY_DEL, 0 }, "alt_src_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
421 { { 'o', 0 }, "osd" }, |
18222
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
422 { { 'I', 0 }, "osd_show_property_text \"${filename}\"" }, |
30986
2186c040f9e0
Add osd_show_progression: Show progress bar and elapsed/total time.
cehoyos
parents:
30960
diff
changeset
|
423 { { 'P', 0 }, "osd_show_progression" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
424 { { 'z', 0 }, "sub_delay -0.1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
425 { { 'x', 0 }, "sub_delay +0.1" }, |
8365
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
426 { { 'g', 0 }, "sub_step -1" }, |
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
427 { { 'y', 0 }, "sub_step +1" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
428 { { '9', 0 }, "volume -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
429 { { '/', 0 }, "volume -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
430 { { '0', 0 }, "volume 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
431 { { '*', 0 }, "volume 1" }, |
23568 | 432 { { '(', 0 }, "balance -0.1" }, |
433 { { ')', 0 }, "balance 0.1" }, | |
6311
da2dda48b7ec
add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents:
6304
diff
changeset
|
434 { { 'm', 0 }, "mute" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
435 { { '1', 0 }, "contrast -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
436 { { '2', 0 }, "contrast 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
437 { { '3', 0 }, "brightness -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
438 { { '4', 0 }, "brightness 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
439 { { '5', 0 }, "hue -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
440 { { '6', 0 }, "hue 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
441 { { '7', 0 }, "saturation -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
442 { { '8', 0 }, "saturation 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
443 { { 'd', 0 }, "frame_drop" }, |
20973
c0bcec5150a3
Add deinterlace property, patch by Carl Eugen Hoyos
reimar
parents:
20950
diff
changeset
|
444 { { 'D', 0 }, "step_property deinterlace" }, |
5015
9842148f6053
-subpos key bindings with new input layer - patch by Tomas Konir <moje@molly.vabo.cz>
arpi
parents:
4956
diff
changeset
|
445 { { '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
|
446 { { 't', 0 }, "sub_pos +1" }, |
8921
b06f6d56d039
use 'a' for subtitle aligment instead for useless gui aboutbox
arpi
parents:
8627
diff
changeset
|
447 { { 'a', 0 }, "sub_alignment" }, |
7628
d6608342591d
This patch adds the functionality to disable/enable subtitles while playing
arpi
parents:
7517
diff
changeset
|
448 { { 'v', 0 }, "sub_visibility" }, |
20977
28714c74c444
Since vobsub_lang and sub_select do the same, 'b' and 'j' were bound
reimar
parents:
20973
diff
changeset
|
449 { { 'j', 0 }, "sub_select" }, |
32593 | 450 { { 'J', 0 }, "sub_select -3" }, |
10917
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
451 { { 'F', 0 }, "forced_subs_only" }, |
15046
b7aa70b05d76
Added support of audio stream switching in the MPEG demuxer using the #-key
gpoirier
parents:
14718
diff
changeset
|
452 { { '#', 0 }, "switch_audio" }, |
20950 | 453 { { '_', 0 }, "step_property switch_video" }, |
21008 | 454 { { KEY_TAB, 0 }, "step_property switch_program" }, |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
455 { { 'i', 0 }, "edl_mark" }, |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
456 #ifdef CONFIG_TV |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
457 { { 'h', 0 }, "tv_step_channel 1" }, |
4858 | 458 { { 'k', 0 }, "tv_step_channel -1" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
459 { { 'n', 0 }, "tv_step_norm" }, |
6311
da2dda48b7ec
add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents:
6304
diff
changeset
|
460 { { 'u', 0 }, "tv_step_chanlist" }, |
4858 | 461 #endif |
23900 | 462 { { 'X', 0 }, "step_property teletext_mode 1" }, |
463 { { 'W', 0 }, "step_property teletext_page 1" }, | |
464 { { 'Q', 0 }, "step_property teletext_page -1" }, | |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
465 #ifdef CONFIG_JOYSTICK |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
466 { { JOY_AXIS0_PLUS, 0 }, "seek 10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
467 { { JOY_AXIS0_MINUS, 0 }, "seek -10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
468 { { JOY_AXIS1_MINUS, 0 }, "seek 60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
469 { { JOY_AXIS1_PLUS, 0 }, "seek -60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
470 { { JOY_BTN0, 0 }, "pause" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
471 { { JOY_BTN1, 0 }, "osd" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
472 { { JOY_BTN2, 0 }, "volume 1"}, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
473 { { JOY_BTN3, 0 }, "volume -1"}, |
4525 | 474 #endif |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27370
diff
changeset
|
475 #ifdef CONFIG_APPLE_REMOTE |
24037 | 476 { { AR_PLAY, 0}, "pause" }, |
477 { { AR_PLAY_HOLD, 0}, "quit" }, | |
478 { { AR_NEXT, 0 }, "seek 30" }, | |
479 { { AR_NEXT_HOLD, 0 }, "seek 120" }, | |
480 { { AR_PREV, 0 }, "seek -10" }, | |
481 { { AR_PREV_HOLD, 0 }, "seek -120" }, | |
482 { { AR_MENU, 0 }, "osd" }, | |
483 { { AR_MENU_HOLD, 0 }, "mute" }, | |
484 { { AR_VUP, 0 }, "volume 1"}, | |
485 { { AR_VDOWN, 0 }, "volume -1"}, | |
486 #endif | |
11542 | 487 { { 'T', 0 }, "vo_ontop" }, |
4732 | 488 { { 'f', 0 }, "vo_fullscreen" }, |
32438
faefba58f413
Implement a basic capture feature, available through -capture.
diego
parents:
32419
diff
changeset
|
489 { { 'c', 0 }, "capturing" }, |
19833 | 490 { { 's', 0 }, "screenshot 0" }, |
491 { { 'S', 0 }, "screenshot 1" }, | |
6304
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6183
diff
changeset
|
492 { { 'w', 0 }, "panscan -0.1" }, |
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6183
diff
changeset
|
493 { { 'e', 0 }, "panscan +0.1" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
494 |
16892
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
495 { { KEY_POWER, 0 }, "quit" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
496 { { KEY_MENU, 0 }, "osd" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
497 { { KEY_PLAY, 0 }, "pause" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
498 { { KEY_PAUSE, 0 }, "pause" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
499 { { KEY_PLAYPAUSE, 0 }, "pause" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
500 { { KEY_STOP, 0 }, "quit" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
501 { { KEY_FORWARD, 0 }, "seek 60" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
502 { { KEY_REWIND, 0 }, "seek -60" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
503 { { KEY_NEXT, 0 }, "pt_step 1" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
504 { { KEY_PREV, 0 }, "pt_step -1" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
505 { { KEY_VOLUME_UP, 0 }, "volume 1" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
506 { { KEY_VOLUME_DOWN, 0 }, "volume -1" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
507 { { KEY_MUTE, 0 }, "mute" }, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
508 |
16892
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
509 { { KEY_CLOSE_WIN, 0 }, "quit" }, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
510 |
19342 | 511 { { '!', 0 }, "seek_chapter -1" }, |
512 { { '@', 0 }, "seek_chapter 1" }, | |
25576
54512595b406
properties to change angle; patch by oattila chello hu
nicodvb
parents:
25502
diff
changeset
|
513 { { 'A', 0 }, "switch_angle 1" }, |
26877 | 514 { { 'U', 0 }, "stop" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
515 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
516 { { 0 }, NULL } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
517 }; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
518 |
17890
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
519 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
520 #ifndef MP_MAX_KEY_FD |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
521 #define MP_MAX_KEY_FD 10 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
522 #endif |
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 #ifndef MP_MAX_CMD_FD |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
525 #define MP_MAX_CMD_FD 10 |
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 |
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
|
528 #define CMD_QUEUE_SIZE 100 |
4821 | 529 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
530 typedef struct mp_input_fd { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
531 int fd; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
532 void* read_func; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
533 mp_close_func_t close_func; |
24140
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
534 unsigned eof : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
535 unsigned drop : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
536 unsigned dead : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
537 unsigned got_cmd : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
538 unsigned no_select : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
539 unsigned no_readfunc_retval : 1; |
10398 | 540 // These fields are for the cmd fds. |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
541 char* buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
542 int pos,size; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
543 } mp_input_fd_t; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
544 |
31185
77ebd8404c02
Drop pointles _st suffix from struct mp_cmd_filter and mp_cmd_bind_section.
diego
parents:
30988
diff
changeset
|
545 typedef struct mp_cmd_filter mp_cmd_filter_t; |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
546 |
31185
77ebd8404c02
Drop pointles _st suffix from struct mp_cmd_filter and mp_cmd_bind_section.
diego
parents:
30988
diff
changeset
|
547 struct mp_cmd_filter { |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
548 mp_input_cmd_filter filter; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
549 void* ctx; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
550 mp_cmd_filter_t* next; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
551 }; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
552 |
31185
77ebd8404c02
Drop pointles _st suffix from struct mp_cmd_filter and mp_cmd_bind_section.
diego
parents:
30988
diff
changeset
|
553 typedef struct mp_cmd_bind_section mp_cmd_bind_section_t; |
23477 | 554 |
31185
77ebd8404c02
Drop pointles _st suffix from struct mp_cmd_filter and mp_cmd_bind_section.
diego
parents:
30988
diff
changeset
|
555 struct mp_cmd_bind_section { |
23477 | 556 mp_cmd_bind_t* cmd_binds; |
557 char* section; | |
558 mp_cmd_bind_section_t* next; | |
559 }; | |
560 | |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
561 // These are the user defined binds |
23477 | 562 static mp_cmd_bind_section_t* cmd_binds_section = NULL; |
563 static char* section = NULL; | |
4842 | 564 static mp_cmd_bind_t* cmd_binds = NULL; |
23477 | 565 static mp_cmd_bind_t* cmd_binds_default = NULL; |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
566 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
|
567 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
568 // Callback to allow the menu filter to grab the incoming keys |
25502
605d4e3e403f
From now on, libmenu does not steal all input keys from input modules.
ulion
parents:
25319
diff
changeset
|
569 int (*mp_input_key_cb)(int code) = NULL; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
570 |
25623
b955a135e3a8
Do not use exit_player in the signal handler, this code just can not
reimar
parents:
25576
diff
changeset
|
571 int async_quit_request; |
b955a135e3a8
Do not use exit_player in the signal handler, this code just can not
reimar
parents:
25576
diff
changeset
|
572 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
573 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
|
574 static unsigned int num_key_fd = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
575 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
|
576 static unsigned int num_cmd_fd = 0; |
4821 | 577 static mp_cmd_t* cmd_queue[CMD_QUEUE_SIZE]; |
578 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
|
579 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
580 // this is the key currently down |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
581 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
|
582 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
|
583 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
584 // Autorepeat stuff |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
585 static short ar_state = -1; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
586 static mp_cmd_t* ar_cmd = NULL; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
587 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
|
588 |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
589 static int use_joystick = 1, use_lirc = 1, use_lircc = 1; |
29023
d1647b4a4838
Rename 'default-binds' input option to 'default-bindings'.
diego
parents:
28843
diff
changeset
|
590 static int default_bindings = 1; |
6551
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
591 static char* config_file = "input.conf"; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
592 |
24037 | 593 /* Apple Remote */ |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27370
diff
changeset
|
594 #ifdef CONFIG_APPLE_REMOTE |
26767
5f304bb41cd9
Keep AppleIR enabled by default on MacOSX but have it disable on Linux.
ben
parents:
26765
diff
changeset
|
595 static int use_ar = 1; |
26797
029a3d52e15e
fix compilation of input.c if neither macosx/linux apple remote code
ben
parents:
26767
diff
changeset
|
596 #else |
26765 | 597 static int use_ar = 0; |
26767
5f304bb41cd9
Keep AppleIR enabled by default on MacOSX but have it disable on Linux.
ben
parents:
26765
diff
changeset
|
598 #endif |
24037 | 599 |
5722
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
600 static char* js_dev = NULL; |
26763
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
601 static char* ar_dev = NULL; |
5722
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
602 |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
603 static char* in_file = NULL; |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
604 static int in_file_fd = -1; |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
605 |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10580
diff
changeset
|
606 static int mp_input_print_key_list(m_option_t* cfg); |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10580
diff
changeset
|
607 static int mp_input_print_cmd_list(m_option_t* cfg); |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
608 |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
609 // Our command line options |
30960 | 610 static const m_option_t input_conf[] = { |
4836 | 611 { "conf", &config_file, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL }, |
26763
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
612 { "ar-dev", &ar_dev, 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
|
613 { "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
|
614 { "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
|
615 { "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
|
616 { "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
|
617 { "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
|
618 { "file", &in_file, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL }, |
29023
d1647b4a4838
Rename 'default-binds' input option to 'default-bindings'.
diego
parents:
28843
diff
changeset
|
619 { "default-bindings", &default_bindings, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL }, |
d1647b4a4838
Rename 'default-binds' input option to 'default-bindings'.
diego
parents:
28843
diff
changeset
|
620 { "nodefault-bindings", &default_bindings, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL }, |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
621 { NULL, NULL, 0, 0, 0, 0, NULL} |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
622 }; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
623 |
30960 | 624 static const m_option_t mp_input_opts[] = { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
625 { "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
|
626 { "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
|
627 { "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
|
628 { "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
|
629 { "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
|
630 { "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
|
631 { "lircc", &use_lircc, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL }, |
24037 | 632 { "noar", &use_ar, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL }, |
633 { "ar", &use_ar, 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
|
634 { NULL, NULL, 0, 0, 0, 0, NULL} |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
635 }; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
636 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
637 static int |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
638 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
|
639 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
640 static char* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
641 mp_input_get_key_name(int key); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
642 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
643 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
644 int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
645 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
|
646 if(num_cmd_fd == MP_MAX_CMD_FD) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
647 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantRegister2ManyCmdFds,fd); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
648 return 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
649 } |
24137
46d7af639861
Fix invalid fd check, the bug is somewhere else though.
reimar
parents:
24136
diff
changeset
|
650 if (select && fd < 0) { |
24136
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
651 mp_msg(MSGT_INPUT, MSGL_ERR, "Invalid fd %i in mp_input_add_cmd_fd", fd); |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
652 return 0; |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
653 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
654 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
655 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
|
656 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
|
657 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
|
658 cmd_fds[num_cmd_fd].close_func = close_func; |
24141
a911d41e4e99
Revert r24158, it is not necessary with unsigned bitfield
reimar
parents:
24140
diff
changeset
|
659 cmd_fds[num_cmd_fd].no_select = !select; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
660 num_cmd_fd++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
661 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
662 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
663 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
664 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
665 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
666 mp_input_rm_cmd_fd(int fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
667 unsigned int i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
668 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
669 for(i = 0; i < num_cmd_fd; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
670 if(cmd_fds[i].fd == fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
671 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
672 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
673 if(i == num_cmd_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
674 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
675 if(cmd_fds[i].close_func) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
676 cmd_fds[i].close_func(cmd_fds[i].fd); |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32438
diff
changeset
|
677 free(cmd_fds[i].buffer); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
678 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
679 if(i + 1 < num_cmd_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
680 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
|
681 num_cmd_fd--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
682 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
683 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
684 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
685 mp_input_rm_key_fd(int fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
686 unsigned int i; |
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 for(i = 0; i < num_key_fd; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
689 if(key_fds[i].fd == fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
690 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
691 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
692 if(i == num_key_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
693 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
694 if(key_fds[i].close_func) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
695 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
|
696 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
697 if(i + 1 < num_key_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
698 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
|
699 num_key_fd--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
700 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
701 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
702 int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
703 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
|
704 if(num_key_fd == MP_MAX_KEY_FD) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
705 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantRegister2ManyKeyFds,fd); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
706 return 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
707 } |
24137
46d7af639861
Fix invalid fd check, the bug is somewhere else though.
reimar
parents:
24136
diff
changeset
|
708 if (select && fd < 0) { |
24136
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
709 mp_msg(MSGT_INPUT, MSGL_ERR, "Invalid fd %i in mp_input_add_key_fd", fd); |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
710 return 0; |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
711 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
712 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
713 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
|
714 key_fds[num_key_fd].fd = fd; |
24128 | 715 key_fds[num_key_fd].read_func = read_func; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
716 key_fds[num_key_fd].close_func = close_func; |
24141
a911d41e4e99
Revert r24158, it is not necessary with unsigned bitfield
reimar
parents:
24140
diff
changeset
|
717 key_fds[num_key_fd].no_select = !select; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
718 num_key_fd++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
719 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
720 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
721 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
722 |
24132 | 723 int |
724 mp_input_add_event_fd(int fd, void (*read_func)(void)) | |
725 { | |
726 if(num_key_fd == MP_MAX_KEY_FD) { | |
727 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantRegister2ManyKeyFds,fd); | |
728 return 0; | |
729 } | |
24136
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
730 if (fd < 0) { |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
731 mp_msg(MSGT_INPUT, MSGL_ERR, "Invalid fd %i in mp_input_add_event_fd", fd); |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
732 return 0; |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
733 } |
24132 | 734 |
735 memset(&key_fds[num_key_fd],0,sizeof(mp_input_fd_t)); | |
736 key_fds[num_key_fd].fd = fd; | |
737 key_fds[num_key_fd].read_func = read_func; | |
738 key_fds[num_key_fd].close_func = NULL; | |
739 key_fds[num_key_fd].no_readfunc_retval = 1; | |
740 num_key_fd++; | |
741 | |
742 return 1; | |
743 } | |
744 | |
745 void mp_input_rm_event_fd(int fd) | |
746 { | |
747 mp_input_rm_key_fd(fd); | |
748 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
749 |
25319
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
750 int mp_input_parse_and_queue_cmds(const char *str) { |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
751 int cmd_num = 0; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
752 |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
753 while (*str == '\n' || *str == '\r' || *str == ' ') |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
754 ++str; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
755 while (*str) { |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
756 mp_cmd_t *cmd; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
757 size_t len = strcspn(str, "\r\n"); |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
758 char *cmdbuf = malloc(len+1); |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
759 av_strlcpy(cmdbuf, str, len+1); |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
760 cmd = mp_input_parse_cmd(cmdbuf); |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
761 if (cmd) { |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
762 mp_input_queue_cmd(cmd); |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
763 ++cmd_num; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
764 } |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
765 str += len; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
766 while (*str == '\n' || *str == '\r' || *str == ' ') |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
767 ++str; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
768 free(cmdbuf); |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
769 } |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
770 return cmd_num; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
771 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
772 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
773 mp_cmd_t* |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
774 mp_input_parse_cmd(char* str) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
775 int i,l; |
28835
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
776 int pausing = -1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
777 char *ptr,*e; |
25766 | 778 mp_cmd_t *cmd; |
779 const mp_cmd_t *cmd_def; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
780 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
781 #ifdef MP_DEBUG |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
782 assert(str != NULL); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
783 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
784 |
25303 | 785 // Ignore heading spaces. |
786 while (str[0] == ' ' || str[0] == '\t') | |
787 ++str; | |
788 | |
13991 | 789 if (strncmp(str, "pausing ", 8) == 0) { |
790 pausing = 1; | |
791 str = &str[8]; | |
17241
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
792 } else if (strncmp(str, "pausing_keep ", 13) == 0) { |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
793 pausing = 2; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
794 str = &str[13]; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
795 } else if (strncmp(str, "pausing_toggle ", 15) == 0) { |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
796 pausing = 3; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
797 str = &str[15]; |
27633
6a7cdd00599f
Add an experimental pausing_keep_force slave mode command prefix
reimar
parents:
27391
diff
changeset
|
798 } else if (strncmp(str, "pausing_keep_force ", 19) == 0) { |
6a7cdd00599f
Add an experimental pausing_keep_force slave mode command prefix
reimar
parents:
27391
diff
changeset
|
799 pausing = 4; |
6a7cdd00599f
Add an experimental pausing_keep_force slave mode command prefix
reimar
parents:
27391
diff
changeset
|
800 str = &str[19]; |
13991 | 801 } |
802 | |
4842 | 803 for(ptr = str ; ptr[0] != '\0' && ptr[0] != '\t' && ptr[0] != ' ' ; ptr++) |
804 /* NOTHING */; | |
805 if(ptr[0] != '\0') | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
806 l = ptr-str; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
807 else |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
808 l = strlen(str); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
809 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
810 if(l == 0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
811 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
812 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
813 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
|
814 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
|
815 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
816 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
817 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
818 if(mp_cmds[i].name == NULL) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
819 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
820 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
821 cmd_def = &mp_cmds[i]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
822 |
18885 | 823 cmd = calloc(1, sizeof(mp_cmd_t)); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
824 cmd->id = cmd_def->id; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
825 cmd->name = strdup(cmd_def->name); |
28835
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
826 if (pausing == -1) { |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
827 switch (cmd->id) { |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
828 case MP_CMD_KEYDOWN_EVENTS: |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
829 case MP_CMD_SET_MOUSE_POS: |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
830 pausing = 4; break; |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
831 default: |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
832 pausing = 0; break; |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
833 } |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
834 } |
13991 | 835 cmd->pausing = pausing; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
836 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
837 ptr = str; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
838 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
839 for(i=0; ptr && i < MP_CMD_MAX_ARGS; i++) { |
24816
ba929c5ee0bc
Fix input command parser for using only tab to separate the arguments.
ulion
parents:
24424
diff
changeset
|
840 while(ptr[0] != ' ' && ptr[0] != '\t' && ptr[0] != '\0') ptr++; |
ba929c5ee0bc
Fix input command parser for using only tab to separate the arguments.
ulion
parents:
24424
diff
changeset
|
841 if(ptr[0] == '\0') break; |
4826 | 842 while(ptr[0] == ' ' || ptr[0] == '\t') ptr++; |
24878
6163f5ead8a5
Fix input.conf parse bug when comment follows key binding in the same line.
ulion
parents:
24816
diff
changeset
|
843 if(ptr[0] == '\0' || ptr[0] == '#') break; |
6757
f72fc85934e5
10L bugs founds by Jindrich Makovicka <makovicki at KMLinux dot fjfi dot cvuti dot cz>
albeu
parents:
6551
diff
changeset
|
844 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
|
845 switch(cmd_def->args[i].type) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
846 case MP_CMD_ARG_INT: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
847 errno = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
848 cmd->args[i].v.i = atoi(ptr); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
849 if(errno != 0) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
850 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrArgMustBeInt,cmd_def->name,i+1); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
851 ptr = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
852 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
853 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
854 case MP_CMD_ARG_FLOAT: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
855 errno = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
856 cmd->args[i].v.f = atof(ptr); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
857 if(errno != 0) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
858 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrArgMustBeFloat,cmd_def->name,i+1); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
859 ptr = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
860 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
861 break; |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
862 case MP_CMD_ARG_STRING: { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
863 char term; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
864 char* ptr2 = ptr, *start; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
865 |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
866 if(ptr[0] == '\'' || ptr[0] == '"') { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
867 term = ptr[0]; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
868 ptr2++; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
869 } else |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
870 term = ' '; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
871 start = ptr2; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
872 while(1) { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
873 e = strchr(ptr2,term); |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
874 if(!e) break; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
875 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
|
876 ptr2 = e + 1; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
877 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
878 |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
879 if(term != ' ' && (!e || e[0] == '\0')) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
880 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrUnterminatedArg,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
|
881 ptr = NULL; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
882 break; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
883 } 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
|
884 l = e-start; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
885 ptr2 = start; |
15162
9c7c363837c9
when parsing one cmd argument, only un-escape _this_ argument, not the following ones
aurel
parents:
15128
diff
changeset
|
886 for(e = strchr(ptr2,'\\') ; e && e<start+l ; e = strchr(ptr2,'\\')) { |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
887 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
|
888 ptr2 = e + 1; |
10624
cdfd4a43c406
I've juste found a bug which prevent to load a file whose name contain
albeu
parents:
10594
diff
changeset
|
889 l--; |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
890 } |
18878 | 891 cmd->args[i].v.s = malloc(l+1); |
10624
cdfd4a43c406
I've juste found a bug which prevent to load a file whose name contain
albeu
parents:
10594
diff
changeset
|
892 strncpy(cmd->args[i].v.s,start,l); |
cdfd4a43c406
I've juste found a bug which prevent to load a file whose name contain
albeu
parents:
10594
diff
changeset
|
893 cmd->args[i].v.s[l] = '\0'; |
14681 | 894 if(term != ' ') ptr += l+2; |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
895 } break; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
896 case -1: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
897 ptr = NULL; |
14325
000250ff9516
Add missing break that caused an irritating error message all the time when using slave mode.
reimar
parents:
14087
diff
changeset
|
898 break; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
899 default : |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
900 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrUnknownArg,i); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
901 } |
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 cmd->nargs = i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
904 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
905 if(cmd_def->nargs > cmd->nargs) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
906 /* mp_msg(MSGT_INPUT,MSGL_ERR,"Got command '%s' but\n",str); */ |
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
907 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_Err2FewArgs,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
|
908 mp_cmd_free(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
909 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
910 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
911 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
912 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
|
913 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
|
914 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
|
915 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
|
916 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
917 |
5200
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
918 if(i < MP_CMD_MAX_ARGS) |
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
919 cmd->args[i].type = -1; |
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
920 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
921 return cmd; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
922 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
923 |
29361
94d2be22a185
Increase slave mode buffer so that one can load files with a deeper
ben
parents:
29263
diff
changeset
|
924 #define MP_CMD_MAX_SIZE 4096 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
925 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
926 static int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
927 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
|
928 char* end; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
929 (*ret) = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
930 |
10398 | 931 // 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
|
932 if(!mp_fd->buffer) { |
18878 | 933 mp_fd->buffer = malloc(MP_CMD_MAX_SIZE); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
934 mp_fd->pos = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
935 mp_fd->size = MP_CMD_MAX_SIZE; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
936 } |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
937 |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
938 // Get some data if needed/possible |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
939 while (!mp_fd->got_cmd && !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
|
940 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
|
941 // Error ? |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
942 if(r < 0) { |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
943 switch(r) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
944 case MP_INPUT_ERROR: |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
945 case MP_INPUT_DEAD: |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
946 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrReadingCmdFd,mp_fd->fd,strerror(errno)); |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
947 case MP_INPUT_NOTHING: |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
948 return r; |
15825 | 949 case MP_INPUT_RETRY: |
950 continue; | |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
951 } |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
952 // EOF ? |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
953 } else if(r == 0) { |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
954 mp_fd->eof = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
955 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
956 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
957 mp_fd->pos += r; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
958 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
959 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
960 |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
961 mp_fd->got_cmd = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
962 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
963 while(1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
964 int l = 0; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
965 // Find the cmd end |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
966 mp_fd->buffer[mp_fd->pos] = '\0'; |
30737
8a9667eccbf7
Support all line ending types in mp_input_read_cmd.
reimar
parents:
30590
diff
changeset
|
967 end = strchr(mp_fd->buffer,'\r'); |
8a9667eccbf7
Support all line ending types in mp_input_read_cmd.
reimar
parents:
30590
diff
changeset
|
968 if (end) *end = '\n'; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
969 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
|
970 // No cmd end ? |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
971 if(!end) { |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
972 // 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
|
973 if(mp_fd->size - mp_fd->pos <= 1) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
974 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCmdBufferFullDroppingContent,mp_fd->fd); |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
975 mp_fd->pos = 0; |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
976 mp_fd->drop = 1; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
977 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
978 break; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
979 } |
10398 | 980 // 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
|
981 else if((*ret)) { |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
982 mp_fd->got_cmd = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
983 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
984 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
985 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
986 l = end - mp_fd->buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
987 |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
988 // Not dropping : put the cmd in ret |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
989 if (!mp_fd->drop) { |
18878 | 990 (*ret) = malloc(l+1); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
991 strncpy((*ret),mp_fd->buffer,l); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
992 (*ret)[l] = '\0'; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
993 } else { // Remove the dropping flag |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
994 mp_fd->drop = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
995 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
996 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
|
997 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
|
998 mp_fd->pos -= l+1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
999 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1000 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1001 if(*ret) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1002 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1003 else |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1004 return MP_INPUT_NOTHING; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1005 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1006 |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1007 static int |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1008 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
|
1009 |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1010 while(1) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1011 int r = read(fd,buf,l); |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1012 // Error ? |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1013 if(r < 0) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1014 if(errno == EINTR) |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1015 continue; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1016 else if(errno == EAGAIN) |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1017 return MP_INPUT_NOTHING; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1018 return MP_INPUT_ERROR; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1019 // EOF ? |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1020 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1021 return r; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1022 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1023 |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1024 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1025 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1026 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1027 void |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1028 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
|
1029 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
|
1030 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1031 filter->filter = func; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1032 filter->ctx = ctx; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1033 filter->next = cmd_filters; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1034 cmd_filters = filter; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1035 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1036 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1037 |
4842 | 1038 static char* |
25766 | 1039 mp_input_find_bind_for_key(const 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
|
1040 int j; |
4842 | 1041 |
21432
6f2116ad422a
Simplify: 1 > 0 seems to be a rather safe assumption to make ;-)
reimar
parents:
21042
diff
changeset
|
1042 if (n <= 0) return NULL; |
4842 | 1043 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
|
1044 int found = 1,s; |
4842 | 1045 for(s = 0; s < n && binds[j].input[s] != 0; s++) { |
1046 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
|
1047 found = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1048 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1049 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1050 } |
4842 | 1051 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
|
1052 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1053 } |
4842 | 1054 return binds[j].cmd; |
1055 } | |
1056 | |
23477 | 1057 static mp_cmd_bind_section_t* |
1058 mp_input_get_bind_section(char *section) { | |
1059 mp_cmd_bind_section_t* bind_section = cmd_binds_section; | |
1060 | |
1061 if (section==NULL) section="default"; | |
1062 while (bind_section) { | |
1063 if(strcmp(section,bind_section->section)==0) return bind_section; | |
1064 if(bind_section->next==NULL) break; | |
1065 bind_section=bind_section->next; | |
1066 } | |
1067 if(bind_section) { | |
1068 bind_section->next=malloc(sizeof(mp_cmd_bind_section_t)); | |
1069 bind_section=bind_section->next; | |
1070 } else { | |
1071 cmd_binds_section=malloc(sizeof(mp_cmd_bind_section_t)); | |
1072 bind_section=cmd_binds_section; | |
1073 } | |
1074 bind_section->cmd_binds=NULL; | |
1075 bind_section->section=strdup(section); | |
1076 bind_section->next=NULL; | |
1077 return bind_section; | |
1078 } | |
1079 | |
4842 | 1080 static mp_cmd_t* |
1081 mp_input_get_cmd_from_keys(int n,int* keys, int paused) { | |
1082 char* cmd = NULL; | |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1083 mp_cmd_t* ret; |
4842 | 1084 |
1085 if(cmd_binds) | |
1086 cmd = mp_input_find_bind_for_key(cmd_binds,n,keys); | |
23477 | 1087 if(cmd_binds_default && cmd == NULL) |
1088 cmd = mp_input_find_bind_for_key(cmd_binds_default,n,keys); | |
29023
d1647b4a4838
Rename 'default-binds' input option to 'default-bindings'.
diego
parents:
28843
diff
changeset
|
1089 if(default_bindings && cmd == NULL) |
4842 | 1090 cmd = mp_input_find_bind_for_key(def_cmd_binds,n,keys); |
1091 | |
1092 if(cmd == NULL) { | |
33306
37e215798390
Fix output of "No bind found for key" to actually make sense for
reimar
parents:
33304
diff
changeset
|
1093 char key_name[100]; |
37e215798390
Fix output of "No bind found for key" to actually make sense for
reimar
parents:
33304
diff
changeset
|
1094 int i; |
37e215798390
Fix output of "No bind found for key" to actually make sense for
reimar
parents:
33304
diff
changeset
|
1095 av_strlcpy(key_name, mp_input_get_key_name(keys[0]), sizeof(key_name)); |
37e215798390
Fix output of "No bind found for key" to actually make sense for
reimar
parents:
33304
diff
changeset
|
1096 for (i = 1; i < n; i++) { |
37e215798390
Fix output of "No bind found for key" to actually make sense for
reimar
parents:
33304
diff
changeset
|
1097 av_strlcat(key_name, "-", sizeof(key_name)); |
37e215798390
Fix output of "No bind found for key" to actually make sense for
reimar
parents:
33304
diff
changeset
|
1098 av_strlcat(key_name, mp_input_get_key_name(keys[i]), sizeof(key_name)); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1099 } |
33306
37e215798390
Fix output of "No bind found for key" to actually make sense for
reimar
parents:
33304
diff
changeset
|
1100 mp_msg(MSGT_INPUT,MSGL_WARN,MSGTR_NoBindFound,key_name); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1101 return NULL; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1102 } |
21965 | 1103 if (strcmp(cmd, "ignore") == 0) return NULL; |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1104 ret = mp_input_parse_cmd(cmd); |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1105 if(!ret) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1106 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrInvalidCommandForKey,mp_input_get_key_name(key_down[0])); |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1107 if( num_key_down > 1) { |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1108 unsigned int s; |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1109 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
|
1110 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
|
1111 } |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1112 mp_msg(MSGT_INPUT,MSGL_ERR," : %s \n",cmd); |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1113 } |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1114 return ret; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1115 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1116 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1117 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1118 static mp_cmd_t* |
24131 | 1119 interpret_key(int code, int paused) |
1120 { | |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1121 unsigned int j; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1122 mp_cmd_t* ret; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1123 |
33019
03ed899a72bc
Allow mouse wheel to work with a key fifo size of 2.
reimar
parents:
33017
diff
changeset
|
1124 if (code & MP_KEY_RELEASE_ALL) { |
03ed899a72bc
Allow mouse wheel to work with a key fifo size of 2.
reimar
parents:
33017
diff
changeset
|
1125 code &= ~MP_KEY_RELEASE_ALL; |
33017
cc8cef372901
Make "stuck keys" problem impossibly by resetting the internal
reimar
parents:
32593
diff
changeset
|
1126 memset(key_down, 0, sizeof(key_down)); |
cc8cef372901
Make "stuck keys" problem impossibly by resetting the internal
reimar
parents:
32593
diff
changeset
|
1127 num_key_down = 0; |
cc8cef372901
Make "stuck keys" problem impossibly by resetting the internal
reimar
parents:
32593
diff
changeset
|
1128 last_key_down = 0; |
33019
03ed899a72bc
Allow mouse wheel to work with a key fifo size of 2.
reimar
parents:
33017
diff
changeset
|
1129 if (!code) |
03ed899a72bc
Allow mouse wheel to work with a key fifo size of 2.
reimar
parents:
33017
diff
changeset
|
1130 return NULL; |
33017
cc8cef372901
Make "stuck keys" problem impossibly by resetting the internal
reimar
parents:
32593
diff
changeset
|
1131 } |
cc8cef372901
Make "stuck keys" problem impossibly by resetting the internal
reimar
parents:
32593
diff
changeset
|
1132 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1133 if(mp_input_key_cb) { |
24131 | 1134 if (code & MP_KEY_DOWN) |
1135 return NULL; | |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1136 code &= ~(MP_KEY_DOWN|MP_NO_REPEAT_KEY); |
25502
605d4e3e403f
From now on, libmenu does not steal all input keys from input modules.
ulion
parents:
25319
diff
changeset
|
1137 if (mp_input_key_cb(code)) |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1138 return NULL; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1139 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1140 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1141 if(code & MP_KEY_DOWN) { |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1142 if(num_key_down > MP_MAX_KEY_DOWN) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1143 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_Err2ManyKeyDowns); |
24131 | 1144 return NULL; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1145 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1146 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
|
1147 // Check if we don't already have this key as pushed |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1148 for(j = 0; j < num_key_down; j++) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1149 if(key_down[j] == code) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1150 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1151 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1152 if(j != num_key_down) |
24131 | 1153 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1154 key_down[num_key_down] = code; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1155 num_key_down++; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1156 last_key_down = GetTimer(); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1157 ar_state = 0; |
24131 | 1158 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1159 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1160 // 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
|
1161 // 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
|
1162 // send only release event |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1163 for(j = 0; j < num_key_down; j++) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1164 if(key_down[j] == code) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1165 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1166 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1167 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
|
1168 if(num_key_down > MP_MAX_KEY_DOWN) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1169 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_Err2ManyKeyDowns); |
24131 | 1170 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1171 } |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1172 key_down[num_key_down] = code; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1173 num_key_down++; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1174 last_key_down = 1; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1175 } |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1176 // We ignore key from last combination |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1177 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
|
1178 // Remove the key |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1179 if(j+1 < num_key_down) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1180 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
|
1181 num_key_down--; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1182 last_key_down = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1183 ar_state = -1; |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32438
diff
changeset
|
1184 mp_cmd_free(ar_cmd); |
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32438
diff
changeset
|
1185 ar_cmd = NULL; |
24131 | 1186 return ret; |
1187 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1188 |
24131 | 1189 static mp_cmd_t *check_autorepeat(int paused) |
1190 { | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1191 // No input : autorepeat ? |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1192 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
|
1193 unsigned int t = GetTimer(); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1194 // First time : wait delay |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1195 if(ar_state == 0 && (t - last_key_down) >= ar_delay*1000) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1196 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
|
1197 if(!ar_cmd) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1198 ar_state = -1; |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1199 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1200 } |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1201 ar_state = 1; |
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1202 last_ar = t; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1203 return mp_cmd_clone(ar_cmd); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1204 // Then send rate / sec event |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1205 } 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
|
1206 last_ar = t; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1207 return mp_cmd_clone(ar_cmd); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1208 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1209 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1210 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1211 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1212 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1213 |
31191 | 1214 /** |
1215 * \param time time to wait at most for an event in milliseconds | |
1216 */ | |
24131 | 1217 static mp_cmd_t *read_events(int time, int paused) |
1218 { | |
1219 int i; | |
1220 int got_cmd = 0; | |
24135 | 1221 mp_cmd_t *autorepeat_cmd; |
1222 #ifdef HAVE_POSIX_SELECT | |
1223 fd_set fds; | |
1224 #endif | |
24131 | 1225 for (i = 0; i < num_key_fd; i++) |
1226 if (key_fds[i].dead) { | |
1227 mp_input_rm_key_fd(key_fds[i].fd); | |
1228 i--; | |
1229 } | |
1230 for (i = 0; i < num_cmd_fd; i++) | |
1231 if (cmd_fds[i].dead || cmd_fds[i].eof) { | |
1232 mp_input_rm_cmd_fd(cmd_fds[i].fd); | |
1233 i--; | |
1234 } | |
1235 else if (cmd_fds[i].got_cmd) | |
1236 got_cmd = 1; | |
22751
3d83d77f5a6b
Invert logic for HAVE_NO_POSIX_SELECT to HAVE_POSIX_SELECT to be in line
diego
parents:
22667
diff
changeset
|
1237 #ifdef HAVE_POSIX_SELECT |
24131 | 1238 FD_ZERO(&fds); |
1239 if (!got_cmd) { | |
24135 | 1240 int max_fd = 0, num_fd = 0; |
24131 | 1241 for (i = 0; i < num_key_fd; i++) { |
1242 if (key_fds[i].no_select) | |
1243 continue; | |
1244 if (key_fds[i].fd > max_fd) | |
1245 max_fd = key_fds[i].fd; | |
1246 FD_SET(key_fds[i].fd, &fds); | |
1247 num_fd++; | |
1248 } | |
1249 for (i = 0; i < num_cmd_fd; i++) { | |
1250 if (cmd_fds[i].no_select) | |
1251 continue; | |
1252 if (cmd_fds[i].fd > max_fd) | |
1253 max_fd = cmd_fds[i].fd; | |
1254 FD_SET(cmd_fds[i].fd, &fds); | |
1255 num_fd++; | |
1256 } | |
1257 if (num_fd > 0) { | |
1258 struct timeval tv, *time_val; | |
1259 if (time >= 0) { | |
1260 tv.tv_sec = time / 1000; | |
1261 tv.tv_usec = (time % 1000) * 1000; | |
1262 time_val = &tv; | |
1263 } | |
1264 else | |
1265 time_val = NULL; | |
1266 if (select(max_fd + 1, &fds, NULL, NULL, time_val) < 0) { | |
1267 if (errno != EINTR) | |
1268 mp_msg(MSGT_INPUT, MSGL_ERR, MSGTR_INPUT_INPUT_ErrSelect, | |
1269 strerror(errno)); | |
1270 FD_ZERO(&fds); | |
1271 } | |
33929
ef9b6445fc55
Ensure we do not use 100% CPU when waiting for input with no file-based inputs.
reimar
parents:
33844
diff
changeset
|
1272 } else if (time) |
ef9b6445fc55
Ensure we do not use 100% CPU when waiting for input with no file-based inputs.
reimar
parents:
33844
diff
changeset
|
1273 usec_sleep(time * 1000); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1274 } |
24131 | 1275 #else |
26686
45fc8351ca9b
usec_sleep(0) is not the same as not sleeping at all.
reimar
parents:
26543
diff
changeset
|
1276 if (!got_cmd && time) |
24131 | 1277 usec_sleep(time * 1000); |
9836 | 1278 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1279 |
24131 | 1280 |
1281 for (i = 0; i < num_key_fd; i++) { | |
24135 | 1282 int code; |
22751
3d83d77f5a6b
Invert logic for HAVE_NO_POSIX_SELECT to HAVE_POSIX_SELECT to be in line
diego
parents:
22667
diff
changeset
|
1283 #ifdef HAVE_POSIX_SELECT |
24131 | 1284 if (!key_fds[i].no_select && !FD_ISSET(key_fds[i].fd, &fds)) |
1285 continue; | |
9836 | 1286 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1287 |
24132 | 1288 if (key_fds[i].no_readfunc_retval) { // getch2 handler special-cased for now |
1289 ((void (*)(void))key_fds[i].read_func)(); | |
24134
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1290 if (cmd_queue_length) |
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1291 return NULL; |
24131 | 1292 code = mplayer_get_key(0); |
1293 if (code < 0) | |
1294 code = MP_INPUT_NOTHING; | |
1295 } | |
1296 else | |
1297 code = ((mp_key_func_t)key_fds[i].read_func)(key_fds[i].fd); | |
1298 if (code >= 0) { | |
1299 mp_cmd_t *ret = interpret_key(code, paused); | |
1300 if (ret) | |
1301 return ret; | |
1302 } | |
1303 else if (code == MP_INPUT_ERROR) | |
1304 mp_msg(MSGT_INPUT, MSGL_ERR, MSGTR_INPUT_INPUT_ErrOnKeyInFd, | |
1305 key_fds[i].fd); | |
1306 else if (code == MP_INPUT_DEAD) { | |
1307 mp_msg(MSGT_INPUT, MSGL_ERR, MSGTR_INPUT_INPUT_ErrDeadKeyOnFd, | |
1308 key_fds[i].fd); | |
1309 key_fds[i].dead = 1; | |
1310 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1311 } |
24135 | 1312 autorepeat_cmd = check_autorepeat(paused); |
24131 | 1313 if (autorepeat_cmd) |
1314 return autorepeat_cmd; | |
1315 | |
1316 for (i = 0; i < num_cmd_fd; i++) { | |
24135 | 1317 char *cmd; |
1318 int r; | |
24131 | 1319 #ifdef HAVE_POSIX_SELECT |
24225
d15e78b799b5
Process any waiting commands (got_cmd set). Should fix e.g. smplayer.
reimar
parents:
24141
diff
changeset
|
1320 if (!cmd_fds[i].no_select && !FD_ISSET(cmd_fds[i].fd, &fds) && |
d15e78b799b5
Process any waiting commands (got_cmd set). Should fix e.g. smplayer.
reimar
parents:
24141
diff
changeset
|
1321 !cmd_fds[i].got_cmd) |
24131 | 1322 continue; |
1323 #endif | |
24135 | 1324 r = mp_input_read_cmd(&cmd_fds[i], &cmd); |
24131 | 1325 if (r >= 0) { |
1326 mp_cmd_t *ret = mp_input_parse_cmd(cmd); | |
1327 free(cmd); | |
1328 if (ret) | |
1329 return ret; | |
1330 } | |
1331 else if (r == MP_INPUT_ERROR) | |
1332 mp_msg(MSGT_INPUT, MSGL_ERR, MSGTR_INPUT_INPUT_ErrOnCmdFd, | |
1333 cmd_fds[i].fd); | |
1334 else if (r == MP_INPUT_DEAD) | |
1335 cmd_fds[i].dead = 1; | |
1336 } | |
1337 | |
1338 return NULL; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1339 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1340 |
24131 | 1341 |
4821 | 1342 int |
1343 mp_input_queue_cmd(mp_cmd_t* cmd) { | |
25228 | 1344 if(!cmd || cmd_queue_length >= CMD_QUEUE_SIZE) |
4821 | 1345 return 0; |
1346 cmd_queue[cmd_queue_end] = cmd; | |
1347 cmd_queue_end = (cmd_queue_end + 1) % CMD_QUEUE_SIZE; | |
1348 cmd_queue_length++; | |
1349 return 1; | |
1350 } | |
1351 | |
1352 static mp_cmd_t* | |
13603 | 1353 mp_input_get_queued_cmd(int peek_only) { |
4821 | 1354 mp_cmd_t* ret; |
1355 | |
1356 if(cmd_queue_length == 0) | |
1357 return NULL; | |
1358 | |
1359 ret = cmd_queue[cmd_queue_start]; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1360 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1361 if (!peek_only) { |
4821 | 1362 cmd_queue_length--; |
1363 cmd_queue_start = (cmd_queue_start + 1) % CMD_QUEUE_SIZE; | |
13603 | 1364 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1365 |
4821 | 1366 return ret; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1367 } |
4821 | 1368 |
13603 | 1369 /** |
1370 * \param peek_only when set, the returned command stays in the queue. | |
1371 * Do not free the returned cmd whe you set this! | |
1372 */ | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1373 mp_cmd_t* |
13603 | 1374 mp_input_get_cmd(int time, int paused, int peek_only) { |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1375 mp_cmd_t* ret = NULL; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1376 mp_cmd_filter_t* cf; |
13603 | 1377 int from_queue; |
4821 | 1378 |
25623
b955a135e3a8
Do not use exit_player in the signal handler, this code just can not
reimar
parents:
25576
diff
changeset
|
1379 if (async_quit_request) |
b955a135e3a8
Do not use exit_player in the signal handler, this code just can not
reimar
parents:
25576
diff
changeset
|
1380 return mp_input_parse_cmd("quit 1"); |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1381 while(1) { |
13603 | 1382 from_queue = 1; |
1383 ret = mp_input_get_queued_cmd(peek_only); | |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1384 if(ret) break; |
13603 | 1385 from_queue = 0; |
24131 | 1386 ret = read_events(time, paused); |
24134
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1387 if (!ret) { |
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1388 from_queue = 1; |
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1389 ret = mp_input_get_queued_cmd(peek_only); |
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1390 } |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1391 break; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1392 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1393 if(!ret) return NULL; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1394 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1395 for(cf = cmd_filters ; cf ; cf = cf->next) { |
24959
f13b32b2bee4
Fix cmd filter memory leak, free the cmd after filter ate it.
ulion
parents:
24878
diff
changeset
|
1396 if(cf->filter(ret,paused,cf->ctx)) { |
f13b32b2bee4
Fix cmd filter memory leak, free the cmd after filter ate it.
ulion
parents:
24878
diff
changeset
|
1397 if (peek_only && from_queue) |
f13b32b2bee4
Fix cmd filter memory leak, free the cmd after filter ate it.
ulion
parents:
24878
diff
changeset
|
1398 // The filter ate the cmd, so we remove it from queue |
f13b32b2bee4
Fix cmd filter memory leak, free the cmd after filter ate it.
ulion
parents:
24878
diff
changeset
|
1399 ret = mp_input_get_queued_cmd(0); |
f13b32b2bee4
Fix cmd filter memory leak, free the cmd after filter ate it.
ulion
parents:
24878
diff
changeset
|
1400 mp_cmd_free(ret); |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1401 return NULL; |
24959
f13b32b2bee4
Fix cmd filter memory leak, free the cmd after filter ate it.
ulion
parents:
24878
diff
changeset
|
1402 } |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1403 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1404 |
13603 | 1405 if (!from_queue && peek_only) |
1406 mp_input_queue_cmd(ret); | |
1407 | |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1408 return ret; |
4418
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 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1411 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1412 mp_cmd_free(mp_cmd_t* cmd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1413 int i; |
5046 | 1414 //#ifdef MP_DEBUG |
1415 // assert(cmd != NULL); | |
1416 //#endif | |
1417 if ( !cmd ) return; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1418 |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32438
diff
changeset
|
1419 free(cmd->name); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1420 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1421 for(i=0; i < MP_CMD_MAX_ARGS && cmd->args[i].type != -1; i++) { |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32438
diff
changeset
|
1422 if(cmd->args[i].type == MP_CMD_ARG_STRING) |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1423 free(cmd->args[i].v.s); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1424 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1425 free(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1426 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1427 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1428 mp_cmd_t* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1429 mp_cmd_clone(mp_cmd_t* cmd) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1430 mp_cmd_t* ret; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1431 int i; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1432 #ifdef MP_DEBUG |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1433 assert(cmd != NULL); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1434 #endif |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1435 |
18878 | 1436 ret = malloc(sizeof(mp_cmd_t)); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1437 memcpy(ret,cmd,sizeof(mp_cmd_t)); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1438 if(cmd->name) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1439 ret->name = strdup(cmd->name); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1440 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
|
1441 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
|
1442 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
|
1443 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1444 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1445 return ret; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1446 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1447 |
6394 | 1448 static char key_str[12]; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1449 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1450 static char* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1451 mp_input_get_key_name(int key) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1452 int i; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1453 |
4821 | 1454 for(i = 0; key_names[i].name != NULL; i++) { |
1455 if(key_names[i].key == key) | |
1456 return key_names[i].name; | |
1457 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1458 |
6394 | 1459 if(isascii(key)) { |
1460 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
|
1461 return key_str; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1462 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1463 |
6394 | 1464 // Print the hex key code |
1465 snprintf(key_str,12,"%#-8x",key); | |
1466 return key_str; | |
1467 | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1468 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1469 |
25263
96d0992c7920
Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents:
25228
diff
changeset
|
1470 int |
25150 | 1471 mp_input_get_key_from_name(const char *name) { |
6394 | 1472 int i,ret = 0,len = strlen(name); |
1473 if(len == 1) { // Direct key code | |
1474 ret = (unsigned char)name[0]; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1475 return ret; |
6394 | 1476 } else if(len > 2 && strncasecmp("0x",name,2) == 0) |
1477 return strtol(name,NULL,16); | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1478 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1479 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
|
1480 if(strcasecmp(key_names[i].name,name) == 0) |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1481 return key_names[i].key; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1482 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1483 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1484 return -1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1485 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1486 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1487 static int |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1488 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
|
1489 char *end,*ptr; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1490 int n=0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1491 |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1492 ptr = name; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1493 n = 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1494 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
|
1495 if(end && end[1] != '\0') { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1496 if(end[1] == '-') |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1497 end = &end[1]; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1498 end[0] = '\0'; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1499 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1500 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
|
1501 if(keys[n] < 0) { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1502 return 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1503 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1504 n++; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1505 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
|
1506 ptr = &end[1]; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1507 else |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1508 break; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1509 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1510 keys[n] = 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1511 return 1; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1512 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1513 |
23477 | 1514 #define BS_MAX 256 |
1515 #define SPACE_CHAR " \n\r\t" | |
1516 | |
30590
d218228dc74d
Mark some more functions that are not used outside of their files as static.
diego
parents:
29809
diff
changeset
|
1517 static void |
25766 | 1518 mp_input_bind_keys(const int keys[MP_MAX_KEY_DOWN+1], char* cmd) { |
4842 | 1519 int i = 0,j; |
1520 mp_cmd_bind_t* bind = NULL; | |
23477 | 1521 mp_cmd_bind_section_t* bind_section = NULL; |
1522 char *section=NULL, *p; | |
4842 | 1523 |
1524 #ifdef MP_DEBUG | |
1525 assert(keys != NULL); | |
1526 assert(cmd != NULL); | |
1527 #endif | |
1528 | |
23477 | 1529 if(*cmd=='{' && (p=strchr(cmd,'}'))) { |
1530 *p=0; | |
1531 section=++cmd; | |
1532 cmd=++p; | |
1533 // Jump beginning space | |
1534 for( ; cmd[0] != '\0' && strchr(SPACE_CHAR,cmd[0]) != NULL ; cmd++) | |
1535 /* NOTHING */; | |
1536 } | |
1537 bind_section=mp_input_get_bind_section(section); | |
1538 | |
1539 if(bind_section->cmd_binds) { | |
1540 for(i = 0; bind_section->cmd_binds[i].cmd != NULL ; i++) { | |
1541 for(j = 0 ; bind_section->cmd_binds[i].input[j] == keys[j] && keys[j] != 0 ; j++) | |
4842 | 1542 /* NOTHING */; |
23477 | 1543 if(keys[j] == 0 && bind_section->cmd_binds[i].input[j] == 0 ) { |
1544 bind = &bind_section->cmd_binds[i]; | |
4842 | 1545 break; |
1546 } | |
1547 } | |
1548 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1549 |
4842 | 1550 if(!bind) { |
25726 | 1551 bind_section->cmd_binds = realloc(bind_section->cmd_binds,(i+2)*sizeof(mp_cmd_bind_t)); |
23477 | 1552 memset(&bind_section->cmd_binds[i],0,2*sizeof(mp_cmd_bind_t)); |
1553 bind = &bind_section->cmd_binds[i]; | |
4842 | 1554 } |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32438
diff
changeset
|
1555 free(bind->cmd); |
4842 | 1556 bind->cmd = strdup(cmd); |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1557 memcpy(bind->input,keys,(MP_MAX_KEY_DOWN+1)*sizeof(int)); |
4842 | 1558 } |
1559 | |
30590
d218228dc74d
Mark some more functions that are not used outside of their files as static.
diego
parents:
29809
diff
changeset
|
1560 static void |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1561 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
|
1562 int i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1563 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1564 if(!binds) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1565 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1566 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1567 for(i = 0; binds[i].cmd != NULL; i++) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1568 free(binds[i].cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1569 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1570 free(binds); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1571 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1572 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1573 |
4525 | 1574 static int |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1575 mp_input_parse_config(char *file) { |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1576 int fd; |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1577 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
|
1578 char *iter,*end; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1579 char buffer[BS_MAX]; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1580 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
|
1581 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1582 fd = open(file,O_RDONLY); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1583 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1584 if(fd < 0) { |
33844
77bf38091051
Clarify console output when reading optional configuration files.
diego
parents:
33306
diff
changeset
|
1585 mp_msg(MSGT_INPUT, MSGL_V, "Reading optional input config file %s: %s\n", |
77bf38091051
Clarify console output when reading optional configuration files.
diego
parents:
33306
diff
changeset
|
1586 file, strerror(errno)); |
4525 | 1587 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1588 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1589 |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1590 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
|
1591 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1592 while(1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1593 if(! eof && bs < BS_MAX-1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1594 if(bs > 0) bs--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1595 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
|
1596 if(r < 0) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1597 if(errno == EINTR) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1598 continue; |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1599 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrReadingInputConfig,file,strerror(errno)); |
6463 | 1600 close(fd); |
4525 | 1601 return 0; |
8274 | 1602 } else if(r == 0) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1603 eof = 1; |
8274 | 1604 } else { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1605 bs += r+1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1606 buffer[bs-1] = '\0'; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1607 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1608 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1609 // 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
|
1610 if(bs <= 1) { |
13946 | 1611 mp_msg(MSGT_INPUT,MSGL_V,"Input config file %s parsed: %d binds\n",file,n_binds); |
6463 | 1612 close(fd); |
4525 | 1613 return 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1614 } |
4826 | 1615 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1616 iter = buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1617 |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1618 if(comments) { |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1619 for( ; iter[0] != '\0' && iter[0] != '\n' ; iter++) |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1620 /* NOTHING */; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1621 if(iter[0] == '\0') { // Buffer was full of comment |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1622 bs = 0; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1623 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1624 } |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1625 iter++; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1626 r = strlen(iter); |
26190
e9617c54bb04
Fix handling of comments in input.c, current code had useless ifs and in addition
reimar
parents:
25817
diff
changeset
|
1627 memmove(buffer,iter,r+1); |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1628 bs = r+1; |
26190
e9617c54bb04
Fix handling of comments in input.c, current code had useless ifs and in addition
reimar
parents:
25817
diff
changeset
|
1629 comments = 0; |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1630 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1631 } |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1632 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1633 // Find the wanted key |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1634 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
|
1635 // Jump beginning space |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1636 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
|
1637 /* NOTHING */; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1638 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
|
1639 bs = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1640 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1641 } |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1642 if(iter[0] == '#') { // Comments |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1643 comments = 1; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1644 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1645 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1646 // Find the end of the key code name |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1647 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
|
1648 /*NOTHING */; |
10398 | 1649 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
|
1650 if(buffer == iter) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1651 if(eof && (buffer-iter) == bs) |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1652 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrUnfinishedBinding,iter); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1653 else |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1654 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrBuffer2SmallForKeyName,iter); |
4525 | 1655 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1656 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1657 memmove(buffer,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1658 bs = end-iter; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1659 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1660 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1661 { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1662 char name[end-iter+1]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1663 strncpy(name,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1664 name[end-iter] = '\0'; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1665 if(! mp_input_get_input_from_name(name,keys)) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1666 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrUnknownKey,name); |
6463 | 1667 close(fd); |
4525 | 1668 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1669 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1670 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1671 if( bs > (end-buffer)) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1672 memmove(buffer,end,bs - (end-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1673 bs -= end-buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1674 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1675 } else { // Get the command |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1676 while(iter[0] == ' ' || iter[0] == '\t') iter++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1677 // Found new line |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1678 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
|
1679 int i; |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1680 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrNoCmdForKey,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
|
1681 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
|
1682 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
|
1683 mp_msg(MSGT_INPUT,MSGL_ERR,"\n"); |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1684 keys[0] = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1685 if(iter > buffer) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1686 memmove(buffer,iter,bs- (iter-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1687 bs -= (iter-buffer); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1688 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1689 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1690 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1691 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
|
1692 /* NOTHING */; |
4821 | 1693 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
|
1694 if(iter == buffer) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1695 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrBuffer2SmallForCmd,buffer); |
6463 | 1696 close(fd); |
4525 | 1697 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1698 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1699 memmove(buffer,iter,end - iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1700 bs = end - iter; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1701 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1702 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1703 { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1704 char cmd[end-iter+1]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1705 strncpy(cmd,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1706 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
|
1707 //printf("Set bind %d => %s\n",keys[0],cmd); |
4842 | 1708 mp_input_bind_keys(keys,cmd); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1709 n_binds++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1710 } |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1711 keys[0] = 0; |
4821 | 1712 end++; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1713 if(bs > (end-buffer)) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1714 memmove(buffer,end,bs-(end-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1715 bs -= (end-buffer); |
4821 | 1716 buffer[bs-1] = '\0'; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1717 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1718 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1719 } |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1720 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrWhyHere); |
6463 | 1721 close(fd); |
23477 | 1722 mp_input_set_section(NULL); |
4525 | 1723 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1724 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1725 |
23477 | 1726 void |
1727 mp_input_set_section(char *name) { | |
1728 mp_cmd_bind_section_t* bind_section = NULL; | |
1729 | |
1730 cmd_binds=NULL; | |
1731 cmd_binds_default=NULL; | |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32438
diff
changeset
|
1732 free(section); |
23477 | 1733 if(name) section=strdup(name); else section=strdup("default"); |
24424 | 1734 if((bind_section=mp_input_get_bind_section(section))) |
23477 | 1735 cmd_binds=bind_section->cmd_binds; |
1736 if(strcmp(section,"default")==0) return; | |
24424 | 1737 if((bind_section=mp_input_get_bind_section(NULL))) |
23477 | 1738 cmd_binds_default=bind_section->cmd_binds; |
1739 } | |
1740 | |
1741 char* | |
1742 mp_input_get_section(void) { | |
1743 return section; | |
1744 } | |
1745 | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1746 void |
31319 | 1747 mp_input_init(void) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1748 char* file; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1749 |
4836 | 1750 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
|
1751 if(!file) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1752 return; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1753 |
12942 | 1754 if( !mp_input_parse_config(file)) { |
1755 // free file if it was allocated by get_path(), | |
1756 // before it gets overwritten | |
1757 if( file != config_file) | |
1758 { | |
1759 free(file); | |
1760 } | |
6551
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
1761 // Try global conf dir |
10272
7b0bc557987b
renames: DATADIR->MPLAYER_DATADIR, CONFDIR->MPLAYER_CONFDIR, LIBDIR->MPLAYER_LIBDIR
arpi
parents:
10215
diff
changeset
|
1762 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
|
1763 if(! mp_input_parse_config(file)) |
13946 | 1764 mp_msg(MSGT_INPUT,MSGL_V,"Falling back on default (hardcoded) input config\n"); |
6551
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
1765 } |
12942 | 1766 else |
1767 { | |
1768 // free file if it was allocated by get_path() | |
1769 if( file != config_file) | |
1770 free(file); | |
1771 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1772 |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
1773 #ifdef CONFIG_JOYSTICK |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1774 if(use_joystick) { |
5722
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
1775 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
|
1776 if(fd < 0) |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1777 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantInitJoystick); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1778 else |
4524
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
1779 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
|
1780 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1781 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1782 |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
1783 #ifdef CONFIG_LIRC |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1784 if(use_lirc) { |
4432 | 1785 int fd = mp_input_lirc_init(); |
1786 if(fd > 0) | |
7883 | 1787 mp_input_add_cmd_fd(fd,0,mp_input_lirc_read,mp_input_lirc_close); |
4432 | 1788 } |
1789 #endif | |
1790 | |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
1791 #ifdef CONFIG_LIRCC |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1792 if(use_lircc) { |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1793 int fd = lircc_init("mplayer", NULL); |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1794 if(fd >= 0) |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1795 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
|
1796 } |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1797 #endif |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1798 |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27370
diff
changeset
|
1799 #ifdef CONFIG_APPLE_REMOTE |
24037 | 1800 if(use_ar) { |
1801 if(mp_input_ar_init() < 0) | |
1802 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantInitAppleRemote); | |
1803 else | |
1804 mp_input_add_key_fd(-1,0,mp_input_ar_read,mp_input_ar_close); | |
1805 } | |
1806 #endif | |
1807 | |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27370
diff
changeset
|
1808 #ifdef CONFIG_APPLE_IR |
26763
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1809 if(use_ar) { |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1810 int fd = mp_input_appleir_init(ar_dev); |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1811 if(fd < 0) |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1812 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantInitAppleRemote); |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1813 else |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1814 mp_input_add_key_fd(fd,1,mp_input_appleir_read,(mp_close_func_t)close); |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1815 } |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1816 #endif |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1817 |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1818 if(in_file) { |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1819 struct stat st; |
32413
d87b0b03f56e
Make code clearer by putting the "special case hack" inside the if.
reimar
parents:
32412
diff
changeset
|
1820 int mode = O_RDONLY; |
d87b0b03f56e
Make code clearer by putting the "special case hack" inside the if.
reimar
parents:
32412
diff
changeset
|
1821 // Use RDWR for FIFOs to ensure they stay open over multiple accesses. |
d87b0b03f56e
Make code clearer by putting the "special case hack" inside the if.
reimar
parents:
32412
diff
changeset
|
1822 // Note that on Windows stat may fail for named pipes, but due to how the |
d87b0b03f56e
Make code clearer by putting the "special case hack" inside the if.
reimar
parents:
32412
diff
changeset
|
1823 // API works, using RDONLY should be ok. |
d87b0b03f56e
Make code clearer by putting the "special case hack" inside the if.
reimar
parents:
32412
diff
changeset
|
1824 if (stat(in_file,&st) == 0 && S_ISFIFO(st.st_mode)) |
d87b0b03f56e
Make code clearer by putting the "special case hack" inside the if.
reimar
parents:
32412
diff
changeset
|
1825 mode = O_RDWR; |
32411
27f6b9927eec
Do not fail opening a -input file= file just because stat failed, but try
reimar
parents:
32392
diff
changeset
|
1826 in_file_fd = open(in_file, mode); |
32412 | 1827 if(in_file_fd >= 0) |
1828 mp_input_add_cmd_fd(in_file_fd,1,NULL,(mp_close_func_t)close); | |
1829 else | |
1830 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantOpenFile,in_file,strerror(errno)); | |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1831 } |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1832 |
4432 | 1833 } |
1834 | |
1835 void | |
1836 mp_input_uninit(void) { | |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1837 unsigned int i; |
23477 | 1838 mp_cmd_bind_section_t* bind_section; |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1839 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1840 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
|
1841 if(key_fds[i].close_func) |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1842 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
|
1843 } |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1844 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1845 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
|
1846 if(cmd_fds[i].close_func) |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1847 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
|
1848 } |
23477 | 1849 while (cmd_binds_section) { |
1850 mp_input_free_binds(cmd_binds_section->cmd_binds); | |
1851 free(cmd_binds_section->section); | |
1852 bind_section=cmd_binds_section->next; | |
1853 free(cmd_binds_section); | |
1854 cmd_binds_section=bind_section; | |
1855 } | |
1856 cmd_binds_section=NULL; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1857 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1858 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1859 void |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1860 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
|
1861 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
|
1862 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1863 |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10580
diff
changeset
|
1864 static int mp_input_print_key_list(m_option_t* cfg) { |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1865 int i; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1866 printf("\n"); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1867 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
|
1868 printf("%s\n",key_names[i].name); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1869 exit(0); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1870 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1871 |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10580
diff
changeset
|
1872 static int mp_input_print_cmd_list(m_option_t* cfg) { |
25766 | 1873 const mp_cmd_t *cmd; |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1874 int i,j; |
19110
08888397444e
marks several strings inside structs as const when they hold just
reynaldo
parents:
18889
diff
changeset
|
1875 const char* type; |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1876 |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1877 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
|
1878 printf("%-20.20s",cmd->name); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1879 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
|
1880 switch(cmd->args[j].type) { |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1881 case MP_CMD_ARG_INT: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1882 type = "Integer"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1883 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1884 case MP_CMD_ARG_FLOAT: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1885 type = "Float"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1886 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1887 case MP_CMD_ARG_STRING: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1888 type = "String"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1889 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1890 default: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1891 type = "??"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1892 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1893 if(j+1 > cmd->nargs) |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1894 printf(" [%s]",type); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1895 else |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1896 printf(" %s",type); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1897 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1898 printf("\n"); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1899 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1900 exit(0); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1901 } |
7862
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1902 |
31191 | 1903 /** |
1904 * \param time time to wait for an interruption in milliseconds | |
1905 */ | |
7862
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1906 int |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1907 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
|
1908 mp_cmd_t* cmd; |
13603 | 1909 if((cmd = mp_input_get_cmd(time,0,1)) == NULL) |
7862
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1910 return 0; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1911 switch(cmd->id) { |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1912 case MP_CMD_QUIT: |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1913 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
|
1914 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
|
1915 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
|
1916 // 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
|
1917 return 1; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1918 } |
13603 | 1919 // remove the cmd from the queue |
1920 cmd = mp_input_get_cmd(time,0,0); | |
7862
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1921 mp_cmd_free(cmd); |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1922 return 0; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1923 } |