[vlc-devel] [PATCH 12/22] actions: add vlc_actions_get_keycode
Rémi Denis-Courmont
remi at remlab.net
Thu Aug 3 16:39:56 CEST 2017
Le 3 août 2017 16:10:45 GMT+03:00, "Hugo Beauzée-Luyssen" <hugo at beauzee.fr> a écrit :
>From: Thomas Guillem <thomas at gllm.fr>
>
>---
> include/vlc_actions.h | 9 +++++++++
> modules/control/globalhotkeys/win32.c | 10 +---------
> modules/control/globalhotkeys/xcb.c | 11 ++---------
> src/libvlccore.sym | 1 +
> src/misc/actions.c | 17 +++++++++++++++++
> 5 files changed, 30 insertions(+), 18 deletions(-)
>
>diff --git a/include/vlc_actions.h b/include/vlc_actions.h
>index 685264897a..e613e5a310 100644
>--- a/include/vlc_actions.h
>+++ b/include/vlc_actions.h
>@@ -255,6 +255,15 @@ VLC_API vlc_action_id_t
> vlc_actions_get_id(const char *psz_key_name);
>
> /**
>+ * Get a keycode from a action key name and vlc configuration
>+ * \return a valid KEY_* or KEY_UNSET if the key is not found
>+ */
>+VLC_API uint_fast32_t
>+vlc_actions_get_keycode(vlc_object_t *p_obj, const char *psz_key_name,
>+ bool b_global);
>+#define vlc_actions_get_keycode(a, b, c)
>vlc_actions_get_keycode(VLC_OBJECT(a), b, c)
>+
>+/**
> * Get a list a key names
> * \return A NULL terminated list of const char *
> */
>diff --git a/modules/control/globalhotkeys/win32.c
>b/modules/control/globalhotkeys/win32.c
>index ff3f3bac61..c3b02e642a 100644
>--- a/modules/control/globalhotkeys/win32.c
>+++ b/modules/control/globalhotkeys/win32.c
>@@ -170,15 +170,7 @@ static void *Thread( void *p_data )
>for( const char* const* ppsz_keys = vlc_actions_get_key_names( p_intf
>);
> *ppsz_keys != NULL; ppsz_keys++ )
> {
>- char varname[12 + strlen( *ppsz_keys )];
>- sprintf( varname, "global-key-%s", *ppsz_keys );
>-
>- char *key = var_InheritString( p_intf, varname );
>- if( key == NULL )
>- continue;
>-
>- UINT i_key = vlc_str2keycode( key );
>- free( key );
>+ uint_fast32_t i_key = vlc_actions_get_keycode( p_intf,
>*ppsz_keys, true );
> if( i_key == KEY_UNSET )
> continue;
>
>diff --git a/modules/control/globalhotkeys/xcb.c
>b/modules/control/globalhotkeys/xcb.c
>index fb85377383..a6dca21ac2 100644
>--- a/modules/control/globalhotkeys/xcb.c
>+++ b/modules/control/globalhotkeys/xcb.c
>@@ -293,15 +293,8 @@ static bool Mapping( intf_thread_t *p_intf )
>for( const char* const* ppsz_keys = vlc_actions_get_key_names( p_intf
>);
> *ppsz_keys != NULL; ppsz_keys++ )
> {
>- char varname[12 + strlen( *ppsz_keys )];
>- sprintf( varname, "global-key-%s", *ppsz_keys );
>-
>- char *key = var_InheritString( p_intf, varname );
>- if( key == NULL )
>- continue;
>-
>- uint_fast32_t i_vlc_key = vlc_str2keycode( key );
>- free( key );
>+ uint_fast32_t i_vlc_key = vlc_actions_get_keycode( p_intf,
>*ppsz_keys,
>+ true );
> if( i_vlc_key == KEY_UNSET )
> continue;
>
>diff --git a/src/libvlccore.sym b/src/libvlccore.sym
>index a24cc0a4d5..c63f82923c 100644
>--- a/src/libvlccore.sym
>+++ b/src/libvlccore.sym
>@@ -512,6 +512,7 @@ video_format_Setup
> video_format_Print
> vlc_actions_get_id
> vlc_actions_get_key_names
>+vlc_actions_get_keycode
> vlc_b64_decode
> vlc_b64_decode_binary
> vlc_b64_decode_binary_to_buffer
>diff --git a/src/misc/actions.c b/src/misc/actions.c
>index 1905b978c1..24351ac486 100644
>--- a/src/misc/actions.c
>+++ b/src/misc/actions.c
>@@ -594,6 +594,23 @@ vlc_actions_get_id (const char *name)
> return (act != NULL) ? act->id : ACTIONID_NONE;
> }
>
>+#undef vlc_actions_get_keycode
>+uint_fast32_t
>+vlc_actions_get_keycode(vlc_object_t *p_obj, const char *psz_key_name,
>+ bool b_global)
>+{
>+ char varname[12 /* "global-key-" */ + strlen( psz_key_name )];
>+ sprintf( varname, "%skey-%s", b_global ? "global-" : "",
>psz_key_name );
>+
>+ char *psz_key = var_InheritString( p_obj, varname );
>+ if( psz_key == NULL )
>+ return KEY_UNSET;
>+
>+ uint_fast32_t i_key = vlc_str2keycode( psz_key );
>+ free( psz_key );
>+ return i_key;
>+}
>+
> #undef vlc_actions_get_key_names
> const char* const*
> vlc_actions_get_key_names(vlc_object_t *p_obj)
>--
>2.11.0
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel
Nack. AFAIR, the core can handle multiple mappings to single actions, which is obviously needed for, e.g. media keys. This API is broken by design.
--
Rémi Denis-Courmont
Typed on an inconvenient virtual keyboard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20170803/5967a61f/attachment.html>
More information about the vlc-devel
mailing list