]> git.sesse.net Git - vlc/blobdiff - src/libvlc-module.c
Added hotkey code for input "frame-next".
[vlc] / src / libvlc-module.c
index 64cea2b885aeb3e2b949933be09c1db1d715abf2..8c8079d8afd521fb412ace33162b5bae29c02ac7 100644 (file)
@@ -50,6 +50,7 @@ static const char *const ppsz_language[] =
     "ar",
     "pt_BR",
     "en_GB",
+    "bg",
     "ca",
     "zh_TW",
     "cs",
@@ -70,6 +71,7 @@ static const char *const ppsz_language[] =
     "fa",
     "pl",
     "pt_PT",
+    "pa",
     "ro",
     "ru",
     "zh_CN",
@@ -88,6 +90,7 @@ static const char *const ppsz_language_text[] =
     N_("Arabic"),
     N_("Brazilian Portuguese"),
     N_("British English"),
+    N_("Bulgarian"),
     N_("Catalan"),
     N_("Chinese Traditional"),
     N_("Czech"),
@@ -108,6 +111,7 @@ static const char *const ppsz_language_text[] =
     N_("Persian"),
     N_("Polish"),
     N_("Portuguese"),
+    N_("Punjabi"),
     N_("Romanian"),
     N_("Russian"),
     N_("Simplified Chinese"),
@@ -162,6 +166,16 @@ static const char *const ppsz_snap_formats[] =
     "This is the verbosity level (0=only errors and " \
     "standard messages, 1=warnings, 2=debug).")
 
+#define VERBOSE_OBJECTS_TEXT N_("Choose which objects should print debug " \
+    "message")
+#define VERBOSE_OBJECTS_LONGTEXT N_( \
+    "This is a ',' separated string, each objects should be prefixed by " \
+    "a '+' or a '-' to respectively enable or disable it. The keyword " \
+    "'all' refers to all objects. Objects can be refered to by their " \
+    "type or module name. Rules applying to named objects take precendence " \
+    "over rules applying to object types. Note that you still need to " \
+    "use -vvv to actually display debug message.")
+
 #define QUIET_TEXT N_("Be quiet")
 #define QUIET_LONGTEXT N_( \
     "Turn off all warning and information messages.")
@@ -309,6 +323,13 @@ static const char *const ppsz_force_dolby_descriptions[] = {
 #define AUDIO_REPLAY_GAIN_PEAK_PROTECTION_LONGTEXT N_( \
     "Protect against sound clipping" )
 
+#define AUDIO_TIME_STRETCH_TEXT N_( \
+    "Enable time streching audio" )
+#define AUDIO_TIME_STRETCH_LONGTEXT N_( \
+    "This allows to play audio at lower or higher speed without" \
+    "affecting the audio pitch" )
+
+
 static const char *const ppsz_replay_gain_mode[] = {
     "none", "track", "album" };
 static const char *const ppsz_replay_gain_mode_text[] = {
@@ -401,19 +422,19 @@ static const char *const ppsz_align_descriptions[] =
 #define VIDEO_TITLE_SHOW_LONGTEXT N_( \
     "Display the title of the video on top of the movie.")
 
-#define VIDEO_TITLE_TIMEOUT_TEXT N_("Show video title for x miliseconds")
+#define VIDEO_TITLE_TIMEOUT_TEXT N_("Show video title for x milliseconds")
 #define VIDEO_TITLE_TIMEOUT_LONGTEXT N_( \
-    "Show the video title for n miliseconds, default is 5000 ms (5 sec.)")
+    "Show the video title for n milliseconds, default is 5000 ms (5 sec.)")
 
 #define VIDEO_TITLE_POSITION_TEXT N_("Position of video title")
 #define VIDEO_TITLE_POSITION_LONGTEXT N_( \
     "Place on video where to display the title (default bottom center).")
 
 #define MOUSE_HIDE_TIMEOUT_TEXT N_("Hide cursor and fullscreen " \
-                                   "controller after x miliseconds")
+                                   "controller after x milliseconds")
 #define MOUSE_HIDE_TIMEOUT_LONGTEXT N_( \
     "Hide mouse cursor and fullscreen controller after " \
