src/video/x11/SDL_x11keyboard.c
author Ryan C. Gordon <icculus@icculus.org>
Wed, 13 Jan 2010 16:18:36 +0000
changeset 3667 cc7eca3a4e13
parent 3162 dc1eb82ffdaa
child 3697 f7b03b6838cb
permissions -rw-r--r--
Fixed compiler warning.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1950
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     1
/*
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     2
    SDL - Simple DirectMedia Layer
2859
99210400e8b9 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 2825
diff changeset
     3
    Copyright (C) 1997-2009 Sam Lantinga
1950
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     4
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     5
    This library is free software; you can redistribute it and/or
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     6
    modify it under the terms of the GNU Lesser General Public
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     7
    License as published by the Free Software Foundation; either
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     8
    version 2.1 of the License, or (at your option) any later version.
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     9
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    10
    This library is distributed in the hope that it will be useful,
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    13
    Lesser General Public License for more details.
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    14
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    15
    You should have received a copy of the GNU Lesser General Public
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    16
    License along with this library; if not, write to the Free Software
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    17
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    18
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    19
    Sam Lantinga
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    20
    slouken@libsdl.org
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    21
*/
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    22
#include "SDL_config.h"
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    23
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    24
#include "SDL_x11video.h"
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    25
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    26
#include "../../events/SDL_keyboard_c.h"
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
    27
#include "../../events/scancodes_darwin.h"
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
    28
#include "../../events/scancodes_xfree86.h"
1950
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    29
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
    30
#include <X11/keysym.h>
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
    31
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
    32
#include "imKStoUCS.h"
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
    33
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    34
/* *INDENT-OFF* */
3162
dc1eb82ffdaa Von: Thomas Zimmermann
Sam Lantinga <slouken@libsdl.org>
parents: 3001
diff changeset
    35
