input.c

来自「君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图」· C语言 代码 · 共 1,860 行 · 第 1/4 页

C
1,860
字号
#include "config.h"#include "mplaylib.h"#include <mplaylib.h>#include <errno.h>#include <signal.h>#include <sys/types.h>#include <sys/stat.h>#include "mplayertm.h"#include <ctype.h>#include "input.h"#include "mouse.h"#ifdef MP_DEBUG#include <assert.h>#endif#include "mp_fifo.h"#include "osdep/getch2.h"#include "osdep/keycodes.h"#include "osdep/timer.h"#include "mp_msg.h"#include "help_mp.h"#include "m_config.h"#include "m_option.h"#include "get_path.h"#include "joystick.h"#ifdef HAVE_LIRC#include "lirc.h"#endif#ifdef HAVE_LIRCC#include <lirc/lircc.h>#endif#include "ar.h"/// This array defines all known commands./// The first field is an id used to recognize the command without too many strcmp./// The second is obviously the command name./// The third is the minimum number of arguments this command needs./// Then comes the definition of each argument, terminated with an arg of type -1./// A command can take a maximum of MP_CMD_MAX_ARGS-1 arguments (-1 because of/// the last one) which is actually 9./// For the args, the first field is the type (actually int, float or string), the second/// is the default value wich is used for optional argumentsstatic mp_cmd_t mp_cmds[] = {#ifdef USE_RADIO  { MP_CMD_RADIO_STEP_CHANNEL, "radio_step_channel", 1,  { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }},  { MP_CMD_RADIO_SET_CHANNEL, "radio_set_channel", 1, { { MP_CMD_ARG_STRING, {0}}, {-1,{0}}  }},  { MP_CMD_RADIO_SET_FREQ, "radio_set_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } },  { MP_CMD_RADIO_STEP_FREQ, "radio_step_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } },#endif  { MP_CMD_SEEK, "seek", 1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_EDL_MARK, "edl_mark", 0, { {-1,{0}} } },  { MP_CMD_AUDIO_DELAY, "audio_delay", 1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_SPEED_INCR, "speed_incr", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } },  { MP_CMD_SPEED_MULT, "speed_mult", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } },  { MP_CMD_SPEED_SET, "speed_set", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } },  { MP_CMD_QUIT, "quit", 0, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_PAUSE, "pause", 0, { {-1,{0}} } },  { MP_CMD_FRAME_STEP, "frame_step", 0, { {-1,{0}} } },  { MP_CMD_PLAY_TREE_STEP, "pt_step",1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } },  { MP_CMD_PLAY_TREE_UP_STEP, "pt_up_step",1,  { { MP_CMD_ARG_INT,{0} }, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } },  { MP_CMD_PLAY_ALT_SRC_STEP, "alt_src_step",1, { { MP_CMD_ARG_INT,{0} }, {-1,{0}} } },  { MP_CMD_LOOP, "loop", 1,  { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_SUB_DELAY, "sub_delay",1,  { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_SUB_STEP, "sub_step",1,  { { MP_CMD_ARG_INT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_OSD, "osd",0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_OSD_SHOW_TEXT, "osd_show_text", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{-1}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_OSD_SHOW_PROPERTY_TEXT, "osd_show_property_text",1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{-1}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_VOLUME, "volume", 1, { { MP_CMD_ARG_FLOAT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_BALANCE, "balance", 1, { { MP_CMD_ARG_FLOAT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_MIXER_USEMASTER, "use_master", 0, { {-1,{0}} } },  { MP_CMD_MUTE, "mute", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_CONTRAST, "contrast",1,  { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_GAMMA, "gamma", 1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} }  },  { MP_CMD_BRIGHTNESS, "brightness",1,  { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} }  },  { MP_CMD_HUE, "hue",1,  { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_SATURATION, "saturation",1,  { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} }  },  { MP_CMD_FRAMEDROPPING, "frame_drop",0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } },  { MP_CMD_SUB_POS, "sub_pos", 1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_SUB_ALIGNMENT, "sub_alignment",0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_SUB_VISIBILITY, "sub_visibility", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_SUB_LOAD, "sub_load", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } },  { MP_CMD_SUB_REMOVE, "sub_remove", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_SUB_SELECT, "vobsub_lang", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } }, // for compatibility  { MP_CMD_SUB_SELECT, "sub_select", 0, { { MP_CMD_ARG_INT,{-2} }, {-1,{0}} } },  { MP_CMD_SUB_LOG, "sub_log", 0, { {-1,{0}} } },  { MP_CMD_SUB_SCALE, "sub_scale",1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_GET_PERCENT_POS, "get_percent_pos", 0, { {-1,{0}} } },  { MP_CMD_GET_TIME_POS, "get_time_pos", 0, { {-1,{0}} } },  { MP_CMD_GET_TIME_LENGTH, "get_time_length", 0, { {-1,{0}} } },  { MP_CMD_GET_FILENAME, "get_file_name", 0, { {-1,{0}} } },  { MP_CMD_GET_VIDEO_CODEC, "get_video_codec", 0, { {-1,{0}} } },  { MP_CMD_GET_VIDEO_BITRATE, "get_video_bitrate", 0, { {-1,{0}} } },  { MP_CMD_GET_VIDEO_RESOLUTION, "get_video_resolution", 0, { {-1,{0}} } },  { MP_CMD_GET_AUDIO_CODEC, "get_audio_codec", 0, { {-1,{0}} } },  { MP_CMD_GET_AUDIO_BITRATE, "get_audio_bitrate", 0, { {-1,{0}} } },  { MP_CMD_GET_AUDIO_SAMPLES, "get_audio_samples", 0, { {-1,{0}} } },  { MP_CMD_GET_META_TITLE, "get_meta_title", 0, { {-1,{0}} } },  { MP_CMD_GET_META_ARTIST, "get_meta_artist", 0, { {-1,{0}} } },  { MP_CMD_GET_META_ALBUM, "get_meta_album", 0, { {-1,{0}} } },  { MP_CMD_GET_META_YEAR, "get_meta_year", 0, { {-1,{0}} } },  { MP_CMD_GET_META_COMMENT, "get_meta_comment", 0, { {-1,{0}} } },  { MP_CMD_GET_META_TRACK, "get_meta_track", 0, { {-1,{0}} } },  { MP_CMD_GET_META_GENRE, "get_meta_genre", 0, { {-1,{0}} } },  { MP_CMD_SWITCH_AUDIO, "switch_audio", 0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } },#ifdef USE_TV  { MP_CMD_TV_START_SCAN, "tv_start_scan", 0,  { {-1,{0}} }},  { MP_CMD_TV_STEP_CHANNEL, "tv_step_channel", 1,  { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }},  { MP_CMD_TV_STEP_NORM, "tv_step_norm",0, { {-1,{0}} }  },  { MP_CMD_TV_STEP_CHANNEL_LIST, "tv_step_chanlist", 0, { {-1,{0}} }  },  { MP_CMD_TV_SET_CHANNEL, "tv_set_channel", 1, { { MP_CMD_ARG_STRING, {0}}, {-1,{0}}  }},  { MP_CMD_TV_LAST_CHANNEL, "tv_last_channel", 0, { {-1,{0}} } },  { MP_CMD_TV_SET_FREQ, "tv_set_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } },  { MP_CMD_TV_STEP_FREQ, "tv_step_freq", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } },  { MP_CMD_TV_SET_NORM, "tv_set_norm", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } },  { MP_CMD_TV_SET_BRIGHTNESS, "tv_set_brightness", 1,  { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT,{1} }, {-1,{0}} }},  { MP_CMD_TV_SET_CONTRAST, "tv_set_contrast", 1,  { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT,{1} }, {-1,{0}} }},  { MP_CMD_TV_SET_HUE, "tv_set_hue", 1,  { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT,{1} }, {-1,{0}} }},  { MP_CMD_TV_SET_SATURATION, "tv_set_saturation", 1,  { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT,{1} }, {-1,{0}} }},#endif  { MP_CMD_SUB_FORCED_ONLY, "forced_subs_only",  0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },#ifdef HAS_DVBIN_SUPPORT  { MP_CMD_DVB_SET_CHANNEL, "dvb_set_channel", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}}}},#endif  { MP_CMD_SWITCH_RATIO, "switch_ratio", 0, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } },  { MP_CMD_VO_FULLSCREEN, "vo_fullscreen", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_VO_ONTOP, "vo_ontop", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_FILE_FILTER, "file_filter", 1, { { MP_CMD_ARG_INT, {0}}, {-1,{0}}}},  { MP_CMD_VO_ROOTWIN, "vo_rootwin", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_VO_BORDER, "vo_border", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },  { MP_CMD_SCREENSHOT, "screenshot", 0, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_PANSCAN, "panscan",1,  { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_SWITCH_VSYNC, "switch_vsync", 0, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_LOADFILE, "loadfile", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_LOADLIST, "loadlist", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_RUN, "run", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } },  { MP_CMD_VF_CHANGE_RECTANGLE, "change_rectangle", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}}}},#ifdef HAVE_TV_TELETEXT  { MP_CMD_TV_TELETEXT_ADD_DEC, "teletext_add_dec", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } },  { MP_CMD_TV_TELETEXT_GO_LINK, "teletext_go_link", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },#endif#ifdef HAVE_NEW_GUI    { MP_CMD_GUI_LOADFILE, "gui_loadfile", 0, { {-1,{0}} } },  { MP_CMD_GUI_LOADSUBTITLE, "gui_loadsubtitle", 0, { {-1,{0}} } },  { MP_CMD_GUI_ABOUT, "gui_about", 0, { {-1,{0}} } },  { MP_CMD_GUI_PLAY, "gui_play", 0, { {-1,{0}} } },  { MP_CMD_GUI_STOP, "gui_stop", 0, { {-1,{0}} } },  { MP_CMD_GUI_PLAYLIST, "gui_playlist", 0, { {-1,{0}} } },  { MP_CMD_GUI_PREFERENCES, "gui_preferences", 0, { {-1,{0}} } },  { MP_CMD_GUI_SKINBROWSER, "gui_skinbrowser", 0, { {-1,{0}} } },#endif#ifdef USE_DVDNAV  { MP_CMD_DVDNAV, "dvdnav", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },#endif#ifdef HAVE_MENU  { MP_CMD_MENU, "menu",1,  { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } },  { MP_CMD_SET_MENU, "set_menu",1,  { {MP_CMD_ARG_STRING, {0}},  {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } },  { MP_CMD_CHELP, "help", 0, { {-1,{0}} } },  { MP_CMD_CEXIT, "exit", 0, { {-1,{0}} } },  { MP_CMD_CHIDE, "hide", 0, { {MP_CMD_ARG_INT,{3000}}, {-1,{0}} } },#endif   { MP_CMD_GET_VO_FULLSCREEN, "get_vo_fullscreen", 0, { {-1,{0}} } },  { MP_CMD_GET_SUB_VISIBILITY, "get_sub_visibility", 0, { {-1,{0}} } },  { MP_CMD_KEYDOWN_EVENTS, "key_down_event", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_SET_PROPERTY, "set_property", 2, { {MP_CMD_ARG_STRING, {0}},  {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } },  { MP_CMD_GET_PROPERTY, "get_property", 1, { {MP_CMD_ARG_STRING, {0}},  {-1,{0}} } },  { MP_CMD_STEP_PROPERTY, "step_property", 1, { {MP_CMD_ARG_STRING, {0}}, {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },    { MP_CMD_SEEK_CHAPTER, "seek_chapter", 1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },  { MP_CMD_SET_MOUSE_POS, "set_mouse_pos", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },    { 0, NULL, 0, {} }};/// The names of the keys as used in input.conf/// If you add some new keys, you also need to add them herestatic mp_key_name_t key_names[] = {  { ' ', "SPACE" },  { '#', "SHARP" },  { KEY_ENTER, "ENTER" },  { KEY_TAB, "TAB" },  { KEY_CTRL, "CTRL" },  { KEY_BACKSPACE, "BS" },  { KEY_DELETE, "DEL" },  { KEY_INSERT, "INS" },  { KEY_HOME, "HOME" },  { KEY_END, "END" },  { KEY_PAGE_UP, "PGUP" },  { KEY_PAGE_DOWN, "PGDWN" },  { KEY_ESC, "ESC" },  { KEY_RIGHT, "RIGHT" },  { KEY_LEFT, "LEFT" },  { KEY_DOWN, "DOWN" },  { KEY_UP, "UP" },  { KEY_F+1, "F1" },  { KEY_F+2, "F2" },  { KEY_F+3, "F3" },  { KEY_F+4, "F4" },  { KEY_F+5, "F5" },  { KEY_F+6, "F6" },  { KEY_F+7, "F7" },  { KEY_F+8, "F8" },  { KEY_F+9, "F9" },  { KEY_F+10, "F10" },  { KEY_F+11, "F11" },  { KEY_F+12, "F12" },  { KEY_KP0, "KP0" },  { KEY_KP1, "KP1" },  { KEY_KP2, "KP2" },  { KEY_KP3, "KP3" },  { KEY_KP4, "KP4" },  { KEY_KP5, "KP5" },  { KEY_KP6, "KP6" },  { KEY_KP7, "KP7" },  { KEY_KP8, "KP8" },  { KEY_KP9, "KP9" },  { KEY_KPDEL, "KP_DEL" },  { KEY_KPDEC, "KP_DEC" },  { KEY_KPINS, "KP_INS" },  { KEY_KPENTER, "KP_ENTER" },  { MOUSE_BTN0, "MOUSE_BTN0" },  { MOUSE_BTN1, "MOUSE_BTN1" },  { MOUSE_BTN2, "MOUSE_BTN2" },  { MOUSE_BTN3, "MOUSE_BTN3" },  { MOUSE_BTN4, "MOUSE_BTN4" },  { MOUSE_BTN5, "MOUSE_BTN5" },  { MOUSE_BTN6, "MOUSE_BTN6" },  { MOUSE_BTN7, "MOUSE_BTN7" },  { MOUSE_BTN8, "MOUSE_BTN8" },  { MOUSE_BTN9, "MOUSE_BTN9" },  { MOUSE_BTN0_DBL, "MOUSE_BTN0_DBL" },  { MOUSE_BTN1_DBL, "MOUSE_BTN1_DBL" },  { MOUSE_BTN2_DBL, "MOUSE_BTN2_DBL" },  { MOUSE_BTN3_DBL, "MOUSE_BTN3_DBL" },  { MOUSE_BTN4_DBL, "MOUSE_BTN4_DBL" },  { MOUSE_BTN5_DBL, "MOUSE_BTN5_DBL" },  { MOUSE_BTN6_DBL, "MOUSE_BTN6_DBL" },  { MOUSE_BTN7_DBL, "MOUSE_BTN7_DBL" },  { MOUSE_BTN8_DBL, "MOUSE_BTN8_DBL" },  { MOUSE_BTN9_DBL, "MOUSE_BTN9_DBL" },  { JOY_AXIS1_MINUS, "JOY_UP" },  { JOY_AXIS1_PLUS, "JOY_DOWN" },  { JOY_AXIS0_MINUS, "JOY_LEFT" },  { JOY_AXIS0_PLUS, "JOY_RIGHT" },  { JOY_AXIS0_PLUS, "JOY_AXIS0_PLUS" },  { JOY_AXIS0_MINUS, "JOY_AXIS0_MINUS" },  { JOY_AXIS1_PLUS, "JOY_AXIS1_PLUS" },  { JOY_AXIS1_MINUS, "JOY_AXIS1_MINUS" },  { JOY_AXIS2_PLUS, "JOY_AXIS2_PLUS" },  { JOY_AXIS2_MINUS, "JOY_AXIS2_MINUS" },  { JOY_AXIS3_PLUS, "JOY_AXIS3_PLUS" },  { JOY_AXIS3_MINUS, "JOY_AXIS3_MINUS" },  { JOY_AXIS4_PLUS, "JOY_AXIS4_PLUS" },  { JOY_AXIS4_MINUS, "JOY_AXIS4_MINUS" },  { JOY_AXIS5_PLUS, "JOY_AXIS5_PLUS" },  { JOY_AXIS5_MINUS, "JOY_AXIS5_MINUS" },  { JOY_AXIS6_PLUS, "JOY_AXIS6_PLUS" },  { JOY_AXIS6_MINUS, "JOY_AXIS6_MINUS" },  { JOY_AXIS7_PLUS, "JOY_AXIS7_PLUS" },  { JOY_AXIS7_MINUS, "JOY_AXIS7_MINUS" },  { JOY_AXIS8_PLUS, "JOY_AXIS8_PLUS" },  { JOY_AXIS8_MINUS, "JOY_AXIS8_MINUS" },  { JOY_AXIS9_PLUS, "JOY_AXIS9_PLUS" },  { JOY_AXIS9_MINUS, "JOY_AXIS9_MINUS" },  { JOY_BTN0, "JOY_BTN0" },  { JOY_BTN1, "JOY_BTN1" },  { JOY_BTN2, "JOY_BTN2" },  { JOY_BTN3, "JOY_BTN3" },  { JOY_BTN4, "JOY_BTN4" },  { JOY_BTN5, "JOY_BTN5" },  { JOY_BTN6, "JOY_BTN6" },  { JOY_BTN7, "JOY_BTN7" },  { JOY_BTN8, "JOY_BTN8" },  { JOY_BTN9, "JOY_BTN9" },  { AR_PLAY, "AR_PLAY" },  { AR_PLAY_HOLD, "AR_PLAY_HOLD" },  { AR_NEXT, "AR_NEXT" },  { AR_NEXT_HOLD, "AR_NEXT_HOLD" },  { AR_PREV, "AR_PREV" },  { AR_PREV_HOLD, "AR_PREV_HOLD" },  { AR_MENU, "AR_MENU" },  { AR_MENU_HOLD, "AR_MENU_HOLD" },  { AR_VUP, "AR_VUP" },  { AR_VDOWN, "AR_VDOWN" },  { KEY_POWER, "POWER" },  { KEY_MENU, "MENU" },  { KEY_PLAY, "PLAY" },  { KEY_PAUSE, "PAUSE" },  { KEY_PLAYPAUSE, "PLAYPAUSE" },  { KEY_STOP, "STOP" },  { KEY_FORWARD, "FORWARD" },  { KEY_REWIND, "REWIND" },  { KEY_NEXT, "NEXT" },  { KEY_PREV, "PREV" },  { KEY_VOLUME_UP, "VOLUME_UP" },  { KEY_VOLUME_DOWN, "VOLUME_DOWN" },  { KEY_MUTE, "MUTE" },  // These are kept for backward compatibility  { KEY_PAUSE, "XF86_PAUSE" },  { KEY_STOP, "XF86_STOP" },  { KEY_PREV, "XF86_PREV" },  { KEY_NEXT, "XF86_NEXT" },  { KEY_CLOSE_WIN, "CLOSE_WIN" },  { 0, NULL }};// This is the default binding. The content of input.conf overrides these.// The first arg is a null terminated array of key codes.// The second is the commandstatic mp_cmd_bind_t def_cmd_binds[] = {  { {  MOUSE_BTN3, 0 }, "seek 10" },  { {  MOUSE_BTN4, 0 }, "seek -10" },  { {  MOUSE_BTN5, 0 }, "volume 1" },  { {  MOUSE_BTN6, 0 }, "volume -1" },  #ifdef USE_DVDNAV  { { KEY_KP8, 0 }, "dvdnav 1" },   // up  { { KEY_KP2, 0 }, "dvdnav 2" },   // down  { { KEY_KP4, 0 }, "dvdnav 3" },   // left  { { KEY_KP6, 0 }, "dvdnav 4" },   // right  { { KEY_KP5, 0 }, "dvdnav 5" },   // menu  { { KEY_KPENTER, 0 }, "dvdnav 6" },   // select  { { MOUSE_BTN0, 0 }, "dvdnav 8" },   //select  { { KEY_KP7, 0 }, "dvdnav 7" },   // previous menu#endif  { { KEY_RIGHT, 0 }, "seek 10" },  { {  KEY_LEFT, 0 }, "seek -10" },  { {  KEY_UP, 0 }, "seek 60" },  { {  KEY_DOWN, 0 }, "seek -60" },  { {  KEY_PAGE_UP, 0 }, "seek 600" },  { { KEY_PAGE_DOWN, 0 }, "seek -600" },  { { '+', 0 }, "audio_delay 0.100" },  { { '-', 0 }, "audio_delay -0.100" },  { { '[', 0 }, "speed_mult 0.9091" },  { { ']', 0 }, "speed_mult 1.1" },  { { '{', 0 }, "speed_mult 0.5" },  { { '}', 0 }, "speed_mult 2.0" },  { { KEY_BACKSPACE, 0 }, "speed_set 1.0" },  { { 'q', 0 }, "quit" },  { { KEY_ESC, 0 }, "quit" },  { { 'p', 0 }, "pause" },  { { ' ', 0 }, "pause" },  { { '.', 0 }, "frame_step" },  { { KEY_HOME, 0 }, "pt_up_step 1" },  { { KEY_END, 0 }, "pt_up_step -1" },  { { '>', 0 }, "pt_step 1" },  { { KEY_ENTER, 0 }, "pt_step 1 1" },  { { '<', 0 }, "pt_step -1" },  { { KEY_INS, 0 }, "alt_src_step 1" },  { { KEY_DEL, 0 }, "alt_src_step -1" },  { { 'o', 0 }, "osd" },  { { 'I', 0 }, "osd_show_property_text \"${filename}\"" },  { { 'z', 0 }, "sub_delay -0.1" },  { { 'x', 0 }, "sub_delay +0.1" },  { { 'g', 0 }, "sub_step -1" },  { { 'y', 0 }, "sub_step +1" },  { { '9', 0 }, "volume -1" },  { { '/', 0 }, "volume -1" },  { { '0', 0 }, "volume 1" },  { { '*', 0 }, "volume 1" },  { { '(', 0 }, "balance -0.1" },  { { ')', 0 }, "balance 0.1" },  { { 'm', 0 }, "mute" },  { { '1', 0 }, "contrast -1" },  { { '2', 0 }, "contrast 1" },  { { '3', 0 }, "brightness -1" },  { { '4', 0 }, "brightness 1" },  { { '5', 0 }, "hue -1" },  { { '6', 0 }, "hue 1" },  { { '7', 0 }, "saturation -1" },  { { '8', 0 }, "saturation 1" },  { { 'd', 0 }, "frame_drop" },  { { 'D', 0 }, "step_property deinterlace" },  { { 'r', 0 }, "sub_pos -1" },  { { 't', 0 }, "sub_pos +1" },  { { 'a', 0 }, "sub_alignment" },  { { 'v', 0 }, "sub_visibility" },  { { 'j', 0 }, "sub_select" },  { { 'F', 0 }, "forced_subs_only" },  { { '#', 0 }, "switch_audio" },  { { '_', 0 }, "step_property switch_video" },  { { KEY_TAB, 0 }, "step_property switch_program" },  { { 'i', 0 }, "edl_mark" },#ifdef USE_TV  { { 'h', 0 }, "tv_step_channel 1" },  { { 'k', 0 }, "tv_step_channel -1" },  { { 'n', 0 }, "tv_step_norm" },  { { 'u', 0 }, "tv_step_chanlist" },#endif#ifdef HAVE_TV_TELETEXT  { { 'X', 0 }, "step_property teletext_mode 1" },  { { 'W', 0 }, "step_property teletext_page 1" },  { { 'Q', 0 }, "step_property teletext_page -1" },#endif#ifdef HAVE_JOYSTICK  { { JOY_AXIS0_PLUS, 0 }, "seek 10" },  { { JOY_AXIS0_MINUS, 0 }, "seek -10" },  { { JOY_AXIS1_MINUS, 0 }, "seek 60" },  { { JOY_AXIS1_PLUS, 0 }, "seek -60" },  { { JOY_BTN0, 0 }, "pause" },  { { JOY_BTN1, 0 }, "osd" },  { { JOY_BTN2, 0 }, "volume 1"},  { { JOY_BTN3, 0 }, "volume -1"},#endif#ifdef HAVE_APPLE_REMOTE  { { AR_PLAY, 0}, "pause" },  { { AR_PLAY_HOLD, 0}, "quit" },  { { AR_NEXT, 0 }, "seek 30" },  { { AR_NEXT_HOLD, 0 }, "seek 120" },  { { AR_PREV, 0 }, "seek -10" },  { { AR_PREV_HOLD, 0 }, "seek -120" },  { { AR_MENU, 0 }, "osd" },  { { AR_MENU_HOLD, 0 }, "mute" },  { { AR_VUP, 0 }, "volume 1"},  { { AR_VDOWN, 0 }, "volume -1"},#endif  { { 'T', 0 }, "vo_ontop" },  { { 'f', 0 }, "vo_fullscreen" },  { { 's', 0 }, "screenshot 0" },  { { 'S', 0 }, "screenshot 1" },  { { 'w', 0 }, "panscan -0.1" },  { { 'e', 0 }, "panscan +0.1" },  { { KEY_POWER, 0 }, "quit" },  { { KEY_MENU, 0 }, "osd" },  { { KEY_PLAY, 0 }, "pause" },  { { KEY_PAUSE, 0 }, "pause" },  { { KEY_PLAYPAUSE, 0 }, "pause" },  { { KEY_STOP, 0 }, "quit" },  { { KEY_FORWARD, 0 }, "seek 60" },  { { KEY_REWIND, 0 }, "seek -60" },  { { KEY_NEXT, 0 }, "pt_step 1" },  { { KEY_PREV, 0 }, "pt_step -1" },  { { KEY_VOLUME_UP, 0 }, "volume 1" },  { { KEY_VOLUME_DOWN, 0 }, "volume -1" },  { { KEY_MUTE, 0 }, "mute" },            { { KEY_CLOSE_WIN, 0 }, "quit" },    { { '!', 0 }, "seek_chapter -1" },  { { '@', 0 }, "seek_chapter 1" },

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?