-    "n miliseconds, default is 3000 ms (3 sec.)")
+    "n milliseconds, default is 3000 ms (3 sec.)")
 
 static const int pi_pos_values[] = { 0, 1, 2, 4, 8, 5, 6, 9, 10 };
 static const char *const ppsz_pos_descriptions[] =
@@ -434,9 +455,7 @@ static const char *const ppsz_pos_descriptions[] =
 
 #define VOUT_FILTER_TEXT N_("Video output filter module")
 #define VOUT_FILTER_LONGTEXT N_( \
-    "This adds post-processing filters to enhance the " \
-    "picture quality, for instance deinterlacing, or to clone or distort " \
-    "the video window.")
+    "This adds video output filters like clone or wall" )
 
 #define VIDEO_FILTER_TEXT N_("Video filter module")
 #define VIDEO_FILTER_LONGTEXT N_( \
@@ -622,7 +641,7 @@ static const char *const ppsz_clock_descriptions[] =
 #define INPUT_SUBTRACK_LANG_TEXT N_("Subtitle language")
 #define INPUT_SUBTRACK_LANG_LONGTEXT N_( \
     "Language of the subtitle track you want to use " \
-    "(comma separated, two or tree letter country code).")
+    "(comma separated, two or three letters country code).")
 
 /// \todo Document how to find it
 #define INPUT_AUDIOTRACK_ID_TEXT N_("Audio track ID")
@@ -666,6 +685,15 @@ static const char *const ppsz_clock_descriptions[] =
     "the form \"{name=bookmark-name,time=optional-time-offset," \
     "bytes=optional-byte-offset},{...}\"")
 
+#define INPUT_RECORD_PATH_TEXT N_("Record directory or filename")
+#define INPUT_RECORD_PATH_LONGTEXT N_( \
+    "Directory or filename where the records will be stored" )
+
+#define INPUT_RECORD_NATIVE_TEXT N_("Prefer native stream recording")
+#define INPUT_RECORD_NATIVE_LONGTEXT N_( \
+    "When possible, the input stream will be recorded instead of using" \
+    "the stream output module" )
+
 // DEPRECATED
 #define SUB_CAT_LONGTEXT N_( \
     "These options allow you to modify the behavior of the subpictures " \
@@ -695,7 +723,7 @@ static const char *const ppsz_clock_descriptions[] =
 #define SUB_FILTER_TEXT N_("Subpictures filter module")
 #define SUB_FILTER_LONGTEXT N_( \
     "This adds so-called \"subpicture filters\". These filters overlay " \
-    "some images or text over the video (like a logo, arbitrary text...)." )
+    "some images or text over the video (like a logo, arbitrary text...)." )
 
 #define SUB_AUTO_TEXT N_("Autodetect subtitle files")
 #define SUB_AUTO_LONGTEXT N_( \
@@ -991,21 +1019,11 @@ static const char *const ppsz_clock_descriptions[] =
     "priorities. You can use it to tune VLC priority against other " \
     "programs, or against other VLC instances.")
 
-#define MINIMIZE_THREADS_TEXT N_("Minimize number of threads")
-#define MINIMIZE_THREADS_LONGTEXT N_( \
-     "This option minimizes the number of threads needed to run VLC.")
-
 #define USE_STREAM_IMMEDIATE N_("(Experimental) Don't do caching at the access level.")
 #define USE_STREAM_IMMEDIATE_LONGTEXT N_( \
      "This option is useful if you want to lower the latency when " \
      "reading a stream")
 
-#define AUTO_ADJUST_PTS_DELAY N_("(Experimental) Minimize latency when
-     reading live stream.")
-#define AUTO_ADJUST_PTS_DELAY_LONGTEXT N_( \
-     "This option is useful if you want to lower the latency when " \
-     "reading a stream")
-
 #define PLUGIN_PATH_TEXT N_("Modules search path")
 #define PLUGIN_PATH_LONGTEXT N_( \
     "Additional path for VLC to look for its modules. You can add " \
@@ -1039,23 +1057,24 @@ static const char *const ppsz_clock_descriptions[] =
 #define SYSLOG_LONGTEXT N_( \
     "Log all VLC messages to syslog (UNIX systems)." )
 
