[vlc-commits] keys: allow inverting positioning wheel (fixes #4748)
Rémi Denis-Courmont
git at videolan.org
Sat Aug 16 13:12:09 CEST 2014
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Aug 16 14:11:47 2014 +0300| [a7b0db0615770d7ce804ae796b172a7e7cce904b] | committer: Rémi Denis-Courmont
keys: allow inverting positioning wheel (fixes #4748)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a7b0db0615770d7ce804ae796b172a7e7cce904b
---
src/config/keys.c | 54 ++++++++++++++++++++++++++++++---------------------
src/libvlc-module.c | 10 ++++++----
2 files changed, 38 insertions(+), 26 deletions(-)
diff --git a/src/config/keys.c b/src/config/keys.c
index c7dc9c6..cff9ea9 100644
--- a/src/config/keys.c
+++ b/src/config/keys.c
@@ -438,6 +438,34 @@ static int vlc_AddMapping (void **map, uint32_t keycode, vlc_action_t action)
return 0;
}
+static void vlc_AddWheelMapping (void **map, uint32_t kmore, uint32_t kless,
+ int mode)
+{
+ vlc_action_t amore = ACTIONID_NONE, aless = ACTIONID_NONE;
+
+ switch (mode)
+ {
+ case 0: /* volume up/down */
+ amore = ACTIONID_VOL_UP;
+ aless = ACTIONID_VOL_DOWN;
+ break;
+ case 2: /* position latter/earlier */
+ amore = ACTIONID_JUMP_FORWARD_EXTRASHORT;
+ aless = ACTIONID_JUMP_BACKWARD_EXTRASHORT;
+ break;
+ case 3: /* position earlier/latter */
+ amore = ACTIONID_JUMP_BACKWARD_EXTRASHORT;
+ aless = ACTIONID_JUMP_FORWARD_EXTRASHORT;
+ break;
+ }
+
+ if (amore != ACTIONID_NONE)
+ vlc_AddMapping (map, kmore, amore);
+ if (aless != ACTIONID_NONE)
+ vlc_AddMapping (map, kless, aless);
+}
+
+
/**
* Sets up all key mappings for a given action.
* \param map tree (of struct mapping entries) to write mappings to
@@ -511,28 +539,10 @@ struct vlc_actions *vlc_InitActions (libvlc_int_t *libvlc)
keys->psz_action = NULL;
/* Initialize mouse wheel events */
- int xmode = var_InheritInteger (obj, "hotkeys-x-wheel-mode");
- if (xmode < 2)
- {
- vlc_AddMapping (&as->map, KEY_MOUSEWHEELLEFT,
- xmode ? ACTIONID_JUMP_BACKWARD_EXTRASHORT
- : ACTIONID_VOL_DOWN);
- vlc_AddMapping (&as->map, KEY_MOUSEWHEELRIGHT,
- xmode ? ACTIONID_JUMP_FORWARD_EXTRASHORT
- : ACTIONID_VOL_UP);
- }
-
- int ymode = var_InheritInteger (obj, "hotkeys-y-wheel-mode");
- if (ymode < 2)
- {
- vlc_AddMapping (&as->map, KEY_MOUSEWHEELDOWN,
- ymode ? ACTIONID_JUMP_BACKWARD_EXTRASHORT
- : ACTIONID_VOL_DOWN);
- vlc_AddMapping (&as->map, KEY_MOUSEWHEELUP,
- ymode ? ACTIONID_JUMP_FORWARD_EXTRASHORT
- : ACTIONID_VOL_UP);
- }
-
+ vlc_AddWheelMapping (&as->map, KEY_MOUSEWHEELRIGHT, KEY_MOUSEWHEELLEFT,
+ var_InheritInteger (obj, "hotkeys-x-wheel-mode"));
+ vlc_AddWheelMapping (&as->map, KEY_MOUSEWHEELUP, KEY_MOUSEWHEELDOWN,
+ var_InheritInteger (obj, "hotkeys-y-wheel-mode"));
libvlc->p_hotkeys = as->keys;
var_AddCallback (obj, "key-pressed", vlc_key_to_action, &as->map);
diff --git a/src/libvlc-module.c b/src/libvlc-module.c
index d985eca..17c0993 100644
--- a/src/libvlc-module.c
+++ b/src/libvlc-module.c
@@ -1172,9 +1172,11 @@ static const char *const ppsz_prefres[] = {
#define HOTKEY_CAT_LONGTEXT N_( "These settings are the global VLC key " \
"bindings, known as \"hotkeys\"." )
-static const int mouse_wheel_values[] = { 2, 0, 1 };
-static const char *const mouse_wheel_texts[] =
- { N_("Ignore"), N_("Volume Control"), N_("Position Control") };
+static const int mouse_wheel_values[] = { -1, 0, 2, 3, };
+static const char *const mouse_wheel_texts[] = {
+ N_("Ignore"), N_("Volume control"),
+ N_("Position control"), N_("Position control reversed"),
+};
#define MOUSE_Y_WHEEL_MODE_TEXT N_("Mouse wheel vertical axis control")
#define MOUSE_Y_WHEEL_MODE_LONGTEXT N_( \
@@ -2094,7 +2096,7 @@ vlc_module_begin ()
add_integer( "hotkeys-y-wheel-mode", 0, MOUSE_Y_WHEEL_MODE_TEXT,
MOUSE_Y_WHEEL_MODE_LONGTEXT, false )
change_integer_list( mouse_wheel_values, mouse_wheel_texts )
- add_integer( "hotkeys-x-wheel-mode", 1, MOUSE_X_WHEEL_MODE_TEXT,
+ add_integer( "hotkeys-x-wheel-mode", 2, MOUSE_X_WHEEL_MODE_TEXT,
MOUSE_X_WHEEL_MODE_LONGTEXT, false )
change_integer_list( mouse_wheel_values, mouse_wheel_texts )
add_obsolete_integer( "hotkeys-mousewheel-mode" ) /* since 3.0.0 */
More information about the vlc-commits
mailing list