Append Keyboard Layout specified option for using VNC.

Part two: Append bhyve -K option for specified keyboard layout
with layout setting files every languages.
Since the cmd option '-k' was used in the meantime
it was changed to '-K'

PR:		246121
Submitted by:	koinec@yahoo.co.jp
Reviewed by:	grehan@
Differential Revision:	https://reviews.freebsd.org/D29473

MFC after:	4 weeks
This commit is contained in:
Michael Reifenberger
2022-01-20 23:44:04 +01:00
parent 89e0ee0db4
commit 19eaa01bea
81 changed files with 2956 additions and 5 deletions
+4
View File
@@ -170,6 +170,10 @@
share
atf tags=package=tests
..
bhyve
kbdlayout
..
..
bsdconfig
media
..
+1
View File
@@ -133,4 +133,5 @@ CFLAGS+=-DGDB_LOG
WARNS?= 2
SUBDIR= kbdlayout
.include <bsd.prog.mk>
+8
View File
@@ -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 @@ Print help message and exit.
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
+6
View File
@@ -133,6 +133,12 @@ will listen for connections on this port.
.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.
+6 -2
View File
@@ -236,6 +236,7 @@ usage(int code)
" -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 @@ main(int argc, char *argv[])
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 @@ main(int argc, char *argv[])
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();
+40
View File
@@ -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 <bsd.prog.mk>
+11
View File
@@ -0,0 +1,11 @@
# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
.include <dirdeps.mk>
.if ${DEP_RELDIR} == ${_DEP_RELDIR}
# local dependencies - needed for -jN in clean tree
.endif
+10
View File
@@ -0,0 +1,10 @@
# bhyve ps2kbd keyboard layout file
# (am : Armenian phonetic layout)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
')',0x87; ) (0x29)
'+',0xce; + (0x2b)
+45
View File
@@ -0,0 +1,45 @@
# bhyve ps2kbd keyboard layout file
# (be : Belgian)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+42
View File
@@ -0,0 +1,42 @@
# bhyve ps2kbd keyboard layout file
# (be_acc : Belgian (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+10
View File
@@ -0,0 +1,10 @@
# bhyve ps2kbd keyboard layout file
# (bg_bds : Bulgarian (BDS))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'(',0xa9; ( (0x28)
'*',0xb7; * (0x2a)
+9
View File
@@ -0,0 +1,9 @@
# bhyve ps2kbd keyboard layout file
# (bg_phonetic : Bulgarian (Phonetic))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
+19
View File
@@ -0,0 +1,19 @@
# bhyve ps2kbd keyboard layout file
# (br : Brazilian (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'"',0x0e; " (0x22)
''',0x0e; ' (0x27)
':',0x4a; : (0x3a)
';',0x4a; ; (0x3b)
'?',0x51; ? (0x3f)
'[',0x5b; [ (0x5b)
'\',0x61; \ (0x5c)
']',0x5d; ] (0x5d)
'{',0x5b; { (0x7b)
'|',0x61; | (0x7c)
'}',0x5d; } (0x7d)
+22
View File
@@ -0,0 +1,22 @@
# bhyve ps2kbd keyboard layout file
# (br_noacc : Brazilian (without accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+12
View File
@@ -0,0 +1,12 @@
# bhyve ps2kbd keyboard layout file
# (centraleuropean : Central European)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'Y',0x1a; Y (0x59)
'Z',0x35; Z (0x5a)
'y',0x1a; y (0x79)
'z',0x35; z (0x7a)
+36
View File
@@ -0,0 +1,36 @@
# bhyve ps2kbd keyboard layout file
# (ch : Swiss-German)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+36
View File
@@ -0,0 +1,36 @@
# bhyve ps2kbd keyboard layout file
# (ch-fr : Swiss-French)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+33
View File
@@ -0,0 +1,33 @@
# bhyve ps2kbd keyboard layout file
# (ch-fr_acc : Swiss-French (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+33
View File
@@ -0,0 +1,33 @@
# bhyve ps2kbd keyboard layout file
# (ch_acc : Swiss-German (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+37
View File
@@ -0,0 +1,37 @@
# bhyve ps2kbd keyboard layout file
# (ch_macbook_acc : Swiss-German Macbook/Macbook Pro (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+11
View File
@@ -0,0 +1,11 @@
# bhyve ps2kbd keyboard layout file
# (cz : Czech (QWERTZ, accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
')',0x9b; ) (0x29)
'*',0xb7; * (0x2a)
'+',0x82; + (0x2b)
+37
View File
@@ -0,0 +1,37 @@
# bhyve ps2kbd keyboard layout file
# (de : German)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+36
View File
@@ -0,0 +1,36 @@
# bhyve ps2kbd keyboard layout file
# (de_acc : German (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+38
View File
@@ -0,0 +1,38 @@
# bhyve ps2kbd keyboard layout file
# (de_noacc : German (no accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+248
View File
@@ -0,0 +1,248 @@
# bhyve ps2kbd keyboard layout file (US - default)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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); <Comment>
# or
# AsciiCode(Hex),ScanCode(Hex); <Comment>
#
# 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); <Comment>
# or
# Xorg KeySym(Hex:2Byte),ScanCode(Hex),Prefix(Hex); <Comment>
#
# 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)
+32
View File
@@ -0,0 +1,32 @@
# bhyve ps2kbd keyboard layout file
# (dk : Danish)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+35
View File
@@ -0,0 +1,35 @@
# bhyve ps2kbd keyboard layout file
# (dk_macbook : Danish (macbook))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+31
View File
@@ -0,0 +1,31 @@
# bhyve ps2kbd keyboard layout file
# (ee : Nordic layout on Asus eeePC Estonian)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+28
View File
@@ -0,0 +1,28 @@
# bhyve ps2kbd keyboard layout file
# (es : Spanish (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+28
View File
@@ -0,0 +1,28 @@
# bhyve ps2kbd keyboard layout file
# (es_acc : Spanish (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+78
View File
@@ -0,0 +1,78 @@
# bhyve ps2kbd keyboard layout file
# (es_dvorak : Spanish Dvorak)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+32
View File
@@ -0,0 +1,32 @@
# bhyve ps2kbd keyboard layout file
# (fi : Finnish)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+46
View File
@@ -0,0 +1,46 @@
# bhyve ps2kbd keyboard layout file
# (fr : French French Canadian (accent keys) Swiss-French)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+46
View File
@@ -0,0 +1,46 @@
# bhyve ps2kbd keyboard layout file
# (fr_acc : French (accent keys) Swiss-French (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+87
View File
@@ -0,0 +1,87 @@
# bhyve ps2kbd keyboard layout file
# (fr_dvorak : French Dvorak-like)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+86
View File
@@ -0,0 +1,86 @@
# bhyve ps2kbd keyboard layout file
# (fr_dvorak_acc : French Dvorak-like (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+49
View File
@@ -0,0 +1,49 @@
# bhyve ps2kbd keyboard layout file
# (fr_macbook : French Macbook/Macbook Pro (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+9
View File
@@ -0,0 +1,9 @@
# bhyve ps2kbd keyboard layout file
# (gr : Greek (104 keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
+9
View File
@@ -0,0 +1,9 @@
# bhyve ps2kbd keyboard layout file
# (gr_101_acc : Greek (101 keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
+17
View File
@@ -0,0 +1,17 @@
# bhyve ps2kbd keyboard layout file
# (gr_elot_acc : Greek ELOT)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'"',0x1e; " (0x22)
'#',0x5d; # (0x23)
''',0x0e; ' (0x27)
'*',0xb7; * (0x2a)
'/',0x52; / (0x2f)
'@',0x52; @ (0x40)
'\',0x61; \ (0x5c)
'|',0x61; | (0x7c)
'~',0x5d; ~ (0x7e)
+36
View File
@@ -0,0 +1,36 @@
# bhyve ps2kbd keyboard layout file
# (hr : Croatian)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+9
View File
@@ -0,0 +1,9 @@
# bhyve ps2kbd keyboard layout file
# (hu_101 : Hungarian (101 keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
+41
View File
@@ -0,0 +1,41 @@
# bhyve ps2kbd keyboard layout file
# (hu_102 : Hungarian (102 keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+33
View File
@@ -0,0 +1,33 @@
# bhyve ps2kbd keyboard layout file
# (is : Icelandic)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+32
View File
@@ -0,0 +1,32 @@
# bhyve ps2kbd keyboard layout file
# (is_acc : Icelandic (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+34
View File
@@ -0,0 +1,34 @@
# bhyve ps2kbd keyboard layout file
# (it : Italian)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+36
View File
@@ -0,0 +1,36 @@
# bhyve ps2kbd keyboard layout file
# (jp : Japanese 106)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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
+37
View File
@@ -0,0 +1,37 @@
# bhyve ps2kbd keyboard layout file
# (jp.capsctrl : Japanese 106x)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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
+11
View File
@@ -0,0 +1,11 @@
# bhyve ps2kbd keyboard layout file
# (kz_io : Kazakh)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'"',0x82; " (0x22)
'(',0xa9; ( (0x28)
'*',0xb7; * (0x2a)
+11
View File
@@ -0,0 +1,11 @@
# bhyve ps2kbd keyboard layout file
# (kz_kst : Kazakh)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'"',0x82; " (0x22)
'(',0xa9; ( (0x28)
'*',0xb7; * (0x2a)
+33
View File
@@ -0,0 +1,33 @@
# bhyve ps2kbd keyboard layout file
# (latinamerican : Latin American)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
@@ -0,0 +1,31 @@
# bhyve ps2kbd keyboard layout file
# (latinamerican_acc : Latin American (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+10
View File
@@ -0,0 +1,10 @@
# bhyve ps2kbd keyboard layout file
# (lt : Lithuanian Ukrainian (with Russian) (shift))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
0xffea,0x61; Right alt
+31
View File
@@ -0,0 +1,31 @@
# bhyve ps2kbd keyboard layout file
# (nl : Dutch (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+32
View File
@@ -0,0 +1,32 @@
# bhyve ps2kbd keyboard layout file
# (no : Norwegian)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+81
View File
@@ -0,0 +1,81 @@
# bhyve ps2kbd keyboard layout file
# (no_dvorak : Norwegian dvorak)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+32
View File
@@ -0,0 +1,32 @@
# bhyve ps2kbd keyboard layout file
# (nordic_asus-eee : Nordic layout on Asus eeePC)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+74
View File
@@ -0,0 +1,74 @@
# bhyve ps2kbd keyboard layout file
# (pl_dvorak : Polish Dvorak)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+31
View File
@@ -0,0 +1,31 @@
# bhyve ps2kbd keyboard layout file
# (pt : Portuguese)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+28
View File
@@ -0,0 +1,28 @@
# bhyve ps2kbd keyboard layout file
# (pt_acc : Portuguese (accent keys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+14
View File
@@ -0,0 +1,14 @@
# bhyve ps2kbd keyboard layout file
# (ru : Russian)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'!',0x82; ! (0x21)
'"',0x00; " (0x22)
'(',0x8a; ( (0x28)
')',0x8b; ) (0x29)
'*',0x85; * (0x2a)
':',0x86; : (0x3a)
+9
View File
@@ -0,0 +1,9 @@
# bhyve ps2kbd keyboard layout file
# (ru_shift : Russian (shift))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
+9
View File
@@ -0,0 +1,9 @@
# bhyve ps2kbd keyboard layout file
# (ru_win : Russian (winkeys))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
+32
View File
@@ -0,0 +1,32 @@
# bhyve ps2kbd keyboard layout file
# (se : Swedish)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+36
View File
@@ -0,0 +1,36 @@
# bhyve ps2kbd keyboard layout file
# (si : Slovenian)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+36
View File
@@ -0,0 +1,36 @@
# bhyve ps2kbd keyboard layout file
# (tr : Turkish (Q))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+81
View File
@@ -0,0 +1,81 @@
# bhyve ps2kbd keyboard layout file
# (tr_f : Turkish (F))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+9
View File
@@ -0,0 +1,9 @@
# bhyve ps2kbd keyboard layout file
# (ua : Ukrainian)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
+10
View File
@@ -0,0 +1,10 @@
# bhyve ps2kbd keyboard layout file
# (ua_shift_alt : Ukrainian (with Russian) (shift))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'*',0xb7; * (0x2a)
0xffb5,0x71; Keypad 5
+14
View File
@@ -0,0 +1,14 @@
# bhyve ps2kbd keyboard layout file
# (uk : United Kingdom)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'"',0x1e; " (0x22)
'#',0x5d; # (0x23)
'@',0x52; @ (0x40)
'\',0x61; \ (0x5c)
'|',0x61; | (0x7c)
'~',0x5d; ~ (0x7e)
+14
View File
@@ -0,0 +1,14 @@
# bhyve ps2kbd keyboard layout file
# (uk_capsctrl : United Kingdom (Caps Lock acts as Left Ctrl))
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'"',0x1e; " (0x22)
'#',0x5d; # (0x23)
'@',0x52; @ (0x40)
'\',0x61; \ (0x5c)
'|',0x61; | (0x7c)
'~',0x5d; ~ (0x7e)
+78
View File
@@ -0,0 +1,78 @@
# bhyve ps2kbd keyboard layout file
# (uk_dvorak : United Kingdom Dvorak)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+10
View File
@@ -0,0 +1,10 @@
# bhyve ps2kbd keyboard layout file
# (uk_macbook : United Kingdom Macbook)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'`',0x61; ` (0x60)
'~',0x61; ~ (0x7e)
+74
View File
@@ -0,0 +1,74 @@
# bhyve ps2kbd keyboard layout file
# (us_dvorak : United States of America dvorak)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+88
View File
@@ -0,0 +1,88 @@
# bhyve ps2kbd keyboard layout file
# (us_dvorakl : United States of America lefthand dvorak)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+95
View File
@@ -0,0 +1,95 @@
# bhyve ps2kbd keyboard layout file
# (us_dvorakp : United States of America Programmer Dvorak)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+86
View File
@@ -0,0 +1,86 @@
# bhyve ps2kbd keyboard layout file
# (us_dvorakr : United States of America righthand dvorak)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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)
+80
View File
@@ -0,0 +1,80 @@
# bhyve ps2kbd keyboard layout file
# (us_dvorakx : United States of America dvorakx)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $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
+9
View File
@@ -0,0 +1,9 @@
# bhyve ps2kbd keyboard layout file
# (us_emacs : United States of America Emacs optimized layout)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
0xffff,0x66; Del
+14
View File
@@ -0,0 +1,14 @@
# bhyve ps2kbd keyboard layout file
# (us_unix : United States of America Traditional Unix Workstation)
#
# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
#
# $FreeBSD$
'`',0x76; ` (0x60)
'~',0x76; ~ (0x7e)
0xff08,0x71; Back space
0xff1b,0x0e; Escape
0xffe3,0x58; Left control
0xffff,0x66; Del
+92 -3
View File
@@ -31,6 +31,7 @@
__FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/stat.h>
#include <machine/vmm_snapshot.h>
@@ -42,9 +43,13 @@ __FBSDID("$FreeBSD$");
#include <strings.h>
#include <pthread.h>
#include <pthread_np.h>
#include <unistd.h>
#include <fcntl.h>
#include "bhyverun.h"
#include "atkbdc.h"
#include "debug.h"
#include "config.h"
#include "console.h"
/* keyboard device commands */
@@ -62,6 +67,10 @@ __FBSDID("$FreeBSD$");
#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 @@ struct extended_translation {
/*
* 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 @@ static const struct extended_translation extended_translations[] = {
};
/* 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 @@ ps2kbd_keysym_queue(struct ps2kbd_softc *sc,
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 @@ ps2kbd_event(int down, uint32_t keysym, uint32_t keycode, void *arg)
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);