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