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