misc/126841: Add eee900 keyboard layout to
/usr/share/syscons/keymaps/
Peter
pb at ludd.ltu.se
Tue Aug 26 01:20:03 UTC 2008
>Number: 126841
>Category: misc
>Synopsis: Add eee900 keyboard layout to /usr/share/syscons/keymaps/
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Aug 26 01:20:02 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Peter
>Release: FreeBSD 7 i386
>Organization:
>Environment:
>Description:
Console keymap for FreeBSD on Asus Eee 900 linux variant keyboard netbook.
I suggest adding this to the '/usr/share/syscons/keymaps/' directory.
For Asus Eee models with Swedish, Danish, Norwegian, Finnish or Icelandic
keyboard layout. In particular this fixes the '|' character on Z and +? key.
The part name for the keyboard:
Asus Nordic (SE-DK-NW-FI-IS) Keyboard 80-Keys Linux
# $FreeBSD: src/share/syscons/keymaps/nordic_eee900.kbd,v 1.0 2008/08/26 02:38:48 pb Exp $
# alt
# scan cntrl alt alt cntrl lock
# code base shift cntrl shift alt shift cntrl shift state
# ------------------------------------------------------------------
000 nop nop nop nop nop nop nop nop O
001 esc esc esc esc esc esc debug esc O
002 '1' '!' nop nop nop nop nop nop O
003 '2' '"' nul nul '@' '@' nul nul O
004 '3' '#' nop nop 163 nop nop nop O
005 '4' 164 nop nop '$' nop nop nop O
006 '5' '%' nop nop nop nop nop nop O
007 '6' '&' nop nop nop nop nop nop O
# Alt + Shift + 7 = ÷
008 '7' '/' nop nop '{' '÷' nop nop O
009 '8' '(' nop nop '[' nop nop nop O
010 '9' ')' nop nop ']' nop gs nop O
011 '0' '=' nop nop '}' nop nop nop O
012 '+' '?' nop nop '\' nop fs nop O
# For left of backspace key, gives with Alt=' and Alt+Shift+Key=|
013 128 '`' nop nop 39 '|' nop nop O
014 bs bs del del bs bs del del O
015 ht btab nop nop ht btab nop nop O
016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
017 'w' 'W' etb etb 'w' 'W' etb etb C
# Alt + Ctrl + E = French e (as in café)
018 'e' 'E' enq enq 164 'E' 'é' enq C
# Alt + R = Copyright sign
019 'r' 'R' dc2 dc2 '®' 'R' dc2 dc2 C
020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
021 'y' 'Y' em em 'y' 'Y' em em C
# Alt + U = Mikro, Alt + Shift + U = German u
022 'u' 'U' nak nak 'µ' 'U' 'ü' 'Ü' C
023 'i' 'I' ht ht 'i' 'I' ht ht C
# Alt + O = Norwegian/Danish Ö
024 'o' 'O' si si 'ø' 'Ø' si si C
# Alt + P = Pi
025 'p' 'P' dle dle '¶' 'P' dle dle C
026 229 197 nop nop '}' ']' nop nop C
027 168 '^' nop nop '~' nop nop nop O
028 cr cr nl nl cr cr nl nl O
029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
# Alt + A = At sign, Ctrl+Alt = ae, Ctrl+Alt+Shift = AE
030 'a' 'A' soh soh '@' 'A' 'æ' 'Æ' C
031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
032 'd' 'D' eot eot 'd' 'D' eot eot C
033 'f' 'F' ack ack 'f' 'F' ack ack C
034 'g' 'G' bel bel 'g' 'G' bel bel C
035 'h' 'H' bs bs 'h' 'H' bs bs C
036 'j' 'J' nl nl 'j' 'J' nl nl C
037 'k' 'K' vt vt 'k' 'K' vt vt C
038 'l' 'L' ff ff 'l' 'L' ff ff C
039 246 214 nop nop '|' '\' nop nop C
040 228 196 nop nop '{' '[' nop nop C
041 167 189 nop nop '\' '|' nop nop O
042 lshift lshift lshift lshift lshift lshift lshift lshift O
043 ''' '*' nop nop nop nop nop nop O
# Alt + Z = Pipe
044 'z' 'Z' sub sub '|' 'Z' sub sub C
045 'x' 'X' can can 'x' 'X' can can C
046 'c' 'C' etx etx 'c' 'C' etx etx C
047 'v' 'V' syn syn 'v' 'V' syn syn C
# Ctrl + Shift + B = German B
048 'b' 'B' stx 'ß' 'b' 'B' stx stx C
049 'n' 'N' so so 'n' 'N' so so C
# Alt + M = Mikro
050 'm' 'M' cr cr 181 'M' cr cr C
# Alt + [,/;] = <
051 ',' ';' nop nop '<' '<' nop nop O
# Alt + [./:] = >
052 '.' ':' nop nop '>' '>' nop nop O
053 '-' '_' us nop '/' '?' nop nop O
054 rshift rshift rshift rshift rshift rshift rshift rshift O
055 '*' '*' '*' '*' '*' '*' '*' '*' O
056 lalt lalt lalt lalt lalt lalt lalt lalt O
057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
058 clock clock clock clock clock clock clock clock O
059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
069 nlock nlock nlock nlock nlock nlock nlock nlock O
070 slock slock slock slock slock slock slock slock O
071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
083 del '.' '.' '.' '.' '.' boot boot N
084 nop nop nop nop nop nop nop nop O
085 nop nop nop nop nop nop nop nop O
086 '<' '>' nop nop '|' nop nop nop O
087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
089 cr cr nl nl cr cr nl nl O
090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
091 '/' '/' '/' '/' '/' '/' '/' '/' N
092 nscr pscr debug debug nop nop nop nop O
093 ralt ralt ralt ralt ralt ralt ralt ralt O
094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
# Alt+Arrow up = Page up
095 fkey50 fkey50 fkey50 fkey50 fkey51 fkey50 fkey50 fkey50 O
096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
# Alt+Arrow left = Home
097 fkey53 fkey53 fkey53 fkey53 fkey49 fkey53 fkey53 fkey53 O
# Alt+Arrow right = End
098 fkey55 fkey55 fkey55 fkey55 fkey57 fkey55 fkey55 fkey55 O
099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
# Alt+Arrow down = Page down
100 fkey58 fkey58 fkey58 fkey58 fkey59 fkey58 fkey58 fkey58 O
101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
104 slock saver slock saver susp nop susp nop O
105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
108 nop nop nop nop nop nop nop nop O
Same compressed with bzip -9z:
begin 0 nordic_eee900.kbd.bz2
M0EIH.3%!62936?2"?QP`"#7_G_$P"`!_______________\``0,``0`!1($@
M`,1@"$YH^>YAZWM3C&[S8.V6/8`#0)2*FGIJ!H&@&@``R:-&@:`8 at T!D``'J
M>"FF"#4](&U($E-,1CU!D``FF```$8````1@`-(VJ,J/4R`9&@```T`#0!D`
M```:```)-2BC)ZIZGJ?HD```````$8`F$9&:`"8``<`#330`&0``#0``#0``
M,@`!H:`"1)`"8$4\0283(R9-`#1H`::```-,0&C1H:01`!`O\F2B5%`TI(MW
MWK/97[VK&"0M$%D]:2%>4>%FR!SX1D4\CA\%8T#7MK=!58+X_1IR$"0GDVI-
M$@2DA2``HH5H5`X*`<!@(3)!)WY)]:LJYUF\)N#$6,/[6A*%Y`GYVX67#X=-
M"%V`:R6"BXT4R(XZ')0Y*'0P&2T4O2Y',AEL'+0ICB8V4`(W5+TO;'*AF01B
M)`QU3$4&,%%8R+`CC1Q4&>JVZ!NC.!M=NFI_AR>UCS.WNW:7;L(TU<C"<SST
M(W2K0I]SI8#:)#$;`L,9QHD:&PG)U.#4ZT-A.*6PEL#G0I%A545-,D25:T,;
M),IU9*F%BM>U[WM@?`Y[G0Q4TXI*J:5'?/JZ6=6>UUKK"ULAIKG8OH8/&S*3
MX886)K.M*UE&L34((((7.[M&$(UF=4]JVEF%<+0AJKKXG&0DCR4)":7HJD@`
MFU:KY9:KK:LIYJ;-5!HDY##M,;`"9B6M)DZ3%,T*23)%5M=M^O4L%>L%6BM%
M965E9=<[HS at 41ILXA3!2RUK4S%XO'"#!X.9TO%I"ST#-H;%A,)*]B0'RH$94
M$K@]!F;/7HZ/;7=:\_&B3_*#$A6JH:);J`CQH%DPM5>P1+GS0$FI@`@@&@<<
MOHP<3J:12T<7Y6R$J:6CHZ.O_;2TM at DDDDDDDDDDDDE6Q$#-V+LT*JJ)18LM
M:,U;JJ--42KES*J5542L"@U2BQ**DG8D_$?2P@`PY_/X$ID@=U\D!1,E$SV]
MS&]P-[>R]E[,C,K"YA<R&(2'8JM-EOTV;MQT1(=3;&L\\\LL=?7%6^$7N"[`
M>Z+:]XKQ7BO%O%@+`50L!8"MX^K<^KCA\!W.:><<XY/./+.2>:?1JF82<HUH
MS^P1GL\BC^_*(YMC8Y,=4]I4G*=6M-F6/#)]#U)'L.G&-$X_!LG#Q:UFA\H#
MPX0W3`[G*#COK+F]U'PI.//^/Q_1Z>G#NJ_\@%M<T/>CV?=5LU6QL9IE2H5J
MS334O=;;:>>>=BY5S]5COZ)\[*%`6"HP6"K`6"HD1(B18*B1$B)$2(P%D@"*
MJBK]E55192*HJK34*1)N4NM`B$`P.V?6E^/:_?Z:.EW8`KW*!3:\Y".`=?YW
M^8?'%?QK-5GEGOQ&MUSSI`ME%6D(3$+9@!:IMIH`)BGM$@A`202B!202$"D@
MD("2"0@)()"`J6(2$!4L0K80!`T@%0 at HZ4"-0T$>*,HBCXV2E7/)MD2E*FJ<
M"=%6`%U5X7R02D*40*)1B(IHF)8LS!M9"8E$G/*,6&8#"^>%I##+*F6:=)$D
M)F=3A"N8`4PR9L6:(9B69CH,QM:,69B,H6-KY7U<8OEDSS<,6J\A"<(+(`5O
M))))))))Y>:,:8P-S2M=:8I?ACBIT81+.IP at L0!2\DDDDFC,2<68B`3/.J5]
M]97IHABSJ0 at KP!2X`*050%4!5(*`I"^W16W68;KG%@Q8;IX(HB44U7`3W`-I
M- at 41`$$0`R&V6647>BE6Y[I(P-[.\@!:UX`H("Z@:5:1K.EUUU*&!+UB()&P
M`I"A`!,J)HTG&,JNGM)5 at S,IR`F`KL`HUM%+;78FJNSD[X32!\>/#-,`V,)L
MT%$&48M/(?<&1BC86P3N7;VVT1'F-"(I,Y*1,`35MA94DSFD6UJ$8EC5E$IB
ML06U1!%#?5,TL*$@H*%)+P%A$46XU8A198Z3'(F9C5(-A`1("(R at X/L85=^S
MK\,>@/]6-/ODVLM.]D$-\$0R$<I6)4&?4`,ZJ at HMV^1`,0G.!X&$]U,B"&B0
M at 5FT!I5EQG2`6UPQUCI82,=F=H78RH[^YWY7:%2<=6T[L^::;RR'3"7\'<'"
M,!@;D@$=9_X&W(LH'2 at 0'@8"EPH,VDV at TXE402)J(**S;MW5C%XP-)/574HW
MG-H"DER.4 at 6TG.X65>%PUV%YHQM(4'H5;1`(Z>PHV[6Q,NB'"1B)%@RL`S!J
MF?*$H2A!(#4".F"*PKK.IORSE4F-N'@Z2>-I7V9&Y3,;1J`B&("$-`FQ)- at F
MQ$-(AA&E"NGR"A%^(71RTA3T3GYRYBUI"`[/Z1U[[VF7!N-\DA`7+O2QE@;=
MD4W*@Q$KB:4@!3 at 5,":F\EOY8"K.:8AQ!0!7K2QX>.6JS$RZ%A,D\)32`%1I
MP\&,YPR2DE+BF'`)P-E\S[3.M`IAAPY1B.SV]E!4:L4DSR*R*#DX:2C9&A,$
M-:S=L#5&>F\`9QC91.QMY6P%:H1,93+U:"TMV4#R"<Y%<C at 2F.4R]"!%P;W)
2>PP531KB%_XNY(IPH2'I!/XX
`
end
Useful application to find the keys:
/*
google: KDSKBMODE K_CODE
Original code found on freebsd-hackers mailing list in 2000:
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=337902+0+archive/2000/freebsd-hackers/20000109.freebsd-hackers
http://www.mavetju.org/mail/view_message.php?list=freebsd-hackers&id=728901
*/
#include <fcntl.h>
#include <stdio.h>
#include <termios.h>
#include <errno.h>
#include <sys/kbio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int fd;
unsigned char onecode, keybuf[2];
int oldmode;
int newmode = K_CODE;
struct termios old_t, new_t;
int rr;
if (argc > 1 && strcmp(argv[1], "-k") == 0)
newmode = K_CODE;
if ((fd = open("/dev/ttyv0", O_RDWR)) < 0) {
(void) fprintf(stderr, "/dev/kbd0: %s\n", strerror(errno));
exit(1);
}
if (ioctl(fd, KDGKBMODE, &oldmode) < 0) {
(void) fprintf(stderr, "KDGKBMODE: %s\n", strerror(errno));
exit(1);
}
printf("Old mode is %d\n", oldmode);
if (tcgetattr(fd, &old_t) != 0) {
(void) fprintf(stderr, "tcgetattr: %s\n", strerror(errno));
exit(1);
}
new_t = old_t;
cfmakeraw(&new_t);
if (tcsetattr(fd, 0, &new_t) != 0) {
(void) fprintf(stderr, "tcsetattr: %s\n", strerror(errno));
exit(1);
}
if (ioctl(fd, KDSKBMODE, newmode) < 0) {
(void) tcsetattr(fd, 0, &old_t);
(void) fprintf(stderr, "KDSKBMODE: %s\n", strerror(errno));
exit(1);
}
printf("Keycodes as in the leftmost column in /usr/share/syscons/keymaps/*.kbd\r\n");
printf("Quit with key 'q'\r\n\n");
for(;;){
read(fd, &keybuf[0], 1);
read(fd, &keybuf[1], 1);
printf("%03d (0x%02X)\r\n", // \r needed due raw mode
(unsigned)keybuf[1], (unsigned)keybuf[1] );
// If key == 'q' then quit
//
if( keybuf[0] == 16 || keybuf[1] == 16 )
break;
}
if( rr < 0 ) {
(void) fprintf(stderr, "keyboard read: %s\r\n", strerror(errno));
}
(void) tcsetattr(fd, 0, &old_t);
if (ioctl(fd, KDSKBMODE, oldmode) < 0) {
(void) fprintf(stderr,
"Danger, Will Robinson! Can't restore keyboard: %s\n",
strerror(errno));
exit(1);
}
exit(0);
}
>How-To-Repeat:
Buy an eee ;)
>Fix:
Don't buy an eee.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list