-#define ONEINSTANCE_WIN_TEXT N_("Allow only one running instance")
-#define ONEINSTANCE_WIN_LONGTEXT N_( \
+#define ONEINSTANCE_TEXT N_("Allow only one running instance")
+#if defined( WIN32 )
+#define ONEINSTANCE_LONGTEXT N_( \
     "Allowing only one running instance of VLC can sometimes be useful, " \
     "for example if you associated VLC with some media types and you " \
     "don't want a new instance of VLC to be opened each time you " \
     "double-click on a file in the explorer. This option will allow you " \
     "to play the file with the already running instance or enqueue it.")
-
-#define ONEINSTANCE_DBUS_TEXT ONEINSTANCE_WIN_TEXT
-#define ONEINSTANCE_DBUS_LONGTEXT N_( \
+#elif defined( HAVE_DBUS )
+#define ONEINSTANCE_LONGTEXT N_( \
     "Allowing only one running instance of VLC can sometimes be useful, " \
     "for example if you associated VLC with some media types and you " \
     "don't want a new instance of VLC to be opened each time you " \
     "open a file in your file manager. This option will allow you " \
     "to play the file with the already running instance or enqueue it. " \
-    "This option require the D-Bus session daemon to be active " \
+    "This option requires the D-Bus session daemon to be active " \
     "and the running instance of VLC to use D-Bus control interface.")
+#endif
 
 #define STARTEDFROMFILE_TEXT N_("VLC is started from file association")
 #define STARTEDFROMFILE_LONGTEXT N_( \
@@ -1199,6 +1218,9 @@ static const char *const ppsz_albumart_descriptions[] =
 #define JFLONG_KEY_TEXT N_("Long forward jump")
 #define JFLONG_KEY_LONGTEXT \
     N_("Select the hotkey to make a long forward jump.")
+#define FRAME_NEXT_KEY_TEXT N_("Next frame")
+#define FRAME_NEXT_KEY_LONGTEXT \
+    N_("Select the hotkey to got to the next video frame.")
 
 #define JIEXTRASHORT_TEXT N_("Very short jump length")
 #define JIEXTRASHORT_LONGTEXT N_("Very short jump length, in seconds.")
@@ -1445,7 +1467,7 @@ vlc_module_begin();
     add_bool( "spdif", 0, NULL, SPDIF_TEXT, SPDIF_LONGTEXT, false );
     add_integer( "force-dolby-surround", 0, NULL, FORCE_DOLBY_TEXT,
                  FORCE_DOLBY_LONGTEXT, false );
-        change_integer_list( pi_force_dolby_values, ppsz_force_dolby_descriptions, 0 );
+        change_integer_list( pi_force_dolby_values, ppsz_force_dolby_descriptions, NULL );
     add_integer( "audio-desync", 0, NULL, DESYNC_TEXT,
                  DESYNC_LONGTEXT, true );
         change_safe();
@@ -1461,6 +1483,9 @@ vlc_module_begin();
     add_bool( "audio-replay-gain-peak-protection", true, NULL,
               AUDIO_REPLAY_GAIN_PEAK_PROTECTION_TEXT, AUDIO_REPLAY_GAIN_PEAK_PROTECTION_LONGTEXT, true );
 
+    add_bool( "audio-time-stretch", true, NULL,
+              AUDIO_TIME_STRETCH_TEXT, AUDIO_TIME_STRETCH_LONGTEXT, false );
+
     set_subcategory( SUBCAT_AUDIO_AOUT );
     add_module( "aout", "audio output", NULL, NULL, AOUT_TEXT, AOUT_LONGTEXT,
                 true );
@@ -1512,14 +1537,13 @@ vlc_module_begin();
                  VIDEO_TITLE_TIMEOUT_LONGTEXT, false );
     add_integer( "video-title-position", 8, NULL, VIDEO_TITLE_POSITION_TEXT,
                  VIDEO_TITLE_POSITION_LONGTEXT, false );
