Mercurial > mplayer.hg
annotate input/input.c @ 30903:565f6d0f0d2a
Make all instances of codec_patch unconditional, otherwise
compilation will break on systems that do not have win32 dlls
enabled. Fixes compilation bug introduced by r30942
10l to the anonymous guy who explains the importance of commit messages
and would like to have romance novels in these very messages.
author | attila |
---|---|
date | Sun, 21 Mar 2010 10:13:00 +0000 |
parents | 76a13038105e |
children | 7eda1e1ca6f1 |
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}} } }, |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
79 { 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
|
80 { MP_CMD_AUDIO_DELAY, "audio_delay", 1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
13710 | 81 { MP_CMD_SPEED_INCR, "speed_incr", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
82 { MP_CMD_SPEED_MULT, "speed_mult", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, | |
83 { 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
|
84 { MP_CMD_QUIT, "quit", 0, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
26877 | 85 { MP_CMD_STOP, "stop", 0, { {-1,{0}} } }, |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
86 { MP_CMD_PAUSE, "pause", 0, { {-1,{0}} } }, |
13626
741649fe31cb
allow to step only one frame forward by pressing s.
reimar
parents:
13603
diff
changeset
|
87 { MP_CMD_FRAME_STEP, "frame_step", 0, { {-1,{0}} } }, |
5135 | 88 { MP_CMD_PLAY_TREE_STEP, "pt_step",1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } }, |
89 { 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
|
90 { MP_CMD_PLAY_ALT_SRC_STEP, "alt_src_step",1, { { MP_CMD_ARG_INT,{0} }, {-1,{0}} } }, |
23727 | 91 { 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
|
92 { 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
|
93 { 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
|
94 { MP_CMD_OSD, "osd",0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
18223 | 95 { 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
|
96 { 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}} } }, |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17890
diff
changeset
|
97 { MP_CMD_VOLUME, "volume", 1, { { MP_CMD_ARG_FLOAT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
23568 | 98 { 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
|
99 { 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
|
100 { 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
|
101 { 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
|
102 { 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
|
103 { 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
|
104 { 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
|
105 { 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
|
106 { 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
|
107 { 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
|
108 { 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
|
109 { MP_CMD_SUB_VISIBILITY, "sub_visibility", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
15706 | 110 { MP_CMD_SUB_LOAD, "sub_load", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
111 { 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
|
112 { 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
|
113 { 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
|
114 { 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
|
115 { 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
|
116 { 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
|
117 { MP_CMD_SUB_FILE, "sub_file", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } }, |
14684 | 118 { MP_CMD_SUB_LOG, "sub_log", 0, { {-1,{0}} } }, |
23725 | 119 { 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
|
120 #ifdef CONFIG_ASS |
25814
4ba9b9bdf123
Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents:
25766
diff
changeset
|
121 { 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
|
122 #endif |
8364 | 123 { MP_CMD_GET_PERCENT_POS, "get_percent_pos", 0, { {-1,{0}} } }, |
15504 | 124 { MP_CMD_GET_TIME_POS, "get_time_pos", 0, { {-1,{0}} } }, |
8364 | 125 { MP_CMD_GET_TIME_LENGTH, "get_time_length", 0, { {-1,{0}} } }, |
19533 | 126 { MP_CMD_GET_FILENAME, "get_file_name", 0, { {-1,{0}} } }, |
127 { MP_CMD_GET_VIDEO_CODEC, "get_video_codec", 0, { {-1,{0}} } }, | |
128 { MP_CMD_GET_VIDEO_BITRATE, "get_video_bitrate", 0, { {-1,{0}} } }, | |
129 { MP_CMD_GET_VIDEO_RESOLUTION, "get_video_resolution", 0, { {-1,{0}} } }, | |
130 { MP_CMD_GET_AUDIO_CODEC, "get_audio_codec", 0, { {-1,{0}} } }, | |
131 { MP_CMD_GET_AUDIO_BITRATE, "get_audio_bitrate", 0, { {-1,{0}} } }, | |
132 { MP_CMD_GET_AUDIO_SAMPLES, "get_audio_samples", 0, { {-1,{0}} } }, | |
133 { MP_CMD_GET_META_TITLE, "get_meta_title", 0, { {-1,{0}} } }, | |
134 { MP_CMD_GET_META_ARTIST, "get_meta_artist", 0, { {-1,{0}} } }, | |
135 { MP_CMD_GET_META_ALBUM, "get_meta_album", 0, { {-1,{0}} } }, | |
136 { MP_CMD_GET_META_YEAR, "get_meta_year", 0, { {-1,{0}} } }, | |
137 { MP_CMD_GET_META_COMMENT, "get_meta_comment", 0, { {-1,{0}} } }, | |
138 { MP_CMD_GET_META_TRACK, "get_meta_track", 0, { {-1,{0}} } }, | |
139 { 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
|
140 { 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
|
141 { MP_CMD_SWITCH_ANGLE, "switch_angle", 0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } }, |
25817 | 142 { 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
|
143 #ifdef CONFIG_TV |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
24037
diff
changeset
|
144 { 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
|
145 { 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
|
146 { 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
|
147 { MP_CMD_TV_STEP_CHANNEL_LIST, "tv_step_chanlist", 0, { {-1,{0}} } }, |
8494 | 148 { 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
|
149 { 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
|
150 { MP_CMD_TV_SET_FREQ, "tv_set_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, |
22667 | 151 { 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
|
152 { 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
|
153 { 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
|
154 { 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
|
155 { 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
|
156 { 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
|
157 #endif |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17928
diff
changeset
|
158 { 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
|
159 #ifdef CONFIG_DVBIN |
12306
661a6e80030f
slave command dvb_set_channel now takes 2 arguments: channel card
nicodvb
parents:
11793
diff
changeset
|
160 { 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
|
161 #endif |
13339
1c787349d286
slave mode command to switch aspect ratio, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13338
diff
changeset
|
162 { 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
|
163 { 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
|
164 { 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
|
165 { 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
|
166 { 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
|
167 { MP_CMD_VO_BORDER, "vo_border", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, |
19833 | 168 { 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
|
169 { 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
|
170 { 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
|
171 { 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
|
172 { MP_CMD_LOADLIST, "loadlist", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
14087 | 173 { MP_CMD_RUN, "run", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
6888
2dde1a1bc03a
Add the input command "change_rectangle" to control the rectangle
kmkaplan
parents:
6818
diff
changeset
|
174 { MP_CMD_VF_CHANGE_RECTANGLE, "change_rectangle", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}}}}, |
23900 | 175 { MP_CMD_TV_TELETEXT_ADD_DEC, "teletext_add_dec", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, |
24244 | 176 { MP_CMD_TV_TELETEXT_GO_LINK, "teletext_go_link", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, |
4858 | 177 |
27343 | 178 #ifdef CONFIG_GUI |
4858 | 179 { MP_CMD_GUI_LOADFILE, "gui_loadfile", 0, { {-1,{0}} } }, |
180 { MP_CMD_GUI_LOADSUBTITLE, "gui_loadsubtitle", 0, { {-1,{0}} } }, | |
181 { MP_CMD_GUI_ABOUT, "gui_about", 0, { {-1,{0}} } }, | |
182 { MP_CMD_GUI_PLAY, "gui_play", 0, { {-1,{0}} } }, | |
183 { MP_CMD_GUI_STOP, "gui_stop", 0, { {-1,{0}} } }, | |
184 { MP_CMD_GUI_PLAYLIST, "gui_playlist", 0, { {-1,{0}} } }, | |
185 { MP_CMD_GUI_PREFERENCES, "gui_preferences", 0, { {-1,{0}} } }, | |
186 { MP_CMD_GUI_SKINBROWSER, "gui_skinbrowser", 0, { {-1,{0}} } }, | |
187 #endif | |
5380
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
188 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
189 #ifdef CONFIG_DVDNAV |
27068 | 190 { 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
|
191 #endif |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
192 |
27345
b597fd2924b4
Rename preprocessor directive HAVE_MENU --> CONFIG_MENU.
diego
parents:
27343
diff
changeset
|
193 #ifdef CONFIG_MENU |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
194 { 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
|
195 { 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
|
196 { 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
|
197 { 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
|
198 { 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
|
199 #endif |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
200 |
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
|
201 { 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
|
202 { 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
|
203 { 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
|
204 { 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
|
205 { 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
|
206 { 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
|
207 |
19342 | 208 { 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
|
209 { 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
|
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" }, |
16974 | 271 { MOUSE_BTN0_DBL, "MOUSE_BTN0_DBL" }, |
272 { MOUSE_BTN1_DBL, "MOUSE_BTN1_DBL" }, | |
273 { MOUSE_BTN2_DBL, "MOUSE_BTN2_DBL" }, | |
274 { MOUSE_BTN3_DBL, "MOUSE_BTN3_DBL" }, | |
275 { MOUSE_BTN4_DBL, "MOUSE_BTN4_DBL" }, | |
276 { MOUSE_BTN5_DBL, "MOUSE_BTN5_DBL" }, | |
277 { MOUSE_BTN6_DBL, "MOUSE_BTN6_DBL" }, | |
278 { MOUSE_BTN7_DBL, "MOUSE_BTN7_DBL" }, | |
279 { MOUSE_BTN8_DBL, "MOUSE_BTN8_DBL" }, | |
280 { MOUSE_BTN9_DBL, "MOUSE_BTN9_DBL" }, | |
4524
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
281 { JOY_AXIS1_MINUS, "JOY_UP" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
282 { JOY_AXIS1_PLUS, "JOY_DOWN" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
283 { JOY_AXIS0_MINUS, "JOY_LEFT" }, |
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
284 { JOY_AXIS0_PLUS, "JOY_RIGHT" }, |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
285 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
286 { JOY_AXIS0_PLUS, "JOY_AXIS0_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
287 { JOY_AXIS0_MINUS, "JOY_AXIS0_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
288 { 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
|
289 { JOY_AXIS1_MINUS, "JOY_AXIS1_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
290 { JOY_AXIS2_PLUS, "JOY_AXIS2_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
291 { JOY_AXIS2_MINUS, "JOY_AXIS2_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
292 { 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
|
293 { JOY_AXIS3_MINUS, "JOY_AXIS3_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
294 { JOY_AXIS4_PLUS, "JOY_AXIS4_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
295 { JOY_AXIS4_MINUS, "JOY_AXIS4_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
296 { 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
|
297 { JOY_AXIS5_MINUS, "JOY_AXIS5_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
298 { JOY_AXIS6_PLUS, "JOY_AXIS6_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
299 { JOY_AXIS6_MINUS, "JOY_AXIS6_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
300 { 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
|
301 { JOY_AXIS7_MINUS, "JOY_AXIS7_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
302 { JOY_AXIS8_PLUS, "JOY_AXIS8_PLUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
303 { JOY_AXIS8_MINUS, "JOY_AXIS8_MINUS" }, |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
304 { 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
|
305 { JOY_AXIS9_MINUS, "JOY_AXIS9_MINUS" }, |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
306 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
307 { JOY_BTN0, "JOY_BTN0" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
308 { JOY_BTN1, "JOY_BTN1" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
309 { JOY_BTN2, "JOY_BTN2" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
310 { JOY_BTN3, "JOY_BTN3" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
311 { JOY_BTN4, "JOY_BTN4" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
312 { JOY_BTN5, "JOY_BTN5" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
313 { JOY_BTN6, "JOY_BTN6" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
314 { JOY_BTN7, "JOY_BTN7" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
315 { JOY_BTN8, "JOY_BTN8" }, |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
316 { JOY_BTN9, "JOY_BTN9" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
317 |
24037 | 318 { AR_PLAY, "AR_PLAY" }, |
319 { AR_PLAY_HOLD, "AR_PLAY_HOLD" }, | |
320 { AR_NEXT, "AR_NEXT" }, | |
321 { AR_NEXT_HOLD, "AR_NEXT_HOLD" }, | |
322 { AR_PREV, "AR_PREV" }, | |
323 { AR_PREV_HOLD, "AR_PREV_HOLD" }, | |
324 { AR_MENU, "AR_MENU" }, | |
325 { AR_MENU_HOLD, "AR_MENU_HOLD" }, | |
326 { AR_VUP, "AR_VUP" }, | |
327 { AR_VDOWN, "AR_VDOWN" }, | |
328 | |
16892
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
329 { KEY_POWER, "POWER" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
330 { KEY_MENU, "MENU" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
331 { KEY_PLAY, "PLAY" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
332 { KEY_PAUSE, "PAUSE" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
333 { KEY_PLAYPAUSE, "PLAYPAUSE" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
334 { KEY_STOP, "STOP" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
335 { KEY_FORWARD, "FORWARD" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
336 { KEY_REWIND, "REWIND" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
337 { KEY_NEXT, "NEXT" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
338 { KEY_PREV, "PREV" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
339 { KEY_VOLUME_UP, "VOLUME_UP" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
340 { KEY_VOLUME_DOWN, "VOLUME_DOWN" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
341 { KEY_MUTE, "MUTE" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
342 |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
343 // These are kept for backward compatibility |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
344 { KEY_PAUSE, "XF86_PAUSE" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
345 { KEY_STOP, "XF86_STOP" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
346 { KEY_PREV, "XF86_PREV" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
347 { KEY_NEXT, "XF86_NEXT" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
348 |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
349 { KEY_CLOSE_WIN, "CLOSE_WIN" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
350 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
351 { 0, NULL } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
352 }; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
353 |
10398 | 354 // This is the default binding. The content of input.conf overrides these. |
355 // 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
|
356 // The second is the command |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
357 |
25709
24ee00528e18
Make several mapping tables related to input processing const.
reimar
parents:
25626
diff
changeset
|
358 static const mp_cmd_bind_t def_cmd_binds[] = { |
5061 | 359 |
360 { { MOUSE_BTN3, 0 }, "seek 10" }, | |
361 { { MOUSE_BTN4, 0 }, "seek -10" }, | |
362 { { MOUSE_BTN5, 0 }, "volume 1" }, | |
363 { { MOUSE_BTN6, 0 }, "volume -1" }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
364 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
365 #ifdef CONFIG_DVDNAV |
27068 | 366 { { KEY_KP8, 0 }, "dvdnav up" }, // up |
367 { { KEY_KP2, 0 }, "dvdnav down" }, // down | |
368 { { KEY_KP4, 0 }, "dvdnav left" }, // left | |
369 { { KEY_KP6, 0 }, "dvdnav right" }, // right | |
370 { { KEY_KP5, 0 }, "dvdnav menu" }, // menu | |
371 { { KEY_KPENTER, 0 }, "dvdnav select" }, // select | |
372 { { MOUSE_BTN0, 0 }, "dvdnav mouse" }, //select | |
373 { { 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
|
374 #endif |
8a01cde9cf39
DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents:
5218
diff
changeset
|
375 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
376 { { KEY_RIGHT, 0 }, "seek 10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
377 { { KEY_LEFT, 0 }, "seek -10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
378 { { KEY_UP, 0 }, "seek 60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
379 { { KEY_DOWN, 0 }, "seek -60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
380 { { KEY_PAGE_UP, 0 }, "seek 600" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
381 { { 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
|
382 { { '+', 0 }, "audio_delay 0.100" }, |
826a0faa2a0f
Switch audio delay keys to something more sane (+ to increase, - to decrease)
diego
parents:
17935
diff
changeset
|
383 { { '-', 0 }, "audio_delay -0.100" }, |
13710 | 384 { { '[', 0 }, "speed_mult 0.9091" }, |
385 { { ']', 0 }, "speed_mult 1.1" }, | |
386 { { '{', 0 }, "speed_mult 0.5" }, | |
387 { { '}', 0 }, "speed_mult 2.0" }, | |
388 { { KEY_BACKSPACE, 0 }, "speed_set 1.0" }, | |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
389 { { 'q', 0 }, "quit" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
390 { { KEY_ESC, 0 }, "quit" }, |
5135 | 391 { { 'p', 0 }, "pause" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
392 { { ' ', 0 }, "pause" }, |
13642 | 393 { { '.', 0 }, "frame_step" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
394 { { KEY_HOME, 0 }, "pt_up_step 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
395 { { KEY_END, 0 }, "pt_up_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
396 { { '>', 0 }, "pt_step 1" }, |
5135 | 397 { { KEY_ENTER, 0 }, "pt_step 1 1" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
398 { { '<', 0 }, "pt_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
399 { { KEY_INS, 0 }, "alt_src_step 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
400 { { KEY_DEL, 0 }, "alt_src_step -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
401 { { 'o', 0 }, "osd" }, |
18222
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
402 { { 'I', 0 }, "osd_show_property_text \"${filename}\"" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
403 { { 'z', 0 }, "sub_delay -0.1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
404 { { 'x', 0 }, "sub_delay +0.1" }, |
8365
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
405 { { 'g', 0 }, "sub_step -1" }, |
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
406 { { 'y', 0 }, "sub_step +1" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
407 { { '9', 0 }, "volume -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
408 { { '/', 0 }, "volume -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
409 { { '0', 0 }, "volume 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
410 { { '*', 0 }, "volume 1" }, |
23568 | 411 { { '(', 0 }, "balance -0.1" }, |
412 { { ')', 0 }, "balance 0.1" }, | |
6311
da2dda48b7ec
add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents:
6304
diff
changeset
|
413 { { 'm', 0 }, "mute" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
414 { { '1', 0 }, "contrast -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
415 { { '2', 0 }, "contrast 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
416 { { '3', 0 }, "brightness -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
417 { { '4', 0 }, "brightness 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
418 { { '5', 0 }, "hue -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
419 { { '6', 0 }, "hue 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
420 { { '7', 0 }, "saturation -1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
421 { { '8', 0 }, "saturation 1" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
422 { { 'd', 0 }, "frame_drop" }, |
20973
c0bcec5150a3
Add deinterlace property, patch by Carl Eugen Hoyos
reimar
parents:
20950
diff
changeset
|
423 { { '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
|
424 { { '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
|
425 { { 't', 0 }, "sub_pos +1" }, |
8921
b06f6d56d039
use 'a' for subtitle aligment instead for useless gui aboutbox
arpi
parents:
8627
diff
changeset
|
426 { { 'a', 0 }, "sub_alignment" }, |
7628
d6608342591d
This patch adds the functionality to disable/enable subtitles while playing
arpi
parents:
7517
diff
changeset
|
427 { { '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
|
428 { { 'j', 0 }, "sub_select" }, |
10917
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
429 { { '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
|
430 { { '#', 0 }, "switch_audio" }, |
20950 | 431 { { '_', 0 }, "step_property switch_video" }, |
21008 | 432 { { 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
|
433 { { 'i', 0 }, "edl_mark" }, |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
27068
diff
changeset
|
434 #ifdef CONFIG_TV |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
435 { { 'h', 0 }, "tv_step_channel 1" }, |
4858 | 436 { { 'k', 0 }, "tv_step_channel -1" }, |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
437 { { 'n', 0 }, "tv_step_norm" }, |
6311
da2dda48b7ec
add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents:
6304
diff
changeset
|
438 { { 'u', 0 }, "tv_step_chanlist" }, |
4858 | 439 #endif |
23900 | 440 { { 'X', 0 }, "step_property teletext_mode 1" }, |
441 { { 'W', 0 }, "step_property teletext_page 1" }, | |
442 { { 'Q', 0 }, "step_property teletext_page -1" }, | |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
443 #ifdef CONFIG_JOYSTICK |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
444 { { JOY_AXIS0_PLUS, 0 }, "seek 10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
445 { { JOY_AXIS0_MINUS, 0 }, "seek -10" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
446 { { JOY_AXIS1_MINUS, 0 }, "seek 60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
447 { { JOY_AXIS1_PLUS, 0 }, "seek -60" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
448 { { JOY_BTN0, 0 }, "pause" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
449 { { JOY_BTN1, 0 }, "osd" }, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
450 { { JOY_BTN2, 0 }, "volume 1"}, |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
451 { { JOY_BTN3, 0 }, "volume -1"}, |
4525 | 452 #endif |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27370
diff
changeset
|
453 #ifdef CONFIG_APPLE_REMOTE |
24037 | 454 { { AR_PLAY, 0}, "pause" }, |
455 { { AR_PLAY_HOLD, 0}, "quit" }, | |
456 { { AR_NEXT, 0 }, "seek 30" }, | |
457 { { AR_NEXT_HOLD, 0 }, "seek 120" }, | |
458 { { AR_PREV, 0 }, "seek -10" }, | |
459 { { AR_PREV_HOLD, 0 }, "seek -120" }, | |
460 { { AR_MENU, 0 }, "osd" }, | |
461 { { AR_MENU_HOLD, 0 }, "mute" }, | |
462 { { AR_VUP, 0 }, "volume 1"}, | |
463 { { AR_VDOWN, 0 }, "volume -1"}, | |
464 #endif | |
11542 | 465 { { 'T', 0 }, "vo_ontop" }, |
4732 | 466 { { 'f', 0 }, "vo_fullscreen" }, |
19833 | 467 { { 's', 0 }, "screenshot 0" }, |
468 { { 'S', 0 }, "screenshot 1" }, | |
6304
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6183
diff
changeset
|
469 { { 'w', 0 }, "panscan -0.1" }, |
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6183
diff
changeset
|
470 { { 'e', 0 }, "panscan +0.1" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
471 |
16892
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
472 { { KEY_POWER, 0 }, "quit" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
473 { { KEY_MENU, 0 }, "osd" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
474 { { KEY_PLAY, 0 }, "pause" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
475 { { KEY_PAUSE, 0 }, "pause" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
476 { { KEY_PLAYPAUSE, 0 }, "pause" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
477 { { KEY_STOP, 0 }, "quit" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
478 { { KEY_FORWARD, 0 }, "seek 60" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
479 { { KEY_REWIND, 0 }, "seek -60" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
480 { { KEY_NEXT, 0 }, "pt_step 1" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
481 { { KEY_PREV, 0 }, "pt_step -1" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
482 { { KEY_VOLUME_UP, 0 }, "volume 1" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
483 { { KEY_VOLUME_DOWN, 0 }, "volume -1" }, |
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
484 { { KEY_MUTE, 0 }, "mute" }, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
485 |
16892
3470c810527b
libvo input cleanup: remove the dependency on libinput,
albeu
parents:
16860
diff
changeset
|
486 { { KEY_CLOSE_WIN, 0 }, "quit" }, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
487 |
19342 | 488 { { '!', 0 }, "seek_chapter -1" }, |
489 { { '@', 0 }, "seek_chapter 1" }, | |
25576
54512595b406
properties to change angle; patch by oattila chello hu
nicodvb
parents:
25502
diff
changeset
|
490 { { 'A', 0 }, "switch_angle 1" }, |
26877 | 491 { { 'U', 0 }, "stop" }, |
9822
1e761763566c
Support for "internet" or "multimedia" keyboards in X11.
albeu
parents:
9734
diff
changeset
|
492 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
493 { { 0 }, NULL } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
494 }; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
495 |
17890
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
496 |
27343 | 497 #ifdef CONFIG_GUI |
25709
24ee00528e18
Make several mapping tables related to input processing const.
reimar
parents:
25626
diff
changeset
|
498 static const mp_cmd_bind_t gui_def_cmd_binds[] = { |
17890
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
499 |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
500 { { 'l', 0 }, "gui_loadfile" }, |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
501 { { 't', 0 }, "gui_loadsubtitle" }, |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
502 { { KEY_ENTER, 0 }, "gui_play" }, |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
503 { { KEY_ESC, 0 }, "gui_stop" }, |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
504 { { 'p', 0 }, "gui_playlist" }, |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
505 { { 'r', 0 }, "gui_preferences" }, |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
506 { { 'c', 0 }, "gui_skinbrowser" }, |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
507 |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
508 { { 0 }, NULL } |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
509 }; |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
510 #endif |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
511 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
512 #ifndef MP_MAX_KEY_FD |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
513 #define MP_MAX_KEY_FD 10 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
514 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
515 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
516 #ifndef MP_MAX_CMD_FD |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
517 #define MP_MAX_CMD_FD 10 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
518 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
519 |
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
|
520 #define CMD_QUEUE_SIZE 100 |
4821 | 521 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
522 typedef struct mp_input_fd { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
523 int fd; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
524 void* read_func; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
525 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
|
526 unsigned eof : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
527 unsigned drop : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
528 unsigned dead : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
529 unsigned got_cmd : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
530 unsigned no_select : 1; |
e92ef0d2a976
Change bitfield to unsigned so that we get the usual truth values
reimar
parents:
24138
diff
changeset
|
531 unsigned no_readfunc_retval : 1; |
10398 | 532 // These fields are for the cmd fds. |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
533 char* buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
534 int pos,size; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
535 } mp_input_fd_t; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
536 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
537 typedef struct mp_cmd_filter_st mp_cmd_filter_t; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
538 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
539 struct mp_cmd_filter_st { |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
540 mp_input_cmd_filter filter; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
541 void* ctx; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
542 mp_cmd_filter_t* next; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
543 }; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
544 |
23477 | 545 typedef struct mp_cmd_bind_section_st mp_cmd_bind_section_t; |
546 | |
547 struct mp_cmd_bind_section_st { | |
548 mp_cmd_bind_t* cmd_binds; | |
549 char* section; | |
550 mp_cmd_bind_section_t* next; | |
551 }; | |
552 | |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
553 // These are the user defined binds |
23477 | 554 static mp_cmd_bind_section_t* cmd_binds_section = NULL; |
555 static char* section = NULL; | |
4842 | 556 static mp_cmd_bind_t* cmd_binds = NULL; |
23477 | 557 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
|
558 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
|
559 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
560 // 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
|
561 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
|
562 |
25623
b955a135e3a8
Do not use exit_player in the signal handler, this code just can not
reimar
parents:
25576
diff
changeset
|
563 int async_quit_request; |
b955a135e3a8
Do not use exit_player in the signal handler, this code just can not
reimar
parents:
25576
diff
changeset
|
564 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
565 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
|
566 static unsigned int num_key_fd = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
567 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
|
568 static unsigned int num_cmd_fd = 0; |
4821 | 569 static mp_cmd_t* cmd_queue[CMD_QUEUE_SIZE]; |
570 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
|
571 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
572 // this is the key currently down |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
573 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
|
574 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
|
575 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
576 // Autorepeat stuff |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
577 static short ar_state = -1; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
578 static mp_cmd_t* ar_cmd = NULL; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
579 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
|
580 |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
581 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
|
582 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
|
583 static char* config_file = "input.conf"; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
584 |
24037 | 585 /* Apple Remote */ |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27370
diff
changeset
|
586 #ifdef CONFIG_APPLE_REMOTE |
26767
5f304bb41cd9
Keep AppleIR enabled by default on MacOSX but have it disable on Linux.
ben
parents:
26765
diff
changeset
|
587 static int use_ar = 1; |
26797
029a3d52e15e
fix compilation of input.c if neither macosx/linux apple remote code
ben
parents:
26767
diff
changeset
|
588 #else |
26765 | 589 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
|
590 #endif |
24037 | 591 |
5722
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
592 static char* js_dev = NULL; |
26763
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
593 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
|
594 |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
595 static char* in_file = NULL; |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
596 static int in_file_fd = -1; |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
597 |
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
|
598 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
|
599 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
|
600 |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
601 // Our command line options |
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
|
602 static m_option_t input_conf[] = { |
4836 | 603 { "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
|
604 { "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
|
605 { "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
|
606 { "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
|
607 { "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
|
608 { "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
|
609 { "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
|
610 { "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
|
611 { "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
|
612 { "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
|
613 { NULL, NULL, 0, 0, 0, 0, NULL} |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
614 }; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
615 |
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
|
616 static m_option_t mp_input_opts[] = { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
617 { "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
|
618 { "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
|
619 { "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
|
620 { "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
|
621 { "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
|
622 { "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
|
623 { "lircc", &use_lircc, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL }, |
24037 | 624 { "noar", &use_ar, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL }, |
625 { "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
|
626 { NULL, NULL, 0, 0, 0, 0, NULL} |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
627 }; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
628 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
629 static int |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
630 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
|
631 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
632 static char* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
633 mp_input_get_key_name(int key); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
634 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
635 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
636 int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
637 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
|
638 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
|
639 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
|
640 return 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
641 } |
24137
46d7af639861
Fix invalid fd check, the bug is somewhere else though.
reimar
parents:
24136
diff
changeset
|
642 if (select && fd < 0) { |
24136
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
643 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
|
644 return 0; |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
645 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
646 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
647 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
|
648 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
|
649 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
|
650 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
|
651 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
|
652 num_cmd_fd++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
653 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
654 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
655 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
656 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
657 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
658 mp_input_rm_cmd_fd(int fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
659 unsigned int i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
660 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
661 for(i = 0; i < num_cmd_fd; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
662 if(cmd_fds[i].fd == fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
663 break; |
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 if(i == num_cmd_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
666 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
667 if(cmd_fds[i].close_func) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
668 cmd_fds[i].close_func(cmd_fds[i].fd); |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
669 if(cmd_fds[i].buffer) |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
670 free(cmd_fds[i].buffer); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
671 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
672 if(i + 1 < num_cmd_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
673 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
|
674 num_cmd_fd--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
675 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
676 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
677 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
678 mp_input_rm_key_fd(int fd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
679 unsigned int i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
680 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
681 for(i = 0; i < num_key_fd; i++) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
682 if(key_fds[i].fd == fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
683 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
684 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
685 if(i == num_key_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
686 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
687 if(key_fds[i].close_func) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
688 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
|
689 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
690 if(i + 1 < num_key_fd) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
691 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
|
692 num_key_fd--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
693 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
694 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
695 int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
696 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
|
697 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
|
698 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
|
699 return 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
700 } |
24137
46d7af639861
Fix invalid fd check, the bug is somewhere else though.
reimar
parents:
24136
diff
changeset
|
701 if (select && fd < 0) { |
24136
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
702 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
|
703 return 0; |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
704 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
705 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
706 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
|
707 key_fds[num_key_fd].fd = fd; |
24128 | 708 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
|
709 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
|
710 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
|
711 num_key_fd++; |
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 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
714 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
715 |
24132 | 716 int |
717 mp_input_add_event_fd(int fd, void (*read_func)(void)) | |
718 { | |
719 if(num_key_fd == MP_MAX_KEY_FD) { | |
720 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantRegister2ManyKeyFds,fd); | |
721 return 0; | |
722 } | |
24136
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
723 if (fd < 0) { |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
724 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
|
725 return 0; |
a659694f00bc
HACK: check added fds for validity because otherwise mplayer
reimar
parents:
24135
diff
changeset
|
726 } |
24132 | 727 |
728 memset(&key_fds[num_key_fd],0,sizeof(mp_input_fd_t)); | |
729 key_fds[num_key_fd].fd = fd; | |
730 key_fds[num_key_fd].read_func = read_func; | |
731 key_fds[num_key_fd].close_func = NULL; | |
732 key_fds[num_key_fd].no_readfunc_retval = 1; | |
733 num_key_fd++; | |
734 | |
735 return 1; | |
736 } | |
737 | |
738 void mp_input_rm_event_fd(int fd) | |
739 { | |
740 mp_input_rm_key_fd(fd); | |
741 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
742 |
25319
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
743 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
|
744 int cmd_num = 0; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
745 |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
746 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
|
747 ++str; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
748 while (*str) { |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
749 mp_cmd_t *cmd; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
750 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
|
751 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
|
752 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
|
753 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
|
754 if (cmd) { |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
755 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
|
756 ++cmd_num; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
757 } |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
758 str += len; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
759 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
|
760 ++str; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
761 free(cmdbuf); |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
762 } |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
763 return cmd_num; |
50a30be5300c
Add new function for parsing and queueing multi-commands separated by \n or \r.
ulion
parents:
25303
diff
changeset
|
764 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
765 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
766 mp_cmd_t* |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
767 mp_input_parse_cmd(char* str) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
768 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
|
769 int pausing = -1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
770 char *ptr,*e; |
25766 | 771 mp_cmd_t *cmd; |
772 const mp_cmd_t *cmd_def; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
773 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
774 #ifdef MP_DEBUG |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
775 assert(str != NULL); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
776 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
777 |
25303 | 778 // Ignore heading spaces. |
779 while (str[0] == ' ' || str[0] == '\t') | |
780 ++str; | |
781 | |
13991 | 782 if (strncmp(str, "pausing ", 8) == 0) { |
783 pausing = 1; | |
784 str = &str[8]; | |
17241
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
785 } else if (strncmp(str, "pausing_keep ", 13) == 0) { |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
786 pausing = 2; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
787 str = &str[13]; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
788 } else if (strncmp(str, "pausing_toggle ", 15) == 0) { |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
789 pausing = 3; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
16974
diff
changeset
|
790 str = &str[15]; |
27633
6a7cdd00599f
Add an experimental pausing_keep_force slave mode command prefix
reimar
parents:
27391
diff
changeset
|
791 } 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
|
792 pausing = 4; |
6a7cdd00599f
Add an experimental pausing_keep_force slave mode command prefix
reimar
parents:
27391
diff
changeset
|
793 str = &str[19]; |
13991 | 794 } |
795 | |
4842 | 796 for(ptr = str ; ptr[0] != '\0' && ptr[0] != '\t' && ptr[0] != ' ' ; ptr++) |
797 /* NOTHING */; | |
798 if(ptr[0] != '\0') | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
799 l = ptr-str; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
800 else |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
801 l = strlen(str); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
802 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
803 if(l == 0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
804 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
805 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
806 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
|
807 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
|
808 break; |
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 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
811 if(mp_cmds[i].name == NULL) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
812 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
813 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
814 cmd_def = &mp_cmds[i]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
815 |
18885 | 816 cmd = calloc(1, sizeof(mp_cmd_t)); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
817 cmd->id = cmd_def->id; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
818 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
|
819 if (pausing == -1) { |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
820 switch (cmd->id) { |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
821 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
|
822 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
|
823 pausing = 4; break; |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
824 default: |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
825 pausing = 0; break; |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
826 } |
6f5824a39ada
Make pausing_keep_force the default for the set_mouse_pos and key_down_event -
reimar
parents:
28112
diff
changeset
|
827 } |
13991 | 828 cmd->pausing = pausing; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
829 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
830 ptr = str; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
831 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
832 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
|
833 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
|
834 if(ptr[0] == '\0') break; |
4826 | 835 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
|
836 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
|
837 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
|
838 switch(cmd_def->args[i].type) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
839 case MP_CMD_ARG_INT: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
840 errno = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
841 cmd->args[i].v.i = atoi(ptr); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
842 if(errno != 0) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
843 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
|
844 ptr = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
845 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
846 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
847 case MP_CMD_ARG_FLOAT: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
848 errno = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
849 cmd->args[i].v.f = atof(ptr); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
850 if(errno != 0) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
851 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
|
852 ptr = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
853 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
854 break; |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
855 case MP_CMD_ARG_STRING: { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
856 char term; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
857 char* ptr2 = ptr, *start; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
858 |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
859 if(ptr[0] == '\'' || ptr[0] == '"') { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
860 term = ptr[0]; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
861 ptr2++; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
862 } else |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
863 term = ' '; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
864 start = ptr2; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
865 while(1) { |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
866 e = strchr(ptr2,term); |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
867 if(!e) break; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
868 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
|
869 ptr2 = e + 1; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
870 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
871 |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
872 if(term != ' ' && (!e || e[0] == '\0')) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
873 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
|
874 ptr = NULL; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
875 break; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
876 } 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
|
877 l = e-start; |
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
878 ptr2 = start; |
15162
9c7c363837c9
when parsing one cmd argument, only un-escape _this_ argument, not the following ones
aurel
parents:
15128
diff
changeset
|
879 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
|
880 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
|
881 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
|
882 l--; |
8225
c032962b51a1
Add quoting support for string arguments (fix loading of file with space in
albeu
parents:
8196
diff
changeset
|
883 } |
18878 | 884 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
|
885 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
|
886 cmd->args[i].v.s[l] = '\0'; |
14681 | 887 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
|
888 } break; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
889 case -1: |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
890 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
|
891 break; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
892 default : |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
893 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
|
894 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
895 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
896 cmd->nargs = i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
897 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
898 if(cmd_def->nargs > cmd->nargs) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
899 /* 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
|
900 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
|
901 mp_cmd_free(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
902 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
903 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
904 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
905 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
|
906 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
|
907 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
|
908 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
|
909 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
910 |
5200
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
911 if(i < MP_CMD_MAX_ARGS) |
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
912 cmd->args[i].type = -1; |
022c957633a3
10L bug fix. Thx to Fredrik Kuivinen <freku045@student.liu.se>.
albeu
parents:
5198
diff
changeset
|
913 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
914 return cmd; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
915 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
916 |
29361
94d2be22a185
Increase slave mode buffer so that one can load files with a deeper
ben
parents:
29263
diff
changeset
|
917 #define MP_CMD_MAX_SIZE 4096 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
918 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
919 static int |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
920 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
|
921 char* end; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
922 (*ret) = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
923 |
10398 | 924 // 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
|
925 if(!mp_fd->buffer) { |
18878 | 926 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
|
927 mp_fd->pos = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
928 mp_fd->size = MP_CMD_MAX_SIZE; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
929 } |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
930 |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
931 // Get some data if needed/possible |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
932 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
|
933 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
|
934 // Error ? |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
935 if(r < 0) { |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
936 switch(r) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
937 case MP_INPUT_ERROR: |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
938 case MP_INPUT_DEAD: |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
939 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
|
940 case MP_INPUT_NOTHING: |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
941 return r; |
15825 | 942 case MP_INPUT_RETRY: |
943 continue; | |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
944 } |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
945 // EOF ? |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
946 } else if(r == 0) { |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
947 mp_fd->eof = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
948 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
949 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
950 mp_fd->pos += r; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
951 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
952 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
953 |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
954 mp_fd->got_cmd = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
955 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
956 while(1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
957 int l = 0; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
958 // Find the cmd end |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
959 mp_fd->buffer[mp_fd->pos] = '\0'; |
30737
8a9667eccbf7
Support all line ending types in mp_input_read_cmd.
reimar
parents:
30590
diff
changeset
|
960 end = strchr(mp_fd->buffer,'\r'); |
8a9667eccbf7
Support all line ending types in mp_input_read_cmd.
reimar
parents:
30590
diff
changeset
|
961 if (end) *end = '\n'; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
962 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
|
963 // No cmd end ? |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
964 if(!end) { |
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
965 // 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
|
966 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
|
967 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
|
968 mp_fd->pos = 0; |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
969 mp_fd->drop = 1; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
970 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
971 break; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
972 } |
10398 | 973 // 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
|
974 else if((*ret)) { |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
975 mp_fd->got_cmd = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
976 break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
977 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
978 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
979 l = end - mp_fd->buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
980 |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
981 // Not dropping : put the cmd in ret |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
982 if (!mp_fd->drop) { |
18878 | 983 (*ret) = malloc(l+1); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
984 strncpy((*ret),mp_fd->buffer,l); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
985 (*ret)[l] = '\0'; |
5571
124bfc43c044
Fix the bug pointed out by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
albeu
parents:
5473
diff
changeset
|
986 } else { // Remove the dropping flag |
24127
faf9baa673c0
Use bitfield instead of manual bit fiddling in input.c
uau
parents:
24105
diff
changeset
|
987 mp_fd->drop = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
988 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
989 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
|
990 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
|
991 mp_fd->pos -= l+1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
992 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
993 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
994 if(*ret) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
995 return 1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
996 else |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
997 return MP_INPUT_NOTHING; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
998 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
999 |
7912
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1000 static int |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1001 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
|
1002 |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1003 while(1) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1004 int r = read(fd,buf,l); |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1005 // Error ? |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1006 if(r < 0) { |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1007 if(errno == EINTR) |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1008 continue; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1009 else if(errno == EAGAIN) |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1010 return MP_INPUT_NOTHING; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1011 return MP_INPUT_ERROR; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1012 // EOF ? |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1013 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1014 return r; |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1015 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1016 |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1017 } |
e15e76559bd5
Reverse Arpi's commit and put the right fix in place.
albeu
parents:
7911
diff
changeset
|
1018 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1019 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1020 void |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1021 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
|
1022 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
|
1023 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1024 filter->filter = func; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1025 filter->ctx = ctx; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1026 filter->next = cmd_filters; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1027 cmd_filters = filter; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1028 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1029 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1030 |
4842 | 1031 static char* |
25766 | 1032 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
|
1033 int j; |
4842 | 1034 |
21432
6f2116ad422a
Simplify: 1 > 0 seems to be a rather safe assumption to make ;-)
reimar
parents:
21042
diff
changeset
|
1035 if (n <= 0) return NULL; |
4842 | 1036 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
|
1037 int found = 1,s; |
4842 | 1038 for(s = 0; s < n && binds[j].input[s] != 0; s++) { |
1039 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
|
1040 found = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1041 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1042 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1043 } |
4842 | 1044 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
|
1045 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1046 } |
4842 | 1047 return binds[j].cmd; |
1048 } | |
1049 | |
23477 | 1050 static mp_cmd_bind_section_t* |
1051 mp_input_get_bind_section(char *section) { | |
1052 mp_cmd_bind_section_t* bind_section = cmd_binds_section; | |
1053 | |
1054 if (section==NULL) section="default"; | |
1055 while (bind_section) { | |
1056 if(strcmp(section,bind_section->section)==0) return bind_section; | |
1057 if(bind_section->next==NULL) break; | |
1058 bind_section=bind_section->next; | |
1059 } | |
1060 if(bind_section) { | |
1061 bind_section->next=malloc(sizeof(mp_cmd_bind_section_t)); | |
1062 bind_section=bind_section->next; | |
1063 } else { | |
1064 cmd_binds_section=malloc(sizeof(mp_cmd_bind_section_t)); | |
1065 bind_section=cmd_binds_section; | |
1066 } | |
1067 bind_section->cmd_binds=NULL; | |
1068 bind_section->section=strdup(section); | |
1069 bind_section->next=NULL; | |
1070 return bind_section; | |
1071 } | |
1072 | |
4842 | 1073 static mp_cmd_t* |
1074 mp_input_get_cmd_from_keys(int n,int* keys, int paused) { | |
1075 char* cmd = NULL; | |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1076 mp_cmd_t* ret; |
4842 | 1077 |
1078 if(cmd_binds) | |
1079 cmd = mp_input_find_bind_for_key(cmd_binds,n,keys); | |
23477 | 1080 if(cmd_binds_default && cmd == NULL) |
1081 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
|
1082 if(default_bindings && cmd == NULL) |
4842 | 1083 cmd = mp_input_find_bind_for_key(def_cmd_binds,n,keys); |
1084 | |
1085 if(cmd == NULL) { | |
16793
8d4fb5469efb
Make a few more messages translatable by moving them into help_mp-en.h.
diego
parents:
16492
diff
changeset
|
1086 mp_msg(MSGT_INPUT,MSGL_WARN,MSGTR_NoBindFound,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
|
1087 if(n > 1) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1088 int s; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1089 for(s=1; s < n; s++) |
6183
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6138
diff
changeset
|
1090 mp_msg(MSGT_INPUT,MSGL_WARN,"-%s",mp_input_get_key_name(keys[s])); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1091 } |
6183
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6138
diff
changeset
|
1092 mp_msg(MSGT_INPUT,MSGL_WARN," \n"); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1093 return NULL; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1094 } |
21965 | 1095 if (strcmp(cmd, "ignore") == 0) return NULL; |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1096 ret = mp_input_parse_cmd(cmd); |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1097 if(!ret) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1098 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
|
1099 if( num_key_down > 1) { |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1100 unsigned int s; |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1101 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
|
1102 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
|
1103 } |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1104 mp_msg(MSGT_INPUT,MSGL_ERR," : %s \n",cmd); |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1105 } |
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1106 return ret; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1107 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1108 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1109 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1110 static mp_cmd_t* |
24131 | 1111 interpret_key(int code, int paused) |
1112 { | |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1113 unsigned int j; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1114 mp_cmd_t* ret; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1115 |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1116 if(mp_input_key_cb) { |
24131 | 1117 if (code & MP_KEY_DOWN) |
1118 return NULL; | |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1119 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
|
1120 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
|
1121 return NULL; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1122 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1123 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1124 if(code & MP_KEY_DOWN) { |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1125 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
|
1126 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_Err2ManyKeyDowns); |
24131 | 1127 return NULL; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1128 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1129 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
|
1130 // Check if we don't already have this key as pushed |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1131 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
|
1132 if(key_down[j] == code) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1133 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1134 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1135 if(j != num_key_down) |
24131 | 1136 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1137 key_down[num_key_down] = code; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1138 num_key_down++; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1139 last_key_down = GetTimer(); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1140 ar_state = 0; |
24131 | 1141 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1142 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1143 // 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
|
1144 // 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
|
1145 // send only release event |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1146 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
|
1147 if(key_down[j] == code) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1148 break; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1149 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1150 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
|
1151 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
|
1152 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_Err2ManyKeyDowns); |
24131 | 1153 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1154 } |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1155 key_down[num_key_down] = code; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1156 num_key_down++; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1157 last_key_down = 1; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1158 } |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1159 // We ignore key from last combination |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1160 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
|
1161 // Remove the key |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1162 if(j+1 < num_key_down) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1163 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
|
1164 num_key_down--; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1165 last_key_down = 0; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1166 ar_state = -1; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1167 if(ar_cmd) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1168 mp_cmd_free(ar_cmd); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1169 ar_cmd = NULL; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1170 } |
24131 | 1171 return ret; |
1172 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1173 |
24131 | 1174 static mp_cmd_t *check_autorepeat(int paused) |
1175 { | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1176 // No input : autorepeat ? |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1177 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
|
1178 unsigned int t = GetTimer(); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1179 // First time : wait delay |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1180 if(ar_state == 0 && (t - last_key_down) >= ar_delay*1000) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1181 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
|
1182 if(!ar_cmd) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1183 ar_state = -1; |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1184 return NULL; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1185 } |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1186 ar_state = 1; |
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1187 last_ar = t; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1188 return mp_cmd_clone(ar_cmd); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1189 // Then send rate / sec event |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1190 } 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
|
1191 last_ar = t; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1192 return mp_cmd_clone(ar_cmd); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1193 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1194 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1195 return NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1196 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1197 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1198 |
24131 | 1199 static mp_cmd_t *read_events(int time, int paused) |
1200 { | |
1201 int i; | |
1202 int got_cmd = 0; | |
24135 | 1203 mp_cmd_t *autorepeat_cmd; |
1204 #ifdef HAVE_POSIX_SELECT | |
1205 fd_set fds; | |
1206 #endif | |
24131 | 1207 for (i = 0; i < num_key_fd; i++) |
1208 if (key_fds[i].dead) { | |
1209 mp_input_rm_key_fd(key_fds[i].fd); | |
1210 i--; | |
1211 } | |
1212 for (i = 0; i < num_cmd_fd; i++) | |
1213 if (cmd_fds[i].dead || cmd_fds[i].eof) { | |
1214 mp_input_rm_cmd_fd(cmd_fds[i].fd); | |
1215 i--; | |
1216 } | |
1217 else if (cmd_fds[i].got_cmd) | |
1218 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
|
1219 #ifdef HAVE_POSIX_SELECT |
24131 | 1220 FD_ZERO(&fds); |
1221 if (!got_cmd) { | |
24135 | 1222 int max_fd = 0, num_fd = 0; |
24131 | 1223 for (i = 0; i < num_key_fd; i++) { |
1224 if (key_fds[i].no_select) | |
1225 continue; | |
1226 if (key_fds[i].fd > max_fd) | |
1227 max_fd = key_fds[i].fd; | |
1228 FD_SET(key_fds[i].fd, &fds); | |
1229 num_fd++; | |
1230 } | |
1231 for (i = 0; i < num_cmd_fd; i++) { | |
1232 if (cmd_fds[i].no_select) | |
1233 continue; | |
1234 if (cmd_fds[i].fd > max_fd) | |
1235 max_fd = cmd_fds[i].fd; | |
1236 FD_SET(cmd_fds[i].fd, &fds); | |
1237 num_fd++; | |
1238 } | |
1239 if (num_fd > 0) { | |
1240 struct timeval tv, *time_val; | |
1241 if (time >= 0) { | |
1242 tv.tv_sec = time / 1000; | |
1243 tv.tv_usec = (time % 1000) * 1000; | |
1244 time_val = &tv; | |
1245 } | |
1246 else | |
1247 time_val = NULL; | |
1248 if (select(max_fd + 1, &fds, NULL, NULL, time_val) < 0) { | |
1249 if (errno != EINTR) | |
1250 mp_msg(MSGT_INPUT, MSGL_ERR, MSGTR_INPUT_INPUT_ErrSelect, | |
1251 strerror(errno)); | |
1252 FD_ZERO(&fds); | |
1253 } | |
1254 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1255 } |
24131 | 1256 #else |
26686
45fc8351ca9b
usec_sleep(0) is not the same as not sleeping at all.
reimar
parents:
26543
diff
changeset
|
1257 if (!got_cmd && time) |
24131 | 1258 usec_sleep(time * 1000); |
9836 | 1259 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1260 |
24131 | 1261 |
1262 for (i = 0; i < num_key_fd; i++) { | |
24135 | 1263 int code; |
22751
3d83d77f5a6b
Invert logic for HAVE_NO_POSIX_SELECT to HAVE_POSIX_SELECT to be in line
diego
parents:
22667
diff
changeset
|
1264 #ifdef HAVE_POSIX_SELECT |
24131 | 1265 if (!key_fds[i].no_select && !FD_ISSET(key_fds[i].fd, &fds)) |
1266 continue; | |
9836 | 1267 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1268 |
24132 | 1269 if (key_fds[i].no_readfunc_retval) { // getch2 handler special-cased for now |
1270 ((void (*)(void))key_fds[i].read_func)(); | |
24134
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1271 if (cmd_queue_length) |
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1272 return NULL; |
24131 | 1273 code = mplayer_get_key(0); |
1274 if (code < 0) | |
1275 code = MP_INPUT_NOTHING; | |
1276 } | |
1277 else | |
1278 code = ((mp_key_func_t)key_fds[i].read_func)(key_fds[i].fd); | |
1279 if (code >= 0) { | |
1280 mp_cmd_t *ret = interpret_key(code, paused); | |
1281 if (ret) | |
1282 return ret; | |
1283 } | |
1284 else if (code == MP_INPUT_ERROR) | |
1285 mp_msg(MSGT_INPUT, MSGL_ERR, MSGTR_INPUT_INPUT_ErrOnKeyInFd, | |
1286 key_fds[i].fd); | |
1287 else if (code == MP_INPUT_DEAD) { | |
1288 mp_msg(MSGT_INPUT, MSGL_ERR, MSGTR_INPUT_INPUT_ErrDeadKeyOnFd, | |
1289 key_fds[i].fd); | |
1290 key_fds[i].dead = 1; | |
1291 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1292 } |
24135 | 1293 autorepeat_cmd = check_autorepeat(paused); |
24131 | 1294 if (autorepeat_cmd) |
1295 return autorepeat_cmd; | |
1296 | |
1297 for (i = 0; i < num_cmd_fd; i++) { | |
24135 | 1298 char *cmd; |
1299 int r; | |
24131 | 1300 #ifdef HAVE_POSIX_SELECT |
24225
d15e78b799b5
Process any waiting commands (got_cmd set). Should fix e.g. smplayer.
reimar
parents:
24141
diff
changeset
|
1301 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
|
1302 !cmd_fds[i].got_cmd) |
24131 | 1303 continue; |
1304 #endif | |
24135 | 1305 r = mp_input_read_cmd(&cmd_fds[i], &cmd); |
24131 | 1306 if (r >= 0) { |
1307 mp_cmd_t *ret = mp_input_parse_cmd(cmd); | |
1308 free(cmd); | |
1309 if (ret) | |
1310 return ret; | |
1311 } | |
1312 else if (r == MP_INPUT_ERROR) | |
1313 mp_msg(MSGT_INPUT, MSGL_ERR, MSGTR_INPUT_INPUT_ErrOnCmdFd, | |
1314 cmd_fds[i].fd); | |
1315 else if (r == MP_INPUT_DEAD) | |
1316 cmd_fds[i].dead = 1; | |
1317 } | |
1318 | |
1319 return NULL; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1320 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1321 |
24131 | 1322 |
4821 | 1323 int |
1324 mp_input_queue_cmd(mp_cmd_t* cmd) { | |
25228 | 1325 if(!cmd || cmd_queue_length >= CMD_QUEUE_SIZE) |
4821 | 1326 return 0; |
1327 cmd_queue[cmd_queue_end] = cmd; | |
1328 cmd_queue_end = (cmd_queue_end + 1) % CMD_QUEUE_SIZE; | |
1329 cmd_queue_length++; | |
1330 return 1; | |
1331 } | |
1332 | |
1333 static mp_cmd_t* | |
13603 | 1334 mp_input_get_queued_cmd(int peek_only) { |
4821 | 1335 mp_cmd_t* ret; |
1336 | |
1337 if(cmd_queue_length == 0) | |
1338 return NULL; | |
1339 | |
1340 ret = cmd_queue[cmd_queue_start]; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1341 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1342 if (!peek_only) { |
4821 | 1343 cmd_queue_length--; |
1344 cmd_queue_start = (cmd_queue_start + 1) % CMD_QUEUE_SIZE; | |
13603 | 1345 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1346 |
4821 | 1347 return ret; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1348 } |
4821 | 1349 |
13603 | 1350 /** |
1351 * \param peek_only when set, the returned command stays in the queue. | |
1352 * Do not free the returned cmd whe you set this! | |
1353 */ | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1354 mp_cmd_t* |
13603 | 1355 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
|
1356 mp_cmd_t* ret = NULL; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1357 mp_cmd_filter_t* cf; |
13603 | 1358 int from_queue; |
4821 | 1359 |
25623
b955a135e3a8
Do not use exit_player in the signal handler, this code just can not
reimar
parents:
25576
diff
changeset
|
1360 if (async_quit_request) |
b955a135e3a8
Do not use exit_player in the signal handler, this code just can not
reimar
parents:
25576
diff
changeset
|
1361 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
|
1362 while(1) { |
13603 | 1363 from_queue = 1; |
1364 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
|
1365 if(ret) break; |
13603 | 1366 from_queue = 0; |
24131 | 1367 ret = read_events(time, paused); |
24134
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1368 if (!ret) { |
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1369 from_queue = 1; |
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1370 ret = mp_input_get_queued_cmd(peek_only); |
e18a800a02e7
Handle queued commands from input event functions immediately
uau
parents:
24132
diff
changeset
|
1371 } |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1372 break; |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1373 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1374 if(!ret) return NULL; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1375 |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1376 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
|
1377 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
|
1378 if (peek_only && from_queue) |
f13b32b2bee4
Fix cmd filter memory leak, free the cmd after filter ate it.
ulion
parents:
24878
diff
changeset
|
1379 // 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
|
1380 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
|
1381 mp_cmd_free(ret); |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1382 return NULL; |
24959
f13b32b2bee4
Fix cmd filter memory leak, free the cmd after filter ate it.
ulion
parents:
24878
diff
changeset
|
1383 } |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1384 } |
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1385 |
13603 | 1386 if (!from_queue && peek_only) |
1387 mp_input_queue_cmd(ret); | |
1388 | |
8196
419bdbfdb660
Add the possibilty to grab the keys and to filter the commands
albeu
parents:
8164
diff
changeset
|
1389 return ret; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1390 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1391 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1392 void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1393 mp_cmd_free(mp_cmd_t* cmd) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1394 int i; |
5046 | 1395 //#ifdef MP_DEBUG |
1396 // assert(cmd != NULL); | |
1397 //#endif | |
1398 if ( !cmd ) return; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1399 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1400 if(cmd->name) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1401 free(cmd->name); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1402 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1403 for(i=0; i < MP_CMD_MAX_ARGS && cmd->args[i].type != -1; i++) { |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1404 if(cmd->args[i].type == MP_CMD_ARG_STRING && cmd->args[i].v.s != NULL) |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1405 free(cmd->args[i].v.s); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1406 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1407 free(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1408 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1409 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1410 mp_cmd_t* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1411 mp_cmd_clone(mp_cmd_t* cmd) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1412 mp_cmd_t* ret; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1413 int i; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1414 #ifdef MP_DEBUG |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1415 assert(cmd != NULL); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1416 #endif |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1417 |
18878 | 1418 ret = malloc(sizeof(mp_cmd_t)); |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1419 memcpy(ret,cmd,sizeof(mp_cmd_t)); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1420 if(cmd->name) |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1421 ret->name = strdup(cmd->name); |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1422 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
|
1423 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
|
1424 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
|
1425 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1426 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1427 return ret; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1428 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1429 |
6394 | 1430 static char key_str[12]; |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1431 |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1432 static char* |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1433 mp_input_get_key_name(int key) { |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1434 int i; |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1435 |
4821 | 1436 for(i = 0; key_names[i].name != NULL; i++) { |
1437 if(key_names[i].key == key) | |
1438 return key_names[i].name; | |
1439 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1440 |
6394 | 1441 if(isascii(key)) { |
1442 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
|
1443 return key_str; |
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 |
6394 | 1446 // Print the hex key code |
1447 snprintf(key_str,12,"%#-8x",key); | |
1448 return key_str; | |
1449 | |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1450 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1451 |
25263
96d0992c7920
Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents:
25228
diff
changeset
|
1452 int |
25150 | 1453 mp_input_get_key_from_name(const char *name) { |
6394 | 1454 int i,ret = 0,len = strlen(name); |
1455 if(len == 1) { // Direct key code | |
1456 ret = (unsigned char)name[0]; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1457 return ret; |
6394 | 1458 } else if(len > 2 && strncasecmp("0x",name,2) == 0) |
1459 return strtol(name,NULL,16); | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1460 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1461 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
|
1462 if(strcasecmp(key_names[i].name,name) == 0) |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1463 return key_names[i].key; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1464 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1465 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1466 return -1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1467 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1468 |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1469 static int |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1470 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
|
1471 char *end,*ptr; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1472 int n=0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1473 |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1474 ptr = name; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1475 n = 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1476 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
|
1477 if(end && end[1] != '\0') { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1478 if(end[1] == '-') |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1479 end = &end[1]; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1480 end[0] = '\0'; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1481 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1482 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
|
1483 if(keys[n] < 0) { |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1484 return 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1485 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1486 n++; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1487 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
|
1488 ptr = &end[1]; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1489 else |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1490 break; |
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 keys[n] = 0; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1493 return 1; |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1494 } |
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1495 |
23477 | 1496 #define BS_MAX 256 |
1497 #define SPACE_CHAR " \n\r\t" | |
1498 | |
30590
d218228dc74d
Mark some more functions that are not used outside of their files as static.
diego
parents:
29809
diff
changeset
|
1499 static void |
25766 | 1500 mp_input_bind_keys(const int keys[MP_MAX_KEY_DOWN+1], char* cmd) { |
4842 | 1501 int i = 0,j; |
1502 mp_cmd_bind_t* bind = NULL; | |
23477 | 1503 mp_cmd_bind_section_t* bind_section = NULL; |
1504 char *section=NULL, *p; | |
4842 | 1505 |
1506 #ifdef MP_DEBUG | |
1507 assert(keys != NULL); | |
1508 assert(cmd != NULL); | |
1509 #endif | |
1510 | |
23477 | 1511 if(*cmd=='{' && (p=strchr(cmd,'}'))) { |
1512 *p=0; | |
1513 section=++cmd; | |
1514 cmd=++p; | |
1515 // Jump beginning space | |
1516 for( ; cmd[0] != '\0' && strchr(SPACE_CHAR,cmd[0]) != NULL ; cmd++) | |
1517 /* NOTHING */; | |
1518 } | |
1519 bind_section=mp_input_get_bind_section(section); | |
1520 | |
1521 if(bind_section->cmd_binds) { | |
1522 for(i = 0; bind_section->cmd_binds[i].cmd != NULL ; i++) { | |
1523 for(j = 0 ; bind_section->cmd_binds[i].input[j] == keys[j] && keys[j] != 0 ; j++) | |
4842 | 1524 /* NOTHING */; |
23477 | 1525 if(keys[j] == 0 && bind_section->cmd_binds[i].input[j] == 0 ) { |
1526 bind = &bind_section->cmd_binds[i]; | |
4842 | 1527 break; |
1528 } | |
1529 } | |
1530 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1531 |
4842 | 1532 if(!bind) { |
25726 | 1533 bind_section->cmd_binds = realloc(bind_section->cmd_binds,(i+2)*sizeof(mp_cmd_bind_t)); |
23477 | 1534 memset(&bind_section->cmd_binds[i],0,2*sizeof(mp_cmd_bind_t)); |
1535 bind = &bind_section->cmd_binds[i]; | |
4842 | 1536 } |
1537 if(bind->cmd) | |
1538 free(bind->cmd); | |
1539 bind->cmd = strdup(cmd); | |
4850
13ea8fab37dd
Small bugfix (memcpy too small without sizeof(int) :( )
albeu
parents:
4842
diff
changeset
|
1540 memcpy(bind->input,keys,(MP_MAX_KEY_DOWN+1)*sizeof(int)); |
4842 | 1541 } |
1542 | |
30590
d218228dc74d
Mark some more functions that are not used outside of their files as static.
diego
parents:
29809
diff
changeset
|
1543 static void |
25766 | 1544 mp_input_add_binds(const mp_cmd_bind_t* list) { |
17890
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
1545 int i; |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
1546 for(i = 0 ; list[i].cmd ; i++) |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
1547 mp_input_bind_keys(list[i].input,list[i].cmd); |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
1548 } |
4842 | 1549 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1550 static void |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1551 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
|
1552 int i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1553 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1554 if(!binds) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1555 return; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1556 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1557 for(i = 0; binds[i].cmd != NULL; i++) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1558 free(binds[i].cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1559 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1560 free(binds); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1561 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1562 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1563 |
4525 | 1564 static int |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1565 mp_input_parse_config(char *file) { |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1566 int fd; |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1567 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
|
1568 char *iter,*end; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1569 char buffer[BS_MAX]; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1570 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
|
1571 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1572 fd = open(file,O_RDONLY); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1573 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1574 if(fd < 0) { |
13946 | 1575 mp_msg(MSGT_INPUT,MSGL_V,"Can't open input config file %s: %s\n",file,strerror(errno)); |
4525 | 1576 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1577 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1578 |
5198
a528f6c891b5
A bug fix in the auto-repeat stuff + moved all printf to mp_msg
albeu
parents:
5137
diff
changeset
|
1579 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
|
1580 |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1581 while(1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1582 if(! eof && bs < BS_MAX-1) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1583 if(bs > 0) bs--; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1584 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
|
1585 if(r < 0) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1586 if(errno == EINTR) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1587 continue; |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1588 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrReadingInputConfig,file,strerror(errno)); |
6463 | 1589 close(fd); |
4525 | 1590 return 0; |
8274 | 1591 } else if(r == 0) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1592 eof = 1; |
8274 | 1593 } else { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1594 bs += r+1; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1595 buffer[bs-1] = '\0'; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1596 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1597 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1598 // 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
|
1599 if(bs <= 1) { |
13946 | 1600 mp_msg(MSGT_INPUT,MSGL_V,"Input config file %s parsed: %d binds\n",file,n_binds); |
6463 | 1601 close(fd); |
4525 | 1602 return 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1603 } |
4826 | 1604 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1605 iter = buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1606 |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1607 if(comments) { |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1608 for( ; iter[0] != '\0' && iter[0] != '\n' ; iter++) |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1609 /* NOTHING */; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1610 if(iter[0] == '\0') { // Buffer was full of comment |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1611 bs = 0; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1612 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1613 } |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1614 iter++; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1615 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
|
1616 memmove(buffer,iter,r+1); |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1617 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
|
1618 comments = 0; |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1619 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1620 } |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1621 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1622 // Find the wanted key |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1623 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
|
1624 // Jump beginning space |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1625 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
|
1626 /* NOTHING */; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1627 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
|
1628 bs = 0; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1629 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1630 } |
4763
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1631 if(iter[0] == '#') { // Comments |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1632 comments = 1; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1633 continue; |
b85890a5b0e5
Added comments support in input.conf (comments lines with #)
albeu
parents:
4732
diff
changeset
|
1634 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1635 // Find the end of the key code name |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1636 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
|
1637 /*NOTHING */; |
10398 | 1638 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
|
1639 if(buffer == iter) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1640 if(eof && (buffer-iter) == bs) |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1641 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
|
1642 else |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1643 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrBuffer2SmallForKeyName,iter); |
4525 | 1644 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1645 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1646 memmove(buffer,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1647 bs = end-iter; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1648 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1649 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1650 { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1651 char name[end-iter+1]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1652 strncpy(name,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1653 name[end-iter] = '\0'; |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1654 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
|
1655 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrUnknownKey,name); |
6463 | 1656 close(fd); |
4525 | 1657 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1658 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1659 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1660 if( bs > (end-buffer)) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1661 memmove(buffer,end,bs - (end-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1662 bs -= end-buffer; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1663 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1664 } else { // Get the command |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1665 while(iter[0] == ' ' || iter[0] == '\t') iter++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1666 // Found new line |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1667 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
|
1668 int i; |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1669 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
|
1670 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
|
1671 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
|
1672 mp_msg(MSGT_INPUT,MSGL_ERR,"\n"); |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1673 keys[0] = 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1674 if(iter > buffer) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1675 memmove(buffer,iter,bs- (iter-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1676 bs -= (iter-buffer); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1677 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1678 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1679 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1680 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
|
1681 /* NOTHING */; |
4821 | 1682 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
|
1683 if(iter == buffer) { |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1684 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrBuffer2SmallForCmd,buffer); |
6463 | 1685 close(fd); |
4525 | 1686 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1687 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1688 memmove(buffer,iter,end - iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1689 bs = end - iter; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1690 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1691 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1692 { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1693 char cmd[end-iter+1]; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1694 strncpy(cmd,iter,end-iter); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1695 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
|
1696 //printf("Set bind %d => %s\n",keys[0],cmd); |
4842 | 1697 mp_input_bind_keys(keys,cmd); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1698 n_binds++; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1699 } |
4589
4ce20c55a18a
Added support for key combination and mouse buttons key code
albeu
parents:
4525
diff
changeset
|
1700 keys[0] = 0; |
4821 | 1701 end++; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1702 if(bs > (end-buffer)) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1703 memmove(buffer,end,bs-(end-buffer)); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1704 bs -= (end-buffer); |
4821 | 1705 buffer[bs-1] = '\0'; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1706 continue; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1707 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1708 } |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1709 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrWhyHere); |
6463 | 1710 close(fd); |
23477 | 1711 mp_input_set_section(NULL); |
4525 | 1712 return 0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1713 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1714 |
23477 | 1715 void |
1716 mp_input_set_section(char *name) { | |
1717 mp_cmd_bind_section_t* bind_section = NULL; | |
1718 | |
1719 cmd_binds=NULL; | |
1720 cmd_binds_default=NULL; | |
1721 if(section) free(section); | |
1722 if(name) section=strdup(name); else section=strdup("default"); | |
24424 | 1723 if((bind_section=mp_input_get_bind_section(section))) |
23477 | 1724 cmd_binds=bind_section->cmd_binds; |
1725 if(strcmp(section,"default")==0) return; | |
24424 | 1726 if((bind_section=mp_input_get_bind_section(NULL))) |
23477 | 1727 cmd_binds_default=bind_section->cmd_binds; |
1728 } | |
1729 | |
1730 char* | |
1731 mp_input_get_section(void) { | |
1732 return section; | |
1733 } | |
1734 | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1735 void |
17890
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
1736 mp_input_init(int use_gui) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1737 char* file; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1738 |
27343 | 1739 #ifdef CONFIG_GUI |
17890
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
1740 if(use_gui) |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
1741 mp_input_add_binds(gui_def_cmd_binds); |
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17838
diff
changeset
|
1742 #endif |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1743 |
4836 | 1744 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
|
1745 if(!file) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1746 return; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1747 |
12942 | 1748 if( !mp_input_parse_config(file)) { |
1749 // free file if it was allocated by get_path(), | |
1750 // before it gets overwritten | |
1751 if( file != config_file) | |
1752 { | |
1753 free(file); | |
1754 } | |
6551
c930dffac92c
Fix after the patch of Dominik Mierzejewski. Try the user's input.conf
albeu
parents:
6545
diff
changeset
|
1755 // Try global conf dir |
10272
7b0bc557987b
renames: DATADIR->MPLAYER_DATADIR, CONFDIR->MPLAYER_CONFDIR, LIBDIR->MPLAYER_LIBDIR
arpi
parents:
10215
diff
changeset
|
1756 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
|
1757 if(! mp_input_parse_config(file)) |
13946 | 1758 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
|
1759 } |
12942 | 1760 else |
1761 { | |
1762 // free file if it was allocated by get_path() | |
1763 if( file != config_file) | |
1764 free(file); | |
1765 } | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1766 |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
1767 #ifdef CONFIG_JOYSTICK |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1768 if(use_joystick) { |
5722
8346974080fe
Added -input js-dev xx option to specifies the joystick device to use.
albeu
parents:
5571
diff
changeset
|
1769 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
|
1770 if(fd < 0) |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1771 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
|
1772 else |
4524
01a0cf736e0d
Fix the bugs the previous version should fix (and those introduced
albeu
parents:
4518
diff
changeset
|
1773 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
|
1774 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1775 #endif |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1776 |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
1777 #ifdef CONFIG_LIRC |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1778 if(use_lirc) { |
4432 | 1779 int fd = mp_input_lirc_init(); |
1780 if(fd > 0) | |
7883 | 1781 mp_input_add_cmd_fd(fd,0,mp_input_lirc_read,mp_input_lirc_close); |
4432 | 1782 } |
1783 #endif | |
1784 | |
27391
1d2faa1020fb
Rename a bunch of miscellaneous preprocessor directives.
diego
parents:
27388
diff
changeset
|
1785 #ifdef CONFIG_LIRCC |
10215
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1786 if(use_lircc) { |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1787 int fd = lircc_init("mplayer", NULL); |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1788 if(fd >= 0) |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1789 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
|
1790 } |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1791 #endif |
dd32fe16a36c
lirccd support by Fredrik Tolf <fredrik@dolda2000.cjb.net>
alex
parents:
10116
diff
changeset
|
1792 |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27370
diff
changeset
|
1793 #ifdef CONFIG_APPLE_REMOTE |
24037 | 1794 if(use_ar) { |
1795 if(mp_input_ar_init() < 0) | |
1796 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantInitAppleRemote); | |
1797 else | |
1798 mp_input_add_key_fd(-1,0,mp_input_ar_read,mp_input_ar_close); | |
1799 } | |
1800 #endif | |
1801 | |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27370
diff
changeset
|
1802 #ifdef CONFIG_APPLE_IR |
26763
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1803 if(use_ar) { |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1804 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
|
1805 if(fd < 0) |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1806 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
|
1807 else |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1808 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
|
1809 } |
c13288eeb9f6
Add support for AppleIR Remote as an input under Linux systems.
ben
parents:
26686
diff
changeset
|
1810 #endif |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29023
diff
changeset
|
1811 |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1812 if(in_file) { |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1813 struct stat st; |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1814 if(stat(in_file,&st)) |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1815 mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrCantStatFile,in_file,strerror(errno)); |
7840
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1816 else { |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1817 in_file_fd = open(in_file,S_ISFIFO(st.st_mode) ? O_RDWR : O_RDONLY); |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1818 if(in_file_fd >= 0) |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1819 mp_input_add_cmd_fd(in_file_fd,1,NULL,(mp_close_func_t)close); |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1820 else |
16856
d222ea8f2cb4
translatable eng strings to new section on help_mp-en
reynaldo
parents:
16793
diff
changeset
|
1821 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
|
1822 } |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1823 } |
813dff319582
New feature to let mplayer read commands from a file. Mostly
albeu
parents:
7779
diff
changeset
|
1824 |
4432 | 1825 } |
1826 | |
1827 void | |
1828 mp_input_uninit(void) { | |
4518
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1829 unsigned int i; |
23477 | 1830 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
|
1831 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1832 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
|
1833 if(key_fds[i].close_func) |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1834 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
|
1835 } |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1836 |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1837 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
|
1838 if(cmd_fds[i].close_func) |
83128eed25f1
Corrected the quit bug and added support for up to 10 axis
albeu
parents:
4432
diff
changeset
|
1839 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
|
1840 } |
23477 | 1841 while (cmd_binds_section) { |
1842 mp_input_free_binds(cmd_binds_section->cmd_binds); | |
1843 free(cmd_binds_section->section); | |
1844 bind_section=cmd_binds_section->next; | |
1845 free(cmd_binds_section); | |
1846 cmd_binds_section=bind_section; | |
1847 } | |
1848 cmd_binds_section=NULL; | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1849 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
diff
changeset
|
1850 |
4657
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1851 void |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1852 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
|
1853 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
|
1854 } |
610a11e4db36
Added key autorepeat support. Options to enable/disable joystick and lirc
albeu
parents:
4589
diff
changeset
|
1855 |
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
|
1856 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
|
1857 int i; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1858 printf("\n"); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1859 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
|
1860 printf("%s\n",key_names[i].name); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1861 exit(0); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1862 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
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_cmd_list(m_option_t* cfg) { |
25766 | 1865 const mp_cmd_t *cmd; |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1866 int i,j; |
19110
08888397444e
marks several strings inside structs as const when they hold just
reynaldo
parents:
18889
diff
changeset
|
1867 const char* type; |
5218
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1868 |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1869 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
|
1870 printf("%-20.20s",cmd->name); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1871 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
|
1872 switch(cmd->args[j].type) { |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1873 case MP_CMD_ARG_INT: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1874 type = "Integer"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1875 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1876 case MP_CMD_ARG_FLOAT: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1877 type = "Float"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1878 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1879 case MP_CMD_ARG_STRING: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1880 type = "String"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1881 break; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1882 default: |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1883 type = "??"; |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1884 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1885 if(j+1 > cmd->nargs) |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1886 printf(" [%s]",type); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1887 else |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1888 printf(" %s",type); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1889 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1890 printf("\n"); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1891 } |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1892 exit(0); |
11c7ccce8ae3
Added options -input keylist and -input cmdlist to list all know
albeu
parents:
5200
diff
changeset
|
1893 } |
7862
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1894 |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1895 int |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1896 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
|
1897 mp_cmd_t* cmd; |
13603 | 1898 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
|
1899 return 0; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1900 switch(cmd->id) { |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1901 case MP_CMD_QUIT: |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1902 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
|
1903 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
|
1904 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
|
1905 // 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
|
1906 return 1; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1907 } |
13603 | 1908 // remove the cmd from the queue |
1909 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
|
1910 mp_cmd_free(cmd); |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1911 return 0; |
013c255225d8
mpdemux.c|h moved to libinput, mpdemux_check_interrupt() -> mp_input_check_interrupt()
arpi
parents:
7840
diff
changeset
|
1912 } |