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