Commit a7b0db06 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont
Browse files

keys: allow inverting positioning wheel (fixes #4748)

parent 67aa058b
......@@ -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);
......
......@@ -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 */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment