diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -170,6 +170,10 @@ share atf tags=package=tests .. + bhyve + kbdlayout + .. + .. bsdconfig media .. diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile --- a/usr.sbin/bhyve/Makefile +++ b/usr.sbin/bhyve/Makefile @@ -133,4 +133,5 @@ WARNS?= 2 +SUBDIR= kbdlayout .include diff --git a/usr.sbin/bhyve/bhyve.8 b/usr.sbin/bhyve/bhyve.8 --- a/usr.sbin/bhyve/bhyve.8 +++ b/usr.sbin/bhyve/bhyve.8 @@ -54,6 +54,7 @@ .Sm on .Oc .Op Fl k Ar config_file +.Op Fl K Ar layout .Oo Fl l .Sm off .Ar lpcdev Op Cm \&, Ar conf @@ -172,6 +173,13 @@ Set configuration variables from a simple, key-value config file. Each line of the config file is expected to consist of a config variable name, an equals sign +.It Fl K Ar layout +Specify the keyboard layout. +The value that can be specified sets the file name in +.Ar /usr/share/bhyve/kbdlayout . +This specification only works when loaded with UEFI mode for VNC. +When using a VNC client that supports QEMU Extended Key Event Message (e.g. TigerVNC), this option isn't needed. +When using a VNC client that doesn't support QEMU Extended Key Event Message (e.g. tightVNC), the layout defaults to the US keyboard unless specified otherwise. .Pq Sq = , and a value. No spaces are permitted between the variable name, equals sign, or diff --git a/usr.sbin/bhyve/bhyve_config.5 b/usr.sbin/bhyve/bhyve_config.5 --- a/usr.sbin/bhyve/bhyve_config.5 +++ b/usr.sbin/bhyve/bhyve_config.5 @@ -133,6 +133,12 @@ .It Va gdb.wait Ta bool Ta false Ta If the debug server is enabled, wait for a debugger to connect before starting the guest. +.It Va keyboard.layout Ta string Ta Ta +Specify the keyboard layout name with the file name in +.Ar /usr/share/bhyve/kbdlayout . +This value only works when loaded with UEFI mode for VNC, and +used a VNC client that don't support QEMU Extended Key Event +Message (e.g. TightVNC). .It Va rtc.use_localtime Ta bool Ta true Ta The real time clock uses the local time of the host. If this is set to false, the real time clock uses UTC. diff --git a/usr.sbin/bhyve/bhyverun.c b/usr.sbin/bhyve/bhyverun.c --- a/usr.sbin/bhyve/bhyverun.c +++ b/usr.sbin/bhyve/bhyverun.c @@ -236,6 +236,7 @@ " -H: vmexit from the guest on HLT\n" " -h: help\n" " -k: key=value flat config file\n" + " -K: PS2 keyboard layout\n" " -l: LPC device configuration\n" " -m: memory size in MB\n" " -o: set config 'var' to 'value'\n" @@ -1249,9 +1250,9 @@ progname = basename(argv[0]); #ifdef BHYVE_SNAPSHOT - optstr = "aehuwxACDHIPSWYk:o:p:G:c:s:m:l:U:r:"; + optstr = "aehuwxACDHIPSWYk:o:p:G:c:s:m:l:K:U:r:"; #else - optstr = "aehuwxACDHIPSWYk:o:p:G:c:s:m:l:U:"; + optstr = "aehuwxACDHIPSWYk:o:p:G:c:s:m:l:K:U:"; #endif while ((c = getopt(argc, argv, optstr)) != -1) { switch (c) { @@ -1285,6 +1286,9 @@ case 'k': parse_simple_config_file(optarg); break; + case 'K': + set_config_value("keyboard.layout", optarg); + break; case 'l': if (strncmp(optarg, "help", strlen(optarg)) == 0) { lpc_print_supported_devices(); diff --git a/usr.sbin/bhyve/kbdlayout/Makefile b/usr.sbin/bhyve/kbdlayout/Makefile new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/Makefile @@ -0,0 +1,40 @@ +# $FreeBSD$ + +FILESDIR= ${SHAREDIR}/bhyve/kbdlayout +FILES= default \ + am \ + be be_acc \ + bg_bds bg_phonetic \ + br br_noacc \ + centraleuropean \ + ch ch_acc ch_macbook_acc ch-fr ch-fr_acc \ + cz \ + de de_acc de_noacc \ + dk dk_macbook \ + ee \ + es es_acc es_dvorak \ + fi \ + fr fr_acc fr_dvorak fr_dvorak_acc fr_macbook \ + gr gr_101_acc gr_elot_acc \ + hr \ + hu_101 hu_102 \ + is is_acc \ + it \ + jp jp_capsctrl \ + kz_io kz_kst \ + latinamerican latinamerican_acc \ + lt \ + nl \ + no no_dvorak nordic_asus-eee \ + pl_dvorak \ + pt pt_acc \ + ru ru_shift ru_win \ + se \ + si \ + tr tr_f \ + ua ua_shift_alt \ + uk uk_capsctrl uk_dvorak uk_macbook \ + us_dvorak us_dvorakl us_dvorakp us_dvorakr us_dvorakx \ + us_emacs us_unix + +.include diff --git a/usr.sbin/bhyve/kbdlayout/Makefile.depend b/usr.sbin/bhyve/kbdlayout/Makefile.depend new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/Makefile.depend @@ -0,0 +1,11 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + + +.include + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.sbin/bhyve/kbdlayout/am b/usr.sbin/bhyve/kbdlayout/am new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/am @@ -0,0 +1,10 @@ +# bhyve ps2kbd keyboard layout file +# (am : Armenian phonetic layout) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +')',0x87; ) (0x29) +'+',0xce; + (0x2b) + diff --git a/usr.sbin/bhyve/kbdlayout/be b/usr.sbin/bhyve/kbdlayout/be new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/be @@ -0,0 +1,45 @@ +# bhyve ps2kbd keyboard layout file +# (be : Belgian) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x3e; ! (0x21) +'"',0x26; " (0x22) +'$',0x5b; $ (0x24) +'%',0x52; % (0x25) +'&',0x16; & (0x26) +''',0x25; ' (0x27) +'(',0x2e; ( (0x28) +')',0x4e; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x4a; + (0x2b) +',',0x3a; , (0x2c) +'-',0x55; - (0x2d) +'.',0x41; . (0x2e) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x4a; = (0x3d) +'>',0x61; > (0x3e) +'?',0x3a; ? (0x3f) +'A',0x15; A (0x41) +'M',0x4c; M (0x4d) +'Q',0x1c; Q (0x51) +'W',0x1a; W (0x57) +'Z',0x1d; Z (0x5a) +'\',0x61; \ (0x5c) +'^',0x54; ^ (0x5e) +'_',0x55; _ (0x5f) +'`',0x5d; ` (0x60) +'a',0x15; a (0x61) +'m',0x4c; m (0x6d) +'q',0x1c; q (0x71) +'w',0x1a; w (0x77) +'z',0x1d; z (0x7a) +'{',0x46; { (0x7b) +'|',0x16; | (0x7c) +'}',0x45; } (0x7d) +'~',0x4a; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/be_acc b/usr.sbin/bhyve/kbdlayout/be_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/be_acc @@ -0,0 +1,42 @@ +# bhyve ps2kbd keyboard layout file +# (be_acc : Belgian (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x3e; ! (0x21) +'"',0x26; " (0x22) +'$',0x5b; $ (0x24) +'%',0x52; % (0x25) +'&',0x16; & (0x26) +''',0x25; ' (0x27) +'(',0x2e; ( (0x28) +')',0x4e; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x4a; + (0x2b) +',',0x3a; , (0x2c) +'-',0x55; - (0x2d) +'.',0x41; . (0x2e) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x4a; = (0x3d) +'>',0x61; > (0x3e) +'?',0x3a; ? (0x3f) +'A',0x15; A (0x41) +'M',0x4c; M (0x4d) +'Q',0x1c; Q (0x51) +'W',0x1a; W (0x57) +'Z',0x1d; Z (0x5a) +'\',0x61; \ (0x5c) +'_',0x55; _ (0x5f) +'a',0x15; a (0x61) +'m',0x4c; m (0x6d) +'q',0x1c; q (0x71) +'w',0x1a; w (0x77) +'z',0x1d; z (0x7a) +'{',0x46; { (0x7b) +'|',0x16; | (0x7c) +'}',0x45; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/bg_bds b/usr.sbin/bhyve/kbdlayout/bg_bds new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/bg_bds @@ -0,0 +1,10 @@ +# bhyve ps2kbd keyboard layout file +# (bg_bds : Bulgarian (BDS)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'(',0xa9; ( (0x28) +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/bg_phonetic b/usr.sbin/bhyve/kbdlayout/bg_phonetic new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/bg_phonetic @@ -0,0 +1,9 @@ +# bhyve ps2kbd keyboard layout file +# (bg_phonetic : Bulgarian (Phonetic)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/br b/usr.sbin/bhyve/kbdlayout/br new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/br @@ -0,0 +1,19 @@ +# bhyve ps2kbd keyboard layout file +# (br : Brazilian (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x0e; " (0x22) +''',0x0e; ' (0x27) +':',0x4a; : (0x3a) +';',0x4a; ; (0x3b) +'?',0x51; ? (0x3f) +'[',0x5b; [ (0x5b) +'\',0x61; \ (0x5c) +']',0x5d; ] (0x5d) +'{',0x5b; { (0x7b) +'|',0x61; | (0x7c) +'}',0x5d; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/br_noacc b/usr.sbin/bhyve/kbdlayout/br_noacc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/br_noacc @@ -0,0 +1,22 @@ +# bhyve ps2kbd keyboard layout file +# (br_noacc : Brazilian (without accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x0e; " (0x22) +''',0x0e; ' (0x27) +':',0x4a; : (0x3a) +';',0x4a; ; (0x3b) +'?',0x51; ? (0x3f) +'[',0x5b; [ (0x5b) +'\',0x61; \ (0x5c) +']',0x5d; ] (0x5d) +'^',0x52; ^ (0x5e) +'`',0x54; ` (0x60) +'{',0x5b; { (0x7b) +'|',0x61; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x52; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/centraleuropean b/usr.sbin/bhyve/kbdlayout/centraleuropean new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/centraleuropean @@ -0,0 +1,12 @@ +# bhyve ps2kbd keyboard layout file +# (centraleuropean : Central European) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) + diff --git a/usr.sbin/bhyve/kbdlayout/ch b/usr.sbin/bhyve/kbdlayout/ch new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ch @@ -0,0 +1,36 @@ +# bhyve ps2kbd keyboard layout file +# (ch : Swiss-German) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x5b; ! (0x21) +'"',0x1e; " (0x22) +'$',0x5d; $ (0x24) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x26; * (0x2a) +'+',0x16; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'\',0x61; \ (0x5c) +'^',0x55; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x52; { (0x7b) +'|',0x16; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x55; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/ch-fr b/usr.sbin/bhyve/kbdlayout/ch-fr new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ch-fr @@ -0,0 +1,36 @@ +# bhyve ps2kbd keyboard layout file +# (ch-fr : Swiss-French) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x5b; ! (0x21) +'"',0x1e; " (0x22) +'$',0x5d; $ (0x24) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x26; * (0x2a) +'+',0x16; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'\',0x61; \ (0x5c) +'^',0x55; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x52; { (0x7b) +'|',0x16; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x55; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/ch-fr_acc b/usr.sbin/bhyve/kbdlayout/ch-fr_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ch-fr_acc @@ -0,0 +1,33 @@ +# bhyve ps2kbd keyboard layout file +# (ch-fr_acc : Swiss-French (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x5b; ! (0x21) +'"',0x1e; " (0x22) +'$',0x5d; $ (0x24) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x26; * (0x2a) +'+',0x16; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'\',0x61; \ (0x5c) +'_',0x4a; _ (0x5f) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x52; { (0x7b) +'|',0x16; | (0x7c) +'}',0x5d; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/ch_acc b/usr.sbin/bhyve/kbdlayout/ch_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ch_acc @@ -0,0 +1,33 @@ +# bhyve ps2kbd keyboard layout file +# (ch_acc : Swiss-German (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x5b; ! (0x21) +'"',0x1e; " (0x22) +'$',0x5d; $ (0x24) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x26; * (0x2a) +'+',0x16; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'\',0x61; \ (0x5c) +'_',0x4a; _ (0x5f) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x52; { (0x7b) +'|',0x16; | (0x7c) +'}',0x5d; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/ch_macbook_acc b/usr.sbin/bhyve/kbdlayout/ch_macbook_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ch_macbook_acc @@ -0,0 +1,37 @@ +# bhyve ps2kbd keyboard layout file +# (ch_macbook_acc : Swiss-German Macbook/Macbook Pro (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x5b; ! (0x21) +'"',0x1e; " (0x22) +'$',0x5d; $ (0x24) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x26; * (0x2a) +'+',0x16; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x0e; < (0x3c) +'=',0x45; = (0x3d) +'>',0x0e; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x34; @ (0x40) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'[',0x2e; [ (0x5b) +'\',0x61; \ (0x5c) +']',0x36; ] (0x5d) +'_',0x4a; _ (0x5f) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x3e; { (0x7b) +'|',0x3d; | (0x7c) +'}',0x46; } (0x7d) +'~',0x31; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/cz b/usr.sbin/bhyve/kbdlayout/cz new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/cz @@ -0,0 +1,11 @@ +# bhyve ps2kbd keyboard layout file +# (cz : Czech (QWERTZ, accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +')',0x9b; ) (0x29) +'*',0xb7; * (0x2a) +'+',0x82; + (0x2b) + diff --git a/usr.sbin/bhyve/kbdlayout/de b/usr.sbin/bhyve/kbdlayout/de new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/de @@ -0,0 +1,37 @@ +# bhyve ps2kbd keyboard layout file +# (de : German) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'#',0x5d; # (0x23) +'&',0x36; & (0x26) +''',0x5d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x15; @ (0x40) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x0e; ^ (0x5e) +'_',0x4a; _ (0x5f) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x3d; { (0x7b) +'|',0x61; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/de_acc b/usr.sbin/bhyve/kbdlayout/de_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/de_acc @@ -0,0 +1,36 @@ +# bhyve ps2kbd keyboard layout file +# (de_acc : German (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'#',0x5d; # (0x23) +'&',0x36; & (0x26) +''',0x5d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x15; @ (0x40) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x0e; ^ (0x5e) +'_',0x4a; _ (0x5f) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x3d; { (0x7b) +'|',0x61; | (0x7c) +'}',0x45; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/de_noacc b/usr.sbin/bhyve/kbdlayout/de_noacc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/de_noacc @@ -0,0 +1,38 @@ +# bhyve ps2kbd keyboard layout file +# (de_noacc : German (no accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'#',0x5d; # (0x23) +'&',0x36; & (0x26) +''',0x55; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x15; @ (0x40) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x0e; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x3d; { (0x7b) +'|',0x61; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/default b/usr.sbin/bhyve/kbdlayout/default new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/default @@ -0,0 +1,248 @@ +# bhyve ps2kbd keyboard layout file (US - default) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +# for those who create the Keyboard Layout File. ****************************** +# To create the keyboard layout file, first copy this 'default' file into the +# same dir. with the layout name as the file name. +# The file name is a character string that can be specified as it is in the +# -k option of the bhyve command, so a normal language name is desirable. +# Then, it is necessary to define the difference between the standard US keyboard +# and the keyboard for each language according to the setting method described +# in the comment below. +# +# Note that lines starting with '#' and blank lines are ignored. +# In addition, the definition of the standard layout setting (US keyboard) +# is described as a comment line below for reference. +# So you usually only need to remove the '#' and fix it to the correct ScanCode +# only on the lines of the key that you can't type correctly with the standard +# US keyboard settings. + + +# Alphabet/Number/Sign Keys --------------------------------------------------- +# Format: +# 'Chr',ScanCode(Hex); +# or +# AsciiCode(Hex),ScanCode(Hex); +# +# If there are ASCII characters that cannot be entered correctly with the +# standard settings(US Keyboard layout), delete the "#" at the beginning of the +# relevant line below and set the correct ScanCode. +# +# For example, when a Japanese Keyboard is used, the '@' sign cannot be input +# correctly and the number '2' is input. +# This is because the US keyboard can input the '@' sign with the Shift + number'2' +# keys, and the ScanCode of the '@' sign is the number '2' key by default. +# In this case, remove the '#' at the beginning of the line with the '@' sign +# below and correct the ScanCode from 0x1e to 0x54 so that you can enter it +# correctly. +# ScanCode differs depending on the keyboard of eash language, so check it on +# the Internet. +# Note that keys that have no problems with input have the same settings as +# the US keyboard, so you do not need to set anything below. +# See the "/usr/share/bhyve/kbdlayout/jp106" file for the specific setting method. + +# '!',0x16; ! (0x21) +# '"',0x52; " (0x22) +# '#',0x26; # (0x23) +# '$',0x25; $ (0x24) +# '%',0x2e; % (0x25) +# '&',0x3d; & (0x26) +# ''',0x52; ' (0x27) +# '(',0x46; ( (0x28) +# ')',0x45; ) (0x29) +# '*',0x3e; * (0x2a) +# '+',0x55; + (0x2b) +# ',',0x41; , (0x2c) +# '-',0x4e; - (0x2d) +# '.',0x49; . (0x2e) +# '/',0x4a; / (0x2f) + +# '0',0x45; 0 (0x30) +# '1',0x16; 1 (0x31) +# '2',0x1e; 2 (0x32) +# '3',0x26; 3 (0x33) +# '4',0x25; 4 (0x34) +# '5',0x2e; 5 (0x35) +# '6',0x36; 6 (0x36) +# '7',0x3d; 7 (0x37) +# '8',0x3e; 8 (0x38) +# '9',0x46; 9 (0x39) +# ':',0x4c; : (0x3a) +# ';',0x4c; ; (0x3b) +# '<',0x41; < (0x3c) +# '=',0x55; = (0x3d) +# '>',0x49; > (0x3e) +# '?',0x4a; ? (0x3f) + +# '@',0x1e; @ (0x40) +# 'A',0x1c; A (0x41) +# 'B',0x32; B (0x42) +# 'C',0x21; C (0x43) +# 'D',0x23; D (0x44) +# 'E',0x24; E (0x45) +# 'F',0x2b; F (0x46) +# 'G',0x34; G (0x47) +# 'H',0x33; H (0x48) +# 'I',0x43; I (0x49) +# 'J',0x3b; J (0x4a) +# 'K',0x42; K (0x4b) +# 'L',0x4b; L (0x4c) +# 'M',0x3a; M (0x4d) +# 'N',0x31; N (0x4e) +# 'O',0x44; O (0x4f) + +# 'P',0x4d; P (0x50) +# 'Q',0x15; Q (0x51) +# 'R',0x2d; R (0x52) +# 'S',0x1b; S (0x53) +# 'T',0x2c; T (0x54) +# 'U',0x3c; U (0x55) +# 'V',0x2a; V (0x56) +# 'W',0x1d; W (0x57) +# 'X',0x22; X (0x58) +# 'Y',0x35; Y (0x59) +# 'Z',0x1a; Z (0x5a) +# '[',0x54; [ (0x5b) +# '\',0x5d; \ (0x5c) +# ']',0x5b; ] (0x5d) +# '^',0x36; ^ (0x5e) +# '_',0x4e; _ (0x5f) + +# '`',0x0e; ` (0x60) +# 'a',0x1c; a (0x61) +# 'b',0x32; b (0x62) +# 'c',0x21; c (0x63) +# 'd',0x23; d (0x64) +# 'e',0x24; e (0x65) +# 'f',0x2b; f (0x66) +# 'g',0x34; g (0x67) +# 'h',0x33; h (0x68) +# 'i',0x43; i (0x69) +# 'j',0x3b; j (0x6a) +# 'k',0x42; k (0x6b) +# 'l',0x4b; l (0x6c) +# 'm',0x3a; m (0x6d) +# 'n',0x31; n (0x6e) +# 'o',0x44; o (0x6f) + +# 'p',0x4d; p (0x70) +# 'q',0x15; q (0x71) +# 'r',0x2d; r (0x72) +# 's',0x1b; s (0x73) +# 't',0x2c; t (0x74) +# 'u',0x3c; u (0x75) +# 'v',0x2a; v (0x76) +# 'w',0x1d; w (0x77) +# 'x',0x22; x (0x78) +# 'y',0x35; y (0x79) +# 'z',0x1a; z (0x7a) +# '{',0x54; { (0x7b) +# '|',0x5d; | (0x7c) +# '}',0x5b; } (0x7d) +# '~',0x0e; ~ (0x7e) + + +# Functional Keys ------------------------------------------------------------- +# Format: +# Xorg KeySym(Hex:2Byte),ScanCode(Hex); +# or +# Xorg KeySym(Hex:2Byte),ScanCode(Hex),Prefix(Hex); +# +# Key definitions other than alphanumeric characters such as Enter and Escape +# are set in this section. +# If there is a key that can not be entered correctly with the standard settings +# (US Keyboard layout),, delete the '#' at the beginning of the corresponding +# line and set the correct scan code. +# The Xorg KeySym Code can be checked by using the 'xev' command from X window +# on the guest OS. +# In addition, some keys have ScanCodes that have a Prefix Byte. +# In this case, define '0xe0' as the third argument.(example Home Key,etc) +# Note that keys that have no problems with input have the same settings as +# the US keyboard, so you do not need to set anything below. +# See the "/usr/share/bhyve/kbdlayout/jp106" file for the specific setting method. + +# 0xff08,0x66; Back space +# 0xff09,0x0d; Tab +# 0xff0d,0x5a; Return +# 0xff1b,0x76; Escape +# 0xff50,0x6c,0xe0; Home +# 0xff51,0x6b,0xe0; Left arrow +# 0xff52,0x75,0xe0; Up arrow +# 0xff53,0x74,0xe0; Right arrow +# 0xff54,0x72,0xe0; Down arrow +# 0xff55,0x7d,0xe0; PgUp +# 0xff56,0x7a,0xe0; PgDown +# 0xff57,0x69,0xe0; End +# 0xff63,0x70,0xe0; Ins +# 0xff8d,0x5a,0xe0; Keypad Enter +# 0xffe1,0x12; Left shift +# 0xffe2,0x59; Right shift +# 0xffe3,0x14; Left control +# 0xffe4,0x14,0xe0; Right control +# 0xffe9,0x11; Left alt +# 0xfe03,0x11,0xe0; AltGr +# 0xffea,0x11,0xe0; Right alt +# 0xffeb,0x1f,0xe0; Left Windows +# 0xffec,0x27,0xe0; Right Windows +# 0xffbe,0x05; F1 +# 0xffbf,0x06; F2 +# 0xffc0,0x04; F3 +# 0xffc1,0x0c; F4 +# 0xffc2,0x03; F5 +# 0xffc3,0x0b; F6 +# 0xffc4,0x83; F7 +# 0xffc5,0x0a; F8 +# 0xffc6,0x01; F9 +# 0xffc7,0x09; F10 +# 0xffc8,0x78; F11 +# 0xffc9,0x07; F12 +# 0xffff,0x71,0xe0; Del +# 0xff14,0x7e; ScrollLock + + +# NumLock and Keypads --------------------------------------------------------- +# +# The numeric keypad settings are the same as the Functional Key section above. + +# 0xff7f,0x77; NumLock +# 0xffaf,0x4a,0xe0; Keypad slash +# 0xffaa,0x7c; Keypad asterisk +# 0xffad,0x7b; Keypad minus +# 0xffab,0x79; Keypad plus +# 0xffb7,0x6c; Keypad 7 +# 0xff95,0x6c; Keypad home +# 0xffb8,0x75; Keypad 8 +# 0xff97,0x75; Keypad up arrow +# 0xffb9,0x7d; Keypad 9 +# 0xff9a,0x7d; Keypad PgUp +# 0xffb4,0x6b; Keypad 4 +# 0xff96,0x6b; Keypad left arrow +# 0xffb5,0x73; Keypad 5 +# 0xff9d,0x73; Keypad empty +# 0xffb6,0x74; Keypad 6 +# 0xff98,0x74; Keypad right arrow +# 0xffb1,0x69; Keypad 1 +# 0xff9c,0x69; Keypad end +# 0xffb2,0x72; Keypad 2 +# 0xff99,0x72; Keypad down arrow +# 0xffb3,0x7a; Keypad 3 +# 0xff9b,0x7a; Keypad PgDown +# 0xffb0,0x70; Keypad 0 +# 0xff9e,0x70; Keypad ins +# 0xffae,0x71; Keypad . +# 0xff9f,0x71; Keypad del + + +# Language Specific Keys ------------------------------------------------------- +# +# If a key not exist in the US keyboard is added to the keyboard of each language, +# it is necessary to add the combination of Xorg KeySym and ScanCode of the +# corresponding key. +# The setting format is the same as the Functional Key section above. +# example: +# 0xff2a,0x0e; Hankaku/Zenkaku|Kanji (Japanese 106 keyboard original Key) + + diff --git a/usr.sbin/bhyve/kbdlayout/dk b/usr.sbin/bhyve/kbdlayout/dk new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/dk @@ -0,0 +1,32 @@ +# bhyve ps2kbd keyboard layout file +# (dk : Danish) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x5b; " (0x22) +'&',0x36; & (0x26) +''',0x55; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x4e; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'[',0x3e; [ (0x5b) +'\',0x61; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x5b; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x55; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/dk_macbook b/usr.sbin/bhyve/kbdlayout/dk_macbook new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/dk_macbook @@ -0,0 +1,35 @@ +# bhyve ps2kbd keyboard layout file +# (dk_macbook : Danish (macbook)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'$',0x0e; $ (0x24) +'&',0x36; & (0x26) +''',0x5d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x4e; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x5d; @ (0x40) +'G',0x7a,0xe0; G (0x47) +'I',0x6c,0xe0; I (0x49) +'O',0x69,0xe0; O (0x4f) +'Q',0x7d,0xe0; Q (0x51) +'[',0x3e; [ (0x5b) +'\',0x61; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x5b; ^ (0x5e) +'_',0x4a; _ (0x5f) +'|',0x43; | (0x7c) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/ee b/usr.sbin/bhyve/kbdlayout/ee new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ee @@ -0,0 +1,31 @@ +# bhyve ps2kbd keyboard layout file +# (ee : Nordic layout on Asus eeePC Estonian) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x5d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x4e; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x52; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x61; | (0x7c) +'}',0x45; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/es b/usr.sbin/bhyve/kbdlayout/es new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/es @@ -0,0 +1,28 @@ +# bhyve ps2kbd keyboard layout file +# (es : Spanish (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'\',0x0e; \ (0x5c) +'_',0x4a; _ (0x5f) +'{',0x52; { (0x7b) +'|',0x16; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x25; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/es_acc b/usr.sbin/bhyve/kbdlayout/es_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/es_acc @@ -0,0 +1,28 @@ +# bhyve ps2kbd keyboard layout file +# (es_acc : Spanish (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'\',0x0e; \ (0x5c) +'_',0x4a; _ (0x5f) +'{',0x52; { (0x7b) +'|',0x16; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x25; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/es_dvorak b/usr.sbin/bhyve/kbdlayout/es_dvorak new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/es_dvorak @@ -0,0 +1,78 @@ +# bhyve ps2kbd keyboard layout file +# (es_dvorak : Spanish Dvorak) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +',',0x1d; , (0x2c) +'-',0x1a; - (0x2d) +'.',0x15; . (0x2e) +':',0x15; : (0x3a) +';',0x1d; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'B',0x31; B (0x42) +'C',0x43; C (0x43) +'D',0x33; D (0x44) +'E',0x23; E (0x45) +'F',0x35; F (0x46) +'G',0x3c; G (0x47) +'H',0x44; H (0x48) +'I',0x34; I (0x49) +'J',0x21; J (0x4a) +'K',0x2a; K (0x4b) +'L',0x4d; L (0x4c) +'N',0x4b; N (0x4e) +'O',0x1b; O (0x4f) +'P',0x2d; P (0x50) +'Q',0x22; Q (0x51) +'R',0x3b; R (0x52) +'S',0x4c; S (0x53) +'T',0x42; T (0x54) +'U',0x2b; U (0x55) +'V',0x49; V (0x56) +'W',0x41; W (0x57) +'X',0x32; X (0x58) +'Y',0x2c; Y (0x59) +'Z',0x4a; Z (0x5a) +'\',0x0e; \ (0x5c) +'_',0x1a; _ (0x5f) +'b',0x31; b (0x62) +'c',0x43; c (0x63) +'d',0x33; d (0x64) +'e',0x23; e (0x65) +'f',0x35; f (0x66) +'g',0x3c; g (0x67) +'h',0x44; h (0x68) +'i',0x34; i (0x69) +'j',0x21; j (0x6a) +'k',0x2a; k (0x6b) +'l',0x4d; l (0x6c) +'n',0x4b; n (0x6e) +'o',0x1b; o (0x6f) +'p',0x2d; p (0x70) +'q',0x22; q (0x71) +'r',0x3b; r (0x72) +'s',0x4c; s (0x73) +'t',0x42; t (0x74) +'u',0x2b; u (0x75) +'v',0x49; v (0x76) +'w',0x41; w (0x77) +'x',0x32; x (0x78) +'y',0x2c; y (0x79) +'z',0x4a; z (0x7a) +'{',0x52; { (0x7b) +'|',0x0e; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x25; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/fi b/usr.sbin/bhyve/kbdlayout/fi new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/fi @@ -0,0 +1,32 @@ +# bhyve ps2kbd keyboard layout file +# (fi : Finnish) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x5d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x4e; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x5b; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x4c; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/fr b/usr.sbin/bhyve/kbdlayout/fr new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/fr @@ -0,0 +1,46 @@ +# bhyve ps2kbd keyboard layout file +# (fr : French French Canadian (accent keys) Swiss-French) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x4a; ! (0x21) +'"',0x26; " (0x22) +'$',0x5b; $ (0x24) +'%',0x52; % (0x25) +'&',0x16; & (0x26) +''',0x25; ' (0x27) +'(',0x2e; ( (0x28) +')',0x4e; ) (0x29) +'*',0x5d; * (0x2a) +',',0x3a; , (0x2c) +'-',0x36; - (0x2d) +'.',0x41; . (0x2e) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'>',0x61; > (0x3e) +'?',0x3a; ? (0x3f) +'@',0x45; @ (0x40) +'A',0x15; A (0x41) +'M',0x4c; M (0x4d) +'Q',0x1c; Q (0x51) +'W',0x1a; W (0x57) +'Z',0x1d; Z (0x5a) +'[',0x2e; [ (0x5b) +'\',0x3e; \ (0x5c) +']',0x4e; ] (0x5d) +'^',0x46; ^ (0x5e) +'_',0x3e; _ (0x5f) +'`',0x3d; ` (0x60) +'a',0x15; a (0x61) +'m',0x4c; m (0x6d) +'q',0x1c; q (0x71) +'w',0x1a; w (0x77) +'z',0x1d; z (0x7a) +'{',0x25; { (0x7b) +'|',0x36; | (0x7c) +'}',0x55; } (0x7d) +'~',0x1e; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/fr_acc b/usr.sbin/bhyve/kbdlayout/fr_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/fr_acc @@ -0,0 +1,46 @@ +# bhyve ps2kbd keyboard layout file +# (fr_acc : French (accent keys) Swiss-French (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x4a; ! (0x21) +'"',0x26; " (0x22) +'$',0x5b; $ (0x24) +'%',0x52; % (0x25) +'&',0x16; & (0x26) +''',0x25; ' (0x27) +'(',0x2e; ( (0x28) +')',0x4e; ) (0x29) +'*',0x5d; * (0x2a) +',',0x3a; , (0x2c) +'-',0x36; - (0x2d) +'.',0x41; . (0x2e) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'>',0x61; > (0x3e) +'?',0x3a; ? (0x3f) +'@',0x45; @ (0x40) +'A',0x15; A (0x41) +'M',0x4c; M (0x4d) +'Q',0x1c; Q (0x51) +'W',0x1a; W (0x57) +'Z',0x1d; Z (0x5a) +'[',0x2e; [ (0x5b) +'\',0x3e; \ (0x5c) +']',0x4e; ] (0x5d) +'^',0x46; ^ (0x5e) +'_',0x3e; _ (0x5f) +'`',0x3d; ` (0x60) +'a',0x15; a (0x61) +'m',0x4c; m (0x6d) +'q',0x1c; q (0x71) +'w',0x1a; w (0x77) +'z',0x1d; z (0x7a) +'{',0x25; { (0x7b) +'|',0x36; | (0x7c) +'}',0x55; } (0x7d) +'~',0x1e; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/fr_dvorak b/usr.sbin/bhyve/kbdlayout/fr_dvorak new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/fr_dvorak @@ -0,0 +1,87 @@ +# bhyve ps2kbd keyboard layout file +# (fr_dvorak : French Dvorak-like) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x2c; ! (0x21) +'"',0x45; " (0x22) +'#',0x5d; # (0x23) +'%',0x55; % (0x25) +'&',0x5b; & (0x26) +''',0x1d; ' (0x27) +'(',0x3d; ( (0x28) +')',0x46; ) (0x29) +'*',0x61; * (0x2a) +'+',0x61; + (0x2b) +',',0x21; , (0x2c) +'-',0x26; - (0x2d) +'.',0x2c; . (0x2e) +'/',0x2e; / (0x2f) +':',0x15; : (0x3a) +';',0x1a; ; (0x3b) +'<',0x1d; < (0x3c) +'=',0x16; = (0x3d) +'>',0x24; > (0x3e) +'?',0x15; ? (0x3f) +'@',0x1a; @ (0x40) +'A',0x1b; A (0x41) +'B',0x34; B (0x42) +'C',0x43; C (0x43) +'D',0x4c; D (0x44) +'E',0x2b; E (0x45) +'F',0x33; F (0x46) +'G',0x2d; G (0x47) +'H',0x35; H (0x48) +'I',0x2a; I (0x49) +'J',0x4a; J (0x4a) +'K',0x4d; K (0x4b) +'L',0x41; L (0x4c) +'M',0x44; M (0x4d) +'N',0x4b; N (0x4e) +'O',0x1c; O (0x4f) +'P',0x49; P (0x50) +'Q',0x22; Q (0x51) +'R',0x3a; R (0x52) +'S',0x3b; S (0x53) +'T',0x42; T (0x54) +'U',0x23; U (0x55) +'V',0x3c; V (0x56) +'W',0x52; W (0x57) +'X',0x31; X (0x58) +'Y',0x32; Y (0x59) +'Z',0x54; Z (0x5a) +'[',0x4e; [ (0x5b) +'\',0x21; \ (0x5c) +']',0x55; ] (0x5d) +'`',0x3e; ` (0x60) +'a',0x1b; a (0x61) +'b',0x34; b (0x62) +'c',0x43; c (0x63) +'d',0x4c; d (0x64) +'e',0x2b; e (0x65) +'f',0x33; f (0x66) +'g',0x2d; g (0x67) +'h',0x35; h (0x68) +'i',0x2a; i (0x69) +'j',0x4a; j (0x6a) +'k',0x4d; k (0x6b) +'l',0x41; l (0x6c) +'m',0x44; m (0x6d) +'n',0x4b; n (0x6e) +'o',0x1c; o (0x6f) +'p',0x49; p (0x70) +'q',0x22; q (0x71) +'r',0x3a; r (0x72) +'s',0x3b; s (0x73) +'t',0x42; t (0x74) +'u',0x23; u (0x75) +'v',0x3c; v (0x76) +'w',0x52; w (0x77) +'x',0x31; x (0x78) +'y',0x32; y (0x79) +'z',0x54; z (0x7a) +'|',0x4e; | (0x7c) +'~',0x5d; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/fr_dvorak_acc b/usr.sbin/bhyve/kbdlayout/fr_dvorak_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/fr_dvorak_acc @@ -0,0 +1,86 @@ +# bhyve ps2kbd keyboard layout file +# (fr_dvorak_acc : French Dvorak-like (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x2c; ! (0x21) +'"',0x45; " (0x22) +'#',0x5d; # (0x23) +'%',0x55; % (0x25) +'&',0x5b; & (0x26) +''',0x1d; ' (0x27) +'(',0x3d; ( (0x28) +')',0x46; ) (0x29) +'*',0x0e; * (0x2a) +'+',0x4e; + (0x2b) +',',0x21; , (0x2c) +'-',0x26; - (0x2d) +'.',0x2c; . (0x2e) +'/',0x1e; / (0x2f) +':',0x15; : (0x3a) +';',0x1a; ; (0x3b) +'<',0x1d; < (0x3c) +'=',0x16; = (0x3d) +'>',0x24; > (0x3e) +'?',0x15; ? (0x3f) +'@',0x21; @ (0x40) +'A',0x1b; A (0x41) +'B',0x34; B (0x42) +'C',0x43; C (0x43) +'D',0x4c; D (0x44) +'E',0x2b; E (0x45) +'F',0x33; F (0x46) +'G',0x2d; G (0x47) +'H',0x35; H (0x48) +'I',0x2a; I (0x49) +'J',0x4a; J (0x4a) +'K',0x4d; K (0x4b) +'L',0x41; L (0x4c) +'M',0x44; M (0x4d) +'N',0x4b; N (0x4e) +'O',0x1c; O (0x4f) +'P',0x49; P (0x50) +'Q',0x22; Q (0x51) +'R',0x3a; R (0x52) +'S',0x3b; S (0x53) +'T',0x42; T (0x54) +'U',0x23; U (0x55) +'V',0x3c; V (0x56) +'W',0x52; W (0x57) +'X',0x31; X (0x58) +'Y',0x32; Y (0x59) +'Z',0x54; Z (0x5a) +'[',0x4e; [ (0x5b) +'\',0x2e; \ (0x5c) +']',0x55; ] (0x5d) +'_',0x0e; _ (0x5f) +'a',0x1b; a (0x61) +'b',0x34; b (0x62) +'c',0x43; c (0x63) +'d',0x4c; d (0x64) +'e',0x2b; e (0x65) +'f',0x33; f (0x66) +'g',0x2d; g (0x67) +'h',0x35; h (0x68) +'i',0x2a; i (0x69) +'j',0x4a; j (0x6a) +'k',0x4d; k (0x6b) +'l',0x41; l (0x6c) +'m',0x44; m (0x6d) +'n',0x4b; n (0x6e) +'o',0x1c; o (0x6f) +'p',0x49; p (0x70) +'q',0x22; q (0x71) +'r',0x3a; r (0x72) +'s',0x3b; s (0x73) +'t',0x42; t (0x74) +'u',0x23; u (0x75) +'v',0x3c; v (0x76) +'w',0x52; w (0x77) +'x',0x31; x (0x78) +'y',0x32; y (0x79) +'z',0x54; z (0x7a) +'|',0x1a; | (0x7c) + diff --git a/usr.sbin/bhyve/kbdlayout/fr_macbook b/usr.sbin/bhyve/kbdlayout/fr_macbook new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/fr_macbook @@ -0,0 +1,49 @@ +# bhyve ps2kbd keyboard layout file +# (fr_macbook : French Macbook/Macbook Pro (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x3e; ! (0x21) +'"',0x26; " (0x22) +'#',0x0e; # (0x23) +'$',0x5b; $ (0x24) +'%',0x52; % (0x25) +'&',0x16; & (0x26) +''',0x25; ' (0x27) +'(',0x2e; ( (0x28) +')',0x4e; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x4a; + (0x2b) +',',0x3a; , (0x2c) +'-',0x55; - (0x2d) +'.',0x41; . (0x2e) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x4a; = (0x3d) +'>',0x61; > (0x3e) +'?',0x3a; ? (0x3f) +'@',0x0e; @ (0x40) +'A',0x15; A (0x41) +'M',0x4c; M (0x4d) +'Q',0x1c; Q (0x51) +'W',0x1a; W (0x57) +'Z',0x1d; Z (0x5a) +'[',0x2e; [ (0x5b) +'\',0x3e; \ (0x5c) +']',0x4e; ] (0x5d) +'^',0x46; ^ (0x5e) +'_',0x55; _ (0x5f) +'`',0x3d; ` (0x60) +'a',0x15; a (0x61) +'m',0x4c; m (0x6d) +'q',0x1c; q (0x71) +'w',0x1a; w (0x77) +'z',0x1d; z (0x7a) +'{',0x25; { (0x7b) +'|',0x36; | (0x7c) +'}',0x55; } (0x7d) +'~',0x1e; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/gr b/usr.sbin/bhyve/kbdlayout/gr new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/gr @@ -0,0 +1,9 @@ +# bhyve ps2kbd keyboard layout file +# (gr : Greek (104 keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/gr_101_acc b/usr.sbin/bhyve/kbdlayout/gr_101_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/gr_101_acc @@ -0,0 +1,9 @@ +# bhyve ps2kbd keyboard layout file +# (gr_101_acc : Greek (101 keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/gr_elot_acc b/usr.sbin/bhyve/kbdlayout/gr_elot_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/gr_elot_acc @@ -0,0 +1,17 @@ +# bhyve ps2kbd keyboard layout file +# (gr_elot_acc : Greek ELOT) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'#',0x5d; # (0x23) +''',0x0e; ' (0x27) +'*',0xb7; * (0x2a) +'/',0x52; / (0x2f) +'@',0x52; @ (0x40) +'\',0x61; \ (0x5c) +'|',0x61; | (0x7c) +'~',0x5d; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/hr b/usr.sbin/bhyve/kbdlayout/hr new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/hr @@ -0,0 +1,36 @@ +# bhyve ps2kbd keyboard layout file +# (hr : Croatian) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x55; * (0x2a) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x2a; @ (0x40) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'[',0x2b; [ (0x5b) +'\',0x15; \ (0x5c) +']',0x34; ] (0x5d) +'^',0x26; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x3d; ` (0x60) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x32; { (0x7b) +'|',0x1d; | (0x7c) +'}',0x31; } (0x7d) +'~',0x16; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/hu_101 b/usr.sbin/bhyve/kbdlayout/hu_101 new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/hu_101 @@ -0,0 +1,9 @@ +# bhyve ps2kbd keyboard layout file +# (hu_101 : Hungarian (101 keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/hu_102 b/usr.sbin/bhyve/kbdlayout/hu_102 new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/hu_102 @@ -0,0 +1,41 @@ +# bhyve ps2kbd keyboard layout file +# (hu_102 : Hungarian (102 keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x25; ! (0x21) +'"',0x1e; " (0x22) +'#',0x22; # (0x23) +'$',0x4c; $ (0x24) +'&',0x21; & (0x26) +''',0x16; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x4a; * (0x2a) +'+',0x26; + (0x2b) +'-',0x4a; - (0x2d) +'0',0x0e; 0 (0x30) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x3a; < (0x3c) +'=',0x3d; = (0x3d) +'>',0x1a; > (0x3e) +'?',0x41; ? (0x3f) +'@',0x2a; @ (0x40) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'[',0x2b; [ (0x5b) +'\',0x15; \ (0x5c) +']',0x34; ] (0x5d) +'^',0x26; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x3d; ` (0x60) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x32; { (0x7b) +'|',0x1d; | (0x7c) +'}',0x31; } (0x7d) +'~',0x16; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/is b/usr.sbin/bhyve/kbdlayout/is new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/is @@ -0,0 +1,33 @@ +# bhyve ps2kbd keyboard layout file +# (is : Icelandic) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x5b; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x5d; + (0x2b) +'-',0x55; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x5b; ? (0x3f) +'@',0x15; @ (0x40) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x0e; ^ (0x5e) +'_',0x55; _ (0x5f) +'`',0x5d; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x4c; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/is_acc b/usr.sbin/bhyve/kbdlayout/is_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/is_acc @@ -0,0 +1,32 @@ +# bhyve ps2kbd keyboard layout file +# (is_acc : Icelandic (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x5b; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x5d; + (0x2b) +'-',0x55; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x5b; ? (0x3f) +'@',0x15; @ (0x40) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'_',0x55; _ (0x5f) +'`',0x5d; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x4c; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/it b/usr.sbin/bhyve/kbdlayout/it new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/it @@ -0,0 +1,34 @@ +# bhyve ps2kbd keyboard layout file +# (it : Italian) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'#',0x52; # (0x23) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x15; @ (0x40) +'[',0x3e; [ (0x5b) +'\',0x0e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x55; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x4e; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x0e; | (0x7c) +'}',0x45; } (0x7d) +'~',0x55; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/jp b/usr.sbin/bhyve/kbdlayout/jp new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/jp @@ -0,0 +1,36 @@ +# bhyve ps2kbd keyboard layout file +# (jp : Japanese 106) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +# Alphabet/Number/Sign Keys --------------------------------------------------- +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x3d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x52; * (0x2a) +'+',0x4c; + (0x2b) +':',0x52; : (0x3a) +'=',0x4e; = (0x3d) +'@',0x54; @ (0x40) +'[',0x5b; [ (0x5b) +'\',0x51; \ (0x5c) +']',0x5d; ] (0x5d) +'^',0x55; ^ (0x5e) +'_',0x51; _ (0x5f) +'`',0x54; ` (0x60) +'{',0x5b; { (0x7b) +'|',0x6a; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x55; ~ (0x7e) + +# Language Specific Keys ------------------------------------------------------ +0xff2a,0x0e; Hankaku/Zenkaku|Kanji +0xffe5,0x58; CapsLock +0xff22,0x67; Muhenkan +0xff23,0x64; Henkan_Mode +0xff27,0x13; Katakana-Hiragana/RomaJi + diff --git a/usr.sbin/bhyve/kbdlayout/jp_capsctrl b/usr.sbin/bhyve/kbdlayout/jp_capsctrl new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/jp_capsctrl @@ -0,0 +1,37 @@ +# bhyve ps2kbd keyboard layout file +# (jp.capsctrl : Japanese 106x) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +# Alphabet/Number/Sign Keys --------------------------------------------------- +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x3d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x52; * (0x2a) +'+',0x4c; + (0x2b) +':',0x52; : (0x3a) +'=',0x4e; = (0x3d) +'@',0x54; @ (0x40) +'[',0x5b; [ (0x5b) +'\',0x51; \ (0x5c) +']',0x5d; ] (0x5d) +'^',0x55; ^ (0x5e) +'_',0x51; _ (0x5f) +'`',0x54; ` (0x60) +'{',0x5b; { (0x7b) +'|',0x6a; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x55; ~ (0x7e) + +# Language Specific Keys ------------------------------------------------------ +0xff2a,0x0e; Hankaku/Zenkaku|Kanji +0xffe5,0x58; CapsLock +0xff22,0x67; Muhenkan +0xff23,0x64; Henkan_Mode +0xff27,0x13; Katakana-Hiragana/RomaJi +0xffe3,0x58; Left control + diff --git a/usr.sbin/bhyve/kbdlayout/kz_io b/usr.sbin/bhyve/kbdlayout/kz_io new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/kz_io @@ -0,0 +1,11 @@ +# bhyve ps2kbd keyboard layout file +# (kz_io : Kazakh) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x82; " (0x22) +'(',0xa9; ( (0x28) +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/kz_kst b/usr.sbin/bhyve/kbdlayout/kz_kst new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/kz_kst @@ -0,0 +1,11 @@ +# bhyve ps2kbd keyboard layout file +# (kz_kst : Kazakh) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x82; " (0x22) +'(',0xa9; ( (0x28) +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/latinamerican b/usr.sbin/bhyve/kbdlayout/latinamerican new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/latinamerican @@ -0,0 +1,33 @@ +# bhyve ps2kbd keyboard layout file +# (latinamerican : Latin American) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x15; @ (0x40) +'[',0x52; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x5d; ] (0x5d) +'^',0x52; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x5d; ` (0x60) +'{',0x52; { (0x7b) +'|',0x0e; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/latinamerican_acc b/usr.sbin/bhyve/kbdlayout/latinamerican_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/latinamerican_acc @@ -0,0 +1,31 @@ +# bhyve ps2kbd keyboard layout file +# (latinamerican_acc : Latin American (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x15; @ (0x40) +'[',0x52; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x5d; ] (0x5d) +'_',0x4a; _ (0x5f) +'{',0x52; { (0x7b) +'|',0x0e; | (0x7c) +'}',0x5d; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/lt b/usr.sbin/bhyve/kbdlayout/lt new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/lt @@ -0,0 +1,10 @@ +# bhyve ps2kbd keyboard layout file +# (lt : Lithuanian Ukrainian (with Russian) (shift)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) +0xffea,0x61; Right alt + diff --git a/usr.sbin/bhyve/kbdlayout/nl b/usr.sbin/bhyve/kbdlayout/nl new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/nl @@ -0,0 +1,31 @@ +# bhyve ps2kbd keyboard layout file +# (nl : Dutch (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x45; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5b; * (0x2a) +'+',0x4c; + (0x2b) +'-',0x4a; - (0x2d) +'/',0x4e; / (0x2f) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x5d; < (0x3c) +'=',0x4a; = (0x3d) +'>',0x5d; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x0e; @ (0x40) +'[',0x61; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x61; ] (0x5d) +'_',0x3d; _ (0x5f) +'{',0x3e; { (0x7b) +'|',0x5b; | (0x7c) +'}',0x46; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/no b/usr.sbin/bhyve/kbdlayout/no new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/no @@ -0,0 +1,32 @@ +# bhyve ps2kbd keyboard layout file +# (no : Norwegian) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x5d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x4e; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'[',0x3e; [ (0x5b) +'\',0x55; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x5b; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x0e; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/no_dvorak b/usr.sbin/bhyve/kbdlayout/no_dvorak new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/no_dvorak @@ -0,0 +1,81 @@ +# bhyve ps2kbd keyboard layout file +# (no_dvorak : Norwegian dvorak) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x54; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x54; * (0x2a) +'+',0x4e; + (0x2b) +',',0x1d; , (0x2c) +'-',0x52; - (0x2d) +'.',0x24; . (0x2e) +':',0x24; : (0x3a) +';',0x1d; ; (0x3b) +'<',0x5d; < (0x3c) +'=',0x45; = (0x3d) +'>',0x5d; > (0x3e) +'?',0x4e; ? (0x3f) +'B',0x31; B (0x42) +'C',0x43; C (0x43) +'D',0x33; D (0x44) +'E',0x23; E (0x45) +'F',0x35; F (0x46) +'G',0x3c; G (0x47) +'H',0x3b; H (0x48) +'I',0x34; I (0x49) +'J',0x21; J (0x4a) +'K',0x2a; K (0x4b) +'L',0x4d; L (0x4c) +'N',0x4b; N (0x4e) +'O',0x1b; O (0x4f) +'P',0x2d; P (0x50) +'Q',0x22; Q (0x51) +'R',0x44; R (0x52) +'S',0x4c; S (0x53) +'T',0x42; T (0x54) +'U',0x2b; U (0x55) +'V',0x49; V (0x56) +'W',0x41; W (0x57) +'X',0x32; X (0x58) +'Y',0x2c; Y (0x59) +'Z',0x4a; Z (0x5a) +'[',0x3e; [ (0x5b) +'\',0x55; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x5b; ^ (0x5e) +'_',0x52; _ (0x5f) +'`',0x55; ` (0x60) +'b',0x31; b (0x62) +'c',0x43; c (0x63) +'d',0x33; d (0x64) +'e',0x23; e (0x65) +'f',0x35; f (0x66) +'g',0x3c; g (0x67) +'h',0x3b; h (0x68) +'i',0x34; i (0x69) +'j',0x21; j (0x6a) +'k',0x2a; k (0x6b) +'l',0x4d; l (0x6c) +'n',0x4b; n (0x6e) +'o',0x1b; o (0x6f) +'p',0x2d; p (0x70) +'q',0x22; q (0x71) +'r',0x44; r (0x72) +'s',0x4c; s (0x73) +'t',0x42; t (0x74) +'u',0x2b; u (0x75) +'v',0x49; v (0x76) +'w',0x41; w (0x77) +'x',0x32; x (0x78) +'y',0x2c; y (0x79) +'z',0x4a; z (0x7a) +'{',0x3d; { (0x7b) +'|',0x0e; | (0x7c) +'}',0x45; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/nordic_asus-eee b/usr.sbin/bhyve/kbdlayout/nordic_asus-eee new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/nordic_asus-eee @@ -0,0 +1,32 @@ +# bhyve ps2kbd keyboard layout file +# (nordic_asus-eee : Nordic layout on Asus eeePC) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x5d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x4e; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x5b; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x4c; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/pl_dvorak b/usr.sbin/bhyve/kbdlayout/pl_dvorak new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/pl_dvorak @@ -0,0 +1,74 @@ +# bhyve ps2kbd keyboard layout file +# (pl_dvorak : Polish Dvorak) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x15; " (0x22) +''',0x15; ' (0x27) +'+',0x5b; + (0x2b) +',',0x1d; , (0x2c) +'-',0x52; - (0x2d) +'.',0x24; . (0x2e) +'/',0x54; / (0x2f) +':',0x1a; : (0x3a) +';',0x1a; ; (0x3b) +'<',0x1d; < (0x3c) +'=',0x5b; = (0x3d) +'>',0x24; > (0x3e) +'?',0x54; ? (0x3f) +'B',0x31; B (0x42) +'C',0x43; C (0x43) +'D',0x33; D (0x44) +'E',0x23; E (0x45) +'F',0x35; F (0x46) +'G',0x3c; G (0x47) +'H',0x3b; H (0x48) +'I',0x34; I (0x49) +'J',0x21; J (0x4a) +'K',0x2a; K (0x4b) +'L',0x4d; L (0x4c) +'N',0x4b; N (0x4e) +'O',0x1b; O (0x4f) +'P',0x2d; P (0x50) +'Q',0x22; Q (0x51) +'R',0x44; R (0x52) +'S',0x4c; S (0x53) +'T',0x42; T (0x54) +'U',0x2b; U (0x55) +'V',0x49; V (0x56) +'W',0x41; W (0x57) +'X',0x32; X (0x58) +'Y',0x2c; Y (0x59) +'Z',0x4a; Z (0x5a) +'[',0x4e; [ (0x5b) +']',0x55; ] (0x5d) +'_',0x52; _ (0x5f) +'b',0x31; b (0x62) +'c',0x43; c (0x63) +'d',0x33; d (0x64) +'e',0x23; e (0x65) +'f',0x35; f (0x66) +'g',0x3c; g (0x67) +'h',0x3b; h (0x68) +'i',0x34; i (0x69) +'j',0x21; j (0x6a) +'k',0x2a; k (0x6b) +'l',0x4d; l (0x6c) +'n',0x4b; n (0x6e) +'o',0x1b; o (0x6f) +'p',0x2d; p (0x70) +'q',0x22; q (0x71) +'r',0x44; r (0x72) +'s',0x4c; s (0x73) +'t',0x42; t (0x74) +'u',0x2b; u (0x75) +'v',0x49; v (0x76) +'w',0x41; w (0x77) +'x',0x32; x (0x78) +'y',0x2c; y (0x79) +'z',0x4a; z (0x7a) +'{',0x4e; { (0x7b) +'}',0x55; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/pt b/usr.sbin/bhyve/kbdlayout/pt new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/pt @@ -0,0 +1,31 @@ +# bhyve ps2kbd keyboard layout file +# (pt : Portuguese) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x54; * (0x2a) +'+',0x54; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'[',0x3e; [ (0x5b) +'\',0x0e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x5d; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x5b; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x0e; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5d; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/pt_acc b/usr.sbin/bhyve/kbdlayout/pt_acc new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/pt_acc @@ -0,0 +1,28 @@ +# bhyve ps2kbd keyboard layout file +# (pt_acc : Portuguese (accent keys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x54; * (0x2a) +'+',0x54; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'[',0x3e; [ (0x5b) +'\',0x0e; \ (0x5c) +']',0x46; ] (0x5d) +'_',0x4a; _ (0x5f) +'{',0x3d; { (0x7b) +'|',0x0e; | (0x7c) +'}',0x45; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/ru b/usr.sbin/bhyve/kbdlayout/ru new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ru @@ -0,0 +1,14 @@ +# bhyve ps2kbd keyboard layout file +# (ru : Russian) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x82; ! (0x21) +'"',0x00; " (0x22) +'(',0x8a; ( (0x28) +')',0x8b; ) (0x29) +'*',0x85; * (0x2a) +':',0x86; : (0x3a) + diff --git a/usr.sbin/bhyve/kbdlayout/ru_shift b/usr.sbin/bhyve/kbdlayout/ru_shift new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ru_shift @@ -0,0 +1,9 @@ +# bhyve ps2kbd keyboard layout file +# (ru_shift : Russian (shift)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/ru_win b/usr.sbin/bhyve/kbdlayout/ru_win new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ru_win @@ -0,0 +1,9 @@ +# bhyve ps2kbd keyboard layout file +# (ru_win : Russian (winkeys)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/se b/usr.sbin/bhyve/kbdlayout/se new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/se @@ -0,0 +1,32 @@ +# bhyve ps2kbd keyboard layout file +# (se : Swedish) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x5d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x5d; * (0x2a) +'+',0x4e; + (0x2b) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x5b; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x55; ` (0x60) +'{',0x3d; { (0x7b) +'|',0x4c; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/si b/usr.sbin/bhyve/kbdlayout/si new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/si @@ -0,0 +1,36 @@ +# bhyve ps2kbd keyboard layout file +# (si : Slovenian) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x4e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x55; * (0x2a) +'-',0x4a; - (0x2d) +':',0x49; : (0x3a) +';',0x41; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x2a; @ (0x40) +'Y',0x1a; Y (0x59) +'Z',0x35; Z (0x5a) +'[',0x2b; [ (0x5b) +'\',0x15; \ (0x5c) +']',0x34; ] (0x5d) +'^',0x26; ^ (0x5e) +'_',0x4a; _ (0x5f) +'`',0x3d; ` (0x60) +'y',0x1a; y (0x79) +'z',0x35; z (0x7a) +'{',0x32; { (0x7b) +'|',0x1d; | (0x7c) +'}',0x31; } (0x7d) +'~',0x16; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/tr b/usr.sbin/bhyve/kbdlayout/tr new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/tr @@ -0,0 +1,36 @@ +# bhyve ps2kbd keyboard layout file +# (tr : Turkish (Q)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x0e; " (0x22) +'&',0x36; & (0x26) +''',0x1e; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x4e; * (0x2a) +'+',0x25; + (0x2b) +',',0x5d; , (0x2c) +'-',0x55; - (0x2d) +'.',0x4a; . (0x2e) +':',0x4a; : (0x3a) +';',0x5d; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x15; @ (0x40) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x26; ^ (0x5e) +'_',0x55; _ (0x5f) +'`',0x5d; ` (0x60) +'i',0x52; i (0x69) +'{',0x3d; { (0x7b) +'|',0x61; | (0x7c) +'}',0x45; } (0x7d) +'~',0x5b; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/tr_f b/usr.sbin/bhyve/kbdlayout/tr_f new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/tr_f @@ -0,0 +1,81 @@ +# bhyve ps2kbd keyboard layout file +# (tr_f : Turkish (F)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'&',0x36; & (0x26) +''',0x3d; ' (0x27) +'(',0x3e; ( (0x28) +')',0x46; ) (0x29) +'*',0x0e; * (0x2a) +'+',0x0e; + (0x2b) +',',0x4a; , (0x2c) +'-',0x55; - (0x2d) +'/',0x4e; / (0x2f) +':',0x49; : (0x3a) +';',0x4a; ; (0x3b) +'<',0x61; < (0x3c) +'=',0x45; = (0x3d) +'>',0x61; > (0x3e) +'?',0x4e; ? (0x3f) +'@',0x15; @ (0x40) +'A',0x2b; A (0x41) +'B',0x41; B (0x42) +'C',0x2a; C (0x43) +'D',0x35; D (0x44) +'E',0x23; E (0x45) +'F',0x15; F (0x46) +'G',0x1d; G (0x47) +'H',0x44; H (0x48) +'I',0x2d; I (0x49) +'J',0x1a; J (0x4a) +'K',0x3b; K (0x4b) +'M',0x42; M (0x4d) +'N',0x43; N (0x4e) +'O',0x2c; O (0x4f) +'Q',0x54; Q (0x51) +'R',0x3c; R (0x52) +'S',0x3a; S (0x53) +'T',0x33; T (0x54) +'U',0x1c; U (0x55) +'V',0x21; V (0x56) +'W',0x5b; W (0x57) +'X',0x5d; X (0x58) +'Y',0x4c; Y (0x59) +'Z',0x31; Z (0x5a) +'[',0x3e; [ (0x5b) +'\',0x4e; \ (0x5c) +']',0x46; ] (0x5d) +'^',0x26; ^ (0x5e) +'_',0x55; _ (0x5f) +'a',0x2b; a (0x61) +'b',0x41; b (0x62) +'c',0x2a; c (0x63) +'d',0x35; d (0x64) +'e',0x23; e (0x65) +'f',0x15; f (0x66) +'g',0x1d; g (0x67) +'h',0x44; h (0x68) +'i',0x1b; i (0x69) +'j',0x1a; j (0x6a) +'k',0x3b; k (0x6b) +'m',0x42; m (0x6d) +'n',0x43; n (0x6e) +'o',0x2c; o (0x6f) +'q',0x54; q (0x71) +'r',0x3c; r (0x72) +'s',0x3a; s (0x73) +'t',0x33; t (0x74) +'u',0x1c; u (0x75) +'v',0x21; v (0x76) +'w',0x5b; w (0x77) +'x',0x5d; x (0x78) +'y',0x4c; y (0x79) +'z',0x31; z (0x7a) +'{',0x3d; { (0x7b) +'|',0x55; | (0x7c) +'}',0x45; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/ua b/usr.sbin/bhyve/kbdlayout/ua new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ua @@ -0,0 +1,9 @@ +# bhyve ps2kbd keyboard layout file +# (ua : Ukrainian) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) + diff --git a/usr.sbin/bhyve/kbdlayout/ua_shift_alt b/usr.sbin/bhyve/kbdlayout/ua_shift_alt new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/ua_shift_alt @@ -0,0 +1,10 @@ +# bhyve ps2kbd keyboard layout file +# (ua_shift_alt : Ukrainian (with Russian) (shift)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'*',0xb7; * (0x2a) +0xffb5,0x71; Keypad 5 + diff --git a/usr.sbin/bhyve/kbdlayout/uk b/usr.sbin/bhyve/kbdlayout/uk new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/uk @@ -0,0 +1,14 @@ +# bhyve ps2kbd keyboard layout file +# (uk : United Kingdom) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'#',0x5d; # (0x23) +'@',0x52; @ (0x40) +'\',0x61; \ (0x5c) +'|',0x61; | (0x7c) +'~',0x5d; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/uk_capsctrl b/usr.sbin/bhyve/kbdlayout/uk_capsctrl new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/uk_capsctrl @@ -0,0 +1,14 @@ +# bhyve ps2kbd keyboard layout file +# (uk_capsctrl : United Kingdom (Caps Lock acts as Left Ctrl)) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'#',0x5d; # (0x23) +'@',0x52; @ (0x40) +'\',0x61; \ (0x5c) +'|',0x61; | (0x7c) +'~',0x5d; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/uk_dvorak b/usr.sbin/bhyve/kbdlayout/uk_dvorak new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/uk_dvorak @@ -0,0 +1,78 @@ +# bhyve ps2kbd keyboard layout file +# (uk_dvorak : United Kingdom Dvorak) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x1e; " (0x22) +'#',0x5d; # (0x23) +''',0x15; ' (0x27) +'+',0x5b; + (0x2b) +',',0x1d; , (0x2c) +'-',0x52; - (0x2d) +'.',0x24; . (0x2e) +'/',0x54; / (0x2f) +':',0x1a; : (0x3a) +';',0x1a; ; (0x3b) +'<',0x1d; < (0x3c) +'=',0x5b; = (0x3d) +'>',0x24; > (0x3e) +'?',0x54; ? (0x3f) +'@',0x15; @ (0x40) +'B',0x31; B (0x42) +'C',0x43; C (0x43) +'D',0x33; D (0x44) +'E',0x23; E (0x45) +'F',0x35; F (0x46) +'G',0x3c; G (0x47) +'H',0x3b; H (0x48) +'I',0x34; I (0x49) +'J',0x21; J (0x4a) +'K',0x2a; K (0x4b) +'L',0x4d; L (0x4c) +'N',0x4b; N (0x4e) +'O',0x1b; O (0x4f) +'P',0x2d; P (0x50) +'Q',0x22; Q (0x51) +'R',0x44; R (0x52) +'S',0x4c; S (0x53) +'T',0x42; T (0x54) +'U',0x2b; U (0x55) +'V',0x49; V (0x56) +'W',0x41; W (0x57) +'X',0x32; X (0x58) +'Y',0x2c; Y (0x59) +'Z',0x4a; Z (0x5a) +'[',0x4e; [ (0x5b) +'\',0x61; \ (0x5c) +']',0x55; ] (0x5d) +'_',0x52; _ (0x5f) +'b',0x31; b (0x62) +'c',0x43; c (0x63) +'d',0x33; d (0x64) +'e',0x23; e (0x65) +'f',0x35; f (0x66) +'g',0x3c; g (0x67) +'h',0x3b; h (0x68) +'i',0x34; i (0x69) +'j',0x21; j (0x6a) +'k',0x2a; k (0x6b) +'l',0x4d; l (0x6c) +'n',0x4b; n (0x6e) +'o',0x1b; o (0x6f) +'p',0x2d; p (0x70) +'q',0x22; q (0x71) +'r',0x44; r (0x72) +'s',0x4c; s (0x73) +'t',0x42; t (0x74) +'u',0x2b; u (0x75) +'v',0x49; v (0x76) +'w',0x41; w (0x77) +'x',0x32; x (0x78) +'y',0x2c; y (0x79) +'z',0x4a; z (0x7a) +'{',0x4e; { (0x7b) +'|',0x61; | (0x7c) +'}',0x55; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/uk_macbook b/usr.sbin/bhyve/kbdlayout/uk_macbook new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/uk_macbook @@ -0,0 +1,10 @@ +# bhyve ps2kbd keyboard layout file +# (uk_macbook : United Kingdom Macbook) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'`',0x61; ` (0x60) +'~',0x61; ~ (0x7e) + diff --git a/usr.sbin/bhyve/kbdlayout/us_dvorak b/usr.sbin/bhyve/kbdlayout/us_dvorak new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/us_dvorak @@ -0,0 +1,74 @@ +# bhyve ps2kbd keyboard layout file +# (us_dvorak : United States of America dvorak) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x15; " (0x22) +''',0x15; ' (0x27) +'+',0x5b; + (0x2b) +',',0x1d; , (0x2c) +'-',0x52; - (0x2d) +'.',0x24; . (0x2e) +'/',0x54; / (0x2f) +':',0x1a; : (0x3a) +';',0x1a; ; (0x3b) +'<',0x1d; < (0x3c) +'=',0x5b; = (0x3d) +'>',0x24; > (0x3e) +'?',0x54; ? (0x3f) +'B',0x31; B (0x42) +'C',0x43; C (0x43) +'D',0x33; D (0x44) +'E',0x23; E (0x45) +'F',0x35; F (0x46) +'G',0x3c; G (0x47) +'H',0x3b; H (0x48) +'I',0x34; I (0x49) +'J',0x21; J (0x4a) +'K',0x2a; K (0x4b) +'L',0x4d; L (0x4c) +'N',0x4b; N (0x4e) +'O',0x1b; O (0x4f) +'P',0x2d; P (0x50) +'Q',0x22; Q (0x51) +'R',0x44; R (0x52) +'S',0x4c; S (0x53) +'T',0x42; T (0x54) +'U',0x2b; U (0x55) +'V',0x49; V (0x56) +'W',0x41; W (0x57) +'X',0x32; X (0x58) +'Y',0x2c; Y (0x59) +'Z',0x4a; Z (0x5a) +'[',0x4e; [ (0x5b) +']',0x55; ] (0x5d) +'_',0x52; _ (0x5f) +'b',0x31; b (0x62) +'c',0x43; c (0x63) +'d',0x33; d (0x64) +'e',0x23; e (0x65) +'f',0x35; f (0x66) +'g',0x3c; g (0x67) +'h',0x3b; h (0x68) +'i',0x34; i (0x69) +'j',0x21; j (0x6a) +'k',0x2a; k (0x6b) +'l',0x4d; l (0x6c) +'n',0x4b; n (0x6e) +'o',0x1b; o (0x6f) +'p',0x2d; p (0x70) +'q',0x22; q (0x71) +'r',0x44; r (0x72) +'s',0x4c; s (0x73) +'t',0x42; t (0x74) +'u',0x2b; u (0x75) +'v',0x49; v (0x76) +'w',0x41; w (0x77) +'x',0x32; x (0x78) +'y',0x2c; y (0x79) +'z',0x4a; z (0x7a) +'{',0x4e; { (0x7b) +'}',0x55; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/us_dvorakl b/usr.sbin/bhyve/kbdlayout/us_dvorakl new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/us_dvorakl @@ -0,0 +1,88 @@ +# bhyve ps2kbd keyboard layout file +# (us_dvorakl : United States of America lefthand dvorak) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x55; ! (0x21) +'"',0x1a; " (0x22) +'#',0x45; # (0x23) +'$',0x46; $ (0x24) +'%',0x54; % (0x25) +'&',0x52; & (0x26) +''',0x1a; ' (0x27) +'(',0x4a; ( (0x28) +')',0x49; ) (0x29) +'*',0x4c; * (0x2a) +'+',0x5b; + (0x2b) +'-',0x1c; - (0x2d) +'.',0x44; . (0x2e) +'/',0x26; / (0x2f) +'0',0x49; 0 (0x30) +'1',0x55; 1 (0x31) +'2',0x4e; 2 (0x32) +'3',0x45; 3 (0x33) +'4',0x46; 4 (0x34) +'5',0x54; 5 (0x35) +'6',0x4d; 6 (0x36) +'7',0x52; 7 (0x37) +'8',0x4c; 8 (0x38) +'9',0x4a; 9 (0x39) +':',0x15; : (0x3a) +';',0x15; ; (0x3b) +'=',0x5b; = (0x3d) +'>',0x44; > (0x3e) +'?',0x26; ? (0x3f) +'@',0x4e; @ (0x40) +'A',0x42; A (0x41) +'B',0x24; B (0x42) +'C',0x23; C (0x43) +'D',0x2b; D (0x44) +'E',0x3b; E (0x45) +'F',0x2e; F (0x46) +'G',0x21; G (0x47) +'I',0x3a; I (0x49) +'J',0x3e; J (0x4a) +'K',0x1b; K (0x4b) +'L',0x3d; L (0x4c) +'M',0x36; M (0x4d) +'O',0x43; O (0x4f) +'P',0x25; P (0x50) +'Q',0x1d; Q (0x51) +'R',0x3c; R (0x52) +'S',0x35; S (0x53) +'T',0x34; T (0x54) +'U',0x2c; U (0x55) +'W',0x32; W (0x57) +'Y',0x2d; Y (0x59) +'Z',0x4b; Z (0x5a) +'[',0x16; [ (0x5b) +']',0x1e; ] (0x5d) +'^',0x4d; ^ (0x5e) +'_',0x1c; _ (0x5f) +'a',0x42; a (0x61) +'b',0x24; b (0x62) +'c',0x23; c (0x63) +'d',0x2b; d (0x64) +'e',0x3b; e (0x65) +'f',0x2e; f (0x66) +'g',0x21; g (0x67) +'i',0x3a; i (0x69) +'j',0x3e; j (0x6a) +'k',0x1b; k (0x6b) +'l',0x3d; l (0x6c) +'m',0x36; m (0x6d) +'o',0x43; o (0x6f) +'p',0x25; p (0x70) +'q',0x1d; q (0x71) +'r',0x3c; r (0x72) +'s',0x35; s (0x73) +'t',0x34; t (0x74) +'u',0x2c; u (0x75) +'w',0x32; w (0x77) +'y',0x2d; y (0x79) +'z',0x4b; z (0x7a) +'{',0x16; { (0x7b) +'}',0x1e; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/us_dvorakp b/usr.sbin/bhyve/kbdlayout/us_dvorakp new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/us_dvorakp @@ -0,0 +1,95 @@ +# bhyve ps2kbd keyboard layout file +# (us_dvorakp : United States of America Programmer Dvorak) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'!',0x4e; ! (0x21) +'"',0x1a; " (0x22) +'#',0x55; # (0x23) +'$',0x0e; $ (0x24) +'%',0x16; % (0x25) +'&',0x16; & (0x26) +''',0x1a; ' (0x27) +'(',0x2e; ( (0x28) +')',0x3e; ) (0x29) +'*',0x3d; * (0x2a) +'+',0x46; + (0x2b) +',',0x1d; , (0x2c) +'-',0x52; - (0x2d) +'.',0x24; . (0x2e) +'/',0x54; / (0x2f) +'0',0x3d; 0 (0x30) +'1',0x2e; 1 (0x31) +'2',0x3e; 2 (0x32) +'3',0x25; 3 (0x33) +'4',0x46; 4 (0x34) +'5',0x26; 5 (0x35) +'6',0x45; 6 (0x36) +'7',0x1e; 7 (0x37) +'8',0x4e; 8 (0x38) +'9',0x36; 9 (0x39) +':',0x15; : (0x3a) +';',0x15; ; (0x3b) +'<',0x1d; < (0x3c) +'=',0x36; = (0x3d) +'>',0x24; > (0x3e) +'?',0x54; ? (0x3f) +'@',0x5b; @ (0x40) +'B',0x31; B (0x42) +'C',0x43; C (0x43) +'D',0x33; D (0x44) +'E',0x23; E (0x45) +'F',0x35; F (0x46) +'G',0x3c; G (0x47) +'H',0x3b; H (0x48) +'I',0x34; I (0x49) +'J',0x21; J (0x4a) +'K',0x2a; K (0x4b) +'L',0x4d; L (0x4c) +'N',0x4b; N (0x4e) +'O',0x1b; O (0x4f) +'P',0x2d; P (0x50) +'Q',0x22; Q (0x51) +'R',0x44; R (0x52) +'S',0x4c; S (0x53) +'T',0x42; T (0x54) +'U',0x2b; U (0x55) +'V',0x49; V (0x56) +'W',0x41; W (0x57) +'X',0x32; X (0x58) +'Y',0x2c; Y (0x59) +'Z',0x4a; Z (0x5a) +'[',0x1e; [ (0x5b) +']',0x45; ] (0x5d) +'^',0x5b; ^ (0x5e) +'_',0x52; _ (0x5f) +'`',0x55; ` (0x60) +'b',0x31; b (0x62) +'c',0x43; c (0x63) +'d',0x33; d (0x64) +'e',0x23; e (0x65) +'f',0x35; f (0x66) +'g',0x3c; g (0x67) +'h',0x3b; h (0x68) +'i',0x34; i (0x69) +'j',0x21; j (0x6a) +'k',0x2a; k (0x6b) +'l',0x4d; l (0x6c) +'n',0x4b; n (0x6e) +'o',0x1b; o (0x6f) +'p',0x2d; p (0x70) +'q',0x22; q (0x71) +'r',0x44; r (0x72) +'s',0x4c; s (0x73) +'t',0x42; t (0x74) +'u',0x2b; u (0x75) +'v',0x49; v (0x76) +'w',0x41; w (0x77) +'x',0x32; x (0x78) +'y',0x2c; y (0x79) +'z',0x4a; z (0x7a) +'{',0x26; { (0x7b) +'}',0x25; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/us_dvorakr b/usr.sbin/bhyve/kbdlayout/us_dvorakr new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/us_dvorakr @@ -0,0 +1,86 @@ +# bhyve ps2kbd keyboard layout file +# (us_dvorakr : United States of America righthand dvorak) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x4a; " (0x22) +'%',0x15; % (0x25) +'&',0x1c; & (0x26) +''',0x4a; ' (0x27) +'(',0x1a; ( (0x28) +')',0x22; ) (0x29) +'*',0x1b; * (0x2a) +'+',0x5b; + (0x2b) +',',0x2a; , (0x2c) +'-',0x52; - (0x2d) +'.',0x2d; . (0x2e) +'/',0x45; / (0x2f) +'0',0x22; 0 (0x30) +'5',0x15; 5 (0x35) +'6',0x1d; 6 (0x36) +'7',0x1c; 7 (0x37) +'8',0x1b; 8 (0x38) +'9',0x1a; 9 (0x39) +':',0x54; : (0x3a) +';',0x54; ; (0x3b) +'<',0x2a; < (0x3c) +'=',0x5b; = (0x3d) +'>',0x2d; > (0x3e) +'?',0x45; ? (0x3f) +'A',0x2b; A (0x41) +'B',0x4d; B (0x42) +'C',0x4b; C (0x43) +'D',0x42; D (0x44) +'E',0x34; E (0x45) +'F',0x3e; F (0x46) +'G',0x49; G (0x47) +'I',0x32; I (0x49) +'J',0x2e; J (0x4a) +'K',0x4c; K (0x4b) +'L',0x36; L (0x4c) +'M',0x3d; M (0x4d) +'O',0x2c; O (0x4f) +'P',0x46; P (0x50) +'Q',0x24; Q (0x51) +'R',0x35; R (0x52) +'S',0x3c; S (0x53) +'T',0x3b; T (0x54) +'U',0x43; U (0x55) +'V',0x41; V (0x56) +'W',0x3a; W (0x57) +'X',0x21; X (0x58) +'Y',0x44; Y (0x59) +'Z',0x23; Z (0x5a) +'[',0x4e; [ (0x5b) +']',0x55; ] (0x5d) +'^',0x1d; ^ (0x5e) +'_',0x52; _ (0x5f) +'a',0x2b; a (0x61) +'b',0x4d; b (0x62) +'c',0x4b; c (0x63) +'d',0x42; d (0x64) +'e',0x34; e (0x65) +'f',0x3e; f (0x66) +'g',0x49; g (0x67) +'i',0x32; i (0x69) +'j',0x2e; j (0x6a) +'k',0x4c; k (0x6b) +'l',0x36; l (0x6c) +'m',0x3d; m (0x6d) +'o',0x2c; o (0x6f) +'p',0x46; p (0x70) +'q',0x24; q (0x71) +'r',0x35; r (0x72) +'s',0x3c; s (0x73) +'t',0x3b; t (0x74) +'u',0x43; u (0x75) +'v',0x41; v (0x76) +'w',0x3a; w (0x77) +'x',0x21; x (0x78) +'y',0x44; y (0x79) +'z',0x23; z (0x7a) +'{',0x4e; { (0x7b) +'}',0x55; } (0x7d) + diff --git a/usr.sbin/bhyve/kbdlayout/us_dvorakx b/usr.sbin/bhyve/kbdlayout/us_dvorakx new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/us_dvorakx @@ -0,0 +1,80 @@ +# bhyve ps2kbd keyboard layout file +# (us_dvorakx : United States of America dvorakx) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'"',0x15; " (0x22) +''',0x15; ' (0x27) +'+',0x5d; + (0x2b) +',',0x1d; , (0x2c) +'-',0x52; - (0x2d) +'.',0x24; . (0x2e) +'/',0x54; / (0x2f) +':',0x1a; : (0x3a) +';',0x1a; ; (0x3b) +'<',0x1d; < (0x3c) +'=',0x5d; = (0x3d) +'>',0x24; > (0x3e) +'?',0x54; ? (0x3f) +'B',0x31; B (0x42) +'C',0x43; C (0x43) +'D',0x33; D (0x44) +'E',0x23; E (0x45) +'F',0x35; F (0x46) +'G',0x3c; G (0x47) +'H',0x3b; H (0x48) +'I',0x34; I (0x49) +'J',0x21; J (0x4a) +'K',0x2a; K (0x4b) +'L',0x4d; L (0x4c) +'N',0x4b; N (0x4e) +'O',0x1b; O (0x4f) +'P',0x2d; P (0x50) +'Q',0x22; Q (0x51) +'R',0x44; R (0x52) +'S',0x4c; S (0x53) +'T',0x42; T (0x54) +'U',0x2b; U (0x55) +'V',0x49; V (0x56) +'W',0x41; W (0x57) +'X',0x32; X (0x58) +'Y',0x2c; Y (0x59) +'Z',0x4a; Z (0x5a) +'[',0x4e; [ (0x5b) +'\',0x5b; \ (0x5c) +']',0x55; ] (0x5d) +'_',0x52; _ (0x5f) +'`',0x76; ` (0x60) +'b',0x31; b (0x62) +'c',0x43; c (0x63) +'d',0x33; d (0x64) +'e',0x23; e (0x65) +'f',0x35; f (0x66) +'g',0x3c; g (0x67) +'h',0x3b; h (0x68) +'i',0x34; i (0x69) +'j',0x21; j (0x6a) +'k',0x2a; k (0x6b) +'l',0x4d; l (0x6c) +'n',0x4b; n (0x6e) +'o',0x1b; o (0x6f) +'p',0x2d; p (0x70) +'q',0x22; q (0x71) +'r',0x44; r (0x72) +'s',0x4c; s (0x73) +'t',0x42; t (0x74) +'u',0x2b; u (0x75) +'v',0x49; v (0x76) +'w',0x41; w (0x77) +'x',0x32; x (0x78) +'y',0x2c; y (0x79) +'z',0x4a; z (0x7a) +'{',0x4e; { (0x7b) +'|',0x5b; | (0x7c) +'}',0x55; } (0x7d) +'~',0x76; ~ (0x7e) +0xff1b,0x0e; Escape +0xffe3,0x58; Left control + diff --git a/usr.sbin/bhyve/kbdlayout/us_emacs b/usr.sbin/bhyve/kbdlayout/us_emacs new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/us_emacs @@ -0,0 +1,9 @@ +# bhyve ps2kbd keyboard layout file +# (us_emacs : United States of America Emacs optimized layout) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +0xffff,0x66; Del + diff --git a/usr.sbin/bhyve/kbdlayout/us_unix b/usr.sbin/bhyve/kbdlayout/us_unix new file mode 100644 --- /dev/null +++ b/usr.sbin/bhyve/kbdlayout/us_unix @@ -0,0 +1,14 @@ +# bhyve ps2kbd keyboard layout file +# (us_unix : United States of America Traditional Unix Workstation) +# +# Created by: Koine Yuusuke(koinec) +# +# $FreeBSD$ + +'`',0x76; ` (0x60) +'~',0x76; ~ (0x7e) +0xff08,0x71; Back space +0xff1b,0x0e; Escape +0xffe3,0x58; Left control +0xffff,0x66; Del + diff --git a/usr.sbin/bhyve/ps2kbd.c b/usr.sbin/bhyve/ps2kbd.c --- a/usr.sbin/bhyve/ps2kbd.c +++ b/usr.sbin/bhyve/ps2kbd.c @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include @@ -42,9 +43,13 @@ #include #include #include +#include +#include +#include "bhyverun.h" #include "atkbdc.h" #include "debug.h" +#include "config.h" #include "console.h" /* keyboard device commands */ @@ -62,6 +67,10 @@ #define PS2KBD_FIFOSZ 16 +#define PS2KBD_LAYOUT_BASEDIR "/usr/share/bhyve/kbdlayout/" + +#define MAX_PATHNAME 256 + struct fifo { uint8_t buf[PS2KBD_FIFOSZ]; int rindex; /* index to read from */ @@ -90,7 +99,7 @@ /* * FIXME: Pause/break and Print Screen/SysRq require special handling. */ -static const struct extended_translation extended_translations[] = { +static struct extended_translation extended_translations[128] = { {0xff08, 0x66}, /* Back space */ {0xff09, 0x0d}, /* Tab */ {0xff0d, 0x5a}, /* Return */ @@ -162,7 +171,7 @@ }; /* ASCII to type 2 scancode lookup table */ -static const uint8_t ascii_translations[128] = { +static uint8_t ascii_translations[128] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -340,7 +349,7 @@ assert(pthread_mutex_isowned_np(&sc->mtx)); int e0_prefix, found; uint8_t code; - const struct extended_translation *trans; + struct extended_translation *trans; if (keycode) { code = keyset1to2_translations[(uint8_t)(keycode & 0x7f)]; @@ -396,11 +405,91 @@ atkbdc_event(sc->atkbdc_sc, 1); } +static void +ps2kbd_update_extended_translation(uint32_t keycode, uint32_t scancode, uint32_t prefix) +{ + int i = 0; + + do { + if (extended_translations[i].keysym == keycode) + break; + } while(extended_translations[++i].keysym); + + if (i == (sizeof(extended_translations) / sizeof(struct extended_translation) - 1)) + return; + + if (!extended_translations[i].keysym) { + extended_translations[i].keysym = keycode; + + extended_translations[i+1].keysym = 0; + extended_translations[i+1].scancode = 0; + extended_translations[i+1].flags = 0; + } + + extended_translations[i].scancode = (uint8_t)(scancode & 0xff); + extended_translations[i].flags = (prefix ? SCANCODE_E0_PREFIX : 0); +} + +static void +ps2kbd_setkbdlayout(void) +{ + int err; + int fd; + char path[MAX_PATHNAME]; + char *buf, *next, *line; + struct stat sb; + size_t sz; + uint8_t ascii; + uint32_t keycode, scancode, prefix; + + snprintf(path, MAX_PATHNAME, PS2KBD_LAYOUT_BASEDIR"%s", get_config_value("keyboard.layout") ); + + err = stat(path, &sb); + if (err) + return; + + buf = (char *)malloc(sizeof(char) * sb.st_size); + if (buf == NULL) + return; + + fd = open(path, O_RDONLY); + if (fd == -1) + goto out; + + sz = read(fd, buf, sb.st_size ); + + close(fd); + + if (sz != sb.st_size ) + goto out; + + next = buf; + while ((line = strsep(&next, "\n")) != NULL) { + if (sscanf(line, "'%c',%x;", &ascii, &scancode) == 2) { + if (ascii < 0x80) + ascii_translations[ascii] = (uint8_t)(scancode & 0xff); + } else if (sscanf(line, "%x,%x,%x;", &keycode, &scancode, &prefix) == 3 ) { + ps2kbd_update_extended_translation(keycode, scancode, prefix); + } else if (sscanf(line, "%x,%x;", &keycode, &scancode) == 2) { + if (keycode < 0x80) + ascii_translations[(uint8_t)(keycode & 0xff)] = (uint8_t)(scancode & 0xff); + else + ps2kbd_update_extended_translation(keycode, scancode, 0); + } + } + +out: + free(buf); +} + struct ps2kbd_softc * ps2kbd_init(struct atkbdc_softc *atkbdc_sc) { struct ps2kbd_softc *sc; + if (get_config_value("keyboard.layout") != NULL) + ps2kbd_setkbdlayout(); + sc = calloc(1, sizeof (struct ps2kbd_softc)); pthread_mutex_init(&sc->mtx, NULL); fifo_init(sc);