--- /dev/null
+/* Keymap for Scandinavian keyboard.
+ * by Mikal Villa, mikal.villa@gmail.com
+ * preliminary version, 8 Jun 2009
+ */
+
+/* scan-code unsh Shift Alt AltGr Alt+Sh Ctrl */
+/* ==================================================================== */
+ K(A) = { L('a'), 'A', A('a'), 'a', 'A', C('A') },
+ K(B) = { L('b'), 'B', A('b'), 'b', 'B', C('B') },
+ K(C) = { L('c'), 'C', A('c'), 'c', 'C', C('C') },
+ K(D) = { L('d'), 'D', A('d'), 'd', 'D', C('D') },
+ K(E) = { L('e'), 'E', A('e'), 'e', 'E', C('E') },
+ K(F) = { L('f'), 'F', A('f'), 'f', 'F', C('F') },
+ K(G) = { L('g'), 'G', A('g'), 'g', 'G', C('G') },
+ K(H) = { L('h'), 'H', A('h'), 'h', 'H', C('H') },
+ K(I) = { L('i'), 'I', A('i'), 'i', 'I', C('I') },
+ K(J) = { L('j'), 'J', A('j'), 'j', 'J', C('J') },
+ K(K) = { L('k'), 'K', A('k'), 'k', 'K', C('K') },
+ K(L) = { L('l'), 'L', A('l'), 'l', 'L', C('L') },
+ K(M) = { L('m'), 'M', A('m'), 0346, 'M', C('M') },
+ K(N) = { L('n'), 'N', A('n'), 'n', 'N', C('N') },
+ K(O) = { L('o'), 'O', A('o'), 'o', 'O', C('O') },
+ K(P) = { L('p'), 'P', A('p'), 'p', 'P', C('P') },
+ K(Q) = { L('q'), 'Q', A('q'), '@', 'Q', C('Q') },
+ K(R) = { L('r'), 'R', A('r'), 'r', 'R', C('R') },
+ K(S) = { L('s'), 'S', A('s'), 's', 'S', C('S') },
+ K(T) = { L('t'), 'T', A('t'), 't', 'T', C('T') },
+ K(U) = { L('u'), 'U', A('u'), 'u', 'U', C('U') },
+ K(V) = { L('v'), 'V', A('v'), 'v', 'V', C('V') },
+ K(W) = { L('w'), 'W', A('w'), 'w', 'W', C('W') },
+ K(X) = { L('x'), 'X', A('x'), 'x', 'X', C('X') },
+ K(Y) = { L('y'), 'Y', A('y'), 'y', 'Y', C('Y') },
+ K(Z) = { L('z'), 'Z', A('z'), 'z', 'Z', C('Z') },
+ K(1) = { '1', '!', A('1'), '1', '!', C('A') },
+ K(2) = { '2', '"', A('2'), '@', '@', C('@') },
+ K(3) = { '3', '#', A('3'), 156, '#', C('C') },
+ K(4) = { '4', ' ', A('4'), '$', '$', C('D') },
+ K(5) = { '5', '%', A('5'), '5', '%', C('E') },
+ K(6) = { '6', '&', A('6'), '6', '^', C('^') },
+ K(7) = { '7', '/', A('7'), '{', '&', C('G') },
+ K(8) = { '8', '(', A('8'), '[', '*', C('H') },
+ K(9) = { '9', ')', A('9'), ']', '(', C('I') },
+ K(0) = { '0', '=', A('0'), '}', ')', C('@') },
+ K(ENTER) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') },
+ K(ESCAPE) = { C('['), C('['), CA('['),C('['), C('['), C('[') },
+ K(BACKSPACE) = { C('H'), C('H'), CA('H'),C('H'), C('H'), DEL },
+ K(TAB) = { C('I'), C('I'), CA('I'),C('I'), C('I'), C('I') },
+ K(SPACEBAR) = { ' ', ' ', A(' '), ' ', ' ', C('@') },
+ K(DASH) = { '+', '?', 0341, '\\', '_', C('_') },
+ K(EQUAL) = { '\\', '`', A('\''),'\'', '+', C('@') },
+ K(OPEN_BRACKET) = { 134, 143, 0201, '[', '{', C('[') },
+ K(CLOSE_BRACKET) = { '\"', '^', A('+'), '~', ']', C(']') },
+ K(BACKSLASH) = { 39, '*', A('#'), '\\', '|', C('\\') },
+ K(SEMICOLON) = { 248, L(248), '0', ';', ':', C('@') },
+ K(APOSTROPH) = { 230, L(230), '0', '\'', '"', C('@') },
+ K(GRAVE_ACCENT) = { '|', '|', '^', '`', '~', C('^') },
+ K(COMMA) = { ',', ';', A(','), ',', '<', C('@') },
+ K(PERIOD) = { '.', ':', A('.'), '.', '>', C('@') },
+ K(SLASH) = { '-', '_', A('-'), '/', '?', C('_') },
+ K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK },
+ K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 },
+ K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 },
+ K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 },
+ K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 },
+ K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 },
+ K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 },
+ K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 },
+ K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 },
+ K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 },
+ K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 },
+ K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 },
+ K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 },
+ K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK },
+ K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT },
+ K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME },
+ K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP },
+ K(DELETE) = { DEL, DEL, A(DEL), DEL, A(DEL), DEL },
+ K(END) = { END, END, AEND, AEND, AEND, CEND },
+ K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN },
+ K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT },
+ K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT },
+ K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN },
+ K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP },
+ K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK },
+ K(KP_SLASH) = { '-', '-', A('-'), '/', A('-'), C('_') },
+ K(KP_STAR) = { '*', '*', A('*'), '*', '*', C('@') },
+ K(KP_DASH) = { '-', '-', AMIN, AMIN, '-', CMIN },
+ K(KP_PLUS) = { '+', '+', APLUS, APLUS, '+', CPLUS },
+ K(KP_ENTER) = { C('M'), C('M'), CA('M'),C('M'), CA('M'),C('J') },
+ K(KP_1) = { NEND, '1', AEND, AEND, '1', CEND },
+ K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, '2', CDOWN },
+ K(KP_3) = { NPGDN, '3', APGDN, APGDN, '3', CPGDN },
+ K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, '4', CLEFT },
+ K(KP_5) = { NMID, '5', AMID, AMID, '5', CMID },
+ K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT },
+ K(KP_7) = { NHOME, '7', AHOME, AHOME, '7', CHOME },
+ K(KP_8) = { NUP, '8', AUP, AUP, '8', CUP },
+ K(KP_9) = { NPGUP, '9', APGUP, APGUP, '9', CPGUP },
+ K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, '0', CINSRT },
+ K(KP_PERIOD) = { NDEL, '.', A(DEL), DEL, '.', DEL },
+ K(EUROPE_2) = { '<', '>', A('<'), '|', '>', C('@') },
+ K(APPLICATION) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') },
+ K(SYSREQ) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') },
+ K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL },
+ K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT },
+ K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT },
+ K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT },
+ K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL },
+ K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT },
+ K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT },
+ K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT }