git: cc820887ab0e - stable/13 - 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'
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 23 Nov 2022 09:44:07 UTC
The branch stable/13 has been updated by corvink:
URL: https://cgit.FreeBSD.org/src/commit/?id=cc820887ab0ea05c5dcad6d99d9a0d996eb3e19e
commit cc820887ab0ea05c5dcad6d99d9a0d996eb3e19e
Author: Michael Reifenberger <mr@FreeBSD.org>
AuthorDate: 2022-01-20 22:44:04 +0000
Commit: Corvin Köhne <corvink@FreeBSD.org>
CommitDate: 2022-11-23 09:11:56 +0000
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
(cherry picked from commit 19eaa01beaba68ed4c70c44127955f5c9b331cb9)
---
etc/mtree/BSD.usr.dist | 4 +
usr.sbin/bhyve/Makefile | 1 +
usr.sbin/bhyve/bhyve.8 | 8 +
usr.sbin/bhyve/bhyve_config.5 | 6 +
usr.sbin/bhyve/bhyverun.c | 8 +-
usr.sbin/bhyve/kbdlayout/Makefile | 40 +++++
usr.sbin/bhyve/kbdlayout/Makefile.depend | 11 ++
usr.sbin/bhyve/kbdlayout/am | 10 ++
usr.sbin/bhyve/kbdlayout/be | 45 ++++++
usr.sbin/bhyve/kbdlayout/be_acc | 42 +++++
usr.sbin/bhyve/kbdlayout/bg_bds | 10 ++
usr.sbin/bhyve/kbdlayout/bg_phonetic | 9 ++
usr.sbin/bhyve/kbdlayout/br | 19 +++
usr.sbin/bhyve/kbdlayout/br_noacc | 22 +++
usr.sbin/bhyve/kbdlayout/centraleuropean | 12 ++
usr.sbin/bhyve/kbdlayout/ch | 36 +++++
usr.sbin/bhyve/kbdlayout/ch-fr | 36 +++++
usr.sbin/bhyve/kbdlayout/ch-fr_acc | 33 ++++
usr.sbin/bhyve/kbdlayout/ch_acc | 33 ++++
usr.sbin/bhyve/kbdlayout/ch_macbook_acc | 37 +++++
usr.sbin/bhyve/kbdlayout/cz | 11 ++
usr.sbin/bhyve/kbdlayout/de | 37 +++++
usr.sbin/bhyve/kbdlayout/de_acc | 36 +++++
usr.sbin/bhyve/kbdlayout/de_noacc | 38 +++++
usr.sbin/bhyve/kbdlayout/default | 248 +++++++++++++++++++++++++++++
usr.sbin/bhyve/kbdlayout/dk | 32 ++++
usr.sbin/bhyve/kbdlayout/dk_macbook | 35 ++++
usr.sbin/bhyve/kbdlayout/ee | 31 ++++
usr.sbin/bhyve/kbdlayout/es | 28 ++++
usr.sbin/bhyve/kbdlayout/es_acc | 28 ++++
usr.sbin/bhyve/kbdlayout/es_dvorak | 78 +++++++++
usr.sbin/bhyve/kbdlayout/fi | 32 ++++
usr.sbin/bhyve/kbdlayout/fr | 46 ++++++
usr.sbin/bhyve/kbdlayout/fr_acc | 46 ++++++
usr.sbin/bhyve/kbdlayout/fr_dvorak | 87 ++++++++++
usr.sbin/bhyve/kbdlayout/fr_dvorak_acc | 86 ++++++++++
usr.sbin/bhyve/kbdlayout/fr_macbook | 49 ++++++
usr.sbin/bhyve/kbdlayout/gr | 9 ++
usr.sbin/bhyve/kbdlayout/gr_101_acc | 9 ++
usr.sbin/bhyve/kbdlayout/gr_elot_acc | 17 ++
usr.sbin/bhyve/kbdlayout/hr | 36 +++++
usr.sbin/bhyve/kbdlayout/hu_101 | 9 ++
usr.sbin/bhyve/kbdlayout/hu_102 | 41 +++++
usr.sbin/bhyve/kbdlayout/is | 33 ++++
usr.sbin/bhyve/kbdlayout/is_acc | 32 ++++
usr.sbin/bhyve/kbdlayout/it | 34 ++++
usr.sbin/bhyve/kbdlayout/jp | 36 +++++
usr.sbin/bhyve/kbdlayout/jp_capsctrl | 37 +++++
usr.sbin/bhyve/kbdlayout/kz_io | 11 ++
usr.sbin/bhyve/kbdlayout/kz_kst | 11 ++
usr.sbin/bhyve/kbdlayout/latinamerican | 33 ++++
usr.sbin/bhyve/kbdlayout/latinamerican_acc | 31 ++++
usr.sbin/bhyve/kbdlayout/lt | 10 ++
usr.sbin/bhyve/kbdlayout/nl | 31 ++++
usr.sbin/bhyve/kbdlayout/no | 32 ++++
usr.sbin/bhyve/kbdlayout/no_dvorak | 81 ++++++++++
usr.sbin/bhyve/kbdlayout/nordic_asus-eee | 32 ++++
usr.sbin/bhyve/kbdlayout/pl_dvorak | 74 +++++++++
usr.sbin/bhyve/kbdlayout/pt | 31 ++++
usr.sbin/bhyve/kbdlayout/pt_acc | 28 ++++
usr.sbin/bhyve/kbdlayout/ru | 14 ++
usr.sbin/bhyve/kbdlayout/ru_shift | 9 ++
usr.sbin/bhyve/kbdlayout/ru_win | 9 ++
usr.sbin/bhyve/kbdlayout/se | 32 ++++
usr.sbin/bhyve/kbdlayout/si | 36 +++++
usr.sbin/bhyve/kbdlayout/tr | 36 +++++
usr.sbin/bhyve/kbdlayout/tr_f | 81 ++++++++++
usr.sbin/bhyve/kbdlayout/ua | 9 ++
usr.sbin/bhyve/kbdlayout/ua_shift_alt | 10 ++
usr.sbin/bhyve/kbdlayout/uk | 14 ++
usr.sbin/bhyve/kbdlayout/uk_capsctrl | 14 ++
usr.sbin/bhyve/kbdlayout/uk_dvorak | 78 +++++++++
usr.sbin/bhyve/kbdlayout/uk_macbook | 10 ++
usr.sbin/bhyve/kbdlayout/us_dvorak | 74 +++++++++
usr.sbin/bhyve/kbdlayout/us_dvorakl | 88 ++++++++++
usr.sbin/bhyve/kbdlayout/us_dvorakp | 95 +++++++++++
usr.sbin/bhyve/kbdlayout/us_dvorakr | 86 ++++++++++
usr.sbin/bhyve/kbdlayout/us_dvorakx | 80 ++++++++++
usr.sbin/bhyve/kbdlayout/us_emacs | 9 ++
usr.sbin/bhyve/kbdlayout/us_unix | 14 ++
usr.sbin/bhyve/ps2kbd.c | 95 ++++++++++-
81 files changed, 2956 insertions(+), 5 deletions(-)
diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist
index 46a975178595..fcaf5c72cef8 100644
--- a/etc/mtree/BSD.usr.dist
+++ b/etc/mtree/BSD.usr.dist
@@ -170,6 +170,10 @@
share
atf tags=package=tests
..
+ bhyve
+ kbdlayout
+ ..
+ ..
bsdconfig
media
..
diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile
index e35d528ab605..d55022d05f18 100644
--- a/usr.sbin/bhyve/Makefile
+++ b/usr.sbin/bhyve/Makefile
@@ -132,4 +132,5 @@ CFLAGS+=-DGDB_LOG
WARNS?= 2
+SUBDIR= kbdlayout
.include <bsd.prog.mk>
diff --git a/usr.sbin/bhyve/bhyve.8 b/usr.sbin/bhyve/bhyve.8
index ddd74cc819f1..f56f4e771b70 100644
--- a/usr.sbin/bhyve/bhyve.8
+++ b/usr.sbin/bhyve/bhyve.8
@@ -53,6 +53,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
@@ -171,6 +172,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
diff --git a/usr.sbin/bhyve/bhyve_config.5 b/usr.sbin/bhyve/bhyve_config.5
index 488dfb21bab7..882479bf7b00 100644
--- a/usr.sbin/bhyve/bhyve_config.5
+++ b/usr.sbin/bhyve/bhyve_config.5
@@ -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.
diff --git a/usr.sbin/bhyve/bhyverun.c b/usr.sbin/bhyve/bhyverun.c
index e9fc3c98ddeb..27166d9046e5 100644
--- a/usr.sbin/bhyve/bhyverun.c
+++ b/usr.sbin/bhyve/bhyverun.c
@@ -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\n"
" -o: set config 'var' to 'value'\n"
@@ -1242,9 +1243,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) {
@@ -1278,6 +1279,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();
diff --git a/usr.sbin/bhyve/kbdlayout/Makefile b/usr.sbin/bhyve/kbdlayout/Makefile
new file mode 100644
index 000000000000..dc608508f67e
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/Makefile
@@ -0,0 +1,40 @@
+# $FreeBSD$
+
+FILESDIR= ${SHAREDIR}/bhyve/kbdlayout
+FILES= default \
+ am \
+ be be_acc \
+ bg_bds bg_phonetic \
+ br br_noacc \
+ centraleuropean \
+ ch ch_acc ch_macbook_acc ch-fr ch-fr_acc \
+ cz \
+ de de_acc de_noacc \
+ dk dk_macbook \
+ ee \
+ es es_acc es_dvorak \
+ fi \
+ fr fr_acc fr_dvorak fr_dvorak_acc fr_macbook \
+ gr gr_101_acc gr_elot_acc \
+ hr \
+ hu_101 hu_102 \
+ is is_acc \
+ it \
+ jp jp_capsctrl \
+ kz_io kz_kst \
+ latinamerican latinamerican_acc \
+ lt \
+ nl \
+ no no_dvorak nordic_asus-eee \
+ pl_dvorak \
+ pt pt_acc \
+ ru ru_shift ru_win \
+ se \
+ si \
+ tr tr_f \
+ ua ua_shift_alt \
+ uk uk_capsctrl uk_dvorak uk_macbook \
+ us_dvorak us_dvorakl us_dvorakp us_dvorakr us_dvorakx \
+ us_emacs us_unix
+
+.include <bsd.prog.mk>
diff --git a/usr.sbin/bhyve/kbdlayout/Makefile.depend b/usr.sbin/bhyve/kbdlayout/Makefile.depend
new file mode 100644
index 000000000000..f80275d86ab1
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/Makefile.depend
@@ -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
diff --git a/usr.sbin/bhyve/kbdlayout/am b/usr.sbin/bhyve/kbdlayout/am
new file mode 100644
index 000000000000..c102fb10801a
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/am
@@ -0,0 +1,10 @@
+# bhyve ps2kbd keyboard layout file
+# (am : Armenian phonetic layout)
+#
+# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
+#
+# $FreeBSD$
+
+')',0x87; ) (0x29)
+'+',0xce; + (0x2b)
+
diff --git a/usr.sbin/bhyve/kbdlayout/be b/usr.sbin/bhyve/kbdlayout/be
new file mode 100644
index 000000000000..26f8cdc3acbc
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/be
@@ -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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/be_acc b/usr.sbin/bhyve/kbdlayout/be_acc
new file mode 100644
index 000000000000..adf136634eb2
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/be_acc
@@ -0,0 +1,42 @@
+# bhyve ps2kbd keyboard layout file
+# (be_acc : Belgian (accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/bg_bds b/usr.sbin/bhyve/kbdlayout/bg_bds
new file mode 100644
index 000000000000..9c25ed4640d3
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/bg_bds
@@ -0,0 +1,10 @@
+# bhyve ps2kbd keyboard layout file
+# (bg_bds : Bulgarian (BDS))
+#
+# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
+#
+# $FreeBSD$
+
+'(',0xa9; ( (0x28)
+'*',0xb7; * (0x2a)
+
diff --git a/usr.sbin/bhyve/kbdlayout/bg_phonetic b/usr.sbin/bhyve/kbdlayout/bg_phonetic
new file mode 100644
index 000000000000..dfe972db5b5b
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/bg_phonetic
@@ -0,0 +1,9 @@
+# bhyve ps2kbd keyboard layout file
+# (bg_phonetic : Bulgarian (Phonetic))
+#
+# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
+#
+# $FreeBSD$
+
+'*',0xb7; * (0x2a)
+
diff --git a/usr.sbin/bhyve/kbdlayout/br b/usr.sbin/bhyve/kbdlayout/br
new file mode 100644
index 000000000000..b4605e1748c3
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/br
@@ -0,0 +1,19 @@
+# bhyve ps2kbd keyboard layout file
+# (br : Brazilian (accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/br_noacc b/usr.sbin/bhyve/kbdlayout/br_noacc
new file mode 100644
index 000000000000..62bea6254ced
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/br_noacc
@@ -0,0 +1,22 @@
+# bhyve ps2kbd keyboard layout file
+# (br_noacc : Brazilian (without accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/centraleuropean b/usr.sbin/bhyve/kbdlayout/centraleuropean
new file mode 100644
index 000000000000..7b3a2f883aaa
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/centraleuropean
@@ -0,0 +1,12 @@
+# bhyve ps2kbd keyboard layout file
+# (centraleuropean : Central European)
+#
+# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
+#
+# $FreeBSD$
+
+'Y',0x1a; Y (0x59)
+'Z',0x35; Z (0x5a)
+'y',0x1a; y (0x79)
+'z',0x35; z (0x7a)
+
diff --git a/usr.sbin/bhyve/kbdlayout/ch b/usr.sbin/bhyve/kbdlayout/ch
new file mode 100644
index 000000000000..c68f78a49ede
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/ch
@@ -0,0 +1,36 @@
+# bhyve ps2kbd keyboard layout file
+# (ch : Swiss-German)
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/ch-fr b/usr.sbin/bhyve/kbdlayout/ch-fr
new file mode 100644
index 000000000000..33d747f58f5a
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/ch-fr
@@ -0,0 +1,36 @@
+# bhyve ps2kbd keyboard layout file
+# (ch-fr : Swiss-French)
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/ch-fr_acc b/usr.sbin/bhyve/kbdlayout/ch-fr_acc
new file mode 100644
index 000000000000..3d081fb6711c
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/ch-fr_acc
@@ -0,0 +1,33 @@
+# bhyve ps2kbd keyboard layout file
+# (ch-fr_acc : Swiss-French (accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/ch_acc b/usr.sbin/bhyve/kbdlayout/ch_acc
new file mode 100644
index 000000000000..5b916d444e6f
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/ch_acc
@@ -0,0 +1,33 @@
+# bhyve ps2kbd keyboard layout file
+# (ch_acc : Swiss-German (accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/ch_macbook_acc b/usr.sbin/bhyve/kbdlayout/ch_macbook_acc
new file mode 100644
index 000000000000..3c7a032bebe6
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/ch_macbook_acc
@@ -0,0 +1,37 @@
+# bhyve ps2kbd keyboard layout file
+# (ch_macbook_acc : Swiss-German Macbook/Macbook Pro (accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/cz b/usr.sbin/bhyve/kbdlayout/cz
new file mode 100644
index 000000000000..98f6108231ee
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/cz
@@ -0,0 +1,11 @@
+# bhyve ps2kbd keyboard layout file
+# (cz : Czech (QWERTZ, accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <koinec@users.osdn.me>
+#
+# $FreeBSD$
+
+')',0x9b; ) (0x29)
+'*',0xb7; * (0x2a)
+'+',0x82; + (0x2b)
+
diff --git a/usr.sbin/bhyve/kbdlayout/de b/usr.sbin/bhyve/kbdlayout/de
new file mode 100644
index 000000000000..745f826a9de2
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/de
@@ -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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/de_acc b/usr.sbin/bhyve/kbdlayout/de_acc
new file mode 100644
index 000000000000..2ba06f3d166b
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/de_acc
@@ -0,0 +1,36 @@
+# bhyve ps2kbd keyboard layout file
+# (de_acc : German (accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/de_noacc b/usr.sbin/bhyve/kbdlayout/de_noacc
new file mode 100644
index 000000000000..4d215116e2a7
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/de_noacc
@@ -0,0 +1,38 @@
+# bhyve ps2kbd keyboard layout file
+# (de_noacc : German (no accent keys))
+#
+# Created by: Koine Yuusuke(koinec) <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)
+
diff --git a/usr.sbin/bhyve/kbdlayout/default b/usr.sbin/bhyve/kbdlayout/default
new file mode 100644
index 000000000000..8674c280280b
--- /dev/null
+++ b/usr.sbin/bhyve/kbdlayout/default
@@ -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)
*** 2668 LINES SKIPPED ***