This is my first patch to DFB so apologies if it is not the preferred
format. I have included it both inline and as an attachment just in case
one is more preferable than the other.

I tried sending to directfb-patc...@directfb.org, but got a mailbox 
non-existent error.

signed-off-by: Nicholas Beck <nb...@mpc-data.co.uk>

This patch fixes a small bug in the keymap loading functionality for
linux-input USB keyboards. There is also a sample UK keymap file that
may be of use to others (as a starting point at least), please feel free
to break it out of the patch if you wish.

Regards,
Nicholas Beck

--- src/core/input.c.orig    2009-01-05 12:11:48.000000000 +0000
+++ src/core/input.c    2009-01-05 12:12:08.000000000 +0000
@@ -1446,10 +1446,10 @@ load_keymap( CoreInputDevice           *
                continue;

           /* check for lock state change */
-          if( strncmp(buffer,"capslock:",9) ) { lockstate |=
DILS_CAPS; continue; }
-          if( strncmp(buffer,":capslock",9) ) { lockstate &=
~DILS_CAPS; continue; }
-          if( strncmp(buffer,"numlock:",8)  ) { lockstate |=
DILS_NUM;  continue; }
-          if( strncmp(buffer,":numlock",8)  ) { lockstate &=
~DILS_NUM;  continue; }
+          if( !strncmp(buffer,"capslock:",9) ) { lockstate |=
DILS_CAPS; continue; }
+          if( !strncmp(buffer,":capslock",9) ) { lockstate &=
~DILS_CAPS; continue; }
+          if( !strncmp(buffer,"numlock:",8)  ) { lockstate |=
DILS_NUM;  continue; }
+          if( !strncmp(buffer,":numlock",8)  ) { lockstate &=
~DILS_NUM;  continue; }

           i = sscanf( buffer, " keycode %i = %s = %s %s %s %s %i\n",
                     &keycode, diki, diks[0], diks[1], diks[2], diks[3],
&dummy );


--- dummy-usb_kbd.map    1970-01-01 01:00:00.000000000 +0100
+++ usb_kbd.map    2009-01-05 13:37:40.000000000 +0000
@@ -0,0 +1,93 @@
+# Keymap for SEJIN USB Mini Keyboard - may well be ok for most UK keyboards
+
+keycode 1 = ESCAPE = ESCAPE
+keycode 2 = 1 = 1 EXCLAMATION_MARK
+keycode 3 = 2 = 2 QUOTATION
+keycode 4 = 3 = 3 NUMBER_SIGN
+keycode 5 = 4 = 4 DOLLAR_SIGN
+keycode 6 = 5 = 5 PERCENT_SIGN
+keycode 7 = 6 = 6 CIRCUMFLEX_ACCENT
+keycode 8 = 7 = 7 AMPERSAND
+keycode 9 = 8 = 8 ASTERISK
+keycode 10 = 9 = 9 PARENTHESIS_LEFT
+keycode 11 = 0 = 0 PARENTHESIS_RIGHT
+keycode 12 = MINUS_SIGN = MINUS_SIGN UNDERSCORE
+keycode 13 = EQUALS_SIGN = EQUALS_SIGN PLUS_SIGN
+keycode 14 = BACKSPACE = BACKSPACE
+keycode 15 = TAB = TAB
+keycode 16 = Q = SMALL_Q CAPITAL_Q
+keycode 17 = W = SMALL_W CAPITAL_W
+keycode 18 = E = SMALL_E CAPITAL_E
+keycode 19 = R = SMALL_R CAPITAL_R
+keycode 20 = T = SMALL_T CAPITAL_T
+keycode 21 = Y = SMALL_Y CAPITAL_Y
+keycode 22 = U = SMALL_U CAPITAL_U
+keycode 23 = I = SMALL_I CAPITAL_I
+keycode 24 = O = SMALL_O CAPITAL_O
+keycode 25 = P = SMALL_P CAPITAL_P
+keycode 26 = SQUARE_BRACKET_LEFT = SQUARE_BRACKET_LEFT CURLY_BRACKET_LEFT
+keycode 27 = SQUARE_BRACKET_RIGHT = SQUARE_BRACKET_RIGHT
CURLY_BRACKET_RIGHT
+keycode 28 = ENTER = RETURN
+keycode 29 = CONTROL_L = CONTROL CONTROL
+keycode 30 = A = SMALL_A CAPITAL_A
+keycode 31 = S = SMALL_S CAPITAL_S
+keycode 32 = D = SMALL_D CAPITAL_D
+keycode 33 = F = SMALL_F CAPITAL_F
+keycode 34 = G = SMALL_G CAPITAL_G
+keycode 35 = H = SMALL_H CAPITAL_H
+keycode 36 = J = SMALL_J CAPITAL_J
+keycode 37 = K = SMALL_K CAPITAL_K
+keycode 38 = L = SMALL_L CAPITAL_L
+keycode 39 = SEMICOLON = SEMICOLON COLON
+keycode 40 = QUOTE_RIGHT = APOSTROPHE AT
+keycode 41 = QUOTE_LEFT  = GRAVE_ACCENT VERTICAL_BAR
+keycode 42 = SHIFT_L = SHIFT SHIFT
+keycode 43 = NUMBER_SIGN = NUMBER_SIGN TILDE
+keycode 44 = Z = SMALL_Z CAPITAL_Z
+keycode 45 = X = SMALL_X CAPITAL_X
+keycode 46 = C = SMALL_C CAPITAL_C
+keycode 47 = V = SMALL_V CAPITAL_V
+keycode 48 = B = SMALL_B CAPITAL_B
+keycode 49 = N = SMALL_N CAPITAL_N
+keycode 50 = M = SMALL_M CAPITAL_M
+keycode 51 = COMMA = COMMA LESS_THAN_SIGN
+keycode 52 = PERIOD = PERIOD GREATER_THAN_SIGN
+keycode 53 = SLASH = SLASH QUESTION_MARK
+keycode 54 = SHIFT_R = SHIFT SHIFT
+#  keycode 55 = KP_MULT
+keycode 56 = ALT_L = ALT ALT
+keycode 57 = SPACE = SPACE
+keycode 58 = CAPS_LOCK = CAPS_LOCK
+keycode 59 = F1 = F1
+keycode 60 = F2 = F2
+keycode 61 = F3 = F3
+keycode 62 = F4 = F4
+keycode 63 = F5 = F5
+keycode 64 = F6 = F6
+keycode 65 = F7 = F7
+keycode 66 = F8 = F8
+keycode 67 = F9 = F9
+keycode 68 = F10 = F10
+keycode 69 = NUM_LOCK = NUM_LOCK
+keycode 70 = SCROLL_LOCK = SCROLL_LOCK
+keycode 86 = LESS_SIGN = BACKSLASH VERTICAL_BAR
+keycode 87 = F11 = F11
+keycode 88 = F12 = F12
+keycode 99 = PRINT = PRINT
+keycode 100 = ALT_R = ALTGR ALTGR
+keycode 102 = HOME = HOME
+keycode 103 = UP = CURSOR_UP
+keycode 104 = PAGE_UP = PAGE_UP
+keycode 105 = LEFT = CURSOR_LEFT
+keycode 106 = RIGHT = CURSOR_RIGHT
+keycode 107 = END = END
+keycode 108 = DOWN = CURSOR_DOWN
+keycode 109 = PAGE_DOWN = PAGE_DOWN
+keycode 110 = INSERT = INSERT
+keycode 111 = DELETE = DELETE
+
+keycode 119 = PAUSE = PAUSE BREAK
+
+keycode 125 = META_L = META
+keycode 127 = SUPER_L = SUPER
+

--- src/core/input.c.orig	2009-01-05 12:11:48.000000000 +0000
+++ src/core/input.c	2009-01-05 12:12:08.000000000 +0000
@@ -1446,10 +1446,10 @@ load_keymap( CoreInputDevice           *
                continue;
 
           /* check for lock state change */
-          if( strncmp(buffer,"capslock:",9) ) { lockstate |=  DILS_CAPS; continue; }
-          if( strncmp(buffer,":capslock",9) ) { lockstate &= ~DILS_CAPS; continue; }
-          if( strncmp(buffer,"numlock:",8)  ) { lockstate |=  DILS_NUM;  continue; }
-          if( strncmp(buffer,":numlock",8)  ) { lockstate &= ~DILS_NUM;  continue; }
+          if( !strncmp(buffer,"capslock:",9) ) { lockstate |=  DILS_CAPS; continue; }
+          if( !strncmp(buffer,":capslock",9) ) { lockstate &= ~DILS_CAPS; continue; }
+          if( !strncmp(buffer,"numlock:",8)  ) { lockstate |=  DILS_NUM;  continue; }
+          if( !strncmp(buffer,":numlock",8)  ) { lockstate &= ~DILS_NUM;  continue; }
 
           i = sscanf( buffer, " keycode %i = %s = %s %s %s %s %i\n",
                     &keycode, diki, diks[0], diks[1], diks[2], diks[3], &dummy );

# Keymap for SEJIN USB Mini Keyboard - may well be ok for most UK keyboards

keycode 1 = ESCAPE = ESCAPE
keycode 2 = 1 = 1 EXCLAMATION_MARK
keycode 3 = 2 = 2 QUOTATION
keycode 4 = 3 = 3 NUMBER_SIGN
keycode 5 = 4 = 4 DOLLAR_SIGN
keycode 6 = 5 = 5 PERCENT_SIGN
keycode 7 = 6 = 6 CIRCUMFLEX_ACCENT
keycode 8 = 7 = 7 AMPERSAND
keycode 9 = 8 = 8 ASTERISK
keycode 10 = 9 = 9 PARENTHESIS_LEFT
keycode 11 = 0 = 0 PARENTHESIS_RIGHT
keycode 12 = MINUS_SIGN = MINUS_SIGN UNDERSCORE 
keycode 13 = EQUALS_SIGN = EQUALS_SIGN PLUS_SIGN
keycode 14 = BACKSPACE = BACKSPACE
keycode 15 = TAB = TAB
keycode 16 = Q = SMALL_Q CAPITAL_Q
keycode 17 = W = SMALL_W CAPITAL_W
keycode 18 = E = SMALL_E CAPITAL_E
keycode 19 = R = SMALL_R CAPITAL_R
keycode 20 = T = SMALL_T CAPITAL_T
keycode 21 = Y = SMALL_Y CAPITAL_Y
keycode 22 = U = SMALL_U CAPITAL_U
keycode 23 = I = SMALL_I CAPITAL_I
keycode 24 = O = SMALL_O CAPITAL_O
keycode 25 = P = SMALL_P CAPITAL_P
keycode 26 = SQUARE_BRACKET_LEFT = SQUARE_BRACKET_LEFT CURLY_BRACKET_LEFT
keycode 27 = SQUARE_BRACKET_RIGHT = SQUARE_BRACKET_RIGHT CURLY_BRACKET_RIGHT
keycode 28 = ENTER = RETURN
keycode 29 = CONTROL_L = CONTROL CONTROL
keycode 30 = A = SMALL_A CAPITAL_A
keycode 31 = S = SMALL_S CAPITAL_S
keycode 32 = D = SMALL_D CAPITAL_D
keycode 33 = F = SMALL_F CAPITAL_F
keycode 34 = G = SMALL_G CAPITAL_G
keycode 35 = H = SMALL_H CAPITAL_H
keycode 36 = J = SMALL_J CAPITAL_J
keycode 37 = K = SMALL_K CAPITAL_K
keycode 38 = L = SMALL_L CAPITAL_L
keycode 39 = SEMICOLON = SEMICOLON COLON
keycode 40 = QUOTE_RIGHT = APOSTROPHE AT
keycode 41 = QUOTE_LEFT  = GRAVE_ACCENT VERTICAL_BAR
keycode 42 = SHIFT_L = SHIFT SHIFT
keycode 43 = NUMBER_SIGN = NUMBER_SIGN TILDE
keycode 44 = Z = SMALL_Z CAPITAL_Z
keycode 45 = X = SMALL_X CAPITAL_X
keycode 46 = C = SMALL_C CAPITAL_C
keycode 47 = V = SMALL_V CAPITAL_V
keycode 48 = B = SMALL_B CAPITAL_B
keycode 49 = N = SMALL_N CAPITAL_N
keycode 50 = M = SMALL_M CAPITAL_M
keycode 51 = COMMA = COMMA LESS_THAN_SIGN
keycode 52 = PERIOD = PERIOD GREATER_THAN_SIGN
keycode 53 = SLASH = SLASH QUESTION_MARK
keycode 54 = SHIFT_R = SHIFT SHIFT
#  keycode 55 = KP_MULT
keycode 56 = ALT_L = ALT ALT
keycode 57 = SPACE = SPACE
keycode 58 = CAPS_LOCK = CAPS_LOCK
keycode 59 = F1 = F1
keycode 60 = F2 = F2
keycode 61 = F3 = F3
keycode 62 = F4 = F4
keycode 63 = F5 = F5
keycode 64 = F6 = F6
keycode 65 = F7 = F7
keycode 66 = F8 = F8
keycode 67 = F9 = F9
keycode 68 = F10 = F10
keycode 69 = NUM_LOCK = NUM_LOCK
keycode 70 = SCROLL_LOCK = SCROLL_LOCK
keycode 86 = LESS_SIGN = BACKSLASH VERTICAL_BAR
keycode 87 = F11 = F11
keycode 88 = F12 = F12
keycode 99 = PRINT = PRINT
keycode 100 = ALT_R = ALTGR ALTGR
keycode 102 = HOME = HOME
keycode 103 = UP = CURSOR_UP
keycode 104 = PAGE_UP = PAGE_UP
keycode 105 = LEFT = CURSOR_LEFT
keycode 106 = RIGHT = CURSOR_RIGHT
keycode 107 = END = END
keycode 108 = DOWN = CURSOR_DOWN
keycode 109 = PAGE_DOWN = PAGE_DOWN
keycode 110 = INSERT = INSERT
keycode 111 = DELETE = DELETE

keycode 119 = PAUSE = PAUSE BREAK

keycode 125 = META_L = META
keycode 127 = SUPER_L = SUPER

_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to