diff --git a/protocols/rdp/src/rdp_keymap_fr_fr.c b/protocols/rdp/src/rdp_keymap_fr_fr.c new file mode 100644 index 00000000..5df4692b --- /dev/null +++ b/protocols/rdp/src/rdp_keymap_fr_fr.c @@ -0,0 +1,499 @@ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is libguac-client-rdp. + * + * The Initial Developer of the Original Code is + * Michael Jumper. + * Portions created by the Initial Developer are Copyright (C) 2011 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Matt Hortman + * Alexandre Devely + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include + +#ifdef HAVE_FREERDP_LOCALE_KEYBOARD_H +#include +#else +#include +#endif + +#include "rdp_keymap.h" + + +/* + This array is order by .keysym + the .keysym is the ASCII value + the .scancode the key scancode + +*/ +static guac_rdp_keysym_desc __guac_rdp_keymap_mapping[] = { + + /* space */ + { .keysym = 0x0020, .scancode = 0x39 }, + + /* exclam */ + { .keysym = 0x0021, .scancode = 0x35, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* quotedbl */ + { .keysym = 0x0022, .scancode = 0x04, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* numbersign */ + { .keysym = 0x0023, .scancode = 0x04, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* dollar */ + { .keysym = 0x0024, .scancode = 0x1b, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* percent */ + { .keysym = 0x0025, .scancode = 0x28, + .set_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* ampersand */ + { .keysym = 0x0026, .scancode = 0x02, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* quoteright */ + { .keysym = 0x0027, .scancode = 0x05, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* parenleft */ + { .keysym = 0x0028, .scancode = 0x06, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* parenright */ + { .keysym = 0x0029, .scancode = 0x0c, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* asterisk */ + { .keysym = 0x002a, .scancode = 0x2b, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* plus */ + { .keysym = 0x002b, .scancode = 0x0D, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* comma */ + { .keysym = 0x002c, .scancode = 0x32, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* minus */ + { .keysym = 0x002d, .scancode = 0x07, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* period */ + { .keysym = 0x002e, .scancode = 0x33, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* slash */ + { .keysym = 0x002f, .scancode = 0x34, + .set_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* 0 */ + { .keysym = 0x0030, .scancode = 0x0B, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 1 */ + { .keysym = 0x0031, .scancode = 0x02, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 2 */ + { .keysym = 0x0032, .scancode = 0x03, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 3 */ + { .keysym = 0x0033, .scancode = 0x04, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 4 */ + { .keysym = 0x0034, .scancode = 0x05, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 5 */ + { .keysym = 0x0035, .scancode = 0x06, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 6 */ + { .keysym = 0x0036, .scancode = 0x07, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 7 */ + { .keysym = 0x0037, .scancode = 0x08, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 8 */ + { .keysym = 0x0038, .scancode = 0x09, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* 9 */ + { .keysym = 0x0039, .scancode = 0x0A, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* colon */ + { .keysym = 0x003a, .scancode = 0x34, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* semicolon */ + { .keysym = 0x003b, .scancode = 0x33, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* less */ + { .keysym = 0x003c, .scancode = 0x56, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* equal */ + { .keysym = 0x003d, .scancode = 0x0D, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* greater */ + { .keysym = 0x003e, .scancode = 0x56, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* question */ + { .keysym = 0x003f, .scancode = 0x32, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* at */ + { .keysym = 0x0040, .scancode = 0x0B, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* A */ + { .keysym = 0x0041, .scancode = 0x10, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* B */ + { .keysym = 0x0042, .scancode = 0x30, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* C */ + { .keysym = 0x0043, .scancode = 0x2E, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* D */ + { .keysym = 0x0044, .scancode = 0x20, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* E */ + { .keysym = 0x0045, .scancode = 0x12, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* F */ + { .keysym = 0x0046, .scancode = 0x21, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* G */ + { .keysym = 0x0047, .scancode = 0x22, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* H */ + { .keysym = 0x0048, .scancode = 0x23, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* I */ + { .keysym = 0x0049, .scancode = 0x17, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* J */ + { .keysym = 0x004a, .scancode = 0x24, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* K */ + { .keysym = 0x004b, .scancode = 0x25, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* L */ + { .keysym = 0x004c, .scancode = 0x26, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* M */ + { .keysym = 0x004d, .scancode = 0x27, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* N */ + { .keysym = 0x004e, .scancode = 0x31, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* O */ + { .keysym = 0x004f, .scancode = 0x18, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* P */ + { .keysym = 0x0050, .scancode = 0x19, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* Q */ + { .keysym = 0x0051, .scancode = 0x1E, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* R */ + { .keysym = 0x0052, .scancode = 0x13, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* S */ + { .keysym = 0x0053, .scancode = 0x1F, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* T */ + { .keysym = 0x0054, .scancode = 0x14, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* U */ + { .keysym = 0x0055, .scancode = 0x16, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* V */ + { .keysym = 0x0056, .scancode = 0x2F, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* W */ + { .keysym = 0x0057, .scancode = 0x2C, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* X */ + { .keysym = 0x0058, .scancode = 0x2D, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* Y */ + { .keysym = 0x0059, .scancode = 0x15, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* Z */ + { .keysym = 0x005a, .scancode = 0x11, + .set_keysyms = GUAC_KEYSYMS_SHIFT }, + + /* bracketleft */ + { .keysym = 0x005b, .scancode = 0x06, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* backslash */ + { .keysym = 0x005c, .scancode = 0x09, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* bracketright */ + { .keysym = 0x005d, .scancode = 0x0c, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* asciicircum */ + { .keysym = 0x005e, .scancode = 0x0a, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* underscore */ + { .keysym = 0x005f, .scancode = 0x09, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* quoteleft */ + { .keysym = 0x0060, .scancode = 0x08, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* a */ + { .keysym = 0x0061, .scancode = 0x10, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* b */ + { .keysym = 0x0062, .scancode = 0x30, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* c */ + { .keysym = 0x0063, .scancode = 0x2E, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* d */ + { .keysym = 0x0064, .scancode = 0x20, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* e */ + { .keysym = 0x0065, .scancode = 0x12, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* f */ + { .keysym = 0x0066, .scancode = 0x21, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* g */ + { .keysym = 0x0067, .scancode = 0x22, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* h */ + { .keysym = 0x0068, .scancode = 0x23, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* i */ + { .keysym = 0x0069, .scancode = 0x17, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* j */ + { .keysym = 0x006a, .scancode = 0x24, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* k */ + { .keysym = 0x006b, .scancode = 0x25, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* l */ + { .keysym = 0x006c, .scancode = 0x26, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* m */ + { .keysym = 0x006d, .scancode = 0x27, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* n */ + { .keysym = 0x006e, .scancode = 0x31, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* o */ + { .keysym = 0x006f, .scancode = 0x18, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* p */ + { .keysym = 0x0070, .scancode = 0x19, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* q */ + { .keysym = 0x0071, .scancode = 0x1E, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* r */ + { .keysym = 0x0072, .scancode = 0x13, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* s */ + { .keysym = 0x0073, .scancode = 0x1F, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* t */ + { .keysym = 0x0074, .scancode = 0x14, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* u */ + { .keysym = 0x0075, .scancode = 0x16, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* v */ + { .keysym = 0x0076, .scancode = 0x2F, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* w */ + { .keysym = 0x0077, .scancode = 0x2C, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* x */ + { .keysym = 0x0078, .scancode = 0x2D, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* y */ + { .keysym = 0x0079, .scancode = 0x15, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* z */ + { .keysym = 0x007a, .scancode = 0x11, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* braceleft */ + { .keysym = 0x007b, .scancode = 0x05, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* bar */ + { .keysym = 0x007c, .scancode = 0x07, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* braceright */ + { .keysym = 0x007d, .scancode = 0x0D, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* asciitilde */ + { .keysym = 0x007e, .scancode = 0x03, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* pound; */ + { .keysym = 0x00a3, .scancode = 0x1b, + .set_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* curren; */ + { .keysym = 0x00a4, .scancode = 0x1b, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + /* sect; */ + { .keysym = 0x00a7, .scancode = 0x35, + .set_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* deg */ + { .keysym = 0x00b0, .scancode = 0x0c, + .set_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* micro */ + { .keysym = 0x00b5, .scancode = 0x2b, + .set_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* agrave */ + { .keysym = 0x00e0, .scancode = 0x0b, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* auml */ + { .keysym = 0x00e4, .scancode = 0x1a, + .set_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* Ccedil */ + { .keysym = 0x00e7, .scancode = 0x0a, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* egrave */ + { .keysym = 0x00e8, .scancode = 0x08, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* eacute */ + { .keysym = 0x00e9, .scancode = 0x03, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* ugrave */ + { .keysym = 0x00f9, .scancode = 0x28, + .clear_keysyms = GUAC_KEYSYMS_ALL_SHIFT }, + + /* euro */ + { .keysym = 0x10020ac, .scancode = 0x12, + .set_keysyms = GUAC_KEYSYMS_CTRL_ALT }, + + {0} + +}; + +guac_rdp_keymap guac_rdp_keymap_fr_fr = { + + .name = "fr-fr-azerty", + + .parent = &guac_rdp_keymap_base, + .mapping = __guac_rdp_keymap_mapping, + .freerdp_keyboard_layout = KBD_FRENCH + +}; +