-        change_integer_list( pi_pos_values, ppsz_pos_descriptions, 0 );
-    // autohide after 3s
-    add_integer( "mouse-hide-timeout", 3000, NULL, MOUSE_HIDE_TIMEOUT_TEXT,
+        change_integer_list( pi_pos_values, ppsz_pos_descriptions, NULL );
+    // autohide after 1.5s
+    add_integer( "mouse-hide-timeout", 1500, NULL, MOUSE_HIDE_TIMEOUT_TEXT,
                  MOUSE_HIDE_TIMEOUT_LONGTEXT, false );
     set_section( N_("Snapshot") , NULL );
     add_directory( "snapshot-path", NULL, NULL, SNAP_PATH_TEXT,
                    SNAP_PATH_LONGTEXT, false );
-        change_unsafe();
     add_string( "snapshot-prefix", "vlcsnap-", NULL, SNAP_PREFIX_TEXT,
                    SNAP_PREFIX_LONGTEXT, false );
     add_string( "snapshot-format", "png", NULL, SNAP_FORMAT_TEXT,
@@ -1560,7 +1584,7 @@ vlc_module_begin();
     add_string( "video-title", NULL, NULL, VIDEO_TITLE_TEXT,
                  VIDEO_TITLE_LONGTEXT, true );
     add_integer( "align", 0, NULL, ALIGN_TEXT, ALIGN_LONGTEXT, true );
-        change_integer_list( pi_align_values, ppsz_align_descriptions, 0 );
+        change_integer_list( pi_align_values, ppsz_align_descriptions, NULL );
     add_float( "zoom", 1, NULL, ZOOM_TEXT, ZOOM_LONGTEXT, true );
 
 
@@ -1573,9 +1597,8 @@ vlc_module_begin();
     add_module_list_cat( "video-filter", SUBCAT_VIDEO_VFILTER, NULL, NULL,
                 VIDEO_FILTER_TEXT, VIDEO_FILTER_LONGTEXT, false );
        add_deprecated_alias( "filter" ); /*deprecated since 0.8.2 */
-//       add_deprecated_alias( "vout-filter" ); /* deprecated since 0.8.6 *// While the "video-filter" chain isn't parsed for both vfilter and vfilter2, keep both options
     add_module_list_cat( "vout-filter", SUBCAT_VIDEO_VFILTER, NULL, NULL,
-                        NULL, NULL, false );
+                        VOUT_FILTER_TEXT, VOUT_FILTER_LONGTEXT, false );
 #if 0
     add_string( "pixel-ratio", "1", NULL, PIXEL_RATIO_TEXT, PIXEL_RATIO_TEXT );
 #endif
@@ -1721,11 +1744,16 @@ vlc_module_begin();
                  CR_AVERAGE_LONGTEXT, true );
     add_integer( "clock-synchro", -1, NULL, CLOCK_SYNCHRO_TEXT,
                  CLOCK_SYNCHRO_LONGTEXT, true );
-        change_integer_list( pi_clock_values, ppsz_clock_descriptions, 0 );
+        change_integer_list( pi_clock_values, ppsz_clock_descriptions, NULL );
 
     add_bool( "network-synchronisation", false, NULL, NETSYNC_TEXT,
               NETSYNC_LONGTEXT, true );
 