static const struct {
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    36
    KeySym keysym;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    37
    SDLKey sdlkey;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    38
} KeySymToSDLKey[] = {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    39
    { XK_Return, SDLK_RETURN },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    40
    { XK_Escape, SDLK_ESCAPE },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    41
    { XK_BackSpace, SDLK_BACKSPACE },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    42
    { XK_Tab, SDLK_TAB },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    43
    { XK_Caps_Lock, SDLK_CAPSLOCK },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    44
    { XK_F1, SDLK_F1 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    45
    { XK_F2, SDLK_F2 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    46
    { XK_F3, SDLK_F3 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    47
    { XK_F4, SDLK_F4 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    48
    { XK_F5, SDLK_F5 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    49
    { XK_F6, SDLK_F6 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    50
    { XK_F7, SDLK_F7 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    51
    { XK_F8, SDLK_F8 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    52
    { XK_F9, SDLK_F9 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    53
    { XK_F10, SDLK_F10 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    54
    { XK_F11, SDLK_F11 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    55
    { XK_F12, SDLK_F12 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    56
    { XK_Print, SDLK_PRINTSCREEN },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    57
    { XK_Scroll_Lock, SDLK_SCROLLLOCK },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    58
    { XK_Pause, SDLK_PAUSE },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    59
    { XK_Insert, SDLK_INSERT },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    60
    { XK_Home, SDLK_HOME },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    61
    { XK_Prior, SDLK_PAGEUP },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    62
    { XK_Delete, SDLK_DELETE },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    63
    { XK_End, SDLK_END },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    64
    { XK_Next, SDLK_PAGEDOWN },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    65
    { XK_Right, SDLK_RIGHT },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    66
    { XK_Left, SDLK_LEFT },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    67
    { XK_Down, SDLK_DOWN },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    68
    { XK_Up, SDLK_UP },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    69
    { XK_Num_Lock, SDLK_NUMLOCKCLEAR },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    70
    { XK_KP_Divide, SDLK_KP_DIVIDE },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    71
    { XK_KP_Multiply, SDLK_KP_MULTIPLY },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    72
    { XK_KP_Subtract, SDLK_KP_MINUS },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    73
    { XK_KP_Add, SDLK_KP_PLUS },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    74
    { XK_KP_Enter, SDLK_KP_ENTER },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    75
    { XK_KP_Delete, SDLK_KP_PERIOD },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    76
    { XK_KP_End, SDLK_KP_1 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    77
    { XK_KP_Down, SDLK_KP_2 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    78
    { XK_KP_Next, SDLK_KP_3 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    79
    { XK_KP_Left, SDLK_KP_4 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    80
    { XK_KP_Begin, SDLK_KP_5 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    81
    { XK_KP_Right, SDLK_KP_6 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    82
    { XK_KP_Home, SDLK_KP_7 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    83
    { XK_KP_Up, SDLK_KP_8 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    84
    { XK_KP_Prior, SDLK_KP_9 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    85
    { XK_KP_Insert, SDLK_KP_0 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    86
    { XK_KP_Decimal, SDLK_KP_PERIOD },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    87
    { XK_KP_1, SDLK_KP_1 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    88
    { XK_KP_2, SDLK_KP_2 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    89
    { XK_KP_3, SDLK_KP_3 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    90
    { XK_KP_4, SDLK_KP_4 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    91
    { XK_KP_5, SDLK_KP_5 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    92
    { XK_KP_6, SDLK_KP_6 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    93
    { XK_KP_7, SDLK_KP_7 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    94
    { XK_KP_8, SDLK_KP_8 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    95
    { XK_KP_9, SDLK_KP_9 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    96
    { XK_KP_0, SDLK_KP_0 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    97
    { XK_KP_Decimal, SDLK_KP_PERIOD },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    98
    { XK_Hyper_R, SDLK_APPLICATION },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    99
    { XK_KP_Equal, SDLK_KP_EQUALS },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   100
    { XK_F13, SDLK_F13 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   101
    { XK_F14, SDLK_F14 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   102
    { XK_F15, SDLK_F15 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   103
    { XK_F16, SDLK_F16 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   104
    { XK_F17, SDLK_F17 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   105
    { XK_F18, SDLK_F18 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   106
    { XK_F19, SDLK_F19 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   107
    { XK_F20, SDLK_F20 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   108
    { XK_F21, SDLK_F21 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   109
    { XK_F22, SDLK_F22 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   110
    { XK_F23, SDLK_F23 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   111
    { XK_F24, SDLK_F24 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   112
    { XK_Execute, SDLK_EXECUTE },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   113
    { XK_Help, SDLK_HELP },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   114
    { XK_Menu, SDLK_MENU },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   115
    { XK_Select, SDLK_SELECT },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   116
    { XK_Cancel, SDLK_STOP },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   117
    { XK_Redo, SDLK_AGAIN },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   118
    { XK_Undo, SDLK_UNDO },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   119
    { XK_Find, SDLK_FIND },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   120
    { XK_KP_Separator, SDLK_KP_COMMA },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   121
    { XK_Sys_Req, SDLK_SYSREQ },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   122
    { XK_Control_L, SDLK_LCTRL },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   123
    { XK_Shift_L, SDLK_LSHIFT },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   124
    { XK_Alt_L, SDLK_LALT },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   125
    { XK_Meta_L, SDLK_LGUI },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   126
    { XK_Super_L, SDLK_LGUI },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   127
    { XK_Control_R, SDLK_RCTRL },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   128
    { XK_Shift_R, SDLK_RSHIFT },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   129
    { XK_Alt_R, SDLK_RALT },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   130
    { XK_Meta_R, SDLK_RGUI },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   131
    { XK_Super_R, SDLK_RGUI },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   132
    { XK_Mode_switch, SDLK_MODE },
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   133
};
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   134
3162
dc1eb82ffdaa Von: Thomas Zimmermann
Sam Lantinga <slouken@libsdl.org>
parents: 3001
diff changeset
   135
static const struct
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   136
{
3162
dc1eb82ffdaa Von: Thomas Zimmermann
Sam Lantinga <slouken@libsdl.org>
parents: 3001
diff changeset
   137
    const SDL_scancode const *table;
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   138
    int table_size;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   139
} scancode_set[] = {
2308
514f7c1651fc Untested Win32 keyboard scancode code.
Sam Lantinga <slouken@libsdl.org>
parents: 2306
diff changeset
   140
    { darwin_scancode_table, SDL_arraysize(darwin_scancode_table) },
514f7c1651fc Untested Win32 keyboard scancode code.
Sam Lantinga <slouken@libsdl.org>
parents: 2306
diff changeset
   141
    { xfree86_scancode_table, SDL_arraysize(xfree86_scancode_table) },
2825
620a91b6d263 Date: Tue, 02 Dec 2008 23:38:26 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2323
diff changeset
   142
    { xfree86_scancode_table2, SDL_arraysize(xfree86_scancode_table2) },
2308
514f7c1651fc Untested Win32 keyboard scancode code.
Sam Lantinga <slouken@libsdl.org>
parents: 2306
diff changeset
   143
};
514f7c1651fc Untested Win32 keyboard scancode code.
Sam Lantinga <slouken@libsdl.org>
parents: 2306
diff changeset
   144
/* *INDENT-OFF* */
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   145
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   146
static SDLKey
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   147
X11_KeyCodeToSDLKey(Display *display, KeyCode keycode)
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   148
{
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   149
    KeySym keysym;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   150
    unsigned int ucs4;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   151
    int i;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   152
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   153
    keysym = XKeycodeToKeysym(display, keycode, 0);
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   154
    if (keysym == NoSymbol) {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   155
        return SDLK_UNKNOWN;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   156
    }
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   157
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   158
    ucs4 = X11_KeySymToUcs4(keysym);
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   159
    if (ucs4) {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   160
        return (SDLKey) ucs4;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   161
    }
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   162
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   163
    for (i = 0; i < SDL_arraysize(KeySymToSDLKey); ++i) {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   164
        if (keysym == KeySymToSDLKey[i].keysym) {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   165
            return KeySymToSDLKey[i].sdlkey;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   166
        }
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   167
    }
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   168
    return SDLK_UNKNOWN;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   169
}
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   170
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   171
int
1950
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   172
X11_InitKeyboard(_THIS)
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   173
{
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   174
    SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   175
    SDL_Keyboard keyboard;
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   176
    int i, j;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   177
    int min_keycode, max_keycode;
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   178
    struct {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   179
        SDL_scancode scancode;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   180
        KeySym keysym;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   181
        int value;
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   182
    } fingerprint[] = {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   183
        { SDL_SCANCODE_HOME, XK_Home, 0 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   184
        { SDL_SCANCODE_PAGEUP, XK_Prior, 0 },
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   185
        { SDL_SCANCODE_PAGEDOWN, XK_Next, 0 },
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   186
    };
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   187
    SDL_bool fingerprint_detected;
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   188
2299
a7cbc25071b6 Enabled key board auto repeat in X11_InitKeyboard.c. Had to add a couple of new Xlib symbols.
Bob Pendleton <bob@pendleton.com>
parents: 2298
diff changeset
   189
    XAutoRepeatOn(data->display);
a7cbc25071b6 Enabled key board auto repeat in X11_InitKeyboard.c. Had to add a couple of new Xlib symbols.
Bob Pendleton <bob@pendleton.com>
parents: 2298
diff changeset
   190
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   191
    /* Try to determine which scancodes are being used based on fingerprint */
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   192
    fingerprint_detected = SDL_FALSE;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   193
    XDisplayKeycodes(data->display, &min_keycode, &max_keycode);
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   194
    for (i = 0; i < SDL_arraysize(fingerprint); ++i) {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   195
        fingerprint[i].value =
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   196
            XKeysymToKeycode(data->display, fingerprint[i].keysym) -
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   197
            min_keycode;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   198
    }
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   199
    for (i = 0; i < SDL_arraysize(scancode_set); ++i) {
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   200
        /* Make sure the scancode set isn't too big */
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   201
        if ((max_keycode - min_keycode + 1) <= scancode_set[i].table_size) {
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   202
            continue;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   203
        }
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   204
        for (j = 0; j < SDL_arraysize(fingerprint); ++j) {
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   205
            if (fingerprint[j].value < 0
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   206
                || fingerprint[j].value >= scancode_set[i].table_size) {
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   207
                break;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   208
            }
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   209
            if (scancode_set[i].table[fingerprint[j].value] !=
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   210
                fingerprint[j].scancode) {
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   211
                break;
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   212
            }
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   213
        }
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   214
        if (j == SDL_arraysize(fingerprint)) {
2323
4ac07ae446d3 Fixed many valgrind errors. But, I broke testdyngl.
Bob Pendleton <bob@pendleton.com>
parents: 2308
diff changeset
   215
            /* printf("Using scancode set %d\n", i); */
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   216
            SDL_memcpy(&data->key_layout[min_keycode], scancode_set[i].table,
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   217
                       sizeof(SDL_scancode) * scancode_set[i].table_size);
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   218
            fingerprint_detected = SDL_TRUE;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   219
            break;
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   220
        }
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   221
    }
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   222
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   223
    if (!fingerprint_detected) {
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   224
        SDLKey keymap[SDL_NUM_SCANCODES];
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   225
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   226
        printf
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   227
            ("Keyboard layout unknown, please send the following to the SDL mailing list (sdl@libsdl.org):\n");
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   228
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   229
        /* Determine key_layout - only works on US QWERTY layout */
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   230
        SDL_GetDefaultKeymap(keymap);
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   231
        for (i = min_keycode; i <= max_keycode; ++i) {
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   232
            KeySym sym;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   233
            sym = XKeycodeToKeysym(data->display, i, 0);
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   234
            if (sym != NoSymbol) {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   235
                SDLKey key;
3667
cc7eca3a4e13 Fixed compiler warning.
Ryan C. Gordon <icculus@icculus.org>
parents: 3162
diff changeset
   236
                printf("code = %d, sym = 0x%X (%s) ", i - min_keycode,
cc7eca3a4e13 Fixed compiler warning.
Ryan C. Gordon <icculus@icculus.org>
parents: 3162
diff changeset
   237
                       (unsigned int) sym, XKeysymToString(sym));
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   238
                key = X11_KeyCodeToSDLKey(data->display, i);
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   239
                for (j = 0; j < SDL_arraysize(keymap); ++j) {
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   240
                    if (keymap[j] == key) {
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   241
                        data->key_layout[i] = (SDL_scancode) j;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   242
                        break;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   243
                    }
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   244
                }
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   245
                if (j == SDL_arraysize(keymap)) {
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   246
                    printf("scancode not found\n");
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   247
                } else {
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   248
                    printf("scancode = %d (%s)\n", j, SDL_GetScancodeName(j));
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   249
                }
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   250
            }
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   251
        }
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   252
    }
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   253
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   254
    SDL_zero(keyboard);
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   255
    data->keyboard = SDL_AddKeyboard(&keyboard, -1);
2306
1a8bab15a45d Fixed compile errors
Sam Lantinga <slouken@libsdl.org>
parents: 2305
diff changeset
   256
    X11_UpdateKeymap(_this);
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   257
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   258
    SDL_SetScancodeName(SDL_SCANCODE_APPLICATION, "Menu");
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   259
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   260
    return 0;
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   261
}
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   262
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   263
void
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   264
X11_UpdateKeymap(_THIS)
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   265
{
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   266
    SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   267
    int i;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   268
    SDL_scancode scancode;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   269
    SDLKey keymap[SDL_NUM_SCANCODES];
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   270
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   271
    SDL_zero(keymap);
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   272
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   273
    for (i = 0; i < SDL_arraysize(data->key_layout); i++) {
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   274
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   275
        /* Make sure this is a valid scancode */
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   276
        scancode = data->key_layout[i];
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   277
        if (scancode == SDL_SCANCODE_UNKNOWN) {
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   278
            continue;
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   279
        }
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   280
3001
7b031c55aebc Fixed bug #669
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   281
        keymap[scancode] = X11_KeyCodeToSDLKey(data->display, (KeyCode)i);
2295
dbc6d1893869 Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents: 1950
diff changeset
   282
    }
2305
fbe8ff44c519 First pass of new SDL scancode concept for X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2299
diff changeset
   283
    SDL_SetKeymap(data->keyboard, 0, keymap, SDL_NUM_SCANCODES);
1950
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   284
}
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   285
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   286
void
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   287
X11_QuitKeyboard(_THIS)
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   288
{
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   289
    SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   290
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   291
    SDL_DelKeyboard(data->keyboard);
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   292
}
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   293
a344e42bce3b Started work on the new X11 driver.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   294
/* vi: set ts=4 sw=4 expandtab: */