X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=6992ff230bdda9b61150c91bcc9a39252832aab8;hb=b59a0eedca464cba38e8a6bcfae54db32ac6b15e;hp=b0244aa627ff6de461e6d99b72a2f43905bba53f;hpb=93806fb4c23f4b6ef58d9562e908a1b89ece869d;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index b0244aa6..6992ff23 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -818,7 +818,8 @@ void WriteUnusedBytesToFile(FILE *file, unsigned long bytes) #define TRANSLATE_KEYSYM_TO_KEYNAME 0 #define TRANSLATE_KEYSYM_TO_X11KEYNAME 1 -#define TRANSLATE_X11KEYNAME_TO_KEYSYM 2 +#define TRANSLATE_KEYNAME_TO_KEYSYM 2 +#define TRANSLATE_X11KEYNAME_TO_KEYSYM 3 void translate_keyname(Key *keysym, char **x11name, char **name, int mode) { @@ -1005,6 +1006,26 @@ void translate_keyname(Key *keysym, char **x11name, char **name, int mode) *x11name = name_buffer; } + else if (mode == TRANSLATE_KEYNAME_TO_KEYSYM) + { + Key key = KSYM_UNDEFINED; + + i = 0; + do + { + if (strcmp(translate_key[i].name, *name) == 0) + { + key = translate_key[i].key; + break; + } + } + while (translate_key[++i].x11name); + + if (key == KSYM_UNDEFINED) + Error(ERR_WARN, "getKeyFromKeyName(): not completely implemented"); + + *keysym = key; + } else if (mode == TRANSLATE_X11KEYNAME_TO_KEYSYM) { Key key = KSYM_UNDEFINED; @@ -1106,6 +1127,14 @@ char *getX11KeyNameFromKey(Key key) return x11name; } +Key getKeyFromKeyName(char *name) +{ + Key key; + + translate_keyname(&key, NULL, &name, TRANSLATE_KEYNAME_TO_KEYSYM); + return key; +} + Key getKeyFromX11KeyName(char *x11name) { Key key;