From 341c3353d29a0223a049af65be47644c21e33540 Mon Sep 17 00:00:00 2001 From: Tobias Jakobi Date: Thu, 25 Sep 2008 20:18:41 -0500 Subject: [winex11] add acute variants for german keymaps --- dlls/winex11.drv/keyboard.c | 61 +++++++++++++++++++++++++++++++++++++----- 1 files changed, 53 insertions(+), 8 deletions(-) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c index 99b16ed..b9bc5ed 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -311,8 +311,21 @@ static const char main_key_IS[MAIN_LEN][4] = "<>" }; -/*** German keyboard layout (setxkbmap de) */ -static const char main_key_DE[MAIN_LEN][4] = +/* About with-acute / no-acute issues with german keymaps: + * Most german keyboard layout tables here have a with-acute and a + * no-acute variant. This is because the mapping of the acute (and + * apostrophe) is done differently in the various + * xkb-data / xkeyboard-config versions. + * Some versions replace the acute with a normal apostrophe, so that + * the apostrophe is found twice on the keyboard (one next to + * BACKSPACE and one next to ENTER). + * Other versions put the acute and grave accents on the key left of + * BACKSPACE. More information on the fd.o bugtracker: + * https://bugs.freedesktop.org/show_bug.cgi?id=11514 + */ + +/*** German keyboard layout (with acute) */ +static const char main_key_DE_acute[MAIN_LEN][4] = { "^°","1!","2\"","3§","4$","5%","6&","7/","8(","9)","0=","ß?","´`", "qQ","wW","eE","rR","tT","zZ","uU","iI","oO","pP","üÜ","+*", @@ -321,8 +334,18 @@ static const char main_key_DE[MAIN_LEN][4] = "<>|" }; -/*** German keyboard layout without dead keys */ -static const char main_key_DE_nodead[MAIN_LEN][4] = +/*** German keyboard layout (no acute) */ +static const char main_key_DE[MAIN_LEN][4] = +{ + "^°","1!","2\"","3§","4$","5%","6&","7/","8(","9)","0=","ß?","'`", + "qQ","wW","eE","rR","tT","zZ","uU","iI","oO","pP","üÜ","+*", + "aA","sS","dD","fF","gG","hH","jJ","kK","lL","öÖ","äÄ","#'", + "yY","xX","cC","vV","bB","nN","mM",",;",".:","-_", + "<>|" +}; + +/*** German keyboard layout (no deadkeys, with acute) */ +static const char main_key_DE_nodead_acute[MAIN_LEN][4] = { "^°","1!","2\"","3§","4$","5%","6&","7/{","8([","9)]","0=}","ß?\\","´", "qQ","wW","eE","rR","tT","zZ","uU","iI","oO","pP","üÜ","+*~", @@ -331,7 +354,26 @@ static const char main_key_DE_nodead[MAIN_LEN][4] = "<>" }; -/*** German keyboard layout without dead keys 105 Keys (contributed by Matthias Fechner)*/ +/*** German keyboard layout (no deadkeys, no acute) */ +static const char main_key_DE_nodead[MAIN_LEN][4] = +{ + "^°","1!","2\"","3§","4$","5%","6&","7/{","8([","9)]","0=}","ß?\\","'", + "qQ","wW","eE","rR","tT","zZ","uU","iI","oO","pP","üÜ","+*~", + "aA","sS","dD","fF","gG","hH","jJ","kK","lL","öÖ","äÄ","#'", + "yY","xX","cC","vV","bB","nN","mM",",;",".:","-_", + "<>" +}; + +/*** German keyboard layout (no deadkeys, 105 keys, with acute) (contributed by Matthias Fechner) */ +static const char main_key_DE_nodead_105_acute[MAIN_LEN][4] = +{ + "^°","1!","2\"²","3§³","4$","5%","6&","7/{","8([","9)]","0=}","ß?\\","´`", + "qQ@","wW","eE","rR","tT","zZ","uU","iI","oO","pP","üÜ","+*~", + "aA","sS","dD","fF","gG","hH","jJ","kK","lL","öÖ","äÄ","#'", + "<>|","yY","xX","cC","vV","bB","nN","mM",",;",".:","-_", +}; + +/*** German keyboard layout (no deadkeys, 105 keys, no acute) (contributed by Matthias Fechner) */ static const char main_key_DE_nodead_105[MAIN_LEN][4] = { "^°","1!","2\"²","3§³","4$","5%","6&","7/{","8([","9)]","0=}","ß?\\","'`", @@ -916,10 +958,13 @@ static const struct { {0x0409, "United States keyboard layout (dvorak)", &main_key_US_dvorak, &main_key_scan_dvorak, &main_key_vkey_dvorak}, {0x0409, "United States International keyboard layout", &main_key_US_intl, &main_key_scan_qwerty, &main_key_vkey_qwerty}, {0x0809, "British keyboard layout", &main_key_UK, &main_key_scan_qwerty, &main_key_vkey_qwerty}, - {0x0407, "German keyboard layout", &main_key_DE, &main_key_scan_qwerty, &main_key_vkey_qwertz}, - {0x0407, "German keyboard layout without dead keys", &main_key_DE_nodead, &main_key_scan_qwerty, &main_key_vkey_qwertz}, + {0x0407, "German keyboard layout (acute)", &main_key_DE_acute, &main_key_scan_qwerty, &main_key_vkey_qwertz}, + {0x0407, "German keyboard layout (no acute)", &main_key_DE, &main_key_scan_qwerty, &main_key_vkey_qwertz}, + {0x0407, "German keyboard layout without dead keys (acute)", &main_key_DE_nodead_acute, &main_key_scan_qwerty, &main_key_vkey_qwertz}, + {0x0407, "German keyboard layout without dead keys (no acute)", &main_key_DE_nodead, &main_key_scan_qwerty, &main_key_vkey_qwertz}, {0x0407, "German keyboard layout for logitech desktop pro", &main_key_DE_logitech, &main_key_scan_qwerty, &main_key_vkey_qwertz}, - {0x0407, "German keyboard layout without dead keys 105", &main_key_DE_nodead_105, &main_key_scan_qwerty, &main_key_vkey_qwertz_105}, + {0x0407, "German keyboard layout without dead keys 105 (acute)", &main_key_DE_nodead_105_acute, &main_key_scan_qwerty, &main_key_vkey_qwertz_105}, + {0x0407, "German keyboard layout without dead keys 105 (no acute)", &main_key_DE_nodead_105, &main_key_scan_qwerty, &main_key_vkey_qwertz_105}, {0x0807, "Swiss German keyboard layout", &main_key_SG, &main_key_scan_qwerty, &main_key_vkey_qwertz}, {0x100c, "Swiss French keyboard layout", &main_key_SF, &main_key_scan_qwerty, &main_key_vkey_qwertz}, {0x041d, "Swedish keyboard layout", &main_key_SE, &main_key_scan_qwerty, &main_key_vkey_qwerty_v2}, -- 1.5.6.4