[vlc-commits] Provisions for localized key code strings (refs #5974)
Rémi Denis-Courmont
git at videolan.org
Sat Mar 10 11:49:53 CET 2012
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Mar 10 12:42:53 2012 +0200| [3ff3d5775f4e77a5a047135d05cc622b129e54ea] | committer: Rémi Denis-Courmont
Provisions for localized key code strings (refs #5974)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3ff3d5775f4e77a5a047135d05cc622b129e54ea
---
include/vlc_keys.h | 2 +-
modules/gui/qt4/util/customwidgets.cpp | 2 +-
modules/gui/skins2/events/evt_key.cpp | 2 +-
po/POTFILES.in | 1 +
src/config/keys.c | 119 ++++++++++++++++++--------------
5 files changed, 70 insertions(+), 56 deletions(-)
diff --git a/include/vlc_keys.h b/include/vlc_keys.h
index f08243b..c46b19c 100644
--- a/include/vlc_keys.h
+++ b/include/vlc_keys.h
@@ -86,7 +86,7 @@
#define KEY_MOUSEWHEELLEFT 0x00F20000
#define KEY_MOUSEWHEELRIGHT 0x00F30000
-VLC_API char *vlc_keycode2str(uint_fast32_t i_key) VLC_USED;
+VLC_API char *vlc_keycode2str(uint_fast32_t i_key, bool locale) VLC_USED;
VLC_API uint_fast32_t vlc_str2keycode(const char *str) VLC_USED;
typedef enum vlc_action {
diff --git a/modules/gui/qt4/util/customwidgets.cpp b/modules/gui/qt4/util/customwidgets.cpp
index 16c6563..502802f 100644
--- a/modules/gui/qt4/util/customwidgets.cpp
+++ b/modules/gui/qt4/util/customwidgets.cpp
@@ -288,7 +288,7 @@ int qtWheelEventToVLCKey( QWheelEvent *e )
QString VLCKeyToString( unsigned val )
{
- char *base = vlc_keycode2str (val);
+ char *base = vlc_keycode2str (val, false);
if (base == NULL)
return qtr( "Unset" );
diff --git a/modules/gui/skins2/events/evt_key.cpp b/modules/gui/skins2/events/evt_key.cpp
index 417b9f0..265637d 100644
--- a/modules/gui/skins2/events/evt_key.cpp
+++ b/modules/gui/skins2/events/evt_key.cpp
@@ -39,7 +39,7 @@ const string EvtKey::getAsString() const
msg_Warn( getIntf(), "Unknown action type" );
// Add the key
- char *keyName = vlc_keycode2str( m_key & ~KEY_MODIFIER );
+ char *keyName = vlc_keycode2str( m_key & ~KEY_MODIFIER, false );
if( keyName )
{
event += (string)":" + keyName;
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 3660b53..cc22ffe 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -78,6 +78,7 @@ src/config/core.c
src/config/file.c
src/config/help.c
src/config/intf.c
+src/config/keys.c
src/extras/libc.c
src/extras/tdestroy.c
src/input/access.c
diff --git a/src/config/keys.c b/src/config/keys.c
index b833e02..24c3061 100644
--- a/src/config/keys.c
+++ b/src/config/keys.c
@@ -52,53 +52,53 @@ typedef struct key_descriptor_s
static const struct key_descriptor_s vlc_keys[] =
{ /* Alphabetical order */
- { "Backspace", KEY_BACKSPACE },
- { "Browser Back", KEY_BROWSER_BACK },
- { "Browser Favorites", KEY_BROWSER_FAVORITES },
- { "Browser Forward", KEY_BROWSER_FORWARD },
- { "Browser Home", KEY_BROWSER_HOME },
- { "Browser Refresh", KEY_BROWSER_REFRESH },
- { "Browser Search", KEY_BROWSER_SEARCH },
- { "Browser Stop", KEY_BROWSER_STOP },
- { "Delete", KEY_DELETE },
- { "Down", KEY_DOWN },
- { "End", KEY_END },
- { "Enter", KEY_ENTER },
- { "Esc", KEY_ESC },
- { "F1", KEY_F1 },
- { "F10", KEY_F10 },
- { "F11", KEY_F11 },
- { "F12", KEY_F12 },
- { "F2", KEY_F2 },
- { "F3", KEY_F3 },
- { "F4", KEY_F4 },
- { "F5", KEY_F5 },
- { "F6", KEY_F6 },
- { "F7", KEY_F7 },
- { "F8", KEY_F8 },
- { "F9", KEY_F9 },
- { "Home", KEY_HOME },
- { "Insert", KEY_INSERT },
- { "Left", KEY_LEFT },
- { "Media Next Track", KEY_MEDIA_NEXT_TRACK },
- { "Media Play Pause", KEY_MEDIA_PLAY_PAUSE },
- { "Media Prev Track", KEY_MEDIA_PREV_TRACK },
- { "Media Stop", KEY_MEDIA_STOP },
- { "Menu", KEY_MENU },
- { "Mouse Wheel Down", KEY_MOUSEWHEELDOWN },
- { "Mouse Wheel Left", KEY_MOUSEWHEELLEFT },
- { "Mouse Wheel Right", KEY_MOUSEWHEELRIGHT },
- { "Mouse Wheel Up", KEY_MOUSEWHEELUP },
- { "Page Down", KEY_PAGEDOWN },
- { "Page Up", KEY_PAGEUP },
- { "Right", KEY_RIGHT },
- { "Space", ' ' },
- { "Tab", KEY_TAB },
- { "Unset", KEY_UNSET },
- { "Up", KEY_UP },
- { "Volume Down", KEY_VOLUME_DOWN },
- { "Volume Mute", KEY_VOLUME_MUTE },
- { "Volume Up", KEY_VOLUME_UP },
+ { N_("Backspace"), KEY_BACKSPACE },
+ { N_("Browser Back"), KEY_BROWSER_BACK },
+ { N_("Browser Favorites"), KEY_BROWSER_FAVORITES },
+ { N_("Browser Forward"), KEY_BROWSER_FORWARD },
+ { N_("Browser Home"), KEY_BROWSER_HOME },
+ { N_("Browser Refresh"), KEY_BROWSER_REFRESH },
+ { N_("Browser Search"), KEY_BROWSER_SEARCH },
+ { N_("Browser Stop"), KEY_BROWSER_STOP },
+ { N_("Delete"), KEY_DELETE },
+ { N_("Down"), KEY_DOWN },
+ { N_("End"), KEY_END },
+ { N_("Enter"), KEY_ENTER },
+ { N_("Esc"), KEY_ESC },
+ { N_("F1"), KEY_F1 },
+ { N_("F10"), KEY_F10 },
+ { N_("F11"), KEY_F11 },
+ { N_("F12"), KEY_F12 },
+ { N_("F2"), KEY_F2 },
+ { N_("F3"), KEY_F3 },
+ { N_("F4"), KEY_F4 },
+ { N_("F5"), KEY_F5 },
+ { N_("F6"), KEY_F6 },
+ { N_("F7"), KEY_F7 },
+ { N_("F8"), KEY_F8 },
+ { N_("F9"), KEY_F9 },
+ { N_("Home"), KEY_HOME },
+ { N_("Insert"), KEY_INSERT },
+ { N_("Left"), KEY_LEFT },
+ { N_("Media Next Track"), KEY_MEDIA_NEXT_TRACK },
+ { N_("Media Play Pause"), KEY_MEDIA_PLAY_PAUSE },
+ { N_("Media Prev Track"), KEY_MEDIA_PREV_TRACK },
+ { N_("Media Stop"), KEY_MEDIA_STOP },
+ { N_("Menu"), KEY_MENU },
+ { N_("Mouse Wheel Down"), KEY_MOUSEWHEELDOWN },
+ { N_("Mouse Wheel Left"), KEY_MOUSEWHEELLEFT },
+ { N_("Mouse Wheel Right"), KEY_MOUSEWHEELRIGHT },
+ { N_("Mouse Wheel Up"), KEY_MOUSEWHEELUP },
+ { N_("Page Down"), KEY_PAGEDOWN },
+ { N_("Page Up"), KEY_PAGEUP },
+ { N_("Right"), KEY_RIGHT },
+ { N_("Space"), ' ' },
+ { N_("Tab"), KEY_TAB },
+ { N_("Unset"), KEY_UNSET },
+ { N_("Up"), KEY_UP },
+ { N_("Volume Down"), KEY_VOLUME_DOWN },
+ { N_("Volume Mute"), KEY_VOLUME_MUTE },
+ { N_("Volume Up"), KEY_VOLUME_UP },
};
#define KEYS_COUNT (sizeof(vlc_keys)/sizeof(vlc_keys[0]))
@@ -150,6 +150,9 @@ static char *utf8_cp (uint_fast32_t cp, char *buf)
/**
* Parse a human-readable string representation of a VLC key code.
+ * @note This only works with the American English representation
+ * (a.k.a. C or POSIX), not with the local representation returned from
+ * vlc_keycode2str().
* @return a VLC key code, or KEY_UNSET on failure.
*/
uint_fast32_t vlc_str2keycode (const char *name)
@@ -190,13 +193,22 @@ uint_fast32_t vlc_str2keycode (const char *name)
return code;
}
+static char *nooptext (const char *txt)
+{
+ return (char *)txt;
+}
+
/**
* Format a human-readable and unique representation of a VLC key code
* (including modifiers).
+ * @param code key code to translate to a string
+ * @param locale true to get a localized string,
+ * false to get a C string suitable for 'vlcrc'
* @return a heap-allocated string, or NULL on error.
*/
-char *vlc_keycode2str (uint_fast32_t code)
+char *vlc_keycode2str (uint_fast32_t code, bool locale)
{
+ char *(*tr) (const char *) = locale ? vlc_gettext : nooptext;
const char *name;
char *str, buf[5];
uintptr_t key = code & ~KEY_MODIFIER;
@@ -214,11 +226,12 @@ char *vlc_keycode2str (uint_fast32_t code)
found:
if (asprintf (&str, "%s%s%s%s%s%s",
- (code & KEY_MODIFIER_CTRL) ? "Ctrl+" : "",
- (code & KEY_MODIFIER_ALT) ? "Alt+" : "",
- (code & KEY_MODIFIER_SHIFT) ? "Shift+" : "",
- (code & KEY_MODIFIER_META) ? "Meta+" : "",
- (code & KEY_MODIFIER_COMMAND) ? "Command+" : "", name) == -1)
+ (code & KEY_MODIFIER_CTRL) ? tr(N_("Ctrl+")) : "",
+ (code & KEY_MODIFIER_ALT) ? tr(N_("Alt+")) : "",
+ (code & KEY_MODIFIER_SHIFT) ? tr(N_("Shift+")) : "",
+ (code & KEY_MODIFIER_META) ? tr(N_("Meta+")) : "",
+ (code & KEY_MODIFIER_COMMAND) ? tr(N_("Command+")) : "",
+ tr(name)) == -1)
return NULL;
return str;
}
More information about the vlc-commits
mailing list