<commit_before><commit_msg>Added French keymap (not yet used).<commit_after>
/* ***** 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
 * <NAME>.
 * Portions created by the Initial Developer are Copyright (C) 2011
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 * <NAME>
 * <NAME>
 *
 * 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 <freerdp/input.h>

#ifdef HAVE_FREERDP_LOCALE_KEYBOARD_H
#include <freerdp/locale/keyboard.h>
#else
#include <freerdp/kbd/layouts.h>
#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

};

{'fraction_non_alphanumeric': 0.13214075382803298, 'fraction_numerical': 0.059408127208480564, 'mean_word_length': 2.1403143781784557, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 3, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6943155', 'n_tokens_mistral': 6402, 'n_tokens_neox': 5700, 'n_words': 1064}