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

View File

@ -170,6 +170,10 @@
share
atf tags=package=tests
..
bhyve
kbdlayout
..
..
bsdconfig
media
..

View File

@ -133,4 +133,5 @@ CFLAGS+=-DGDB_LOG
WARNS?= 2
SUBDIR= kbdlayout
.include <bsd.prog.mk>

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

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.

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();

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>

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

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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

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

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)

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)

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)

View File

@ -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)

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

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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

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)

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)

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)

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)

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)

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)

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)

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)

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

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

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

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);