[Touch CDMA Android Development] kallt_kaffe:
I've modified arch/arm/mach-msm/board-kaiser-keypad.c to remap the keyboard to work correctly with scandinavian keyboards and compiled a kernel.

I've remapped everything except for the scandinavian specific keys and I'm not sure how to proceed.

I need to know how to produce ÅÄÖ(swedish) and ÆØ (norwegian) but I do not know if there are any KEY_XXXX defined for it, either in shifted, or non-shifted mode.

This is what I've done so far:

//0
{
{KEY_LEFTCTRL, KEY_SEMICOLON, SHIFT_BIT, "Menu/:"}, //<- I repleace this key with ctrl
{KEY_BACK, KEY_WLAN, FALSE, "OK/WLAN"},
{KEY_TAB, KEY_TAB, FALSE, "TAB"},
{KEY_V, KEY_8, SHIFT_BIT, "V/*"},
{KEY_SPACE, KEY_COMMA, FALSE, "SPACE/,"},
{KEY_DOT, KEY_0, FALSE, "DOT/0"},
{KEY_ENTER, KEY_ENTER, FALSE, "ENTER"}
},
//1
{
{KEY_MAX, KEY_MAX, FALSE, "none"},
{KEY_MAX, KEY_MAX, FALSE, "none"},
{KEY_MAX, KEY_MAX, FALSE, "none"},
{KEY_MENU, KEY_MENU, FALSE, "Pad Menu"},
{KEY_END, KEY_END, FALSE, "End"}, //red
{KEY_BACK, KEY_BACK, FALSE, "Pad OK"},//we don't have Back or C key ,so I remaped OK
{KEY_SEND, KEY_SEND, FALSE, "Send"} //call
},
//2
{
{KEY_FN, KEY_FN, FALSE, "Fn"},
{KEY_X, KEY_7, SHIFT_BIT, "X/&"},
{KEY_C, KEY_MINUS, FALSE, "C/-"},
{KEY_G, KEY_EQUAL, SHIFT_BIT, "G/+"},
{KEY_B, KEY_7, FALSE, "B/7"},
{KEY_M, KEY_9, FALSE, "M/9"},
{KEY_BACKSPACE, KEY_DELETE, FALSE, "Back./Del"}
},
//3
{
{KEY_RIGHTSHIFT, KEY_RIGHTSHIFT, FALSE, "Shift"},
{KEY_Z, KEY_APOSTROPHE, FALSE, "Z/'"},
{KEY_F, KEY_SLASH, FALSE, "F//"},
{KEY_Y, KEY_1, FALSE, "Y/1"},
{KEY_H, KEY_4, FALSE, "H/4"},
{KEY_N, KEY_8, FALSE, "N/8"},
{KEY_L, KEY_EQUAL, FALSE, "L/="}
},
//4
{
{KEY_A, KEY_MINUS, SHIFT_BIT, "A/_"},
{KEY_S, KEY_1, SHIFT_BIT, "S/!"},
{KEY_D, KEY_BACKSLASH, FALSE, "D/\\"},
{KEY_T, KEY_EQUAL, FALSE, "T/="},
{KEY_J, KEY_5, FALSE, "J/5"},
{KEY_K, KEY_6, FALSE, "K/6"},
{KEY_P, KEY_2, SHIFT_BIT, "P/@"}
},
//5
{
{KEY_Q, KEY_SLASH, SHIFT_BIT, "Q/?"},
{KEY_W, KEY_3, SHIFT_BIT, "W/#"},
{KEY_E, KEY_9, SHIFT_BIT, "E/("},
{KEY_R, KEY_0, SHIFT_BIT, "R/)"},
{KEY_U, KEY_2, FALSE, "U/2"},
{KEY_I, KEY_3, FALSE, "I/3"},
{KEY_O, KEY_9, SHIFT_BIT, "O/("}
},
//6
{
{KEY_MAX, KEY_MAX, FALSE, "61"},
{KEY_MAX, KEY_MAX, FALSE, "62"},
{KEY_MAX, KEY_MAX, FALSE, "63"},
{KEY_BACKSLASH, KEY_F1, FALSE, "Kbd LeftSoft"},
{KEY_MAX, KEY_MAX, FALSE, "65"},
{KEY_SEMICOLON, KEY_F6, FALSE, "Kbd RightSoft"},
{KEY_MAX, KEY_MAX, FALSE, "67"}
},
//7
{
{KEY_BACK, KEY_SEMICOLON, FALSE, "Left side OK"},
{KEY_MAX, KEY_MAX, FALSE, "72"},
{KEY_TAB, KEY_F7, FALSE, "VoiceMemo"},
{KEY_HOME, KEY_HOME, FALSE, "Pad IE"},
{KEY_VOLUMEUP, KEY_RIGHT, FALSE, "Pad RightSoft"},
{KEY_MAIL, KEY_MAIL, FALSE, "Pad Mail"},
{KEY_VOLUMEDOWN, KEY_LEFT, FALSE, "Pad LeftSoft"}
},
};

I added semicolon to F6 as the scandinavian lacks a semicolon (I know it's also on FN->left-ok but that's kind of complicated to use).

I still need to change:

{KAISER_GPIO_KBD_LEFT,0,KEY_DOWN,1, KEY_COMMA} to Æ

{KAISER_GPIO_KBD_UP,0,KEY_LEFT,1, KEY_PAGEUP} to Å

{KAISER_GPIO_KBD_DOWN,0,KEY_RIGHT,1, KEY_PAGEDOWN} to Ø

and:

{KEY_L, KEY_EQUAL, FALSE, "L/="} to Ä

{KEY_O, KEY_9, SHIFT_BIT, "O/("} to Ö

I will have to sacrifice pageup and pagedown though.

Any ideas om how to proceed from here?

EDIT: Forget it... I don't think it is possible to add anything that isn't directly accessible on an US keyboard with or without the shift-key. Holding A or O will pop-up onscreen alternatives which makes inputing nordic characters possible without that much hassle anyway.