Michael Roe

The mappings for keyboard scancodes on Linux do not include keypad left and right parentheses (used on some Microsoft keyboard), keypad plus/minus, LANG1 and LANG2 (used on Korean keyboards), XK86MenuKB, and F20 (remapped to Audio Mic Mute in the usual X11 config).]]>

Include guards in most changed files were missing, I added them keeping

the same style as other SDL files. In some cases I moved the include

guards around to be the first thing the header has to take advantage of

any possible improvements compiler may have for inclusion guards.]]>

Holger Schemel

Summary: This patch adds support for key events for the "rewind" and "fast forward" media keys on the Amazon Fire TV remote control.

How to reproduce the problem: Run Android build of SDL2 application on the Amazon Fire TV (tested with "stick" version) and log key events.

Expected behaviour: Every key pressed on the Fire TV remote control should result in a corresponding key event (pressed/released).

Observed behaviour: Of the bottom row of buttons on the Fire TV remote control, only the "play/pause" (middle) button generates a key event, while the "rewind" (left) and "fast forward" (right) buttons to not generate any event at all.

The attached patch adds support for these two missing buttons/keys.

Note 1: Some missing definitions were added for the already existing key codes SDL_SCANCODE_APP1 and SDL_SCANCODE_APP2 (to keep up the correct order of enumerations / array positions when adding the two new key codes).

Note 2: Definitions in "scancodes_linux.h" and "scancodes_xfree86.h" (to also add support for these keys on other platforms) were added without testing. However, I was unable to find corresponding definitions for these two media keys for Windows and Mac OS X.

Note 3: I have also updated the (broken) link to the USB usage page standard PDF document (comment in "include/SDL_scancode.h").]]>

Based on a patch by Bill Lash (see bug 3094).]]>

This adds them for Windows and X11.

Fixes Bugzilla #2820.]]>

SDL2 reports the following message when we type the "/" on br-abnt2 keyboards:

The key you just pressed is not recognized by SDL. \

To help get this fixed, please report this to the SDL mailing list \

<sdl@libsdl.org> X11 KeyCode 97 (89), X11 KeySym 0x2F (slash).

That's because the corresponding entry in the scancodes table is

marked with value SDL_SCANCODE_UNKNOWN.

This commit fixes that adding the value SDL_SCANCODE_SLASH for this entry.]]>

Is it that time already??]]>

Added #defines to SDL_compat.h]]>

code = 1, sym = 0xFF1B (Escape) scancode = 41 (Escape)

code = 2, sym = 0x31 (1) scancode = 30 (1)

code = 3, sym = 0x32 (2) scancode = 31 (2)

code = 4, sym = 0x33 (3) scancode = 32 (3)

code = 5, sym = 0x34 (4) scancode = 33 (4)

code = 6, sym = 0x35 (5) scancode = 34 (5)

code = 7, sym = 0x36 (6) scancode = 35 (6)

code = 8, sym = 0x37 (7) scancode = 36 (7)

code = 9, sym = 0x38 (8) scancode = 37 (8)

code = 10, sym = 0x39 (9) scancode = 38 (9)

code = 11, sym = 0x30 (0) scancode = 39 (0)

code = 12, sym = 0x2D (minus) scancode = 45 (-)

code = 13, sym = 0x3D (equal) scancode = 46 (=)

code = 14, sym = 0xFF08 (BackSpace) scancode = 42 (Backspace)

code = 15, sym = 0xFF09 (Tab) scancode = 43 (Tab)

code = 16, sym = 0x71 (q) scancode = 20 (Q)

code = 17, sym = 0x77 (w) scancode = 26 (W)

code = 18, sym = 0x65 (e) scancode = 8 (E)

code = 19, sym = 0x72 (r) scancode = 21 (R)

code = 20, sym = 0x74 (t) scancode = 23 (T)

code = 21, sym = 0x79 (y) scancode = 28 (Y)

code = 22, sym = 0x75 (u) scancode = 24 (U)

code = 23, sym = 0x69 (i) scancode = 12 (I)

code = 24, sym = 0x6F (o) scancode = 18 (O)

code = 25, sym = 0x70 (p) scancode = 19 (P)

code = 26, sym = 0x5B (bracketleft) scancode = 47 ([)

code = 27, sym = 0x5D (bracketright) scancode = 48 (])

code = 28, sym = 0xFF0D (Return) scancode = 40 (Return)

