+
+
+static int ConfigStringToKey( char *psz_key )
+{
+ int i_key = 0;
+ unsigned int i;
+ char *psz_parser = strchr( psz_key, '-' );
+ while( psz_parser && psz_parser != psz_key )
+ {
+ for( i = 0; i < sizeof(vlc_modifiers) / sizeof(key_descriptor_t); i++ )
+ {
+ if( !strncasecmp( vlc_modifiers[i].psz_key_string, psz_key,
+ strlen( vlc_modifiers[i].psz_key_string ) ) )
+ {
+ i_key |= vlc_modifiers[i].i_key_code;
+ }
+ }
+ psz_key = psz_parser + 1;
+ psz_parser = strchr( psz_key, '-' );
+ }
+ for( i = 0; i < sizeof(vlc_keys) / sizeof( key_descriptor_t ); i++ )
+ {
+ if( !strcasecmp( vlc_keys[i].psz_key_string, psz_key ) )
+ {
+ i_key |= vlc_keys[i].i_key_code;
+ break;
+ }
+ }
+ return i_key;
+}
+
+static char *ConfigKeyToString( int i_key )
+{
+ char *psz_key = malloc( 100 );
+ char *p;
+ size_t index;
+
+ if ( !psz_key )
+ {
+ return NULL;
+ }
+ *psz_key = '\0';
+ p = psz_key;
+ for( index = 0; index < (sizeof(vlc_modifiers) / sizeof(key_descriptor_t));
+ index++ )
+ {
+ if( i_key & vlc_modifiers[index].i_key_code )
+ {
+ p += sprintf( p, "%s-", vlc_modifiers[index].psz_key_string );
+ }
+ }
+ for( index = 0; index < (sizeof(vlc_keys) / sizeof( key_descriptor_t));
+ index++)
+ {
+ if( (int)( i_key & ~KEY_MODIFIER ) == vlc_keys[index].i_key_code )
+ {
+ p += sprintf( p, "%s", vlc_keys[index].psz_key_string );
+ break;
+ }
+ }
+ return psz_key;
+}