+    add_string( "input-record-path", NULL, NULL, INPUT_RECORD_PATH_TEXT,
+                INPUT_RECORD_PATH_LONGTEXT, true );
+    add_bool( "input-record-native", true, NULL, INPUT_RECORD_NATIVE_TEXT,
+              INPUT_RECORD_NATIVE_LONGTEXT, true );
+
 /* Decoder options */
     add_category_hint( N_("Decoders"), CODEC_CAT_LONGTEXT , true );
     add_string( "codec", NULL, NULL, CODEC_TEXT,
@@ -1761,7 +1789,7 @@ vlc_module_begin();
     add_string( "sout", NULL, NULL, SOUT_TEXT, SOUT_LONGTEXT, true );
     add_bool( "sout-display", false, NULL, SOUT_DISPLAY_TEXT,
                                 SOUT_DISPLAY_LONGTEXT, true );
-    add_bool( "sout-keep", true, NULL, SOUT_KEEP_TEXT,
+    add_bool( "sout-keep", false, NULL, SOUT_KEEP_TEXT,
                                 SOUT_KEEP_LONGTEXT, true );
     add_bool( "sout-all", 0, NULL, SOUT_ALL_TEXT,
                                 SOUT_ALL_LONGTEXT, true );
@@ -1797,8 +1825,7 @@ vlc_module_begin();
                 PACKETIZER_TEXT, PACKETIZER_LONGTEXT, true );
 
     set_subcategory( SUBCAT_SOUT_SAP );
-    add_bool( "sap-flow-control", false, NULL, ANN_SAPCTRL_TEXT,
-                               ANN_SAPCTRL_LONGTEXT, true );
+    add_obsolete_bool( "sap-flow-control" );
     add_integer( "sap-interval", 5, NULL, ANN_SAPINTV_TEXT,
                                ANN_SAPINTV_LONGTEXT, true );
 
@@ -1842,18 +1869,14 @@ vlc_module_begin();
     add_directory( "plugin-path", NULL, NULL, PLUGIN_PATH_TEXT,
                    PLUGIN_PATH_LONGTEXT, true );
         change_need_restart();
-        change_unsafe();
 
     set_section( N_("Performance options"), NULL );
-    add_bool( "minimize-threads", 0, NULL, MINIMIZE_THREADS_TEXT,
-              MINIMIZE_THREADS_LONGTEXT, true );
-        change_need_restart();
+    add_obsolete_bool( "minimize-threads" );
 
     add_bool( "use-stream-immediate", false, NULL,
                USE_STREAM_IMMEDIATE, USE_STREAM_IMMEDIATE_LONGTEXT, true );
 
-    add_bool( "auto-adjust-pts-delay", false, NULL,
-              AUTO_ADJUST_PTS_DELAY, AUTO_ADJUST_PTS_DELAY_LONGTEXT, true );
+    add_obsolete_bool( "auto-adjust-pts-delay" );
 
 #if !defined(__APPLE__) && !defined(SYS_BEOS) && defined(LIBVLC_USE_PTHREAD)
     add_bool( "rt-priority", false, NULL, RT_PRIORITY_TEXT,
@@ -1868,18 +1891,13 @@ vlc_module_begin();
 #endif
 
 #if defined(HAVE_DBUS)
-    add_bool( "one-instance", 0, NULL, ONEINSTANCE_DBUS_TEXT,
-              ONEINSTANCE_DBUS_LONGTEXT, true );
-    add_bool( "playlist-enqueue", 0, NULL, PLAYLISTENQUEUE_TEXT,
-              PLAYLISTENQUEUE_LONGTEXT, true );
-
     add_bool( "inhibit", 1, NULL, INHIBIT_TEXT,
               INHIBIT_LONGTEXT, true );
 #endif
 
-#if defined(WIN32)
-    add_bool( "one-instance", 0, NULL, ONEINSTANCE_WIN_TEXT,
-              ONEINSTANCE_WIN_LONGTEXT, true );
+#if defined(WIN32) || defined(HAVE_DBUS)
+    add_bool( "one-instance", 0, NULL, ONEINSTANCE_TEXT,
+              ONEINSTANCE_LONGTEXT, true );
     add_bool( "started-from-file", 0, NULL, STARTEDFROMFILE_TEXT,
               STARTEDFROMFILE_LONGTEXT, true );
         change_internal();
@@ -1890,6 +1908,9 @@ vlc_module_begin();
     add_bool( "playlist-enqueue", 0, NULL, PLAYLISTENQUEUE_TEXT,
               PLAYLISTENQUEUE_LONGTEXT, true );
         change_unsaveable();
+#endif
+
+#if defined(WIN32)
     add_bool( "high-priority", 0, NULL, HPRIORITY_TEXT,
               HPRIORITY_LONGTEXT, false );
         change_need_restart();
@@ -1933,6 +1954,8 @@ vlc_module_begin();
     add_integer( "verbose", 0, NULL, VERBOSE_TEXT, VERBOSE_LONGTEXT,
                  false );
         change_short('v');
+    add_string( "verbose-objects", 0, NULL, VERBOSE_OBJECTS_TEXT, VERBOSE_OBJECTS_LONGTEXT,
+                 false );
     add_bool( "quiet", 0, NULL, QUIET_TEXT, QUIET_LONGTEXT, true );
         change_short('q');
 
@@ -2053,6 +2076,7 @@ vlc_module_begin();
 #   define KEY_JUMP_PMEDIUM       KEY_MODIFIER_COMMAND|KEY_MODIFIER_SHIFT|KEY_RIGHT
 #   define KEY_JUMP_MLONG         KEY_MODIFIER_COMMAND|KEY_MODIFIER_SHIFT|KEY_MODIFIER_ALT|KEY_LEFT
 #   define KEY_JUMP_PLONG         KEY_MODIFIER_COMMAND|KEY_MODIFIER_SHIFT|KEY_MODIFIER_ALT|KEY_RIGHT
+#   define KEY_FRAME_NEXT         KEY_UNSET
 #   define KEY_NAV_ACTIVATE       KEY_ENTER
 #   define KEY_NAV_UP             KEY_UP
 #   define KEY_NAV_DOWN           KEY_DOWN
@@ -2094,7 +2118,7 @@ vlc_module_begin();
 #   define KEY_UNCROP_RIGHT       KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'l'
 
 /* the macosx-interface already has bindings */
-#   define KEY_ZOOM_QUARTER       KEY_UNSET 
+#   define KEY_ZOOM_QUARTER       KEY_UNSET
 #   define KEY_ZOOM_HALF          KEY_UNSET
 #   define KEY_ZOOM_ORIGINAL      KEY_UNSET
 #   define KEY_ZOOM_DOUBLE        KEY_UNSET
@@ -2133,7 +2157,14 @@ vlc_module_begin();
 #   define KEY_MENU_DOWN          KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_DOWN
 #   define KEY_MENU_SELECT        KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_ENTER
 
-#else
+#else /* Non Mac OS X */
+    /*
+       You should try to avoid Ctrl + letter key, because they are usually for
+       dialogs showing and interface related stuffs.
+       It would be nice (less important than previous rule) to try to avoid
+       alt + letter key, because they are usually for menu accelerators and you
+       don't know how the translator is going to do it.
+     */
 #   define KEY_TOGGLE_FULLSCREEN  'f'
 #   define KEY_LEAVE_FULLSCREEN   KEY_ESC
 #   define KEY_PLAY_PAUSE         KEY_SPACE
@@ -2153,6 +2184,7 @@ vlc_module_begin();
 #   define KEY_JUMP_PMEDIUM       KEY_MODIFIER_CTRL|KEY_RIGHT
 #   define KEY_JUMP_MLONG         KEY_MODIFIER_CTRL|KEY_MODIFIER_ALT|KEY_LEFT
 #   define KEY_JUMP_PLONG         KEY_MODIFIER_CTRL|KEY_MODIFIER_ALT|KEY_RIGHT
+#   define KEY_FRAME_NEXT         KEY_UNSET
 #   define KEY_NAV_ACTIVATE       KEY_ENTER
 #   define KEY_NAV_UP             KEY_UP
 #   define KEY_NAV_DOWN           KEY_DOWN
@@ -2176,30 +2208,41 @@ vlc_module_begin();
 #   define KEY_DEINTERLACE        'd'
 #   define KEY_INTF_SHOW          'i'
 #   define KEY_INTF_HIDE          KEY_MODIFIER_SHIFT|'i'
-#   define KEY_DISC_MENU          KEY_MODIFIER_ALT|'r'
-#   define KEY_TITLE_PREV         KEY_MODIFIER_ALT|'o'
-#   define KEY_TITLE_NEXT         KEY_MODIFIER_ALT|'b'
-#   define KEY_CHAPTER_PREV       KEY_MODIFIER_ALT|'p'
-#   define KEY_CHAPTER_NEXT       KEY_MODIFIER_ALT|'n'
-#   define KEY_SNAPSHOT           KEY_MODIFIER_CTRL|KEY_MODIFIER_ALT|'s'
+#   define KEY_DISC_MENU          KEY_MODIFIER_SHIFT|'m'
+#   define KEY_TITLE_PREV         KEY_MODIFIER_SHIFT|'o'
+#   define KEY_TITLE_NEXT         KEY_MODIFIER_SHIFT|'b'
+#   define KEY_CHAPTER_PREV       KEY_MODIFIER_SHIFT|'p'
+#   define KEY_CHAPTER_NEXT       KEY_MODIFIER_SHIFT|'n'
+#   define KEY_SNAPSHOT           KEY_MODIFIER_SHIFT|'s'
 
 #   define KEY_ZOOM               'z'
 #   define KEY_UNZOOM             KEY_MODIFIER_SHIFT|'z'
 
-#   define KEY_CROP_TOP           KEY_MODIFIER_ALT|'i'
-#   define KEY_UNCROP_TOP         KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'i'
-#   define KEY_CROP_LEFT          KEY_MODIFIER_ALT|'j'
-#   define KEY_UNCROP_LEFT        KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'j'
-#   define KEY_CROP_BOTTOM        KEY_MODIFIER_ALT|'k'
-#   define KEY_UNCROP_BOTTOM      KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'k'
-#   define KEY_CROP_RIGHT         KEY_MODIFIER_ALT|'l'
-#   define KEY_UNCROP_RIGHT       KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'l'
+#   define KEY_AUDIODEVICE_CYCLE  KEY_MODIFIER_SHIFT|'a'
 
+#   define KEY_HISTORY_BACK       KEY_MODIFIER_SHIFT|'g'
+#   define KEY_HISTORY_FORWARD    KEY_MODIFIER_SHIFT|'h'
+#   define KEY_RECORD             KEY_MODIFIER_SHIFT|'r'
+#   define KEY_DUMP               KEY_MODIFIER_SHIFT|'d'
+#   define KEY_WALLPAPER          'w'
+
+/* Cropping */
+#   define KEY_CROP_TOP           KEY_MODIFIER_ALT|'r'
+#   define KEY_UNCROP_TOP         KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'r'
+#   define KEY_CROP_LEFT          KEY_MODIFIER_ALT|'d'
+#   define KEY_UNCROP_LEFT        KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'d'
+#   define KEY_CROP_BOTTOM        KEY_MODIFIER_ALT|'c'
+#   define KEY_UNCROP_BOTTOM      KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'c'
+#   define KEY_CROP_RIGHT         KEY_MODIFIER_ALT|'f'
+#   define KEY_UNCROP_RIGHT       KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'f'
+
+/* Zooming */
 #   define KEY_ZOOM_QUARTER       KEY_MODIFIER_CTRL|'1'
 #   define KEY_ZOOM_HALF          KEY_MODIFIER_CTRL|'2'
 #   define KEY_ZOOM_ORIGINAL      KEY_MODIFIER_CTRL|'3'
 #   define KEY_ZOOM_DOUBLE        KEY_MODIFIER_CTRL|'4'
 
+/* Bookmarks */
 #   define KEY_SET_BOOKMARK1      KEY_MODIFIER_CTRL|KEY_F1
 #   define KEY_SET_BOOKMARK2      KEY_MODIFIER_CTRL|KEY_F2
 #   define KEY_SET_BOOKMARK3      KEY_MODIFIER_CTRL|KEY_F3
@@ -2220,20 +2263,15 @@ vlc_module_begin();
 #   define KEY_PLAY_BOOKMARK8     KEY_F8
 #   define KEY_PLAY_BOOKMARK9     KEY_F9
 #   define KEY_PLAY_BOOKMARK10    KEY_F10
-#   define KEY_HISTORY_BACK       KEY_MODIFIER_ALT|'g'
-#   define KEY_HISTORY_FORWARD    KEY_MODIFIER_ALT|'h'
-#   define KEY_RECORD             KEY_MODIFIER_CTRL|KEY_MODIFIER_SHIFT|'r'
-#   define KEY_DUMP               KEY_MODIFIER_CTRL|KEY_MODIFIER_SHIFT|'d'
-#   define KEY_WALLPAPER          'w'
 
-#   define KEY_MENU_ON            KEY_MODIFIER_ALT|'m'
-#   define KEY_MENU_OFF           KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'m'
+/* OSD menu */
+#   define KEY_MENU_ON            KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'m'
+#   define KEY_MENU_OFF           KEY_MODIFIER_ALT|KEY_MODIFIER_CTRL|'m'
 #   define KEY_MENU_RIGHT         KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_RIGHT
 #   define KEY_MENU_LEFT          KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_LEFT
 #   define KEY_MENU_UP            KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_UP
 #   define KEY_MENU_DOWN          KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_DOWN
 #   define KEY_MENU_SELECT        KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_ENTER
-#   define KEY_AUDIODEVICE_CYCLE  KEY_MODIFIER_ALT|'a'
 #endif
 
     add_key( "key-toggle-fullscreen", KEY_TOGGLE_FULLSCREEN, NULL, TOGGLE_FULLSCREEN_KEY_TEXT,
@@ -2275,6 +2313,8 @@ vlc_module_begin();
              JBLONG_KEY_LONGTEXT, false );
     add_key( "key-jump+long", KEY_JUMP_PLONG, NULL, JFLONG_KEY_TEXT,
              JFLONG_KEY_LONGTEXT, false );
+    add_key( "key-frame-next", KEY_FRAME_NEXT, NULL, FRAME_NEXT_KEY_TEXT,
+             FRAME_NEXT_KEY_LONGTEXT, false );
     add_key( "key-nav-activate", KEY_NAV_ACTIVATE, NULL, NAV_ACTIVATE_KEY_TEXT,
              NAV_ACTIVATE_KEY_LONGTEXT, true );
     add_key( "key-nav-up", KEY_NAV_UP, NULL, NAV_UP_KEY_TEXT,
@@ -2382,15 +2422,15 @@ vlc_module_begin();
              LOOP_KEY_TEXT, LOOP_KEY_LONGTEXT, false );
 
     set_section ( N_("Zoom" ), NULL );
-    add_key( "key-zoom-quarter",  KEY_ZOOM_QUARTER, NULL, 
+    add_key( "key-zoom-quarter",  KEY_ZOOM_QUARTER, NULL,
         ZOOM_QUARTER_KEY_TEXT,  NULL, false );
-    add_key( "key-zoom-half",     KEY_ZOOM_HALF, NULL, 
+    add_key( "key-zoom-half",     KEY_ZOOM_HALF, NULL,
         ZOOM_HALF_KEY_TEXT,     NULL, false );
-    add_key( "key-zoom-original", KEY_ZOOM_ORIGINAL, NULL, 
+    add_key( "key-zoom-original", KEY_ZOOM_ORIGINAL, NULL,
         ZOOM_ORIGINAL_KEY_TEXT, NULL, false );
-    add_key( "key-zoom-double",   KEY_ZOOM_DOUBLE, NULL, 
+    add_key( "key-zoom-double",   KEY_ZOOM_DOUBLE, NULL,
         ZOOM_DOUBLE_KEY_TEXT,   NULL, false );
-    
+
     set_section ( N_("Jump sizes" ), NULL );
     add_integer( "extrashort-jump-size", 3, NULL, JIEXTRASHORT_TEXT,
                                     JIEXTRASHORT_LONGTEXT, false );
@@ -2483,7 +2523,8 @@ vlc_module_begin();
     N_("print a list of available modules with extra detail")
 #define MODULE_TEXT \
     N_("print help on a specific module (can be combined with --advanced " \
-       "and --help-verbose)")
+       "and --help-verbose). Prefix the module name with = for strict" \
+       "matches.")
 #define IGNORE_CONFIG_TEXT \
     N_("no configuration option will be loaded nor saved to config file")
 #define SAVE_CONFIG_TEXT \
@@ -2496,7 +2537,7 @@ vlc_module_begin();
     N_("resets the current plugins cache")
 #define VERSION_TEXT \
     N_("print version information")
+
     add_bool( "help", false, NULL, HELP_TEXT, "", false );
         change_short( 'h' );
         change_internal();
@@ -2518,7 +2559,6 @@ vlc_module_begin();
         change_unsaveable();
     add_bool( "list-verbose", false, NULL, LIST_VERBOSE_TEXT, "",
               false );
-        change_short( 'l' );
         change_internal();
         change_unsaveable();
     add_string( "module", NULL, NULL, MODULE_TEXT, "", false );
@@ -2580,6 +2620,7 @@ const struct hotkey libvlc_hotkeys[] =
     { "key-jump+medium", ACTIONID_JUMP_FORWARD_MEDIUM, 0, },
     { "key-jump-long", ACTIONID_JUMP_BACKWARD_LONG, 0, },
     { "key-jump+long", ACTIONID_JUMP_FORWARD_LONG, 0, },
+    { "key-frame-next", ACTIONID_FRAME_NEXT, 0, },
     { "key-prev", ACTIONID_PREV, 0, },
     { "key-next", ACTIONID_NEXT, 0, },
     { "key-faster", ACTIONID_FASTER, 0, },