code = 29, sym = 0xFFE3 (Control_L) scancode = 224 (Left Ctrl)

code = 30, sym = 0x61 (a) scancode = 4 (A)

code = 31, sym = 0x73 (s) scancode = 22 (S)

code = 32, sym = 0x64 (d) scancode = 7 (D)

code = 33, sym = 0x66 (f) scancode = 9 (F)

code = 34, sym = 0x67 (g) scancode = 10 (G)

code = 35, sym = 0x68 (h) scancode = 11 (H)

code = 36, sym = 0x6A (j) scancode = 13 (J)

code = 37, sym = 0x6B (k) scancode = 14 (K)

code = 38, sym = 0x6C (l) scancode = 15 (L)

code = 39, sym = 0x3B (semicolon) scancode = 51 (;)

code = 40, sym = 0x27 (apostrophe) scancode = 52 (')

code = 41, sym = 0x60 (grave) scancode = 53 (`)

code = 42, sym = 0xFFE1 (Shift_L) scancode = 225 (Left Shift)

code = 43, sym = 0x5C (backslash) scancode = 49 (\)

code = 44, sym = 0x7A (z) scancode = 29 (Z)

code = 45, sym = 0x78 (x) scancode = 27 (X)

code = 46, sym = 0x63 (c) scancode = 6 (C)

code = 47, sym = 0x76 (v) scancode = 25 (V)

code = 48, sym = 0x62 (b) scancode = 5 (B)

code = 49, sym = 0x6E (n) scancode = 17 (N)

code = 50, sym = 0x6D (m) scancode = 16 (M)

code = 51, sym = 0x2C (comma) scancode = 54 (,)

code = 52, sym = 0x2E (period) scancode = 55 (.)

code = 53, sym = 0x2F (slash) scancode = 56 (/)

code = 54, sym = 0xFFE2 (Shift_R) scancode = 229 (Right Shift)

code = 55, sym = 0xFFAA (KP_Multiply) scancode = 85 (Keypad *)

code = 56, sym = 0xFFE9 (Alt_L) scancode = 226 (Left Alt)

code = 57, sym = 0x20 (space) scancode = 44 (Space)

code = 58, sym = 0xFFE5 (Caps_Lock) scancode = 57 (CapsLock)

code = 59, sym = 0xFFBE (F1) scancode = 58 (F1)

code = 60, sym = 0xFFBF (F2) scancode = 59 (F2)

code = 61, sym = 0xFFC0 (F3) scancode = 60 (F3)

code = 62, sym = 0xFFC1 (F4) scancode = 61 (F4)

code = 63, sym = 0xFFC2 (F5) scancode = 62 (F5)

code = 64, sym = 0xFFC3 (F6) scancode = 63 (F6)

code = 65, sym = 0xFFC4 (F7) scancode = 64 (F7)

code = 66, sym = 0xFFC5 (F8) scancode = 65 (F8)

code = 67, sym = 0xFFC6 (F9) scancode = 66 (F9)

code = 68, sym = 0xFFC7 (F10) scancode = 67 (F10)

code = 69, sym = 0xFF7F (Num_Lock) scancode = 83 (Numlock)

code = 70, sym = 0xFF14 (Scroll_Lock) scancode = 71 (ScrollLock)

code = 71, sym = 0xFF95 (KP_Home) scancode = 95 (Keypad 7)

code = 72, sym = 0xFF97 (KP_Up) scancode = 96 (Keypad 8)

code = 73, sym = 0xFF9A (KP_Prior) scancode = 97 (Keypad 9)

code = 74, sym = 0xFFAD (KP_Subtract) scancode = 86 (Keypad -)

code = 75, sym = 0xFF96 (KP_Left) scancode = 92 (Keypad 4)

code = 76, sym = 0xFF9D (KP_Begin) scancode = 93 (Keypad 5)

code = 77, sym = 0xFF98 (KP_Right) scancode = 94 (Keypad 6)

code = 78, sym = 0xFFAB (KP_Add) scancode = 87 (Keypad +)

code = 79, sym = 0xFF9C (KP_End) scancode = 89 (Keypad 1)

code = 80, sym = 0xFF99 (KP_Down) scancode = 90 (Keypad 2)

code = 81, sym = 0xFF9B (KP_Next) scancode = 91 (Keypad 3)

code = 82, sym = 0xFF9E (KP_Insert) scancode = 98 (Keypad 0)

code = 83, sym = 0xFF9F (KP_Delete) scancode = 99 (Keypad .)

code = 84, sym = 0xFE03 (ISO_Level3_Shift) scancode = 0 ()

code = 86, sym = 0x3C (less) scancode not found

code = 87, sym = 0xFFC8 (F11) scancode = 68 (F11)

code = 88, sym = 0xFFC9 (F12) scancode = 69 (F12)

code = 90, sym = 0xFF26 (Katakana) scancode = 0 ()

code = 91, sym = 0xFF25 (Hiragana) scancode = 0 ()

code = 92, sym = 0xFF23 (Henkan_Mode) scancode = 0 ()

code = 93, sym = 0xFF27 (Hiragana_Katakana) scancode = 0 ()

code = 94, sym = 0xFF22 (Muhenkan) scancode = 0 ()

code = 96, sym = 0xFF8D (KP_Enter) scancode = 88 (Keypad Enter)

code = 97, sym = 0xFFE4 (Control_R) scancode = 228 (Right Ctrl)

code = 98, sym = 0xFFAF (KP_Divide) scancode = 84 (Keypad /)

code = 99, sym = 0xFF61 (Print) scancode = 70 (PrintScreen)

code = 100, sym = 0xFFEA (Alt_R) scancode = 230 (Right Alt)

code = 101, sym = 0xFF0A (Linefeed) scancode = 0 ()

code = 102, sym = 0xFF50 (Home) scancode = 74 (Home)

code = 103, sym = 0xFF52 (Up) scancode = 82 (Up)

code = 104, sym = 0xFF55 (Prior) scancode = 75 (PageUp)

code = 105, sym = 0xFF51 (Left) scancode = 80 (Left)

code = 106, sym = 0xFF53 (Right) scancode = 79 (Right)

code = 107, sym = 0xFF57 (End) scancode = 77 (End)

code = 108, sym = 0xFF54 (Down) scancode = 81 (Down)

code = 109, sym = 0xFF56 (Next) scancode = 78 (PageDown)

code = 110, sym = 0xFF63 (Insert) scancode = 73 (Insert)

code = 111, sym = 0xFFFF (Delete) scancode = 76 (Delete)

code = 113, sym = 0x1008FF12 (XF86AudioMute) scancode = 0 ()

code = 114, sym = 0x1008FF11 (XF86AudioLowerVolume) scancode = 0 ()

code = 115, sym = 0x1008FF13 (XF86AudioRaiseVolume) scancode = 0 ()

code = 116, sym = 0x1008FF2A (XF86PowerOff) scancode = 0 ()

code = 117, sym = 0xFFBD (KP_Equal) scancode = 103 (Keypad =)

code = 118, sym = 0xB1 (plusminus) scancode not found

code = 119, sym = 0xFF13 (Pause) scancode = 72 (Pause)

code = 120, sym = 0x1008FF4A (XF86LaunchA) scancode = 0 ()

code = 121, sym = 0xFFAE (KP_Decimal) scancode = 99 (Keypad .)

code = 122, sym = 0xFF31 (Hangul) scancode = 0 ()

code = 123, sym = 0xFF34 (Hangul_Hanja) scancode = 0 ()

code = 125, sym = 0xFFEB (Super_L) scancode = 227 (Left GUI)

code = 126, sym = 0xFFEC (Super_R) scancode = 231 (Right GUI)

code = 127, sym = 0xFF67 (Menu) scancode = 118 (Menu)

code = 128, sym = 0xFF69 (Cancel) scancode = 120 (Stop)

code = 129, sym = 0xFF66 (Redo) scancode = 121 (Again)

code = 130, sym = 0x1005FF70 (SunProps) scancode = 0 ()

code = 131, sym = 0xFF65 (Undo) scancode = 122 (Undo)

code = 132, sym = 0x1005FF71 (SunFront) scancode = 0 ()

code = 133, sym = 0x1008FF57 (XF86Copy) scancode = 0 ()

code = 134, sym = 0x1005FF73 (SunOpen) scancode = 0 ()

code = 135, sym = 0x1008FF6D (XF86Paste) scancode = 0 ()

code = 136, sym = 0xFF68 (Find) scancode = 126 (Find)

code = 137, sym = 0x1008FF58 (XF86Cut) scancode = 0 ()

code = 138, sym = 0xFF6A (Help) scancode = 117 (Help)

code = 139, sym = 0x1008FF65 (XF86MenuKB) scancode = 0 ()

code = 140, sym = 0x1008FF1D (XF86Calculator) scancode = 0 ()

code = 142, sym = 0x1008FF2F (XF86Sleep) scancode = 0 ()

code = 143, sym = 0x1008FF2B (XF86WakeUp) scancode = 0 ()

code = 144, sym = 0x1008FF5D (XF86Explorer) scancode = 0 ()

code = 145, sym = 0x1008FF7B (XF86Send) scancode = 0 ()

code = 147, sym = 0x1008FF8A (XF86Xfer) scancode = 0 ()

code = 148, sym = 0x1008FF41 (XF86Launch1) scancode = 0 ()

code = 149, sym = 0x1008FF42 (XF86Launch2) scancode = 0 ()

code = 150, sym = 0x1008FF2E (XF86WWW) scancode = 0 ()

code = 151, sym = 0x1008FF5A (XF86DOS) scancode = 0 ()

code = 152, sym = 0x1008FF2D (XF86ScreenSaver) scancode = 0 ()

code = 154, sym = 0x1008FF74 (XF86RotateWindows) scancode = 0 ()

code = 155, sym = 0x1008FF19 (XF86Mail) scancode = 0 ()

code = 156, sym = 0x1008FF30 (XF86Favorites) scancode = 0 ()

code = 157, sym = 0x1008FF33 (XF86MyComputer) scancode = 0 ()

code = 158, sym = 0x1008FF26 (XF86Back) scancode = 0 ()

code = 159, sym = 0x1008FF27 (XF86Forward) scancode = 0 ()

code = 161, sym = 0x1008FF2C (XF86Eject) scancode = 0 ()

code = 162, sym = 0x1008FF2C (XF86Eject) scancode = 0 ()

code = 163, sym = 0x1008FF17 (XF86AudioNext) scancode = 0 ()

code = 164, sym = 0x1008FF14 (XF86AudioPlay) scancode = 0 ()

code = 165, sym = 0x1008FF16 (XF86AudioPrev) scancode = 0 ()

code = 166, sym = 0x1008FF15 (XF86AudioStop) scancode = 0 ()

code = 167, sym = 0x1008FF1C (XF86AudioRecord) scancode = 0 ()

code = 168, sym = 0x1008FF3E (XF86AudioRewind) scancode = 0 ()

code = 169, sym = 0x1008FF6E (XF86Phone) scancode = 0 ()

code = 171, sym = 0x1008FF81 (XF86Tools) scancode = 0 ()

code = 172, sym = 0x1008FF18 (XF86HomePage) scancode = 0 ()

code = 173, sym = 0x1008FF73 (XF86Reload) scancode = 0 ()

code = 174, sym = 0x1008FF56 (XF86Close) scancode = 0 ()

code = 177, sym = 0x1008FF78 (XF86ScrollUp) scancode = 0 ()

code = 178, sym = 0x1008FF79 (XF86ScrollDown) scancode = 0 ()

code = 179, sym = 0x28 (parenleft) scancode not found

code = 180, sym = 0x29 (parenright) scancode not found

code = 181, sym = 0x1008FF68 (XF86New) scancode = 0 ()

code = 182, sym = 0xFF66 (Redo) scancode = 121 (Again)

code = 183, sym = 0x1008FF81 (XF86Tools) scancode = 0 ()

code = 184, sym = 0x1008FF45 (XF86Launch5) scancode = 0 ()

code = 185, sym = 0x1008FF65 (XF86MenuKB) scancode = 0 ()

code = 192, sym = 0x1008FFA9 (XF86TouchpadToggle) scancode = 0 ()

code = 195, sym = 0xFF7E (Mode_switch) scancode = 257 (ModeSwitch)

code = 200, sym = 0x1008FF14 (XF86AudioPlay) scancode = 0 ()

code = 201, sym = 0x1008FF31 (XF86AudioPause) scancode = 0 ()

code = 202, sym = 0x1008FF43 (XF86Launch3) scancode = 0 ()

code = 203, sym = 0x1008FF44 (XF86Launch4) scancode = 0 ()

code = 204, sym = 0x1008FF4B (XF86LaunchB) scancode = 0 ()

code = 205, sym = 0x1008FFA7 (XF86Suspend) scancode = 0 ()

code = 206, sym = 0x1008FF56 (XF86Close) scancode = 0 ()

code = 207, sym = 0x1008FF14 (XF86AudioPlay) scancode = 0 ()

code = 208, sym = 0x1008FF97 (XF86AudioForward) scancode = 0 ()

code = 210, sym = 0xFF61 (Print) scancode = 70 (PrintScreen)

code = 212, sym = 0x1008FF8F (XF86WebCam) scancode = 0 ()

code = 215, sym = 0x1008FF19 (XF86Mail) scancode = 0 ()

code = 217, sym = 0x1008FF1B (XF86Search) scancode = 0 ()

code = 219, sym = 0x1008FF3C (XF86Finance) scancode = 0 ()

code = 221, sym = 0x1008FF36 (XF86Shop) scancode = 0 ()

code = 223, sym = 0xFF69 (Cancel) scancode = 120 (Stop)

code = 224, sym = 0x1008FF03 (XF86MonBrightnessDown) scancode = 0 ()

code = 225, sym = 0x1008FF02 (XF86MonBrightnessUp) scancode = 0 ()

code = 226, sym = 0x1008FF32 (XF86AudioMedia) scancode = 0 ()

code = 227, sym = 0x1008FF59 (XF86Display) scancode = 0 ()

code = 228, sym = 0x1008FF04 (XF86KbdLightOnOff) scancode = 0 ()

code = 229, sym = 0x1008FF06 (XF86KbdBrightnessDown) scancode = 0 ()

code = 230, sym = 0x1008FF05 (XF86KbdBrightnessUp) scancode = 0 ()

code = 231, sym = 0x1008FF7B (XF86Send) scancode = 0 ()

code = 232, sym = 0x1008FF72 (XF86Reply) scancode = 0 ()

code = 233, sym = 0x1008FF90 (XF86MailForward) scancode = 0 ()

code = 234, sym = 0x1008FF77 (XF86Save) scancode = 0 ()

code = 235, sym = 0x1008FF5B (XF86Documents) scancode = 0 ()

code = 236, sym = 0x1008FF93 (XF86Battery) scancode = 0 ()

code = 237, sym = 0x1008FF94 (XF86Bluetooth) scancode = 0 ()

code = 238, sym = 0x1008FF95 (XF86WLAN) scancode = 0 ()]]>

Updated copyright to LGPL version 2.1 and year 2010]]>

Datum: Tue, 19 May 2009 19:45:37 +0200

Hi,

this is a set of simple changes which make some of SDL's internal static

arrays constant. The purpose is to shrink the number of write-able

static bytes and thus increase the number of memory pages shared between

SDL applications.

The patch set is against trunk@4513. Each of the attached patch files is

specific to a sub-system. The set is completed by a second mail, because

of the list's 40 KiB limit.

The files readelf-r4513.txt and readelf-const-patch.txt where made by

calling 'readelf -S libSDL.so'. They show the difference in ELF sections

without and with the patch. Some numbers measured on my x86-64:

Before

[13] .rodata PROGBITS 00000000000eaaa0 000eaaa0

0000000000008170 0000000000000000 A 0 0 32

[19] .data.rel.ro PROGBITS 00000000003045e0 001045e0

00000000000023d0 0000000000000000 WA 0 0 32

[23] .data PROGBITS 00000000003076e0 001076e0

0000000000004988 0000000000000000 WA 0 0 32

After

[13] .rodata PROGBITS 00000000000eaaa0 000eaaa0

0000000000009a50 0000000000000000 A 0 0 32

[19] .data.rel.ro PROGBITS 0000000000306040 00106040

0000000000002608 0000000000000000 WA 0 0 32

[23] .data PROGBITS 0000000000309360 00109360

0000000000002e88 0000000000000000 WA 0 0 32

The size of the write-able data section decreased considerably. Some

entries became const-after-relocation, while most of its content went

straight into the read-only data section.

Best regards, Thomas]]>

Subject: Re: SDL: Keyboard layout unknown

I have attached a diff which will add an additional keyboard layout to

the x11 driver. The issue arose, when I moved to ubuntu intrepid. I was

only able to map the keys available on my keyboard. The differences to

the existing keyboard was the mapping of HOME,UP,DOWN and some other

keys.

Now only one issue remains. Dead keys (e.g. ^, ` ') on european

keyboards do not generate a "scancode" event. Just a text event when the

key is composed (e.g. ?? ?? ??).]]>