summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/doc/Makefile2
-rw-r--r--share/doc/pjdfstest/Makefile8
-rw-r--r--share/doc/pjdfstest/README36
-rw-r--r--share/dtrace/Makefile5
-rw-r--r--share/dtrace/README10
-rwxr-xr-xshare/dtrace/disklatency67
-rwxr-xr-xshare/dtrace/disklatencycmd72
-rw-r--r--share/dtrace/toolkit/Makefile4
-rw-r--r--share/examples/autofs/driver/Makefile18
-rw-r--r--share/examples/autofs/driver/autodriver.c538
-rw-r--r--share/examples/autofs/driver/autotab7
-rwxr-xr-xshare/examples/bhyve/vmrun.sh36
-rw-r--r--share/examples/hwpmc/Makefile9
-rw-r--r--share/examples/hwpmc/README2
-rw-r--r--share/examples/hwpmc/overhead.c106
-rw-r--r--share/examples/kld/random_adaptor/random_adaptor_example.c54
-rw-r--r--share/man/man3/offsetof.32
-rw-r--r--share/man/man3/pthread.38
-rw-r--r--share/man/man3/pthread_cleanup_pop.310
-rw-r--r--share/man/man3/pthread_cleanup_push.310
-rw-r--r--share/man/man4/Makefile13
-rw-r--r--share/man/man4/acpi.416
-rw-r--r--share/man/man4/acpi_wmi.42
-rw-r--r--share/man/man4/ada.415
-rw-r--r--share/man/man4/alc.424
-rw-r--r--share/man/man4/altera_atse.423
-rw-r--r--share/man/man4/atkbd.45
-rw-r--r--share/man/man4/cdce.45
-rw-r--r--share/man/man4/ctl.410
-rw-r--r--share/man/man4/cxgbe.413
-rw-r--r--share/man/man4/da.49
-rw-r--r--share/man/man4/dpt.45
-rw-r--r--share/man/man4/faith.4133
-rw-r--r--share/man/man4/filemon.41
-rw-r--r--share/man/man4/gif.412
-rw-r--r--share/man/man4/gre.4219
-rw-r--r--share/man/man4/hptiop.42
-rw-r--r--share/man/man4/icmp.46
-rw-r--r--share/man/man4/igb.411
-rw-r--r--share/man/man4/inet.415
-rw-r--r--share/man/man4/inet6.426
-rw-r--r--share/man/man4/ip.436
-rw-r--r--share/man/man4/ip6.44
-rw-r--r--share/man/man4/ipheth.4105
-rwxr-xr-xshare/man/man4/iscsi.4111
-rw-r--r--share/man/man4/iscsi_initiator.411
-rw-r--r--share/man/man4/iwn.410
-rw-r--r--share/man/man4/iwnfw.414
-rw-r--r--share/man/man4/kbdmux.43
-rw-r--r--share/man/man4/lagg.416
-rw-r--r--share/man/man4/malo.413
-rw-r--r--share/man/man4/man4.arm/Makefile6
-rw-r--r--share/man/man4/man4.arm/cgem.4297
-rw-r--r--share/man/man4/me.485
-rw-r--r--share/man/man4/miibus.45
-rw-r--r--share/man/man4/sfxge.435
-rw-r--r--share/man/man4/smsc.491
-rw-r--r--share/man/man4/tap.48
-rw-r--r--share/man/man4/tcp.426
-rw-r--r--share/man/man4/ucom.44
-rw-r--r--share/man/man4/udplite.418
-rw-r--r--share/man/man4/ukbd.45
-rw-r--r--share/man/man4/uled.494
-rw-r--r--share/man/man4/urndis.410
-rw-r--r--share/man/man4/urtwn.410
-rw-r--r--share/man/man4/virtio.41
-rw-r--r--share/man/man4/virtio_console.4 (renamed from share/man/man9/pmap_change_wiring.9)71
-rw-r--r--share/man/man4/vkbd.43
-rw-r--r--share/man/man4/vt.4105
-rw-r--r--share/man/man4/vxlan.4235
-rw-r--r--share/man/man5/Makefile1
-rw-r--r--share/man/man5/autofs.599
-rw-r--r--share/man/man5/pf.conf.52
-rw-r--r--share/man/man5/rc.conf.571
-rw-r--r--share/man/man5/src.conf.551
-rw-r--r--share/man/man7/Makefile14
-rw-r--r--share/man/man7/growfs.764
-rw-r--r--share/man/man7/hier.738
-rw-r--r--share/man/man7/release.765
-rw-r--r--share/man/man7/security.735
-rw-r--r--share/man/man8/Makefile6
-rw-r--r--share/man/man8/hv_kvp_daemon.896
-rw-r--r--share/man/man8/nanobsd.82
-rw-r--r--share/man/man8/rc.subr.826
-rw-r--r--share/man/man8/uefi.8152
-rw-r--r--share/man/man9/Makefile233
-rw-r--r--share/man/man9/SDT.94
-rw-r--r--share/man/man9/VOP_GETPAGES.910
-rw-r--r--share/man/man9/altq.91
-rw-r--r--share/man/man9/casuword.995
-rw-r--r--share/man/man9/domain.95
-rw-r--r--share/man/man9/fetch.972
-rw-r--r--share/man/man9/fpu_kern.915
-rw-r--r--share/man/man9/hash.932
-rw-r--r--share/man/man9/ifnet.926
-rw-r--r--share/man/man9/kernel_mount.92
-rw-r--r--share/man/man9/lock.927
-rw-r--r--share/man/man9/mbuf.913
-rw-r--r--share/man/man9/pmap.93
-rw-r--r--share/man/man9/pmap_unwire.91
-rw-r--r--share/man/man9/sleepqueue.950
-rw-r--r--share/man/man9/store.914
-rw-r--r--share/man/man9/sysctl.9585
-rw-r--r--share/man/man9/sysctl_add_oid.9446
-rw-r--r--share/man/man9/sysctl_ctx_init.954
-rw-r--r--share/man/man9/timeout.9717
-rw-r--r--share/man/man9/vm_page_busy.92
-rw-r--r--share/man/man9/vnode.91
-rw-r--r--share/misc/bsd-family-tree46
-rw-r--r--share/misc/committers-ports.dot7
-rw-r--r--share/misc/committers-src.dot8
-rw-r--r--share/misc/scsi_modes3
-rw-r--r--share/mk/atf.test.mk16
-rw-r--r--share/mk/bsd.compiler.mk3
-rw-r--r--share/mk/bsd.dep.mk37
-rw-r--r--share/mk/bsd.endian.mk7
-rw-r--r--share/mk/bsd.incs.mk2
-rw-r--r--share/mk/bsd.lib.mk10
-rw-r--r--share/mk/bsd.libnames.mk14
-rw-r--r--share/mk/bsd.mkopt.mk4
-rw-r--r--share/mk/bsd.obj.mk4
-rw-r--r--share/mk/bsd.opts.mk4
-rw-r--r--share/mk/bsd.port.mk14
-rw-r--r--share/mk/bsd.port.subdir.mk14
-rw-r--r--share/mk/bsd.prog.mk19
-rw-r--r--share/mk/bsd.progs.mk48
-rw-r--r--share/mk/bsd.sys.mk3
-rw-r--r--share/mk/bsd.test.mk6
-rw-r--r--share/mk/netbsd-tests.test.mk46
-rw-r--r--share/mk/plain.test.mk4
-rw-r--r--share/mk/src.libnames.mk58
-rw-r--r--share/mk/src.opts.mk21
-rw-r--r--share/mk/sys.mk6
-rw-r--r--share/mk/tap.test.mk4
-rw-r--r--share/syscons/keymaps/INDEX.keymaps86
-rw-r--r--share/syscons/keymaps/be.iso.acc.kbd4
-rw-r--r--share/syscons/keymaps/cs.latin2.qwertz.kbd2
-rw-r--r--share/syscons/keymaps/uk.iso-ctrl.kbd2
-rw-r--r--share/syscons/keymaps/uk.iso.kbd2
-rw-r--r--share/vt/keymaps/INDEX.keymaps598
-rw-r--r--share/vt/keymaps/Makefile86
-rw-r--r--share/vt/keymaps/am.kbd247
-rw-r--r--share/vt/keymaps/be.acc.kbd137
-rw-r--r--share/vt/keymaps/be.kbd114
-rw-r--r--share/vt/keymaps/bg.bds.kbd245
-rw-r--r--share/vt/keymaps/bg.phonetic.kbd260
-rw-r--r--share/vt/keymaps/br.kbd151
-rw-r--r--share/vt/keymaps/br.noacc.kbd132
-rw-r--r--share/vt/keymaps/by.kbd224
-rw-r--r--share/vt/keymaps/ca-fr.kbd143
-rw-r--r--share/vt/keymaps/ca.kbd139
-rw-r--r--share/vt/keymaps/centraleuropean.kbd242
-rw-r--r--share/vt/keymaps/centraleuropean.qwerty.kbd242
-rw-r--r--share/vt/keymaps/ch-fr.acc.kbd137
-rw-r--r--share/vt/keymaps/ch-fr.kbd117
-rw-r--r--share/vt/keymaps/ch.acc.kbd137
-rw-r--r--share/vt/keymaps/ch.kbd117
-rw-r--r--share/vt/keymaps/ch.macbook.acc.kbd138
-rw-r--r--share/vt/keymaps/colemak.acc.kbd147
-rw-r--r--share/vt/keymaps/cz.kbd296
-rw-r--r--share/vt/keymaps/de.acc.kbd137
-rw-r--r--share/vt/keymaps/de.kbd126
-rw-r--r--share/vt/keymaps/de.noacc.kbd115
-rw-r--r--share/vt/keymaps/dk.acc.kbd162
-rw-r--r--share/vt/keymaps/dk.kbd114
-rw-r--r--share/vt/keymaps/dk.macbook.kbd117
-rw-r--r--share/vt/keymaps/ee.kbd114
-rw-r--r--share/vt/keymaps/es.acc.kbd137
-rw-r--r--share/vt/keymaps/es.dvorak.kbd139
-rw-r--r--share/vt/keymaps/es.kbd137
-rw-r--r--share/vt/keymaps/fi.kbd114
-rw-r--r--share/vt/keymaps/fr.acc.kbd137
-rw-r--r--share/vt/keymaps/fr.dvorak.acc.kbd153
-rw-r--r--share/vt/keymaps/fr.dvorak.kbd122
-rw-r--r--share/vt/keymaps/fr.kbd114
-rw-r--r--share/vt/keymaps/fr.macbook.kbd137
-rw-r--r--share/vt/keymaps/gr.101.acc.kbd255
-rw-r--r--share/vt/keymaps/gr.elot.acc.kbd255
-rw-r--r--share/vt/keymaps/gr.kbd290
-rw-r--r--share/vt/keymaps/hr.kbd117
-rw-r--r--share/vt/keymaps/hu.101.kbd293
-rw-r--r--share/vt/keymaps/hu.102.kbd142
-rw-r--r--share/vt/keymaps/il.kbd114
-rw-r--r--share/vt/keymaps/is.acc.kbd137
-rw-r--r--share/vt/keymaps/is.kbd114
-rw-r--r--share/vt/keymaps/it.kbd164
-rw-r--r--share/vt/keymaps/jp.capsctrl.kbd120
-rw-r--r--share/vt/keymaps/jp.kbd118
-rw-r--r--share/vt/keymaps/jp.pc98.iso.kbd134
-rw-r--r--share/vt/keymaps/jp.pc98.kbd134
-rw-r--r--share/vt/keymaps/kz.io.kbd244
-rw-r--r--share/vt/keymaps/kz.kst.kbd245
-rw-r--r--share/vt/keymaps/latinamerican.acc.kbd137
-rw-r--r--share/vt/keymaps/latinamerican.kbd114
-rw-r--r--share/vt/keymaps/lt.kbd242
-rw-r--r--share/vt/keymaps/nl.kbd143
-rw-r--r--share/vt/keymaps/no.dvorak.kbd114
-rw-r--r--share/vt/keymaps/no.kbd114
-rw-r--r--share/vt/keymaps/nordic.asus-eee.kbd132
-rw-r--r--share/vt/keymaps/pl.dvorak.kbd117
-rw-r--r--share/vt/keymaps/pl.kbd23
-rw-r--r--share/vt/keymaps/pt.acc.kbd139
-rw-r--r--share/vt/keymaps/pt.kbd116
-rw-r--r--share/vt/keymaps/ru.kbd242
-rw-r--r--share/vt/keymaps/ru.shift.kbd242
-rw-r--r--share/vt/keymaps/ru.win.kbd242
-rw-r--r--share/vt/keymaps/se.kbd114
-rw-r--r--share/vt/keymaps/si.kbd117
-rw-r--r--share/vt/keymaps/sk.kbd364
-rw-r--r--share/vt/keymaps/tr.kbd129
-rw-r--r--share/vt/keymaps/ua.kbd132
-rw-r--r--share/vt/keymaps/ua.shift.alt.kbd236
-rw-r--r--share/vt/keymaps/uk.capsctrl.kbd114
-rw-r--r--share/vt/keymaps/uk.dvorak.kbd121
-rw-r--r--share/vt/keymaps/uk.kbd114
-rw-r--r--share/vt/keymaps/us.acc.kbd137
-rw-r--r--share/vt/keymaps/us.ctrl.kbd114
-rw-r--r--share/vt/keymaps/us.dvorak.kbd123
-rw-r--r--share/vt/keymaps/us.dvorakl.kbd116
-rw-r--r--share/vt/keymaps/us.dvorakp.kbd116
-rw-r--r--share/vt/keymaps/us.dvorakr.kbd116
-rw-r--r--share/vt/keymaps/us.dvorakx.kbd121
-rw-r--r--share/vt/keymaps/us.emacs.kbd111
-rw-r--r--share/vt/keymaps/us.kbd114
-rw-r--r--share/vt/keymaps/us.unix.kbd114
-rw-r--r--share/zoneinfo/Makefile8
226 files changed, 17820 insertions, 2563 deletions
diff --git a/share/doc/Makefile b/share/doc/Makefile
index fda977f..c752c51 100644
--- a/share/doc/Makefile
+++ b/share/doc/Makefile
@@ -7,10 +7,12 @@ SUBDIR= ${_IPv6} \
${_atf} \
legal \
${_llvm} \
+ ${_pjdfstest} \
${_roffdocs}
.if ${MK_TESTS} != "no"
_atf= atf
+_pjdfstest= pjdfstest
.endif
.if ${MK_CLANG} != "no"
diff --git a/share/doc/pjdfstest/Makefile b/share/doc/pjdfstest/Makefile
new file mode 100644
index 0000000..21d72f3
--- /dev/null
+++ b/share/doc/pjdfstest/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+NO_OBJ=
+
+FILESDIR= ${SHAREDIR}/doc/pjdfstest
+FILES= README
+
+.include <bsd.prog.mk>
diff --git a/share/doc/pjdfstest/README b/share/doc/pjdfstest/README
new file mode 100644
index 0000000..d090117
--- /dev/null
+++ b/share/doc/pjdfstest/README
@@ -0,0 +1,36 @@
+pjdfstest test suite execution is integrated into kyua. This README describes
+how to use pjdfstest in the default configuration (kyua work directory), and
+with a specific filesystem path.
+
+Method 1. Executing with default configuration (kyua work directory)
+
+ 1. Elevate privileges:
+ % su -
+ 2. cd to the tests directory:
+ % cd /usr/tests/sys/pjdfstest
+ 3. Run kyua:
+ % kyua test
+
+ Executing the commands as shown above will run pjdfstest in the kyua work
+ directory. The kyua work directory defaults to a random generated path under
+ /tmp; please see TMPDIR in kyua(1) for more details on how the temporary path
+ is chosen with kyua.
+
+Method 2. Executing with a specific filesystem path (in this case /mnt)
+
+ 1. Elevate privileges:
+ % su -
+ 2. cd to the tests directory:
+ % cd /usr/tests/sys/pjdfstest
+ 3. Run kyua:
+ % env PJDFSTEST_TEST_PATH=/mnt kyua test
+
+ WARNING: the above method violates the test program isolation algorithm
+ described in kyua(1); as such, $PJDFSTEST_TEST_PATH must be cleaned up after
+ executing the testcases.
+
+ It's highly recommended that $PJDFSTEST_TEST_PATH be pointed to a sandboxed
+ filesystem, e.g. a small UFS-formatted memory disk or ZFS dataset with
+ quotas enabled, so the filesystem can be easily destroyed after the test
+ execution is complete, and the testcases are properly bounded both in terms
+ of time and space.
diff --git a/share/dtrace/Makefile b/share/dtrace/Makefile
index ba52997..328f806 100644
--- a/share/dtrace/Makefile
+++ b/share/dtrace/Makefile
@@ -12,7 +12,10 @@ SUBDIR= ${_toolkit}
_toolkit= toolkit
.endif
-SCRIPTS= nfsclienttime hotopen
+SCRIPTS= disklatency \
+ disklatencycmd \
+ hotopen \
+ nfsclienttime
SCRIPTSDIR= ${SHAREDIR}/dtrace
diff --git a/share/dtrace/README b/share/dtrace/README
index e446cee..0540bad 100644
--- a/share/dtrace/README
+++ b/share/dtrace/README
@@ -1,11 +1,11 @@
$FreeBSD$
This directory contains scripts for use with the DTrace system. The
-toolkit/ directory contains the latest vendor import of Brendan
-Gregg's DTraceToolkit while all the other files and directories
+toolkit/ directory installs the latest vendor import of Brendan
+Gregg's DTraceToolkit while the other files and directories
contain code generated by the FreeBSD Project for use with DTrace on
FreeBSD.
-NOTE: Do not add new scripts to the DTraceToolkit contained in this
-directory. New DTraceToolkit scripts should be send to the maintainer
-of the toolkit and then brought back into FreeBSD via future vendor imports.
+NOTE: Do not add new scripts to the toolkit directory. New DTraceToolkit
+scripts should be send to the maintainer of the toolkit and then brought
+back into FreeBSD via future vendor imports.
diff --git a/share/dtrace/disklatency b/share/dtrace/disklatency
new file mode 100755
index 0000000..97ef87a
--- /dev/null
+++ b/share/dtrace/disklatency
@@ -0,0 +1,67 @@
+#!/usr/sbin/dtrace -s
+/*-
+ * Copyright 2014 John-Mark Gurney.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ *
+ */
+
+#pragma D option quiet
+#pragma D option dynvarsize=16m
+
+dtrace:::BEGIN
+{
+ printf("Tracing... Hit Ctrl-C to end.\n");
+}
+
+io:::start
+{
+ start_time[arg0] = timestamp;
+}
+
+io:::done
+/this->start = start_time[arg0]/
+{
+ this->delta = (timestamp - this->start) / 1000;
+ @q[args[1]->device_name, args[1]->unit_number] =
+ lquantize(this->delta, 4000, 80000, 4000);
+ @max[args[1]->device_name, args[1]->unit_number] = max(this->delta);
+ @avg[args[1]->device_name, args[1]->unit_number] = avg(this->delta);
+ @stddev[args[1]->device_name, args[1]->unit_number] = stddev(this->delta);
+ start_time[arg0] = 0;
+}
+
+tick-10s
+{
+ printa(" %s (%d), us:\n%@d\n", @q);
+ printa("max%s (%d), us:\n%@d\n", @max);
+ printa("avg%s (%d), us:\n%@d\n", @avg);
+ printa("stddev%s (%d), us:\n%@d\n", @stddev);
+
+ clear(@q);
+ clear(@max);
+ clear(@avg);
+ clear(@stddev);
+}
diff --git a/share/dtrace/disklatencycmd b/share/dtrace/disklatencycmd
new file mode 100755
index 0000000..95fa653
--- /dev/null
+++ b/share/dtrace/disklatencycmd
@@ -0,0 +1,72 @@
+#!/usr/sbin/dtrace -s
+/*-
+ * Copyright 2014 John-Mark Gurney.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ *
+ */
+
+#pragma D option quiet
+
+/* from http://www.mail-archive.com/dtrace-discuss@opensolaris.org/msg03755.html */
+#pragma D option aggsize=8m
+#pragma D option bufsize=16m
+#pragma D option dynvarsize=32m
+/*
+#pragma D option aggrate=0
+#pragma D option cleanrate=50Hz
+*/
+
+dtrace:::BEGIN
+{
+ printf("Tracing... Hit Ctrl-C to end.\n");
+ dstart = timestamp;
+}
+
+io:::start
+{
+ start_time[arg0] = timestamp;
+}
+
+io:::done
+/this->start = start_time[arg0]/
+{
+ this->delta = (timestamp - this->start) / 1000;
+ @q[args[1]->device_name, args[1]->unit_number] =
+ lquantize(this->delta, 4000, 80000, 4000);
+ @max[args[1]->device_name, args[1]->unit_number] = max(this->delta);
+ @avg[args[1]->device_name, args[1]->unit_number] = avg(this->delta);
+ @stddev[args[1]->device_name, args[1]->unit_number] = stddev(this->delta);
+ start_time[arg0] = 0;
+}
+
+dtrace:::END
+{
+ printf("total time, us: %d\n", (timestamp - dstart) / 1000);
+ printa(" %s (%d), us:\n%@d\n", @q);
+ printa("max%s (%d), us: %@d\n", @max);
+ printa("avg%s (%d), us: %@d\n", @avg);
+ printa("stddev%s (%d), us: %@d\n", @stddev);
+}
diff --git a/share/dtrace/toolkit/Makefile b/share/dtrace/toolkit/Makefile
index a4716af..66dc3b8 100644
--- a/share/dtrace/toolkit/Makefile
+++ b/share/dtrace/toolkit/Makefile
@@ -5,10 +5,10 @@
DTRACETOOLKIT= ../../../cddl/contrib/dtracetoolkit
SCRIPTS= ${DTRACETOOLKIT}/execsnoop \
- ${DTRACETOOLKIT}/hotuser \
${DTRACETOOLKIT}/hotkernel \
+ ${DTRACETOOLKIT}/hotuser \
${DTRACETOOLKIT}/opensnoop \
- ${DTRACETOOLKIT}/procsystime \
+ ${DTRACETOOLKIT}/procsystime
SCRIPTSDIR= ${SHAREDIR}/dtrace/toolkit
diff --git a/share/examples/autofs/driver/Makefile b/share/examples/autofs/driver/Makefile
deleted file mode 100644
index 3e15883..0000000
--- a/share/examples/autofs/driver/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-# $Id: Makefile,v 1.5 2004/09/08 08:27:12 bright Exp $
-# $FreeBSD$
-
-PROG= autodriver
-MAN=
-
-SRCS= autodriver.c
-WARNS?= 4
-CFLAGS+= -g
-BINDIR?= /sbin
-
-DPADD+= ${.OBJDIR}/../libautofs/libautofs.a
-#LDADD+= -lautofs
-LDADD+= ${.OBJDIR}/../libautofs/libautofs.a
-LDFLAGS+= -L${.OBJDIR}/../libautofs
-CFLAGS+= -I${.CURDIR}/../libautofs
-
-.include <bsd.prog.mk>
diff --git a/share/examples/autofs/driver/autodriver.c b/share/examples/autofs/driver/autodriver.c
deleted file mode 100644
index 69af0c5..0000000
--- a/share/examples/autofs/driver/autodriver.c
+++ /dev/null
@@ -1,538 +0,0 @@
-/*
- * Copyright (c) 2004 Alfred Perlstein <alfred@FreeBSD.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: autodriver.c,v 1.9 2004/09/08 08:12:21 bright Exp $
- * $FreeBSD$
- */
-#include <ctype.h>
-#include <err.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <sys/dirent.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/mount.h>
-#include <sys/poll.h>
-#include <sys/stat.h>
-
-#include <libautofs.h>
-
-struct autoentry {
- char *ae_mnt; /* autofs mountpoint. */
- char *ae_path; /* path under mount. */
- char *ae_type; /* fs to be mounted type. */
- char *ae_opts; /* options passed to mount. */
- char *ae_rpath; /* remote path */
- char *ae_free; /* freeme! */
- char *ae_fullpath; /* full path to mount */
- int ae_line; /* line it came from in the conf. */
- int ae_indirect; /* is this an indirect mount? */
- int ae_direct; /* is this a direct mount? */
- int ae_browse; /* browseable? */
- struct autoentry *ae_next; /* next. */
-};
-
-struct autoentry *entries;
-const char *mount_prog = "mount";
-const char *fstype = "autofs";
-
-void *xmalloc(size_t);
-void *xcalloc(size_t number, size_t size);
-void parsetab(void);
-void populate_tab(void);
-void doreq(autoh_t, autoreq_t);
-void dotheneedful(autoh_t);
-void eventloop(void);
-int poll_handles(autoh_t *array, int cnt);
-int mount_indirect(struct autofs_userreq *req, struct autoentry *ent);
-int mount_direct(struct autofs_userreq *req, struct autoentry *ent);
-int mount_browse(struct autofs_userreq *req, struct autoentry *ent);
-
-#define DSTR(s) sizeof(s) - 1, s
-
-struct dirent dumbents[] = {
- {50, sizeof(struct dirent), DT_DIR, DSTR("one") },
- {51, sizeof(struct dirent), DT_DIR, DSTR(".") },
- {52, sizeof(struct dirent), DT_DIR, DSTR("..") },
- {50, sizeof(struct dirent), DT_DIR, DSTR("two") },
-};
-
-void *
-xmalloc(size_t size)
-{
- void *ret;
-
- ret = malloc(size);
- if (ret == NULL)
- err(1, "malloc %d", (int) size);
- return (ret);
-}
-
-void *
-xcalloc(size_t number, size_t size)
-{
- void *ret;
-
- ret = calloc(number, size);
- if (ret == NULL)
- err(1, "calloc %d %d", (int)number, (int)size);
- return (ret);
-}
-
-void
-parsetab(void)
-{
- FILE *fp;
- const char *tab;
- char *cp, *p, *line, *opt;
- size_t len;
- struct autoentry *ent;
- int i, lineno, x, gotopt;
- const char *expecting = "expecting 'direct', 'indirect' or 'browse'";
- const char *tabfiles[] = {
- "/etc/autotab", "/usr/local/etc/autotab", "./autotab", NULL
- };
-
- lineno = 0;
- for (i = 0; (tab = tabfiles[i]) != NULL; i++) {
- tab = tabfiles[i];
- fp = fopen(tab, "r");
- if (fp == NULL)
- warn("fopen %s", tab);
- if (fp != NULL)
- break;
- }
- if (fp == NULL) {
- err(1, "no config file available.");
- }
-
- fprintf(stderr, "using config file: %s\n", tab);
-
- while ((cp = fgetln(fp, &len)) != NULL) {
- lineno++;
- while (len > 0 && isspace(cp[len - 1]))
- len--;
- line = xmalloc(len + 1);
- bcopy(cp, line, len);
- line[len] = '\0';
- cp = line;
- if ((cp = strchr(line, '#')) != NULL)
- *cp = '\0';
- cp = line;
- while (isspace(*cp))
- cp++;
- if (*cp == '\0') {
- free(line);
- continue;
- }
- ent = xcalloc(1, sizeof(*ent));
- if ((p = strsep(&cp, " \t")) == NULL)
- goto bad;
- ent->ae_mnt = p;
- if ((p = strsep(&cp, " \t")) == NULL)
- goto bad;
- ent->ae_path = p;
- if ((p = strsep(&cp, " \t")) == NULL)
- goto bad;
- ent->ae_type = p;
- if ((p = strsep(&cp, " \t")) == NULL)
- goto bad;
- ent->ae_opts = p;
- if ((p = strsep(&cp, " \t")) == NULL)
- goto bad;
- ent->ae_rpath = p;
- if ((p = strsep(&cp, " \t")) == NULL)
- goto bad;
- gotopt = 0;
- opt = p;
- while ((p = strsep(&opt, ",")) != NULL) {
- if (strcmp(p, "indirect") == 0) {
- ent->ae_indirect = 1;
- gotopt = 1;
- } else if (strcmp(p, "direct") == 0) {
- ent->ae_direct = 1;
- gotopt = 1;
- } else if (strcmp(p, "browse") == 0) {
- ent->ae_browse = 1;
- gotopt = 1;
- } else {
- warnx("unreconized option '%s', %s",
- p, expecting);
- goto bad2;
- }
- }
- if (!gotopt) {
- warnx("no options specified %s", expecting);
- goto bad2;
- }
- if (ent->ae_direct && ent->ae_indirect) {
- warnx("direct and indirect are mutually exclusive");
- goto bad2;
-
- }
- x = asprintf(&ent->ae_fullpath, "%s/%s",
- ent->ae_mnt, ent->ae_path);
- if (x == -1)
- err(1, "asprintf");
-
- if (strlen(ent->ae_fullpath) + 1 > PATH_MAX) {
- warnx("Error in file %s, line %d, "
- "mountpath (%s) exceeds PATH_MAX (%d)",
- tab, lineno, ent->ae_fullpath, PATH_MAX);
- goto bad2;
- }
- ent->ae_line = lineno;
- ent->ae_free = line;
- ent->ae_next = entries;
- entries = ent;
- continue;
-bad:
- warnx("Parse error in file %s, line %d", tab, lineno);
-bad2:
- free(ent->ae_fullpath);
- free(line);
- free(ent);
- }
- if (ferror(fp))
- err(1, "error with file %s", tab);
-}
-
-void
-populate_tab(void)
-{
- struct autoentry *ent;
- char *path, *cmd;
- int error;
- autoh_t ah;
-
- path = cmd = NULL;
-
- for (ent = entries; ent != NULL; ent = ent->ae_next) {
- free(path);
- free(cmd);
- error = asprintf(&path, "%s/%s", ent->ae_mnt, ent->ae_path);
- if (error == -1)
- err(1, "asprintf");
- error = asprintf(&cmd, "mkdir -p %s", path);
- if (error == -1)
- err(1, "asprintf");
- error = system(cmd);
- if (error) {
- warn("system: %s", cmd);
- continue;
- }
- if (autoh_get(ent->ae_mnt, &ah)) {
- warn("autoh_get %s", path);
- continue;
- }
- error = autoh_togglepath(ah, AUTO_MOUNTER, getpid(), path);
- if (error) {
- err(1, "AUTO_MOUNTER %s", path);
- continue;
- }
- if (ent->ae_browse) {
- error = autoh_togglepath(ah, AUTO_BROWSE, getpid(),
- path);
- if (error)
- err(1, "AUTO_BROWSE %s", path);
- }
- if (ent->ae_direct) {
- error = autoh_togglepath(ah, AUTO_DIRECT, getpid(),
- path);
- if (error)
- err(1, "AUTO_DIRECT %s", path);
- }
- if (ent->ae_indirect) {
- error = autoh_togglepath(ah, AUTO_INDIRECT, getpid(),
- path);
- if (error)
- err(1, "AUTO_INDIRECT %s", path);
- }
- autoh_free(ah);
- }
- free(path);
- free(cmd);
-}
-
-/*
- * Process an autofs request, scan the list of entries in the config
- * looking for our node, if found mount it.
- */
-void
-doreq(autoh_t ah, autoreq_t req)
-{
- struct autoentry *ent;
- int error;
- int mcmp;
- int xid;
- const char *mnt;
-
- mnt = autoh_mp(ah);
-
- autoreq_seterrno(req, 0);
- for (ent = entries; ent != NULL; ent = ent->ae_next) {
- fprintf(stderr, "comparing {%s,%s} to {%s,%s}\n",
- mnt, ent->ae_mnt, autoreq_getpath(req), ent->ae_path);
- fprintf(stderr, "comparing {%d,%d} to {%d,%d}\n",
- (int)strlen(mnt),
- (int)strlen(ent->ae_mnt),
- (int)strlen(autoreq_getpath(req)),
- (int)strlen(ent->ae_path));
- autoreq_getxid(req, &xid);
- fprintf(stderr, "req xid %d\n", xid);
- if ((mcmp = strcmp(mnt, ent->ae_mnt)) != 0) {
- fprintf(stderr, "mcmp = %d\n", mcmp);
- continue;
- }
- if (mount_direct(req, ent))
- goto serve;
- if (mount_indirect(req, ent))
- goto serve;
- if (mount_browse(req, ent))
- goto serve;
- }
- fprintf(stderr, "no entry found...\n");
- autoreq_seterrno(req, ENOENT);
-serve:
- error = autoreq_serv(ah, req);
- if (error == -1) {
- warn("AUTOFS_CTL_SERVREQ");
- }
-}
-
-int
-mount_indirect(req, ent)
- struct autofs_userreq *req;
- struct autoentry *ent;
-{
- struct stat sb;
- char *path, *cmd;
- int error, x;
-
- if (ent->ae_indirect != 1) {
- fprintf(stderr, "not indirect.\n");
- return (0);
- }
- fprintf(stderr, "indirect mount...\n");
- /*
- * handle lookups, fake all stat(2) requests... this is bad,
- * but we're a driver so we don't care...
- * If we don't care about the type of request, then just return.
- */
- switch (autoreq_getop(req)) {
- case AUTOREQ_OP_LOOKUP:
- break;
- case AUTOREQ_OP_STAT:
- fprintf(stderr, "stat\n");
- return (1);
- default:
- fprintf(stderr, "unknown\n");
- return (0);
- }
- if (stat(ent->ae_fullpath, &sb))
- return (0);
- if (sb.st_ino != autoreq_getdirino(req)) {
- fprintf(stderr, "st_ino %d != dirino %d\n",
- (int)sb.st_ino, (int)autoreq_getdirino(req));
- return (0);
- }
- x = asprintf(&path, "%s/%s", ent->ae_fullpath, autoreq_getpath(req));
- if (x > PATH_MAX) {
- autoreq_seterrno(req, ENAMETOOLONG);
- return (1);
- }
- if (mkdir(path, 0555) == -1)
- warn("mkdir %s", path);
- error = asprintf(&cmd, "%s -t %s -o %s %s/%s %s", mount_prog,
- ent->ae_type, ent->ae_opts, ent->ae_rpath, autoreq_getpath(req), path);
- fprintf(stderr, "running:\n\t%s\n", cmd);
- error = system(cmd);
- fprintf(stderr, "error = %d\n", error);
- free(cmd);
- if (error) {
- if (rmdir(path) == -1)
- warn("rmdir %s", path);
- autoreq_seterrno(req, ENOENT);
- } else {
- if (stat(path, &sb) != -1)
- autoreq_setino(req, sb.st_ino);
- /* XXX !!! */
- /* req->au_flags = 1; */
- }
- free(path);
- return (1);
-}
-
-int
-mount_direct(req, ent)
- struct autofs_userreq *req;
- struct autoentry *ent;
-{
- struct stat sb;
- char *cmd;
- int error;
-
- if (ent->ae_direct != 1) {
- fprintf(stderr, "not direct.\n");
- return (0);
- }
- fprintf(stderr, "direct mount...\n");
- /*
- * handle lookups, fake all stat(2) requests... this is bad,
- * but we're a driver so we don't care...
- * If we don't care about the type of request, then just return.
- */
- switch (autoreq_getop(req)) {
- case AUTOREQ_OP_LOOKUP:
- break;
- case AUTOREQ_OP_STAT:
- return (1);
- default:
- return (0);
- }
- if (stat(ent->ae_fullpath, &sb))
- return (0);
- if (sb.st_ino != autoreq_getino(req))
- return (0);
- error = asprintf(&cmd, "%s -t %s -o %s %s %s", mount_prog,
- ent->ae_type, ent->ae_opts, ent->ae_rpath, ent->ae_fullpath);
- if (error == -1)
- err(1, "asprintf");
- fprintf(stderr, "running:\n\t%s\n", cmd);
- error = system(cmd);
- fprintf(stderr, "error = %d\n", error);
- free(cmd);
- if (error) {
- autoreq_seterrno(req, ENOENT);
- return (1);
- }
- /* XXX: fix ONLIST in kernel */
- /* req->au_flags = 1; */
- return (1);
-}
-
-int
-mount_browse(req, ent)
- struct autofs_userreq *req;
- struct autoentry *ent;
-{
- off_t off;
-
- if (ent->ae_browse != 1)
- return (0);
- if (autoreq_getop(req) != AUTOREQ_OP_READDIR)
- return (0);
- autoreq_getoffset(req, &off);
- if (off < sizeof(dumbents))
- autoreq_setaux(req, dumbents, sizeof(dumbents));
- fprintf(stderr, "mount_browse: offset %d, size %d\n",
- (int)off, (int)sizeof(dumbents));
- autoreq_seteof(req, 1);
- return (1);
-}
-
-/*
- * Ask the filesystem passed in if it has a pending request.
- * if so process them.
- */
-void
-dotheneedful(autoh_t ah)
-{
- int cnt, i;
- autoreq_t *reqs;
-
- if (autoreq_get(ah, &reqs, &cnt))
- err(1, "autoreq_get");
-
- for (i = 0; i < cnt; i++) {
- fprintf(stderr, "processing request for '%s' '%s'\n",
- autoh_mp(ah), autoreq_getpath(reqs[i]));
- doreq(ah, reqs[i]);
- }
- free(reqs);
-}
-
-int
-poll_handles(autoh_t *array, int cnt)
-{
- int i, saved_errno, x;
- static struct pollfd *pfd = NULL;
-
- pfd = reallocf(pfd, cnt * sizeof(*pfd));
- if (pfd == NULL)
- return (-1);
- for (i = 0; i < cnt; i++) {
- pfd[i].fd = autoh_fd(array[i]);
- pfd[i].events = POLLPRI;
- pfd[i].revents = 0;
- }
- fprintf(stderr, "start polling...\n");
- x = poll(pfd, cnt, 10000);
- saved_errno = errno;
- fprintf(stderr, "done polling...\n");
- errno = saved_errno;
- if (x == -1)
- return (-1);
- /* at least one fs is ready... */
- if (x > 0)
- return (0);
- return (0);
-}
-
-void
-eventloop(void)
-{
- autoh_t *array;
- int cnt, i;
-
- fprintf(stderr, "starting event loop...\n");
- for ( ;; ) {
- if (autoh_getall(&array, &cnt))
- err(1, "autoh_getall");
- if (poll_handles(array, cnt))
- err(1, "poll_handles");
- for (i = 0; i < cnt; i++) {
- dotheneedful(array[i]);
- }
- autoh_freeall(array);
- }
-}
-
-int
-main(int argc __unused, char **argv __unused)
-{
-
- if (getuid() != 0)
- errx(1, "autodriver needs to be run as root to work.");
- parsetab();
- populate_tab();
- eventloop();
- return (0);
-}
diff --git a/share/examples/autofs/driver/autotab b/share/examples/autofs/driver/autotab
deleted file mode 100644
index c56e072..0000000
--- a/share/examples/autofs/driver/autotab
+++ /dev/null
@@ -1,7 +0,0 @@
-# $Id: autotab,v 1.8 2004/09/08 08:12:21 bright Exp $
-# $FreeBSD$
-# autofs, directory, fstype, opts, path
-/auto share nfs ro,-R=1 big:/vol/share direct
-#/auto src nfs ro,-R=1 big:/vol/share/src indirect
-/auto src nfs ro,-R=1 big:/vol/share/src direct
-/auto browse nfs ro,-R=1 big:/vol/share/src browse,indirect
diff --git a/share/examples/bhyve/vmrun.sh b/share/examples/bhyve/vmrun.sh
index 33d0db9..93f3c94 100755
--- a/share/examples/bhyve/vmrun.sh
+++ b/share/examples/bhyve/vmrun.sh
@@ -152,7 +152,7 @@ make_and_check_diskdev()
{
local virtio_diskdev="$1"
# Create the virtio diskdev file if needed
- if [ ! -f ${virtio_diskdev} ]; then
+ if [ ! -e ${virtio_diskdev} ]; then
echo "virtio disk device file \"${virtio_diskdev}\" does not exist."
echo "Creating it ..."
truncate -s 8G ${virtio_diskdev} > /dev/null
@@ -173,13 +173,14 @@ echo "Launching virtual machine \"$vmname\" ..."
virtio_diskdev="$disk_dev0"
+${BHYVECTL} --vm=${vmname} --destroy > /dev/null 2>&1
+
while [ 1 ]; do
- ${BHYVECTL} --vm=${vmname} --destroy > /dev/null 2>&1
- file ${virtio_diskdev} | grep "boot sector" > /dev/null
+ file -s ${virtio_diskdev} | grep "boot sector" > /dev/null
rc=$?
if [ $rc -ne 0 ]; then
- file ${virtio_diskdev} | grep ": Unix Fast File sys" > /dev/null
+ file -s ${virtio_diskdev} | grep ": Unix Fast File sys" > /dev/null
rc=$?
fi
if [ $rc -ne 0 ]; then
@@ -195,7 +196,7 @@ while [ 1 ]; do
exit 1
fi
BOOTDISK=${isofile}
- installer_opt="-s 31:0,virtio-blk,${BOOTDISK}"
+ installer_opt="-s 31:0,ahci-cd,${BOOTDISK}"
else
BOOTDISK=${virtio_diskdev}
installer_opt=""
@@ -203,7 +204,8 @@ while [ 1 ]; do
${LOADER} -c ${console} -m ${memsize} -d ${BOOTDISK} ${loader_opt} \
${vmname}
- if [ $? -ne 0 ]; then
+ bhyve_exit=$?
+ if [ $bhyve_exit -ne 0 ]; then
break
fi
@@ -237,9 +239,27 @@ while [ 1 ]; do
-l com1,${console} \
${installer_opt} \
${vmname}
- if [ $? -ne 0 ]; then
+
+ bhyve_exit=$?
+ # bhyve returns the following status codes:
+ # 0 - VM has been reset
+ # 1 - VM has been powered off
+ # 2 - VM has been halted
+ # 3 - VM generated a triple fault
+ # all other non-zero status codes are errors
+ #
+ if [ $bhyve_exit -ne 0 ]; then
break
fi
done
-exit 99
+
+case $bhyve_exit in
+ 0|1|2)
+ # Cleanup /dev/vmm entry when bhyve did not exit
+ # due to an error.
+ ${BHYVECTL} --vm=${vmname} --destroy > /dev/null 2>&1
+ ;;
+esac
+
+exit $bhyve_exit
diff --git a/share/examples/hwpmc/Makefile b/share/examples/hwpmc/Makefile
new file mode 100644
index 0000000..a455fc6
--- /dev/null
+++ b/share/examples/hwpmc/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+PROG= overhead
+LDFLAGS+= -lpmc
+MAN=
+
+install:
+
+.include <bsd.prog.mk>
diff --git a/share/examples/hwpmc/README b/share/examples/hwpmc/README
index 035e68d..6ad35b6 100644
--- a/share/examples/hwpmc/README
+++ b/share/examples/hwpmc/README
@@ -3,6 +3,4 @@
Examples illustrating the use of the hwpmc(4) driver and pmc(3)
library interface.
-While there is nothing here yet, the source code for pmccontrol(8)
-and pmcstat(8) could serve as examples.
diff --git a/share/examples/hwpmc/overhead.c b/share/examples/hwpmc/overhead.c
new file mode 100644
index 0000000..14834bd
--- /dev/null
+++ b/share/examples/hwpmc/overhead.c
@@ -0,0 +1,106 @@
+/*-
+ * Copyright (c) 2014, Neville-Neil Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ *
+ * Author: George V. Neville-Neil
+ *
+ */
+
+/*
+ * Calculate the time overhead of starting, stopping, and recording
+ * pmc counters.
+ *
+ * The only argument is a counter name, such as "instruction-retired"
+ * which is CPU dependent and can be found with pmmcontrol(8) using
+ * pmccontrol -L.
+ *
+ * The start, stop, read and write operations are timed using the
+ * rdtsc() macro which reads the Time Stamp Counter on the CPU.
+ */
+
+#include <stdio.h>
+#include <err.h>
+#include <sysexits.h>
+#include <sys/types.h>
+#include <machine/cpufunc.h>
+#include <pmc.h>
+
+int
+main(int argc, char **argv)
+{
+ pmc_id_t pmcid;
+ pmc_value_t read_value;
+ pmc_value_t read_clear_value;
+ uint64_t tsc1, write_cyc, start_cyc, read_cyc, stop_cyc;
+ char *counter_name;
+
+ if (argc != 2)
+ err(EX_USAGE, "counter-name required");
+
+ counter_name = argv[1];
+
+ if (pmc_init() != 0)
+ err(EX_OSERR, "hwpmc(4) not loaded, kldload or update your kernel");
+
+ if (pmc_allocate(counter_name, PMC_MODE_SC, 0, 0, &pmcid) < 0)
+ err(EX_OSERR, "failed to allocate %s as a system counter in counting mode",
+ counter_name);
+
+ tsc1 = rdtsc();
+ if (pmc_write(pmcid, 0) < 0)
+ err(EX_OSERR, "failed to zero counter %s", counter_name);
+ write_cyc = rdtsc() - tsc1;
+
+ tsc1 = rdtsc();
+ if (pmc_start(pmcid) < 0)
+ err(EX_OSERR, "failed to start counter %s", counter_name);
+ start_cyc = rdtsc() - tsc1;
+
+ tsc1 = rdtsc();
+ if (pmc_read(pmcid, &read_value) < 0)
+ err(EX_OSERR, "failed to read counter %s", counter_name);
+ read_cyc = rdtsc() - tsc1;
+
+ tsc1 = rdtsc();
+ if (pmc_stop(pmcid) < 0)
+ err(EX_OSERR, "failed to stop counter %s", counter_name);
+ stop_cyc = rdtsc() - tsc1;
+
+ if (pmc_rw(pmcid, 0, &read_clear_value))
+ err(EX_OSERR, "failed to read and zero %s", counter_name);
+
+ if (pmc_release(pmcid) < 0)
+ err(EX_OSERR, "failed to release %s as a system counter in counting mode",
+ counter_name);
+
+ printf("Counter %s, read value %ld, read/clear value %ld\n",
+ counter_name, read_value, read_clear_value);
+ printf("Cycles to start: %ld\tstop: %ld\tread: %ld\twrite: %ld\n",
+ start_cyc, stop_cyc, read_cyc, stop_cyc);
+
+ return(0);
+}
+
diff --git a/share/examples/kld/random_adaptor/random_adaptor_example.c b/share/examples/kld/random_adaptor/random_adaptor_example.c
index da588a8..34993c1 100644
--- a/share/examples/kld/random_adaptor/random_adaptor_example.c
+++ b/share/examples/kld/random_adaptor/random_adaptor_example.c
@@ -35,17 +35,20 @@ __FBSDID("$FreeBSD$");
#include <sys/random.h>
#include <sys/systm.h>
-#include <dev/random/live_entropy_sources.h>
-#include <dev/random/random_adaptors.h>
#include <dev/random/randomdev.h>
+#include <dev/random/randomdev_soft.h>
+#include <dev/random/random_adaptors.h>
+#include <dev/random/live_entropy_sources.h>
-static int random_example_read(void *, int);
+static void live_random_example_init(void);
+static void live_random_example_deinit(void);
+static u_int live_random_example_read(void *, u_int);
-struct random_adaptor random_example = {
- .ident = "Example RNG",
- .source = RANDOM_PURE_BOGUS, /* Make sure this is in
- * sys/random.h and is unique */
- .read = random_example_read,
+struct random_adaptor live_random_example = {
+ .les_ident = "Example RNG",
+ .les_source = RANDOM_PURE_BOGUS, /* Make sure this is in
+ * sys/random.h and is unique */
+ .les_read = live_random_example_read,
};
/*
@@ -58,8 +61,26 @@ getRandomNumber(void)
return 4; /* chosen by fair dice roll, guaranteed to be random */
}
-static int
-random_example_read(void *buf, int c)
+static void
+live_random_example_init(void)
+{
+
+ /* Do initialisation stuff here */
+}
+
+static void
+live_random_example_deinit(void)
+{
+
+ /* Do de-initialisation stuff here */
+}
+
+/* get <c> bytes of random stuff into <buf>. You may presume
+ * that <c> is a multiple of 2^n, with n>=3. A typical value
+ * is c=16.
+ */
+static u_int
+live_random_example_read(void *buf, u_int c)
{
uint8_t *b;
int count;
@@ -69,22 +90,23 @@ random_example_read(void *buf, int c)
for (count = 0; count < c; count++)
b[count] = getRandomNumber();
- printf("returning %d bytes of pure randomness\n", c);
+ /* printf("returning %d bytes of pure randomness\n", c); */
return (c);
}
+/* ARGSUSED */
static int
-random_example_modevent(module_t mod, int type, void *unused)
+live_random_example_modevent(module_t mod __unused, int type, void *unused __unused)
{
int error = 0;
switch (type) {
case MOD_LOAD:
- live_entropy_source_register(&random_example);
+ live_entropy_source_register(&live_random_example);
break;
case MOD_UNLOAD:
- live_entropy_source_deregister(&random_example);
+ live_entropy_source_deregister(&live_random_example);
break;
case MOD_SHUTDOWN:
@@ -98,4 +120,6 @@ random_example_modevent(module_t mod, int type, void *unused)
return (error);
}
-LIVE_ENTROPY_SRC_MODULE(live_entropy_source_example, random_example_modevent, 1);
+DEV_MODULE(live_random_example, live_random_example_modevent, NULL);
+MODULE_VERSION(live_random_example, 1);
+MODULE_DEPEND(live_random_example, randomdev, 1, 1, 1);
diff --git a/share/man/man3/offsetof.3 b/share/man/man3/offsetof.3
index 9b3f568..ee5958f 100644
--- a/share/man/man3/offsetof.3
+++ b/share/man/man3/offsetof.3
@@ -16,7 +16,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 18 2010
+.Dd February 18, 2010
.Dt OFFSETOF 3
.Os
.Sh NAME
diff --git a/share/man/man3/pthread.3 b/share/man/man3/pthread.3
index 9c80f70..78a9153 100644
--- a/share/man/man3/pthread.3
+++ b/share/man/man3/pthread.3
@@ -30,7 +30,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd January 8, 2010
+.Dd August 12, 2014
.Dt PTHREAD 3
.Os
.Sh NAME
@@ -344,13 +344,13 @@ Unblock at least one of the threads blocked on the specified condition variable.
.Fa "const struct timespec *abstime"
.Fc
.Xc
-Wait no longer than the specified time for a condition
-and lock the specified mutex.
+Unlock the specified mutex, wait no longer than the specified time for
+a condition, and then relock the mutex.
.It Xo
.Ft int
.Fn pthread_cond_wait "pthread_cond_t *" "pthread_mutex_t *mutex"
.Xc
-Wait for a condition and lock the specified mutex.
+Unlock the specified mutex, wait for a condition, and relock the mutex.
.El
.Ss Read/Write Lock Routines
.Bl -tag -width indent
diff --git a/share/man/man3/pthread_cleanup_pop.3 b/share/man/man3/pthread_cleanup_pop.3
index 519e53f..2b7756a 100644
--- a/share/man/man3/pthread_cleanup_pop.3
+++ b/share/man/man3/pthread_cleanup_pop.3
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 30, 1998
+.Dd October 25, 2014
.Dt PTHREAD_CLEANUP_POP 3
.Os
.Sh NAME
@@ -50,6 +50,14 @@ If there is no cleanup routine
then
.Fn pthread_cleanup_pop
does nothing.
+.Pp
+The
+.Fn pthread_cleanup_pop
+function is implemented as a macro that closes a block.
+Invocations of this function must appear as standalone statements that are
+paired with an earlier call of
+.Xr pthread_cleanup_push 3
+in the same lexical scope.
.Sh RETURN VALUES
The
.Fn pthread_cleanup_pop
diff --git a/share/man/man3/pthread_cleanup_push.3 b/share/man/man3/pthread_cleanup_push.3
index 2790987..47f35db 100644
--- a/share/man/man3/pthread_cleanup_push.3
+++ b/share/man/man3/pthread_cleanup_push.3
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 30, 1998
+.Dd October 25, 2014
.Dt PTHREAD_CLEANUP_PUSH 3
.Os
.Sh NAME
@@ -52,6 +52,14 @@ When
is called, it is passed
.Fa arg
as its only argument.
+.Pp
+The
+.Fn pthread_cleanup_push
+function is implemented as a macro that opens a new block.
+Invocations of this function must appear as standalone statements that are
+paired with a later call of
+.Xr pthread_cleanup_pop 3
+in the same lexical scope.
.Sh RETURN VALUES
The
.Fn pthread_cleanup_push
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
index ac2cabb..76b3d55 100644
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -132,7 +132,6 @@ MAN= aac.4 \
et.4 \
eventtimers.4 \
exca.4 \
- faith.4 \
fatm.4 \
fd.4 \
fdc.4 \
@@ -200,12 +199,14 @@ MAN= aac.4 \
ip.4 \
ip6.4 \
ipfirewall.4 \
+ ipheth.4 \
${_ipmi.4} \
ips.4 \
ipsec.4 \
ipw.4 \
ipwfw.4 \
isci.4 \
+ iscsi.4 \
iscsi_initiator.4 \
ismt.4 \
isp.4 \
@@ -250,6 +251,7 @@ MAN= aac.4 \
malo.4 \
mcd.4 \
md.4 \
+ me.4 \
mem.4 \
meteor.4 \
mfi.4 \
@@ -437,6 +439,7 @@ MAN= aac.4 \
smb.4 \
smbus.4 \
smp.4 \
+ smsc.4 \
sn.4 \
snd_ad1816.4 \
snd_als4000.4 \
@@ -527,6 +530,7 @@ MAN= aac.4 \
uhso.4 \
uipaq.4 \
ukbd.4 \
+ uled.4 \
ulpt.4 \
umass.4 \
umcs.4 \
@@ -559,10 +563,12 @@ MAN= aac.4 \
${_virtio.4} \
${_virtio_balloon.4} \
${_virtio_blk.4} \
+ ${_virtio_console.4} \
${_virtio_random.4} \
${_virtio_scsi.4} \
vkbd.4 \
vlan.4 \
+ vxlan.4 \
${_vmx.4} \
vpo.4 \
vr.4 \
@@ -630,7 +636,6 @@ MLINKS+=en.4 if_en.4
MLINKS+=enc.4 if_enc.4
MLINKS+=epair.4 if_epair.4
MLINKS+=et.4 if_et.4
-MLINKS+=faith.4 if_faith.4
MLINKS+=fatm.4 if_fatm.4
MLINKS+=fd.4 stderr.4 \
fd.4 stdin.4 \
@@ -656,6 +661,7 @@ MLINKS+=ip.4 rawip.4
MLINKS+=ipfirewall.4 ipaccounting.4 \
ipfirewall.4 ipacct.4 \
ipfirewall.4 ipfw.4
+MLINKS+=ipheth.4 if_ipheth.4
MLINKS+=ipw.4 if_ipw.4
MLINKS+=iwi.4 if_iwi.4
MLINKS+=iwn.4 if_iwn.4
@@ -710,6 +716,7 @@ MLINKS+=sge.4 if_sge.4
MLINKS+=sis.4 if_sis.4
MLINKS+=sk.4 if_sk.4
MLINKS+=smp.4 SMP.4
+MLINKS+=smsc.4 if_smsc.4
MLINKS+=sn.4 if_sn.4
MLINKS+=snd_envy24.4 snd_ak452x.4
MLINKS+=snd_sbc.4 snd_sb16.4 \
@@ -737,6 +744,7 @@ MLINKS+=urndis.4 if_urndis.4
MLINKS+=${_urtw.4} ${_if_urtw.4}
MLINKS+=vge.4 if_vge.4
MLINKS+=vlan.4 if_vlan.4
+MLINKS+=vxlan.4 if_vxlan.4
MLINKS+=${_vmx.4} ${_if_vmx.4}
MLINKS+=vpo.4 imm.4
MLINKS+=vr.4 if_vr.4
@@ -806,6 +814,7 @@ _nxge.4= nxge.4
_virtio.4= virtio.4
_virtio_balloon.4=virtio_balloon.4
_virtio_blk.4= virtio_blk.4
+_virtio_console.4=virtio_console.4
_virtio_random.4= virtio_random.4
_virtio_scsi.4= virtio_scsi.4
_vmx.4= vmx.4
diff --git a/share/man/man4/acpi.4 b/share/man/man4/acpi.4
index 8196c43..17cf1cb 100644
--- a/share/man/man4/acpi.4
+++ b/share/man/man4/acpi.4
@@ -238,7 +238,8 @@ Override the assumed memory starting address for PCI host bridges.
.It Va hw.acpi.install_interface , hw.acpi.remove_interface
Install or remove OS interface(s) to control return value of
.Ql _OSI
-query method. When an OS interface is specified in
+query method.
+When an OS interface is specified in
.Va hw.acpi.install_interface ,
.Li _OSI
query for the interface returns it is
@@ -249,7 +250,8 @@ Conversely, when an OS interface is specified in
query returns it is
.Em not supported .
Multiple interfaces can be specified in a comma-separated list and
-any leading white spaces will be ignored. For example,
+any leading white spaces will be ignored.
+For example,
.Qq Li FreeBSD, Linux
is a valid list of two interfaces
.Qq Li FreeBSD
@@ -626,13 +628,3 @@ IRQ routing problems.
Upgrade your BIOS to the latest version available from the vendor before
deciding it is a problem with
.Nm .
-.Pp
-The
-.Nm
-CPU idle power management drive conflicts with the local APIC (LAPIC)
-timer.
-Disable the local APIC timer with
-.Va hint.apic.0.clock=0
-or do not use the
-.Li C3
-and deeper states if the local APIC timer is enabled.
diff --git a/share/man/man4/acpi_wmi.4 b/share/man/man4/acpi_wmi.4
index fffb680..1eba575 100644
--- a/share/man/man4/acpi_wmi.4
+++ b/share/man/man4/acpi_wmi.4
@@ -74,7 +74,7 @@ GUID INST EXPE METH STR EVENT OID
{8F1F6435-9F42-42C8-BADC-0E9424F20C9A} 0 NO NO NO NO BI
.Ed
.Sh SEE ALSO
-.Xr acpi 4 ,
+.Xr acpi 4
.Sh HISTORY
The
.Nm
diff --git a/share/man/man4/ada.4 b/share/man/man4/ada.4
index 433a547..792d8e6 100644
--- a/share/man/man4/ada.4
+++ b/share/man/man4/ada.4
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 21, 2014
+.Dd October 22, 2014
.Dt ADA 4
.Os
.Sh NAME
@@ -123,11 +123,20 @@ seconds.
This variable determines whether to spin-down disks when shutting down.
Set to 1 to enable spin-down, 0 to disable.
The default is currently enabled.
+.It Va kern.cam.sort_io_queue
+.It Va kern.cam.ada. Ns Ar X Ns Va .sort_io_queue
+.Pp
+These variables determine whether request queue should be sorted trying
+to optimize head seeks.
+Set to 1 to enable sorting, 0 to disable, -1 to leave it as-is.
+The default is sorting enabled for HDDs and disabled SSDs.
+.It Va kern.cam.ada.read_ahead
+.It Va kern.cam.ada. Ns Ar X Ns Va .read_ahead
.It Va kern.cam.ada.write_cache
.It Va kern.cam.ada. Ns Ar X Ns Va .write_cache
.Pp
-These variables determine whether device write cache should be enabled
-globally or per-device or disabled.
+These variables determine whether device read-ahead and write caches
+should be enabled globally or per-device or disabled.
Set to 1 to enable write cache, 0 to disable, -1 to leave it as-is.
Values modified at runtime take effect only after device reset
.Pq using the reset subcommand of Xr camcontrol 8 .
diff --git a/share/man/man4/alc.4 b/share/man/man4/alc.4
index 0c6af6a..73647c1 100644
--- a/share/man/man4/alc.4
+++ b/share/man/man4/alc.4
@@ -24,12 +24,12 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 9, 2010
+.Dd October 8, 2014
.Dt ALC 4
.Os
.Sh NAME
.Nm alc
-.Nd Atheros AR813x/AR815x Gigabit/Fast Ethernet driver
+.Nd Atheros AR813x/AR815x/AR816x/AR817x Gigabit/Fast Ethernet driver
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following lines in your
@@ -48,8 +48,8 @@ if_alc_load="YES"
.Sh DESCRIPTION
The
.Nm
-device driver provides support for Atheros AR813x and AR815x PCI
-Express Gigabit/Fast Ethernet controllers.
+device driver provides support for Atheros AR813x, AR815x, AR816x
+and AR817x PCI Express Gigabit/Fast Ethernet controllers.
.Pp
All LOMs supported by the
.Nm
@@ -58,9 +58,9 @@ segmentation offload (TSO), hardware VLAN tag stripping/insertion
features, Wake On Lan (WOL) and an interrupt moderation mechanism
as well as a 64-bit multicast hash filter.
.Pp
-The AR813x and AR815x supports Jumbo Frames (up to 9216 and 6144
-bytes, respectively), which can be configured via the interface
-MTU setting.
+The AR813x, AR815x, AR816x and AR817x supports Jumbo Frames (up to
+9216, 6144, 9216 and 9216 bytes, respectively), which can be
+configured via the interface MTU setting.
Selecting an MTU larger than 1500 bytes with the
.Xr ifconfig 8
utility configures the adapter to receive and transmit Jumbo Frames.
@@ -112,6 +112,16 @@ Atheros AR8151 v2.0 PCI Express Gigabit Ethernet controller
Atheros AR8152 v1.1 PCI Express Fast Ethernet controller
.It
Atheros AR8152 v2.0 PCI Express Fast Ethernet controller
+.It
+Atheros AR8161 PCI Express Gigabit Ethernet controller
+.It
+Atheros AR8162 PCI Express Fast Ethernet controller
+.It
+Atheros AR8171 PCI Express Gigabit Ethernet controller
+.It
+Atheros AR8172 PCI Express Fast Ethernet controller
+.It
+Killer E2200 Gigabit Ethernet controller
.El
.Sh LOADER TUNABLES
Tunables can be set at the
diff --git a/share/man/man4/altera_atse.4 b/share/man/man4/altera_atse.4
index d3d96ff..10835cf 100644
--- a/share/man/man4/altera_atse.4
+++ b/share/man/man4/altera_atse.4
@@ -1,5 +1,5 @@
.\"-
-.\" Copyright (c) 2013 SRI International
+.\" Copyright (c) 2013-2014 SRI International
.\" All rights reserved.
.\"
.\" This software was developed by SRI International and the University of
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 18, 2013
+.Dd May 21, 2014
.Dt ALTERA_ATSE 4
.Os
.Sh NAME
@@ -66,6 +66,25 @@ The current version of the
.Nm
driver supports the Ethernet MegaCore as described in version 11.1 of
Altera's documentation when the device is configured with internal FIFOs.
+.Sh MAC SELECTION
+The default MAC address for each
+.Nm
+interface is derived from a value stored in
+.Xr cfi 4
+flash.
+The value is managed by the
+.Xr atsectl 8
+utility.
+.Pp
+Only a single MAC address may be stored in flash.
+If the address begins with the Altera prefix 00:07:ed and ends in 00 then
+up to 16 addresses will be derived from it by adding the unit number of
+the interface to the stored address.
+For other prefixes, the address will be assigned to atse0 and random
+addresses will be used for other interfaces.
+If the stored address is invalid, for example all zero's, multicast, or the
+default address shipped on all DE4 boards (00:07:ed:ff:ed:15) then a random
+address is generated when the device is attached.
.Sh SEE ALSO
.Xr miibus 4 ,
.Xr netintro 4 ,
diff --git a/share/man/man4/atkbd.4 b/share/man/man4/atkbd.4
index 202963a..7ce99e7 100644
--- a/share/man/man4/atkbd.4
+++ b/share/man/man4/atkbd.4
@@ -51,7 +51,9 @@ driver, provides access to the AT 84 keyboard or the AT enhanced keyboard
which is connected to the AT keyboard controller.
.Pp
This driver is required for the console driver
-.Xr syscons 4 .
+.Xr syscons 4
+or
+.Xr vt 4 .
.Pp
There can be only one
.Nm
@@ -211,6 +213,7 @@ In both cases, you also need to have following lines in
.Xr atkbdc 4 ,
.Xr psm 4 ,
.Xr syscons 4 ,
+.Xr vt 4 ,
.Xr kbdmap 5 ,
.Xr loader 8
.Sh HISTORY
diff --git a/share/man/man4/cdce.4 b/share/man/man4/cdce.4
index d38a969..fa921b6 100644
--- a/share/man/man4/cdce.4
+++ b/share/man/man4/cdce.4
@@ -28,7 +28,7 @@
.\" $NetBSD: cdce.4,v 1.4 2004/12/08 18:35:56 peter Exp $
.\" $FreeBSD$
.\"
-.Dd September 17, 2005
+.Dd September 25, 2014
.Dt CDCE 4
.Os
.Sh NAME
@@ -114,9 +114,10 @@ is running low on mbufs.
.Sh SEE ALSO
.Xr arp 4 ,
.Xr intro 4 ,
+.Xr ipheth 4 ,
.Xr netintro 4 ,
+.Xr urndis 4 ,
.Xr usb 4 ,
-.\" .Xr hostname.if 5 ,
.Xr ifconfig 8
.Rs
.%T "Universal Serial Bus Class Definitions for Communication Devices"
diff --git a/share/man/man4/ctl.4 b/share/man/man4/ctl.4
index 51fd0a5..a226b62 100644
--- a/share/man/man4/ctl.4
+++ b/share/man/man4/ctl.4
@@ -23,7 +23,7 @@
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
-.Dd April 2, 2013
+.Dd October 23, 2014
.Dt CTL 4
.Os
.Sh NAME
@@ -57,7 +57,7 @@ Tagged queueing
.It
SCSI task attribute support (ordered, head of queue, simple tags)
.It
-SCSI implicit command ordering support.
+SCSI implicit command ordering support
.It
Full task management support (abort, LUN reset, target reset, etc.)
.It
@@ -67,6 +67,12 @@ Support for multiple simultaneous initiators
.It
Support for multiple simultaneous backing stores
.It
+Support for VMWare VAAI: COMPARE AND WRITE, XCOPY, WRITE SAME,
+and UNMAP commands
+.It
+Support for Microsoft ODX: POPULATE TOKEN/WRITE USING TOKEN,
+WRITE SAME, and UNMAP commands
+.It
Persistent reservation support
.It
Mode sense/select support
diff --git a/share/man/man4/cxgbe.4 b/share/man/man4/cxgbe.4
index 215a194..9a9f868 100644
--- a/share/man/man4/cxgbe.4
+++ b/share/man/man4/cxgbe.4
@@ -240,8 +240,19 @@ The default is -1 which lets the driver pick a pad boundary.
Controls the hardware response to congestion.
-1 disables congestion feedback and is not recommended.
0 instructs the hardware to backpressure its pipeline on congestion.
-This usually results in the port emitting pause frames.
+This usually results in the port emitting PAUSE frames.
1 instructs the hardware to drop frames destined for congested queues.
+.It Va hw.cxgbe.pause_settings
+PAUSE frame settings.
+Bit 0 is rx_pause, bit 1 is tx_pause.
+rx_pause = 1 instructs the hardware to heed incoming PAUSE frames, 0 instructs
+it to ignore them.
+tx_pause = 1 allows the hardware to emit PAUSE frames when its receive FIFO
+reaches a high threshold, 0 prohibits the hardware from emitting PAUSE frames.
+The default is 3 (both rx_pause and tx_pause = 1).
+This tunable establishes the default PAUSE settings for all ports.
+Settings can be displayed and controlled on a per-port basis via the
+dev.cxgbe.X.pause_settings (dev.cxl.X.pause_settings for T5 cards) sysctl.
.It Va hw.cxgbe.buffer_packing
Allow the hardware to deliver multiple frames in the same receive buffer
opportunistically.
diff --git a/share/man/man4/da.4 b/share/man/man4/da.4
index 39e1dba..7d6f83b 100644
--- a/share/man/man4/da.4
+++ b/share/man/man4/da.4
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 8, 2012
+.Dd October 22, 2014
.Dt DA 4
.Os
.Sh NAME
@@ -150,6 +150,13 @@ This variable determines how long the
driver will wait before timing out an outstanding command.
The units for this value are seconds, and the default is currently 60
seconds.
+.It Va kern.cam.sort_io_queue
+.It Va kern.cam.da. Ns Ar X Ns Va .sort_io_queue
+.Pp
+These variables determine whether request queue should be sorted trying
+to optimize head seeks.
+Set to 1 to enable sorting, 0 to disable, -1 to leave it as-is.
+The default is sorting enabled for HDDs and disabled for SSDs.
.It kern.cam.da.%d.minimum_cmd_size
.Pp
This variable determines what the minimum READ/WRITE CDB size is for a
diff --git a/share/man/man4/dpt.4 b/share/man/man4/dpt.4
index fecb7a5..eddba6c 100644
--- a/share/man/man4/dpt.4
+++ b/share/man/man4/dpt.4
@@ -23,7 +23,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 18, 2006
+.Dd November 13, 2014
.Dt DPT 4
.Os
.Sh NAME
@@ -40,9 +40,6 @@ kernel configuration file:
For one or more EISA cards:
.Cd "device eisa"
.Pp
-For one or more ISA cards:
-.Cd "device isa"
-.Pp
For one or more PCI cards:
.Cd "device pci"
.Pp
diff --git a/share/man/man4/faith.4 b/share/man/man4/faith.4
deleted file mode 100644
index f0a2df6..0000000
--- a/share/man/man4/faith.4
+++ /dev/null
@@ -1,133 +0,0 @@
-.\" $KAME: faith.4,v 1.9 2001/04/27 17:26:35 itojun Exp $
-.\"
-.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the project nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd January 23, 2012
-.Dt FAITH 4
-.Os
-.Sh NAME
-.Nm faith
-.Nd IPv6-to-IPv4 TCP relay capturing interface
-.Sh SYNOPSIS
-.Cd "device faith"
-.Sh DESCRIPTION
-The
-.Nm
-interface captures IPv6 TCP traffic,
-for implementing userland IPv6-to-IPv4 TCP relay
-like
-.Xr faithd 8 .
-.Pp
-Each
-.Nm
-interface is created at runtime using interface cloning.
-This is
-most easily done with the
-.Xr ifconfig 8
-.Cm create
-command or using the
-.Va cloned_interfaces
-variable in
-.Xr rc.conf 5 .
-.Pp
-Special action will be taken when IPv6 TCP traffic is seen on a router,
-and the default routing table suggests to route it to the
-.Nm
-interface.
-In this case, the packet will be accepted by the router,
-regardless of the list of IPv6 interface addresses assigned to the router.
-The packet will be captured by an IPv6 TCP socket, if it has the
-.Dv IN6P_FAITH
-flag turned on and matching address/port pairs.
-As a result,
-.Nm
-will let you capture IPv6 TCP traffic to some specific destination addresses.
-Userland programs, such as
-.Xr faithd 8
-can use this behavior to relay IPv6 TCP traffic to IPv4 TCP traffic.
-The program can accept some specific IPv6 TCP traffic, perform
-.Xr getsockname 2
-to get the IPv6 destination address specified by the client,
-and perform application-specific address mapping to relay IPv6 TCP to IPv4 TCP.
-.Pp
-The
-.Dv IN6P_FAITH
-flag on a IPv6 TCP socket can be set by using
-.Xr setsockopt 2 ,
-with level
-.Dv IPPROTO_IPV6
-and optname
-.Dv IPv6_FAITH .
-.Pp
-To handle error reports by ICMPv6, some ICMPv6 packets routed to an
-.Nm
-interface will be delivered to IPv6 TCP, as well.
-.Pp
-To understand how
-.Nm
-can be used, take a look at the source code of
-.Xr faithd 8 .
-.Pp
-As the
-.Nm
-interface implements potentially dangerous operations,
-great care must be taken when configuring it.
-To avoid possible misuse, the
-.Xr sysctl 8
-variable
-.Li net.inet6.ip6.keepfaith
-must be set to
-.Li 1
-prior to using the interface.
-When
-.Li net.inet6.ip6.keepfaith
-is
-.Li 0 ,
-no packets will be captured by the
-.Nm
-interface.
-.Pp
-The
-.Nm
-interface is intended to be used on routers, not on hosts.
-.\"
-.Sh SEE ALSO
-.Xr inet 4 ,
-.Xr inet6 4 ,
-.Xr faithd 8
-.Rs
-.%A Jun-ichiro itojun Hagino
-.%A Kazu Yamamoto
-.%T "An IPv6-to-IPv4 transport relay translator"
-.%O RFC3142
-.Re
-.Sh HISTORY
-The FAITH IPv6-to-IPv4 TCP relay translator first appeared in the
-WIDE hydrangea IPv6 stack.
diff --git a/share/man/man4/filemon.4 b/share/man/man4/filemon.4
index 585428b..a1522c8 100644
--- a/share/man/man4/filemon.4
+++ b/share/man/man4/filemon.4
@@ -165,6 +165,7 @@ buffer contents to it.
.Sh SEE ALSO
.Xr dtrace 1 ,
.Xr ktrace 1 ,
+.Xr script 1 ,
.Xr truss 1 ,
.Xr ioctl 2
.Sh HISTORY
diff --git a/share/man/man4/gif.4 b/share/man/man4/gif.4
index 453b4bd..27ee61b 100644
--- a/share/man/man4/gif.4
+++ b/share/man/man4/gif.4
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 1, 2011
+.Dd October 14, 2014
.Dt GIF 4
.Os
.Sh NAME
@@ -160,16 +160,6 @@ routed network.
It can be turned off by
.Dv IFF_LINK2
bit.
-.Ss Route caching
-Processing each packet requires two route lookups: first on the
-packet itself, and second on the tunnel destination.
-This second route can be cached, increasing tunnel performance.
-However, in a dynamically routed network, the tunnel will stick
-to the cached route, ignoring routing table updates.
-Route caching can be enabled with the
-.Dv IFF_LINK0
-flag.
-.\"
.Ss Miscellaneous
By default,
.Nm
diff --git a/share/man/man4/gre.4 b/share/man/man4/gre.4
index 72bb510..86e1366 100644
--- a/share/man/man4/gre.4
+++ b/share/man/man4/gre.4
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 20, 2008
+.Dd November 7, 2014
.Dt GRE 4
.Os
.Sh NAME
@@ -68,162 +68,30 @@ and
.Cm destroy
subcommands.
.Pp
-This driver currently supports the following modes of operation:
-.Bl -tag -width indent
-.It "GRE encapsulation (IP protocol number 47)"
-Encapsulated datagrams are
-prepended an outer datagram and a GRE header.
+This driver corresponds to RFC 2784.
+Encapsulated datagrams are prepended an outer datagram and a GRE header.
The GRE header specifies
the type of the encapsulated datagram and thus allows for tunneling other
protocols than IP.
GRE mode is also the default tunnel mode on Cisco routers.
-This is also the default mode of operation of the
-.Nm
-interfaces.
-As part of the GRE mode,
.Nm
also supports Cisco WCCP protocol, both version 1 and version 2.
-Since there is no reliable way to distinguish between WCCP versions, it
-should be configured manually using the
-.Cm link2
-flag.
-If the
-.Cm link2
-flag is not set (default), then WCCP version 1 is selected.
-.It "MOBILE encapsulation (IP protocol number 55)"
-Datagrams are
-encapsulated into IP, but with a shorter encapsulation.
-The original
-IP header is modified and the modifications are inserted between the
-so modified header and the original payload.
-Like
-.Xr gif 4 ,
-only for IP-in-IP encapsulation.
-.El
.Pp
The
.Nm
-interfaces support a number of
-.Xr ioctl 2 Ns s ,
-such as:
-.Bl -tag -width ".Dv GRESADDRS"
-.It Dv GRESADDRS
-Set the IP address of the local tunnel end.
-This is the source address
-set by or displayed by
-.Xr ifconfig 8
-for the
-.Nm
-interface.
-.It Dv GRESADDRD
-Set the IP address of the remote tunnel end.
-This is the destination address
-set by or displayed by
-.Xr ifconfig 8
-for the
-.Nm
-interface.
-.It Dv GREGADDRS
-Query the IP address that is set for the local tunnel end.
-This is the
-address the encapsulation header carries as local address (i.e., the real
-address of the tunnel start point).
-.It Dv GREGADDRD
-Query the IP address that is set for the remote tunnel end.
-This is the
-address the encapsulated packets are sent to (i.e., the real address of
-the remote tunnel endpoint).
-.It Dv GRESPROTO
-Set the operation mode to the specified IP protocol value.
-The
-protocol is passed to the interface in
-.Po Vt "struct ifreq" Pc Ns Li -> Ns Va ifr_flags .
-The operation mode can also be given as
-.Pp
-.Bl -tag -width ".Cm -link0" -compact
-.It Cm link0
-.Dv IPPROTO_GRE
-.It Cm -link0
-.Dv IPPROTO_MOBILE
-.El
-.Pp
-to
-.Xr ifconfig 8 .
-.Pp
-The
-.Cm link1
-flag is not used to choose encapsulation, but to modify the
-internal route search for the remote tunnel endpoint, see the
-.Sx BUGS
-section below.
-.It Dv GREGPROTO
-Query operation mode.
-.It Dv GRESKEY
+interfaces support a number of additional parameters to the
+.Xr ifconfig 8 :
+.Bl -tag -width "enable_csum"
+.It Ar grekey
Set the GRE key used for outgoing packets.
A value of 0 disables the key option.
-.It Dv GREGKEY
-Get the GRE key currently used for outgoing packets.
-0 means no outgoing key.
+.It Ar enable_csum
+Enables checksum calculation for outgoing packets.
+.It Ar enable_seq
+Enables use of sequence number field in the GRE header for outgoing packets.
.El
-.Pp
-Note that the IP addresses of the tunnel endpoints may be the same as the
-ones defined with
-.Xr ifconfig 8
-for the interface (as if IP is encapsulated), but need not be.
.Sh EXAMPLES
-Configuration example:
-.Bd -literal
-Host X-- Host A ----------------tunnel---------- Cisco D------Host E
- \\ |
- \\ /
- +------Host B----------Host C----------+
-.Ed
.Pp
-On host A
-.Pq Fx :
-.Bd -literal -offset indent
-route add default B
-ifconfig greN create
-ifconfig greN A D netmask 0xffffffff linkX up
-ifconfig greN tunnel A D
-route add E D
-.Ed
-.Pp
-On Host D (Cisco):
-.Bd -literal -offset indent
-Interface TunnelX
- ip unnumbered D ! e.g. address from Ethernet interface
- tunnel source D ! e.g. address from Ethernet interface
- tunnel destination A
-ip route C <some interface and mask>
-ip route A mask C
-ip route X mask tunnelX
-.Ed
-.Pp
-OR
-.Pp
-On Host D
-.Pq Fx :
-.Bd -literal -offset indent
-route add default C
-ifconfig greN create
-ifconfig greN D A
-ifconfig greN tunnel D A
-.Ed
-.Pp
-If all goes well, you should see packets flowing ;-)
-.Pp
-If you want to reach Host A over the tunnel (from Host D (Cisco)), then
-you have to have an alias on Host A for e.g.\& the Ethernet interface like:
-.Pp
-.Dl "ifconfig <etherif> alias Y"
-.Pp
-and on the Cisco:
-.Pp
-.Dl "ip route Y mask tunnelX"
-.Pp
-A similar setup can be used to create a link between two private networks
-(for example in the 192.168 subnet) over the Internet:
.Bd -literal
192.168.1.* --- Router A -------tunnel-------- Router B --- 192.168.2.*
\\ /
@@ -238,29 +106,22 @@ Assuming router A has the (external) IP address A and the internal address
On router A:
.Bd -literal -offset indent
ifconfig greN create
-ifconfig greN 192.168.1.1 192.168.2.1 link1
-ifconfig greN tunnel A B
+ifconfig greN inet 192.168.1.1 192.168.2.1
+ifconfig greN inet tunnel A B
route add -net 192.168.2 -netmask 255.255.255.0 192.168.2.1
.Ed
.Pp
On router B:
.Bd -literal -offset indent
ifconfig greN create
-ifconfig greN 192.168.2.1 192.168.1.1 link1
-ifconfig greN tunnel B A
+ifconfig greN inet 192.168.2.1 192.168.1.1
+ifconfig greN inet tunnel B A
route add -net 192.168.1 -netmask 255.255.255.0 192.168.1.1
.Ed
-.Pp
-Note that this is a safe situation where the
-.Cm link1
-flag (as discussed in the
-.Sx BUGS
-section below) may (and probably should) be set.
.Sh NOTES
The MTU of
.Nm
interfaces is set to 1476 by default, to match the value used by Cisco routers.
-If grekey is set this is lowered to 1472.
This may not be an optimal value, depending on the link between the two tunnel
endpoints.
It can be adjusted via
@@ -268,25 +129,8 @@ It can be adjusted via
.Pp
For correct operation, the
.Nm
-device needs a route to the destination that is less specific than the
-one over the tunnel.
-(Basically, there needs to be a route to the decapsulating host that
-does not run over the tunnel, as this would be a loop.)
-If the addresses are ambiguous, doing the
-.Nm ifconfig Cm tunnel
-step before the
-.Xr ifconfig 8
-call to set the
-.Nm
-IP addresses will help to find a route outside the tunnel.
-.Pp
-In order to tell
-.Xr ifconfig 8
-to actually mark the interface as
-.Dq up ,
-the keyword
-.Cm up
-must be given last on its command line.
+device needs a route to the decapsulating host that does not run over the tunnel,
+as this would be a loop.
.Pp
The kernel must be set to forward datagrams by setting the
.Va net.inet.ip.forwarding
@@ -296,41 +140,20 @@ variable to non-zero.
.Xr gif 4 ,
.Xr inet 4 ,
.Xr ip 4 ,
+.Xr me 4 ,
.Xr netintro 4 ,
-.\" Xr options 4 ,
.Xr protocols 5 ,
.Xr ifconfig 8 ,
.Xr sysctl 8
.Pp
-A description of GRE encapsulation can be found in RFC 1701 and RFC 1702.
-.Pp
-A description of MOBILE encapsulation can be found in RFC 2004.
+A description of GRE encapsulation can be found in RFC 2784 and RFC 2890.
.Sh AUTHORS
+.An Andrey V. Elsukov Aq Mt ae@FreeBSD.org
.An Heiko W.Rupp Aq Mt hwr@pilhuhn.de
.Sh BUGS
-The
-.Fn compute_route
-code in
-.Pa if_gre.c
-toggles the last bit of the
-IP-address to provoke the search for a less specific route than the
-one directly over the tunnel to prevent loops.
-This is possibly not the best solution.
-.Pp
-To avoid the address munging described above, turn on the
-.Cm link1
-flag on the
-.Xr ifconfig 8
-command line.
-This implies that the GRE packet destination and the ifconfig remote host
-are not the same IP addresses, and that the GRE destination does not route
-over the
-.Nm
-interface itself.
.Pp
The current implementation uses the key only for outgoing packets.
Incoming packets with a different key or without a key will be treated as if they
would belong to this interface.
.Pp
-RFC1701 is not fully supported, however all unsupported features have been
-deprecated in RFC2784.
+The sequence number field also used only for outgoing packets.
diff --git a/share/man/man4/hptiop.4 b/share/man/man4/hptiop.4
index c1017f1..fdd6d04 100644
--- a/share/man/man4/hptiop.4
+++ b/share/man/man4/hptiop.4
@@ -126,7 +126,7 @@ The
driver has only been tested on the i386 and amd64 platforms.
.Sh SEE ALSO
.Xr cam 4 ,
-.Xr hptmv 4 ,
+.Xr hptmv 4
.Sh HISTORY
The
.Nm
diff --git a/share/man/man4/icmp.4 b/share/man/man4/icmp.4
index 6b7f78e..c0f51b3 100644
--- a/share/man/man4/icmp.4
+++ b/share/man/man4/icmp.4
@@ -28,7 +28,7 @@
.\" @(#)icmp.4 8.1 (Berkeley) 6/5/93
.\" $FreeBSD$
.\"
-.Dd February 9, 2007
+.Dd September 30, 2014
.Dt ICMP 4
.Os
.Sh NAME
@@ -216,6 +216,10 @@ instead of the possibly different return path.
Number of bytes from original packet to quote in ICMP reply.
This number is internally enforced to be at least 8 bytes (per RFC792)
and at most the maximal space left in the ICMP reply mbuf.
+.It Va tstamprepl
+.Pq Vt boolean
+Enable/disable replies to ICMP Timestamp packets.
+Defaults to true.
.El
.Sh ERRORS
A socket operation may fail with one of the following errors returned:
diff --git a/share/man/man4/igb.4 b/share/man/man4/igb.4
index cd916b0..a894c11 100644
--- a/share/man/man4/igb.4
+++ b/share/man/man4/igb.4
@@ -31,7 +31,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 25, 2013
+.Dd October 17, 2014
.Dt IGB 4
.Os
.Sh NAME
@@ -55,7 +55,8 @@ if_igb_load="YES"
The
.Nm
driver provides support for PCI Express Gigabit Ethernet adapters
-based on the Intel 82575 and 82576 Ethernet controller chips.
+based on the Intel 82575, 82576, 82580, i21x and i35x
+Ethernet controller chips.
The driver supports Transmit/Receive checksum offload and Jumbo
Frames.
Furthermore it supports TCP segmentation offload (TSO) on all
@@ -142,6 +143,12 @@ driver supports Gigabit Ethernet adapters based on the Intel 82575 and
Intel Gigabit ET Dual Port Server Adapter (82576)
.It
Intel Gigabit VT Quad Port Server Adapter (82575)
+.It
+Intel Single, Dual and Quad Gigabit Ethernet Controller (82580)
+.It
+Intel i210 and i211 Gigabit Ethernet Controller
+.It
+Intel i350 and i354 Gigabit Ethernet Controller
.El
.Sh LOADER TUNABLES
Tunables can be set at the
diff --git a/share/man/man4/inet.4 b/share/man/man4/inet.4
index 0b7a108..b0b5a9e 100644
--- a/share/man/man4/inet.4
+++ b/share/man/man4/inet.4
@@ -211,21 +211,6 @@ Boolean: enable/disable accepting of source-routed IP packets (default false).
.It Dv IPCTL_SOURCEROUTE
.Pq ip.sourceroute
Boolean: enable/disable forwarding of source-routed IP packets (default false).
-.It Dv IPCTL_RTEXPIRE
-.Pq ip.rtexpire
-Integer: lifetime in seconds of protocol-cloned
-.Tn IP
-routes after the last reference drops (default one hour).
-This value varies dynamically as described above.
-.It Dv IPCTL_RTMINEXPIRE
-.Pq ip.rtminexpire
-Integer: minimum value of ip.rtexpire (default ten seconds).
-This value has no effect on user modifications, but restricts the dynamic
-adaptation described above.
-.It Dv IPCTL_RTMAXCACHE
-.Pq ip.rtmaxcache
-Integer: trigger level of cached, unreferenced, protocol-cloned routes
-which initiates dynamic adaptation (default 128).
.It Va ip.process_options
Integer: control IP options processing.
By setting this variable to 0, all IP options in the incoming packets
diff --git a/share/man/man4/inet6.4 b/share/man/man4/inet6.4
index 93015e0..815dee7 100644
--- a/share/man/man4/inet6.4
+++ b/share/man/man4/inet6.4
@@ -241,17 +241,6 @@ Defaults to off.
Boolean: the default value of a per-interface flag to
enable/disable performing automatic link-local address configuration.
Defaults to on.
-.It Dv IPV6CTL_KEEPFAITH
-.Pq ip6.keepfaith
-Boolean: enable/disable
-.Dq FAITH
-TCP relay IPv6-to-IPv4 translator code in the kernel.
-Refer
-.Xr faith 4
-and
-.Xr faithd 8
-for detail.
-Defaults to off.
.It Dv IPV6CTL_LOG_INTERVAL
.Pq ip6.log_interval
Integer: default interval between
@@ -323,21 +312,6 @@ mapped address on
.Dv AF_INET6
sockets.
Defaults to on.
-.It Dv IPV6CTL_RTEXPIRE
-.Pq ip6.rtexpire
-Integer: lifetime in seconds of protocol-cloned
-.Tn IP
-routes after the last reference drops (default one hour).
-.\"This value varies dynamically as described above.
-.It Dv IPV6CTL_RTMINEXPIRE
-.Pq ip6.rtminexpire
-Integer: minimum value of ip.rtexpire (default ten seconds).
-.\"This value has no effect on user modifications, but restricts the dynamic
-.\"adaptation described above.
-.It Dv IPV6CTL_RTMAXCACHE
-.Pq ip6.rtmaxcache
-Integer: trigger level of cached, unreferenced, protocol-cloned routes
-which initiates dynamic adaptation (default 128).
.El
.Ss Interaction between IPv4/v6 sockets
By default,
diff --git a/share/man/man4/ip.4 b/share/man/man4/ip.4
index b95a350..68b817d 100644
--- a/share/man/man4/ip.4
+++ b/share/man/man4/ip.4
@@ -28,7 +28,7 @@
.\" @(#)ip.4 8.2 (Berkeley) 11/30/93
.\" $FreeBSD$
.\"
-.Dd October 12, 2012
+.Dd September 1, 2014
.Dt IP 4
.Os
.Sh NAME
@@ -755,13 +755,11 @@ number the socket is created with),
unless the
.Dv IP_HDRINCL
option has been set.
-Incoming packets are received with
+Unlike in previous
+.Bx
+releases, incoming packets are received with
.Tn IP
-header and options intact, except for
-.Va ip_len
-and
-.Va ip_off
-fields converted to host byte order.
+header and options intact, leaving all fields in network byte order.
.Pp
.Dv IP_HDRINCL
indicates the complete IP header is included with the data
@@ -784,17 +782,16 @@ the fields of the IP header, including the following:
ip->ip_v = IPVERSION;
ip->ip_hl = hlen >> 2;
ip->ip_id = 0; /* 0 means kernel set appropriate value */
-ip->ip_off = offset;
+ip->ip_off = htons(offset);
+ip->ip_len = htons(len);
.Ed
.Pp
-The
+The packet should be provided as is to be sent over wire.
+This implies all fields, including
.Va ip_len
and
.Va ip_off
-fields
-.Em must
-be provided in host byte order.
-All other fields must be provided in network byte order.
+to be in network byte order.
See
.Xr byteorder 3
for more information on network byte order.
@@ -891,3 +888,16 @@ packets received on raw IP sockets had the
subtracted from the
.Va ip_len
field.
+.Pp
+Before
+.Fx 11.0
+packets received on raw IP sockets had the
+.Va ip_len
+and
+.Va ip_off
+fields converted to host byte order.
+Packets written to raw IP sockets were expected to have
+.Va ip_len
+and
+.Va ip_off
+in host byte order.
diff --git a/share/man/man4/ip6.4 b/share/man/man4/ip6.4
index fcd396c..dba5e8d 100644
--- a/share/man/man4/ip6.4
+++ b/share/man/man4/ip6.4
@@ -393,10 +393,6 @@ For wildcard sockets, this can restrict connections to IPv6 only.
.\".Ox
.\"IPv6 sockets are always IPv6-only, so the socket option is read-only
.\"(not modifiable).
-.It Dv IPV6_FAITH Fa "int *"
-Get or set the status of whether
-.Xr faith 4
-connections can be made to this socket.
.It Dv IPV6_USE_MIN_MTU Fa "int *"
Get or set whether the minimal IPv6 maximum transmission unit (MTU) size
will be used to avoid fragmentation from occurring for subsequent
diff --git a/share/man/man4/ipheth.4 b/share/man/man4/ipheth.4
new file mode 100644
index 0000000..85801f2
--- /dev/null
+++ b/share/man/man4/ipheth.4
@@ -0,0 +1,105 @@
+.\" Copyright (c) 2014 Gavin Atkinson
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" - Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" - Redistributions in binary form must reproduce the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer in the documentation and/or other materials provided
+.\" with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 30, 2014
+.Dt IPHETH 4
+.Os
+.Sh NAME
+.Nm ipheth
+.Nd "USB Apple iPhone/iPad tethered Ethernet driver"
+.Sh SYNOPSIS
+To load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ipheth_load="YES"
+.Ed
+.Pp
+Alternatively, to compile this driver into the kernel, place the
+following lines in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device ipheth"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for network access through Apple
+iPhone and iPad devices, often referred to as USB tethering.
+.Pp
+.Nm
+should work with any Apple iPhone or iPad device.
+In most cases this must be explicitly enabled on the device first.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+The device does not support different media types or options.
+.Sh HARDWARE
+The following devices are supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+Apple iPhone tethering (all models)
+.It
+Apple iPad tethering (all models)
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr cdce 4 ,
+.Xr intro 4 ,
+.Xr netintro 4 ,
+.Xr urndis 4 ,
+.Xr usb 4 ,
+.Xr ifconfig 8
+.Xr usbconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 8.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Hans Petter Selasky Aq Mt hselasky@FreeBSD.org .
+.Sh BUGS
+Some devices may need to be manually configured to use an alternative
+configuration with the
+.Xr usbconfig 8
+utility.
+A command similar to
+.Dl usbconfig -u 1 -a 2 set_config 3
+may be required if the device is not recognised automatically by
+.Nm
+after it is connected.
diff --git a/share/man/man4/iscsi.4 b/share/man/man4/iscsi.4
new file mode 100755
index 0000000..2b0db75
--- /dev/null
+++ b/share/man/man4/iscsi.4
@@ -0,0 +1,111 @@
+.\" Copyright (c) 2014 Edward Tomasz Napierala
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.Dd September 11, 2014
+.Dt ISCSI 4
+.Os
+.Sh NAME
+.Nm iscsi
+.Nd iSCSI initiator
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in the
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device iscsi"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+iscsi_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+subsystem provides the kernel component of an iSCSI initiator.
+The initiator is the iSCSI client, which connects to an iSCSI target,
+providing local access to a remote block device.
+The userland component is provided by
+.Xr iscsid 8
+and both the kernel and userland are configured using
+.Xr iscsictl 8 .
+The
+.Nm
+subsystem is responsible for implementing the
+.Qq Full Feature Phase
+of the iSCSI protocol.
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width indent
+.It Va kern.iscsi.ping_timeout
+The number of seconds to wait for the target to respond to a NOP-Out
+PDU.
+In the event that there is no response within that time the session gets
+forcibly restarted.
+.It Va kern.iscsi.iscsid_timeout
+The number of seconds to wait for
+.Xr ctld 8
+to establish a session.
+After that time
+.Nm
+will abort and retry.
+.It Va kern.iscsi.login_timeout
+The number of seconds to wait for a login attempt to succeed.
+After that time
+.Nm
+will abort and retry.
+.It Va kern.iscsi.maxtags
+The maximum number of outstanding IO requests.
+.It Va kern.iscsi.fail_on_disconnection
+Controls the behavior after an iSCSI connection has been dropped due to
+network problems.
+When set to 1, a dropped connection causes the iSCSI device nodes
+to be destroyed.
+After reconnecting, they will be created again.
+By default, the device nodes are left intact.
+While the connection is down all input/output operations are suspended, to be
+retried after the connection is reestablished.
+.El
+.Sh SEE ALSO
+.Xr iscsi.conf 5 ,
+.Xr iscsictl 8 ,
+.Xr iscsid 8
+.Sh HISTORY
+The
+.Nm
+subsystem first appeared in
+.Fx 10.0 .
+.Sh AUTHORS
+The
+.Nm
+subsystem was developed by
+.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
+under sponsorship from the FreeBSD Foundation.
diff --git a/share/man/man4/iscsi_initiator.4 b/share/man/man4/iscsi_initiator.4
index d48a757..a391e08 100644
--- a/share/man/man4/iscsi_initiator.4
+++ b/share/man/man4/iscsi_initiator.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 3, 2010
+.Dd October 9, 2014
.Dt ISCSI_INITIATOR 4
.Os
.Sh NAME
@@ -45,6 +45,15 @@ module at boot time, place the following line in
iscsi_initiator_load="YES"
.Ed
.Sh DESCRIPTION
+.Bf -symbolic
+This driver, along with its userspace counterpart
+.Xr iscontrol 8 ,
+is obsolete.
+Users are advised to use
+.Xr iscsi 4
+instead.
+.Ef
+.Pp
The
.Nm
implements the kernel side of the Internet SCSI (iSCSI) network
diff --git a/share/man/man4/iwn.4 b/share/man/man4/iwn.4
index 0a824e7..b333aac 100644
--- a/share/man/man4/iwn.4
+++ b/share/man/man4/iwn.4
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd May 28, 2014
+.Dd August 30, 2014
.Dt IWN 4
.Os
.Sh NAME
@@ -46,6 +46,9 @@ You also need to select a firmware for your device.
Choose one from:
.Bd -ragged -offset indent
.Cd "device iwn1000fw"
+.Cd "device iwn100fw"
+.Cd "device iwn105fw"
+.Cd "device iwn135fw"
.Cd "device iwn2000fw"
.Cd "device iwn2030fw"
.Cd "device iwn4965fw"
@@ -70,6 +73,9 @@ module at boot time, place the following lines in
.Bd -literal -offset indent
if_iwn_load="YES"
iwn1000fw_load="YES"
+iwn100fw_load="YES"
+iwn105fw_load="YES"
+iwn135fw_load="YES"
iwn2000fw_load="YES"
iwn2030fw_load="YES"
iwn4965fw_load="YES"
@@ -89,11 +95,13 @@ driver provides support for:
.It Intel Centrino Advanced-N 6200
.It Intel Centrino Advanced-N 6205
.It Intel Centrino Advanced-N 6230
+.It Intel Centrino Advanced-N 6235
.It Intel Centrino Advanced-N + WiMAX 6250
.It Intel Centrino Ultimate-N 6300
.It Intel Centrino Wireless-N 100
.It Intel Centrino Wireless-N 105
.It Intel Centrino Wireless-N 130
+.It Intel Centrino Wireless-N 135
.It Intel Centrino Wireless-N 1000
.It Intel Centrino Wireless-N 1030
.It Intel Centrino Wireless-N 2200
diff --git a/share/man/man4/iwnfw.4 b/share/man/man4/iwnfw.4
index 7af2bb2..601ed03 100644
--- a/share/man/man4/iwnfw.4
+++ b/share/man/man4/iwnfw.4
@@ -22,7 +22,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 9, 2014
+.Dd August 30, 2014
.Dt IWNFW 4
.Os
.Sh NAME
@@ -36,11 +36,16 @@ kernel configuration file:
.Cd "device iwnfw"
.Ed
.Pp
-This will include three firmware images inside the kernel.
+This will include firmware images for all
+.Xr iwn 4
+devices inside the kernel.
If you want to pick only the firmware image for your network adapter choose one
of the following:
.Bd -ragged -offset indent
.Cd "device iwn1000fw"
+.Cd "device iwn100fw"
+.Cd "device iwn105fw"
+.Cd "device iwn135fw"
.Cd "device iwn2000fw"
.Cd "device iwn2030fw"
.Cd "device iwn4965fw"
@@ -57,6 +62,9 @@ module at boot time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
iwn1000fw_load="YES"
+iwn100fw_load="YES"
+iwn105fw_load="YES"
+iwn135fw_load="YES"
iwn2000fw_load="YES"
iwn2030fw_load="YES"
iwn4965fw_load="YES"
@@ -69,7 +77,7 @@ iwn6050fw_load="YES"
.Ed
.Sh DESCRIPTION
This module provides access to firmware sets for the
-Intel Wireless WiFi Link 1000, 2000, 2030, 4965, 5000 and 6000 series of
+Intel Wireless WiFi Link 100, 105, 135, 1000, 2000, 2030, 4965, 5000 and 6000 series of
IEEE 802.11n adapters.
It may be
statically linked into the kernel, or loaded as a module.
diff --git a/share/man/man4/kbdmux.4 b/share/man/man4/kbdmux.4
index a909ba9..0815f05 100644
--- a/share/man/man4/kbdmux.4
+++ b/share/man/man4/kbdmux.4
@@ -34,7 +34,8 @@ utility.
.Xr kbdcontrol 1 ,
.Xr atkbd 4 ,
.Xr syscons 4 ,
-.Xr ukbd 4
+.Xr ukbd 4 ,
+.Xr vt 4
.Sh HISTORY
The
.Nm
diff --git a/share/man/man4/lagg.4 b/share/man/man4/lagg.4
index 392f5f7..1b40315 100644
--- a/share/man/man4/lagg.4
+++ b/share/man/man4/lagg.4
@@ -16,7 +16,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 23, 2012
+.Dd October 1, 2014
.Dt LAGG 4
.Os
.Sh NAME
@@ -61,10 +61,10 @@ option.
The driver currently supports the aggregation protocols
.Ic failover
(the default),
-.Ic fec ,
.Ic lacp ,
.Ic loadbalance ,
.Ic roundrobin ,
+.Ic broadcast ,
and
.Ic none .
The protocols determine which ports are used for outgoing traffic
@@ -86,9 +86,6 @@ This constraint can be relaxed by setting the
.Xr sysctl 8
variable to a nonzero value,
which is useful for certain bridged network setups.
-.It Ic fec
-Supports Cisco EtherChannel.
-This is an alias for
.Ic loadbalance
mode.
.It Ic lacp
@@ -113,6 +110,9 @@ available, the VLAN tag, and the IP source and destination address.
Distributes outgoing traffic using a round-robin scheduler
through all active ports and accepts incoming traffic from
any active port.
+.It Ic broadcast
+Sends frames to all ports of the LAG and receives frames on
+any port of the LAG.
.It Ic none
This protocol is intended to do nothing: it disables any traffic without
disabling the
@@ -143,9 +143,9 @@ modes will use the RSS hash from the network card if available to avoid
computing one, this may give poor traffic distribution if the hash is invalid
or uses less of the protocol header information.
Local hash computation can be forced per interface by setting the
-.Va net.link.lagg.X.use_flowid
-.Xr sysctl 8
-variable to zero where X is the interface number.
+.Cm use_flowid
+.Xr ifconfig 8
+flag.
The default for new interfaces is set via the
.Va net.link.lagg.default_use_flowid
.Xr sysctl 8 .
diff --git a/share/man/man4/malo.4 b/share/man/man4/malo.4
index 22cc471..7f8a036 100644
--- a/share/man/man4/malo.4
+++ b/share/man/man4/malo.4
@@ -31,7 +31,7 @@
.\"
.\" $FreeBSD$
.\"/
-.Dd October 21, 2009
+.Dd September 20, 2014
.Dt MALO 4
.Os
.Sh NAME
@@ -49,7 +49,7 @@ kernel configuration file:
.Ed
.Pp
Alternatively, to load the driver as a
-module at boot time, place the following lines in
+module at boot time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
if_malo_load="YES"
@@ -84,6 +84,15 @@ the archive and running
in the
.Pa malo-firmware-1.4
directory.
+.Pp
+To load the
+.Nm malofw
+firmware kernel module at boot time, place the following
+line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+malofw_load="YES"
+.Ed
.Sh HARDWARE
The following cards are among those supported by the
.Nm
diff --git a/share/man/man4/man4.arm/Makefile b/share/man/man4/man4.arm/Makefile
index 73e7bf7..0e5b576 100644
--- a/share/man/man4/man4.arm/Makefile
+++ b/share/man/man4/man4.arm/Makefile
@@ -1,11 +1,13 @@
# $FreeBSD$
-MAN= devcfg.4 \
+MAN= cgem.4 \
+ devcfg.4 \
mge.4 \
npe.4 \
ti_adc.4
-MLINKS= mge.4 if_mge.4
+MLINKS= cgem.4 if_cgem.4
+MLINKS+= mge.4 if_mge.4
MLINKS+=npe.4 if_npe.4
MANSUBDIR=/arm
diff --git a/share/man/man4/man4.arm/cgem.4 b/share/man/man4/man4.arm/cgem.4
new file mode 100644
index 0000000..8af1b2a
--- /dev/null
+++ b/share/man/man4/man4.arm/cgem.4
@@ -0,0 +1,297 @@
+.\"
+.\" Copyright (c) 2014 Thomas Skibo <thomasskibo@yahoo.com>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. The name of the author may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 26, 2014
+.Dt CGEM 4
+.Os
+.Sh NAME
+.Nm cgem
+.Nd "Cadence GEM Gigabit Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ether"
+.Cd "device miibus"
+.Cd "device cgem"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Cadence GEM (Gigabit Ethernet MAC).
+The Cadence GEM is used in some SoC (System on a Chip) devices such as
+the Xilinx Zynq-7000 and the Atmel SAMA5D3.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode using
+.Xr ifconfig 8
+or by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseT
+Set 1000Mbps (Gigabit Ethernet) operation over twisted pair.
+The GEM supports 1000Mbps in
+.Cm full-duplex
+mode only.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full-duplex operation.
+.It Cm half-duplex
+Force half-duplex operation.
+.El
+.Pp
+The driver provides support for TCP/UDP/IP checksum offloading (although
+disabled by default).
+The device and driver also support 1536-byte frames for VLANs (vlanmtu).
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width "xxxxxxxx"
+.It Va dev.cgem.%d.rxbufs
+The number of receive buffers allocated to the hardware.
+The default value is 256.
+The maximum value is 511.
+If this number is increased while the interface is UP, it will not
+take effect until the next packet is received.
+If this number is decreased while the interface is UP, buffers will
+not be immediately removed from the receive buffer ring but the
+number of buffers will decrease as packets are received until it
+reaches the new value.
+.It Va dev.cgem.%d.rxhangwar
+This tunable enables a work-around to recover from receive hangs.
+The default value is 1.
+Set to 0 to disable the work-around.
+.El
+.Pp
+The following read-only variables are available as
+.Xr sysctl 8
+variables:
+.Bl -tag -width "xxxxxxxx"
+.It Va dev.cgem.%d._rxoverruns
+This variable counts the number of receive packet buffer overrun interrupts.
+.It Va dev.cgem.%d._rxnobufs
+This variable counts the number of interrupts due to the GEM buffer ring
+going empty.
+.It Va dev.cgem.%d._rxdmamapfails
+This variable is the number of times bus_dmamap_load_mbuf_sg(9) failed in
+the receive path.
+.It Va dev.cgem.%d._txfull
+The number of times the GEM's transmit ring was full.
+.It Va dev.cgem.%d._txdmamapfails
+This variable is the number of times bus_dmamap_load_mbuf_sg(9) failed in
+the transmit path.
+.It Va dev.cgem.%d._txdefrags
+This variable is the number of times the driver needed to call m_defrag(9)
+because a packet queued for transmit had too many DMA segments.
+.It Va dev.cgem.%d._txdefragfails
+This variable is the number of times
+.Xr m_defrag 9
+failed.
+.It Va dev.cgem.%d.stats.*
+The following variables are useful MAC counters supplied by the hardware:
+.It Va dev.cgem.%d.stats.tx_bytes
+A 64-bit counter of the number of bytes transmitted in frames without error.
+.It Va dev.cgem.%d.stats.tx_frames
+Counter of frames transmitted without error excluding pause frames.
+.It Va dev.cgem.%d.stats.tx_frames_bcast
+Counter of broadcast frames transmitted without error excluding
+pause frames.
+.It Va dev.cgem.%d.stats.tx_frames_multi
+Counter of multicast frames transmitted without error excluding
+pause frames.
+.It Va dev.cgem.%d.stats.tx_frames_pause
+Counter of pause frames transmitted without error.
+.It Va dev.cgem.%d.stats.tx_frames_64b
+Counter of 64 byte frames transmitted without error.
+.It Va dev.cgem.%d.stats.tx_frames_65to127b
+Counter of 65 to 127 byte frames transmitted without error.
+.It Va dev.cgem.%d.stats.tx_frames_128to255b
+Counter of 128 to 255 byte frames transmitted without error.
+.It Va dev.cgem.%d.stats.tx_frames_256to511b
+Counter of 256 to 511 byte frames transmitted without error.
+.It Va dev.cgem.%d.stats.tx_frames_512to1023b
+Counter of 512 to 1023 byte frames transmitted without error.
+.It Va dev.cgem.%d.stats.tx_frames_1024to1536b
+Counter of 1024 to 1536 byte frames transmitted without error.
+.It Va dev.cgem.%d.stats.tx_under_runs
+Counter of frames not transmitted due to a transmit underrun.
+.It Va dev.cgem.%d.stats.tx_single_collisn
+Counter of frames experiencing a single collision before being successfully
+transmitted.
+.It Va dev.cgem.%d.stats.tx_multi_collisn
+Counter of frames experiencing between 2 and 15 collisions before
+being successfully transmitted.
+.It Va dev.cgem.%d.stats.tx_excsv_collisn
+Counter of frames that failed to transmit because they experienced 16
+collisions.
+.It Va dev.cgem.%d.stats.tx_late_collisn
+Counter of frames that experienced a late collision.
+.It Va dev.cgem.%d.stats.tx_deferred_frames
+Counter of frames experiencing deferral due to carrier sense being
+active on their first attempt at transmission.
+.It Va dev.cgem.%d.stats.tx_carrier_sense_errs
+Counter of frames transmitted where carrier sense was not seen during
+transmission or where carrier sense was deasserted after being asserted
+in a transmit frame without collision.
+.It Va dev.cgem.%d.stats.rx_bytes
+A 64-bit counter of bytes received without error excluding pause
+frames.
+.It Va dev.cgem.%d.stats.rx_frames
+Counter of frames received without error excluding pause frames.
+.It Va dev.cgem.%d.stats.rx_frames_bcast
+Counter of broadcast frames receive without error excluding pause frames.
+.It Va dev.cgem.%d.stats.rx_frames_multi
+Counter of multicast frames receive without error excluding pause frames.
+.It Va dev.cgem.%d.stats.rx_frames_pause
+Counter of pause frames recevied without error.
+.It Va dev.cgem.%d.stats.rx_frames_64b
+Counter of 64-byte frames received without error.
+.It Va dev.cgem.%d.stats.rx_frames_65to127b
+Counter of 65 to 127 byte frames received without error.
+.It Va dev.cgem.%d.stats.rx_frames_128to255b
+Counter of 128 to 255 byte frames received without error.
+.It Va dev.cgem.%d.stats.rx_frames_256to511b
+Counter of 256 to 511 byte frames received without error.
+.It Va dev.cgem.%d.stats.rx_frames_512to1023b
+Counter of 512 to 1023 byte frames received without error.
+.It Va dev.cgem.%d.stats.rx_frames_1024to1536b
+Counter of 1024 to 1536 byte frames received without error.
+.It Va dev.cgem.%d.stats.rx_frames_undersize
+Counter of frames received less than 64 bytes in length that
+do not also have either a CRC error or an alignment error.
+.It Va dev.cgem.%d.stats.rx_frames_oversize
+Counter of frames received exceeding 1536 bytes and do not also have either
+a CRC error or an alignment error.
+.It Va dev.cgem.%d.stats.rx_frames_jabber
+Counter of frames received exceeding 1536 bytes and also have either a CRC
+error, an alignment error, or a receive symbol error.
+.It Va dev.cgem.%d.stats.rx_frames_fcs_errs
+Counter of frames received with a bad CRC and are between 64
+and 1536 bytes.
+.It Va dev.cgem.%d.stats.rx_frames_length_errs
+Counter of frames received that are shorter than that extracted
+from the length field.
+.It Va dev.cgem.%d.stats.rx_symbol_errs
+Counter of receive symbol errors.
+.It Va dev.cgem.%d.stats.rx_align_errs
+Counter of received frames that are not an integral number of bytes.
+.It Va dev.cgem.%d.stats.rx_resource_errs
+Counter of frames successfully receive by the MAC but could not be
+copied to memory because no receive buffer was available.
+.It Va dev.cgem.%d.stats.rx_overrun_errs
+Counter of frames that are address recognized but were not copied
+to memory due to a receive overrun.
+.It Va dev.cgem.%d.stats.rx_frames_ip_hdr_csum_errs
+Counter of frames discarded due to an incorrect IP header checksum when
+checksum offloading is enabled.
+.It Va dev.cgem.%d.stats.rx_frames_tcp_csum_errs
+Counter of frames discarded due to an incorrect TCP checksum when
+checksum offloading is enabled.
+.It Va dev.cgem.%d.stats.rx_frames_udp_csum_errs
+Counter of frames discarded due to an incorrect UDP checksum when
+checksum offloading is enabled.
+.El
+.Sh BUGS
+The GEM can perform TCP/UDP/IP checksum offloading.
+However, when transmit checksum offloading is enabled, the GEM generates and
+replaces checksums for all packets it transmits.
+In a system that is forwarding packets, the device could potentially correct
+the checksum of packet that was corrupted in transit.
+For this reason, checksum offloading is disabled by default but can be
+enabled using ifconfig(8).
+.Pp
+When receive checksum offloading is enabled, the device will discard packets
+with bad TCP/UDP/IP checksums.
+The bad packets will not be counted in any
+.Xr netstat 1
+statistics. There are
+.Xr sysctl 8
+variables that count
+packets discarded by the hardware (see below).
+.Pp
+The GEM used in the Zynq-7000 has a bug such that the receiver can
+potentially freeze up under a high load. The issue is described in sec. 16.7
+"Known Issues" of the Zynq-7000 SoC Technical Reference Manual (Xilinx
+UG585 v1.7).
+The
+.Nm
+driver implements the work-around suggested in the manual.
+If the bug does not exist in other versions of this device, the
+work-around can be disabled by setting the dev.cgem.%d.rxhangwar
+.Xr sysctl 8
+variable to 0.
+.Pp
+.Sh SEE ALSO
+.Xr miibus 4 ,
+.Xr ifconfig 8
+.Rs
+.%T "Zynq-7000 SoC Technical Reference Manual (Xilinx doc UG585)"
+.%U http://www.xilinx.com/support/documentation/user_guides/\:ug585-Zynq-7000-TRM.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 10.0 .
+.Sh AUTHORS
+The
+.Nm
+driver and this manual page was written by
+.An Thomas Skibo Aq Mt thomasskibo@yahoo.com .
diff --git a/share/man/man4/me.4 b/share/man/man4/me.4
new file mode 100644
index 0000000..e1be5c8
--- /dev/null
+++ b/share/man/man4/me.4
@@ -0,0 +1,85 @@
+.\" Copyright (c) Andrey V. Elsukov <ae@FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 7, 2014
+.Dt ME 4
+.Os
+.Sh NAME
+.Nm me
+.Nd encapsulating network device
+.Sh SYNOPSIS
+To compile the
+driver into the kernel, place the following line in the kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "device me"
+.Ed
+.Pp
+Alternatively, to load the
+driver as a module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_me_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+network interface pseudo device encapsulates datagrams
+into IP.
+These encapsulated datagrams are routed to a destination host,
+where they are decapsulated and further routed to their final destination.
+.Pp
+.Nm
+interfaces are dynamically created and destroyed with the
+.Xr ifconfig 8
+.Cm create
+and
+.Cm destroy
+subcommands.
+.Pp
+This driver corresponds to RFC 2004.
+Datagrams are encapsulated into IP with a shorter encapsulation.
+The original
+IP header is modified and the modifications are inserted between the
+so modified header and the original payload.
+The protocol number 55 is used for outer header.
+.Sh NOTES
+.Pp
+For correct operation, the
+.Nm
+device needs a route to the decapsulating host that does not run over the tunnel,
+as this would be a loop.
+.Sh SEE ALSO
+.Xr gif 4 ,
+.Xr gre 4 ,
+.Xr inet 4 ,
+.Xr ip 4 ,
+.Xr netintro 4 ,
+.Xr protocols 5 ,
+.Xr ifconfig 8 ,
+.Xr sysctl 8
+.Sh AUTHORS
+.An Andrey V. Elsukov Aq Mt ae@FreeBSD.org
diff --git a/share/man/man4/miibus.4 b/share/man/man4/miibus.4
index 6152095..a04e7a8 100644
--- a/share/man/man4/miibus.4
+++ b/share/man/man4/miibus.4
@@ -8,7 +8,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd January 15, 2011
+.Dd September 26, 2014
.Dt MIIBUS 4
.Os
.Sh NAME
@@ -103,6 +103,8 @@ Silicon Integrated Systems SiS190/191 Ethernet
Silicon Integrated Systems SiS 900/SiS 7016
.It Xr sk 4
SysKonnect SK-984x and SK-982x Gigabit Ethernet
+.It Xr smsc 4
+SMSC LAN9xxx USB Fast Ethernet
.It Xr ste 4
Sundance ST201 (D-Link DFE-550TX)
.It Xr stge 4
@@ -166,6 +168,7 @@ but as a result are not well behaved newbus device drivers.
.Xr sge 4 ,
.Xr sis 4 ,
.Xr sk 4 ,
+.Xr smsc 4 ,
.Xr ste 4 ,
.Xr stge 4 ,
.Xr tl 4 ,
diff --git a/share/man/man4/sfxge.4 b/share/man/man4/sfxge.4
index 5e4935d..7930fcf 100644
--- a/share/man/man4/sfxge.4
+++ b/share/man/man4/sfxge.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 8, 2012
+.Dd September 30, 2014
.Dt SFXGE 4
.Os
.Sh NAME
@@ -76,6 +76,39 @@ The
.Nm
driver supports all 10Gb Ethernet adapters based on Solarflare SFC9000
family controllers.
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+Actual values can be obtained using
+.Xr sysctl 8 .
+.Bl -tag -width indent
+.It Va hw.sfxge.rx_ring
+The maximum number of descriptors in a receive queue ring.
+Supported values are: 512, 1024, 2048 and 4096.
+.It Va hw.sfxge.tx_ring
+The maximum number of descriptors in a transmit queue ring.
+Supported values are: 512, 1024, 2048 and 4096.
+.It Va hw.sfxge.tx_dpl_get_max
+The maximum length of the deferred packet
+.Dq get-list
+for queued transmit
+packets, used only if the transmit queue lock can be acquired.
+If a packet is dropped, the
+.Va tx_early_drops
+counter is incremented and the local sender receives ENOBUFS.
+The value must be greater than 0.
+.It Va hw.sfxge.tx_dpl_put_max
+The maximum length of the deferred packet
+.Dq put-list
+for queued transmit
+packets, used if the transmit queue lock cannot be acquired.
+If a packet is dropped, the
+.Va tx_early_drops
+counter is incremented and the local sender receives ENOBUFS.
+The value must be greater than or equal to 0.
+.El
.Sh SUPPORT
For general information and support,
go to the Solarflare support website at:
diff --git a/share/man/man4/smsc.4 b/share/man/man4/smsc.4
new file mode 100644
index 0000000..fb37539
--- /dev/null
+++ b/share/man/man4/smsc.4
@@ -0,0 +1,91 @@
+.\" Copyright (c) 2014 Gavin Atkinson
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" - Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" - Redistributions in binary form must reproduce the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer in the documentation and/or other materials provided
+.\" with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 26, 2014
+.Dt SMSC 4
+.Os
+.Sh NAME
+.Nm smsc
+.Nd "USB SMSC LAN9xxx Fast Ethernet driver"
+.Sh SYNOPSIS
+To load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_smsc_load="YES"
+.Ed
+.Pp
+Alternatively, to compile this driver into the kernel, place the
+following lines in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device miibus"
+.Cd "device smsc"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for USB Fast Ethernet adapters based
+on the SMSC LAN9xxx chipsets.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The following devices are supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+SMSC LAN9500, LAN9500A, LAN9505 and LAN9505A based Ethernet adapters
+.It
+SMSC LAN89530, LAN9530 and LAN9730 based Ethernet adapters
+.It
+SMSC LAN951x Ethernet adapters with integrated USB hub
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr intro 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr usb 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 10.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Ben Gray Aq Mt bgray@FreeBSD.org .
diff --git a/share/man/man4/tap.4 b/share/man/man4/tap.4
index 3bfab5b..d68dab3 100644
--- a/share/man/man4/tap.4
+++ b/share/man/man4/tap.4
@@ -1,7 +1,7 @@
.\" $FreeBSD$
.\" Based on PR#2411
.\"
-.Dd January 26, 2012
+.Dd November 4, 2014
.Dt TAP 4
.Os
.Sh NAME
@@ -18,19 +18,19 @@ described as the network interface analog of the
that is,
.Nm
does for network interfaces what the
-.Nm pty
+.Xr pty 4
driver does for terminals.
.Pp
The
.Nm
driver, like the
-.Nm pty
+.Xr pty 4
driver, provides two interfaces: an interface like the usual facility
it is simulating
(an Ethernet network interface in the case of
.Nm ,
or a terminal for
-.Nm pty ) ,
+.Xr pty 4 ) ,
and a character-special device
.Dq control
interface.
diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4
index a95078f..7814a0d 100644
--- a/share/man/man4/tcp.4
+++ b/share/man/man4/tcp.4
@@ -34,7 +34,7 @@
.\" From: @(#)tcp.4 8.1 (Berkeley) 6/5/93
.\" $FreeBSD$
.\"
-.Dd November 8, 2013
+.Dd October 13, 2014
.Dt TCP 4
.Os
.Sh NAME
@@ -516,8 +516,30 @@ ECN allows a TCP sender to reduce the transmission rate in order to
avoid packet drops.
.It Va ecn.maxretries
Number of retries (SYN or SYN/ACK retransmits) before disabling ECN on a
-specific connection. This is needed to help with connection establishment
+specific connection.
+This is needed to help with connection establishment
when a broken firewall is in the network path.
+.It Va pmtud_blackhole_detection
+Turn on automatic path MTU blackhole detection.
+In case of retransmits we will
+lower the MSS to check if it's MTU problem.
+If current MSS is greater than
+configured value to try, it will be set to it, otherwise, MSS will be set to
+default values
+.Po Va net.inet.tcp.mssdflt
+and
+.Va net.inet.tcp.v6mssdflt
+.Pc .
+.It Va pmtud_blackhole_mss
+MSS to try for IPv4 if PMTU blackhole detection is turned on.
+.It Va v6pmtud_blackhole_mss
+MSS to try for IPv6 if PMTU blackhole detection is turned on.
+.It Va pmtud_blackhole_activated
+Number of times the code was activated to attempt a MSS downshift.
+.It Va pmtud_blackhole_min_activated
+Number of times the blackhole MSS was used in an attempt to downshift.
+.It Va pmtud_blackhole_failed
+Number of times that we failed to connect after we downshifted the MSS.
.El
.Sh ERRORS
A socket operation may fail with one of the following errors returned:
diff --git a/share/man/man4/ucom.4 b/share/man/man4/ucom.4
index 9be0294..a13d4d9 100644
--- a/share/man/man4/ucom.4
+++ b/share/man/man4/ucom.4
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 1, 2008
+.Dd October 3, 2014
.Dt UCOM 4
.Os
.Sh NAME
@@ -81,8 +81,10 @@ multiple external ports.
.Xr umcs 4 ,
.Xr umct 4 ,
.Xr umodem 4 ,
+.Xr umoscom 4 ,
.Xr uplcom 4 ,
.Xr usb 4 ,
+.Xr uslcom 4 ,
.Xr uvisor 4 ,
.Xr uvscom 4
.Sh HISTORY
diff --git a/share/man/man4/udplite.4 b/share/man/man4/udplite.4
index 5d06b14..859c966 100644
--- a/share/man/man4/udplite.4
+++ b/share/man/man4/udplite.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 7, 2014
+.Dd October 1, 2014
.Dt UDPLITE 4
.Os
.Sh NAME
@@ -55,16 +55,16 @@ and tested with
.Bl -tag -width ".Dv UDPLITE_SEND_CSCOV"
.It Dv UDPLITE_SEND_CSCOV
This option sets the sender checksum coverage.
-A value of zero indicates that the entire packet
-is covered by the checksum.
-A value of 1 to 7 must be discarded by the receiver.
+A value of zero indicates that all sent packets will have
+full checksum coverage.
+A value of 8 to 65535 limits the checksum coverage of all sent packets
+to the value given.
.It Dv UDPLITE_RECV_CSCOV
This option is the receiver-side analogue.
-It is truly optional, i.e. not required to enable traffic
-with partial checksum coverage.
-Its function is that of a traffic filter:
-when enabled, it instructs the kernel to drop
-all packets which have a coverage less than this value.
+A value of zero instructs the kernel to drop all received packets
+not having full checksum coverage.
+A value of 8 to 65535 instructs the kernel to drop all received
+packets with a partial checksum coverage smaller than the value specified.
.El
.Sh ERRORS
A socket operation may fail with one of the following errors returned:
diff --git a/share/man/man4/ukbd.4 b/share/man/man4/ukbd.4
index 3a3125d..1fade2a 100644
--- a/share/man/man4/ukbd.4
+++ b/share/man/man4/ukbd.4
@@ -127,7 +127,9 @@ Make the keyboards available through a character device in
The above lines will put the French ISO keymap in the ukbd driver.
You can specify any keymap in
.Pa /usr/share/syscons/keymaps
-with this option.
+or
+.Pa /usr/share/vt/keymaps
+(depending on the console driver being used) with this option.
.Pp
.D1 Cd "options KBD_DISABLE_KEYMAP_LOADING"
.Pp
@@ -151,6 +153,7 @@ driver to the kernel.
.Xr syscons 4 ,
.Xr uhci 4 ,
.Xr usb 4 ,
+.Xr vt 4 ,
.Xr config 8
.Sh AUTHORS
.An -nosplit
diff --git a/share/man/man4/uled.4 b/share/man/man4/uled.4
new file mode 100644
index 0000000..16b24ba
--- /dev/null
+++ b/share/man/man4/uled.4
@@ -0,0 +1,94 @@
+.\"
+.\" Copyright (c) 2014 Kevin Lo
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 5, 2014
+.Dt ULED 4
+.Os
+.Sh NAME
+.Nm uled
+.Nd USB LED driver
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines into
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uled"
+.Cd "device usb"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time,
+place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uled_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Dream Cheeky WebMail Notifier device.
+.Pp
+Subsequently, the
+.Pa /dev/uled0
+device can be used by userland applications.
+.Sh IOCTLS
+The following
+.Xr ioctl 2
+commands can be performed on
+.Pa /dev/uled0 ,
+which are defined in
+.In dev/usb/uled_ioctl.h :
+.Bl -tag -width indent
+.It Dv ULED_GET_COLOR
+The command returns LED colors with values for RGB.
+This
+.Xr ioctl 2
+takes the following structure:
+.Bd -literal
+struct uled_color {
+ uint8_t red;
+ uint8_t green;
+ uint8_t blue;
+};
+.Ed
+.It Dv ULED_SET_COLOR
+The command sets LED colors with values for RGB.
+It uses the same structure as above.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/uled0" -compact
+.It Pa /dev/uled0
+blocking device node
+.El
+.Sh SEE ALSO
+.Xr ohci 4 ,
+.Xr uhci 4 ,
+.Xr usb 4
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Kevin Lo Aq Mt kevlo@FreeBSD.org .
diff --git a/share/man/man4/urndis.4 b/share/man/man4/urndis.4
index 9d126bd..ee367b7 100644
--- a/share/man/man4/urndis.4
+++ b/share/man/man4/urndis.4
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 21, 2014
+.Dd October 2, 2014
.Dt URNDIS 4
.Os
.Sh NAME
@@ -68,8 +68,16 @@ such as those commonly found on Android devices.
It does not support different media types or options.
For more information on configuring this device, see
.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the
+.Qq tethering
+functionality of many Android devices.
.Sh SEE ALSO
.Xr arp 4 ,
+.Xr cdce 4 ,
+.Xr ipheth 4 ,
.Xr netintro 4 ,
.Xr usb 4 ,
.Xr ifconfig 8
diff --git a/share/man/man4/urtwn.4 b/share/man/man4/urtwn.4
index 223dbbc..35463f4 100644
--- a/share/man/man4/urtwn.4
+++ b/share/man/man4/urtwn.4
@@ -14,12 +14,12 @@
.\"
.\" $FreeBSD$
.\"
-.Dd May 3, 2014
+.Dd October 24, 2014
.Dt URTWN 4
.Os
.Sh NAME
.Nm urtwn
-.Nd Realtek RTL8188CU/RTL8188EU/RTL8192CU USB IEEE 802.11b/g/n wireless network device
+.Nd Realtek RTL8188CU/RTL8188RU/RTL8188EU/RTL8192CU USB IEEE 802.11b/g/n wireless network device
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following lines in your
@@ -82,14 +82,18 @@ firmware license
.Sh HARDWARE
The
.Nm
-driver supports Realtek RTL8188CU/RTL8188EU/RTL8192CU based USB
+driver supports Realtek RTL8188CU/RTL8188RU/RTL8188EU/RTL8192CU based USB
IEEE 802.11b/g/n wireless network adapters, including:
.Pp
.Bl -tag -width Ds -offset indent -compact
+.It Alfa AWUS036NHR v2
.It ASUS USB-N10 NANO
.It Belkin F7D1102 Surf Wireless Micro
+.It D-Link DWA-123 rev D1
+.It D-Link DWA-125 rev D1
.It D-Link DWA-131
.It Edimax EW-7811Un
+.It Elecom WDC-150SU2M
.It Netgear WNA1000M
.It Realtek RTL8192CU
.It Realtek RTL8188CUS
diff --git a/share/man/man4/virtio.4 b/share/man/man4/virtio.4
index 8a0cbc6..cd10d11 100644
--- a/share/man/man4/virtio.4
+++ b/share/man/man4/virtio.4
@@ -85,6 +85,7 @@ device driver.
.Sh SEE ALSO
.Xr virtio_balloon 4 ,
.Xr virtio_blk 4 ,
+.Xr virtio_console 4 ,
.Xr virtio_scsi 4 ,
.Xr vtnet 4
.Sh HISTORY
diff --git a/share/man/man9/pmap_change_wiring.9 b/share/man/man4/virtio_console.4
index 4fd09f2..b855f13 100644
--- a/share/man/man9/pmap_change_wiring.9
+++ b/share/man/man4/virtio_console.4
@@ -1,5 +1,4 @@
-.\"
-.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.org>
+.\" Copyright (c) 2014 Bryan Venteicher
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
@@ -25,44 +24,44 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 21, 2003
-.Dt PMAP_CHANGE_WIRING 9
+.Dd October 22, 2014
+.Dt VIRTIO_CONSOLE 4
.Os
.Sh NAME
-.Nm pmap_change_wiring
-.Nd change physical wiring for a map or virtual address pair
+.Nm virtio_console
+.Nd VirtIO Console driver
.Sh SYNOPSIS
-.In sys/param.h
-.In vm/vm.h
-.In vm/pmap.h
-.Ft void
-.Fn pmap_change_wiring "pmap_t pmap" "vm_offset_t va" "boolean_t wired"
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device virtio_console"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+virtio_console_load="YES"
+.Ed
.Sh DESCRIPTION
The
-.Fn pmap_change_wiring
-function changes the wiring attribute for the page at virtual address
-.Fa va
-in the physical map
-.Fa pmap .
-A wired page gets its name from being
-.Dq wired
-into the system page tables so that it will not be paged out.
+.Nm
+device driver provides support for VirtIO console devices.
.Pp
-The mapping must already exist in the
-.Fa pmap .
-If
-.Fa wired
-is
-.Dv TRUE ,
-the map's wired page count will be incremented; if
-.Dv FALSE ,
-it will be decremented.
-.Pp
-It is typically called by the
-.Fn vm_fault_unwire
-function.
+The console device may have one or more ports.
+Each port is similar to a simple serial interface, and
+each port is accessible through
+.Xr tty 4 .
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ttyV?.??" -compact
+.It Pa /dev/ttyV?.??
+.El
.Sh SEE ALSO
-.Xr pmap 9
-.Sh AUTHORS
-This manual page was written by
-.An Bruce M Simpson Aq Mt bms@spc.org .
+.Xr tty 4
+.Xr virtio 4
+.Sh HISTORY
+The
+.Nm
+driver was written by
+.An Bryan Venteicher Aq bryanv@FreeBSD.org .
diff --git a/share/man/man4/vkbd.4 b/share/man/man4/vkbd.4
index 78110a6..c70d226 100644
--- a/share/man/man4/vkbd.4
+++ b/share/man/man4/vkbd.4
@@ -129,7 +129,8 @@ All queued scan codes are thrown away.
.Xr kbdcontrol 1 ,
.Xr atkbdc 4 ,
.Xr psm 4 ,
-.Xr syscons 4
+.Xr syscons 4 ,
+.Xr vt 4
.Sh HISTORY
The
.Nm
diff --git a/share/man/man4/vt.4 b/share/man/man4/vt.4
index 0cd42fd..f330218 100644
--- a/share/man/man4/vt.4
+++ b/share/man/man4/vt.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 2, 2014
+.Dd October 20, 2014
.Dt "VIRTUAL TERMINALS" 4
.Os
.Sh NAME
@@ -45,6 +45,17 @@ In
.Xr loader.conf 5 :
.Cd hw.vga.textmode=1
.Cd kern.vty=vt
+.Cd kern.vt.fb.default_mode="<X>x<Y>"
+.Cd kern.vt.fb.modes.<connector>="<X>x<Y>"
+.Pp
+In
+.Xr loader.conf 5 or
+.Xr sysctl.conf 5 :
+.Cd kern.vt.kbd_halt=1
+.Cd kern.vt.kbd_poweroff=1
+.Cd kern.vt.kbd_reboot=1
+.Cd kern.vt.kbd_debug=1
+.Cd kern.vt.kbd_panic=0
.Sh DESCRIPTION
The
.Nm
@@ -167,7 +178,7 @@ Otherwise,
switches to 640x480x16 VGA mode using
.Cm vt_vga .
If a KMS
-.Pq Kernel Mode Switching
+.Pq Kernel Mode Setting
video driver is available, the display is switched to high resolution
and the KMS driver takes over.
When a KMS driver is not available,
@@ -184,26 +195,78 @@ Set to 1 to use virtual terminals in text mode instead of graphics mode.
Features that require graphics mode, like loadable fonts, will be
disabled.
.It Va kern.vty
-When both
-.Nm
-and
-.Xr sc 4 have been compiled into the kernel, the one to use for the
-system console can be selected by setting this value to
+Set this value to
.Ql vt
or
-.Ql sc .
-If this value is not set,
+.Ql sc
+to override the default driver used for the system console.
+By default,
.Xr sc 4
-is used.
+is used on computers that boot from BIOS, and
+.Nm
+is used on computers that boot from UEFI.
+.It Va kern.vt.fb.default_mode
+Set this value to a graphic mode to override the default mode picked by the
+.Nm
+backend.
+The mode is applied to all output connectors.
+This is currently only supported by the
+.Cm vt_fb
+backend when it's paired with a KMS video driver.
+.It Va kern.vt.fb.modes. Ns Pa connector_name
+Set this value to a graphic mode to override the default mode picked by the
+.Nm
+backend.
+This mode is applied to the output connector
+.Pa connector_name
+only. It has precedence over
+.Va kern.vt.fb.default_mode .
+The names of available connector names can be found in
+.Xr dmesg 8
+after loading the KMS driver.
+It will contain a list of connectors and their associated tunables.
+This is currently only supported by the
+.Cm vt_fb
+backend when it's paired with a KMS video driver.
+.El
+.Sh KEYBOARD SYSCTL TUNABLES
+These settings control whether certain special key combinations are enabled or
+ignored.
+The specific key combinations can be configured by using a
+.Xr keymap 5
+file.
+.Pp
+These settings can be entered at the
+.Xr loader 8
+prompt or in
+.Xr loader.conf 5
+and can also be changed at runtime with the
+.Xr sysctl 8
+command.
+.Bl -tag -width indent
+.It Va kern.vt.kbd_halt
+Enable halt keyboard combination.
+.It Va kern.vt.kbd_poweroff
+Enable power off key combination.
+.It Va kern.vt.kbd_reboot.
+Enable reboot key combination, usually Ctrl+Alt+Del.
+.It Va kern.vt.kbd_debug
+Enable debug request key combination, usually Ctrl+Alt+Esc.
+.It Va kern.vt.kbd_panic
+Enable panic key combination.
.El
.Sh FILES
-.Bl -tag -width /usr/share/syscons/keymaps/* -compact
+.Bl -tag -width /usr/share/vt/keymaps/* -compact
.It Pa /dev/console
.It Pa /dev/consolectl
.It Pa /dev/ttyv*
virtual terminals
.It Pa /etc/ttys
terminal initialization information
+.It Pa /usr/share/vt/fonts/*.fnt
+console fonts
+.It Pa /usr/share/vt/keymaps/*.kbd
+keyboard layouts
.El
.Sh EXAMPLES
This example changes the default color of normal text to green on a
@@ -218,6 +281,22 @@ This line changes the default color of kernel messages to be bright red
on a black background, or black on a bright red background when reversed.
.Pp
.Dl "options TERMINAL_KERN_ATTR=(FG_LIGHTRED|BG_BLACK)"
+.Pp
+To set a 1024x768 mode on all output connectors, put the following line in
+.Pa /boot/loader.conf :
+.Pp
+.Dl kern.vt.fb.default_mode="1024x768"
+.Pp
+To set a 800x600 only on a laptop builtin screen, use the following line instead:
+.Pp
+.Dl kern.vt.fb.modes.LVDS-1="800x600"
+.Pp
+The connector name was found in
+.Xr dmesg 8 :
+.Pp
+.Dl info: [drm] Connector LVDS-1: get mode from tunables:
+.Dl info: [drm] - kern.vt.fb.modes.LVDS-1
+.Dl info: [drm] - kern.vt.fb.default_mode
.Sh SEE ALSO
.Xr kbdcontrol 1 ,
.Xr login 1 ,
@@ -229,7 +308,6 @@ on a black background, or black on a bright red background when reversed.
.Xr splash 4 ,
.Xr syscons 4 ,
.Xr ukbd 4 ,
-.Xr vga 4 ,
.Xr kbdmap 5 ,
.Xr rc.conf 5 ,
.Xr ttys 5 ,
@@ -237,7 +315,8 @@ on a black background, or black on a bright red background when reversed.
.Xr getty 8 ,
.Xr kbdmux 8 ,
.Xr kldload 8 ,
-.Xr moused 8
+.Xr moused 8 ,
+.Xr vtfontcvt 8
.Sh HISTORY
The
.Nm
diff --git a/share/man/man4/vxlan.4 b/share/man/man4/vxlan.4
new file mode 100644
index 0000000..1e68c08
--- /dev/null
+++ b/share/man/man4/vxlan.4
@@ -0,0 +1,235 @@
+.\" Copyright (c) 2014 Bryan Venteicher
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 20, 2014
+.Dt VXLAN 4
+.Os
+.Sh NAME
+.Nm vxlan
+.Nd "Virtual eXtensible LAN interface"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device vxlan"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_vxlan_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver creates a virtual tunnel endpoint in a
+.Nm
+segment.
+A
+.Nm
+segment is a virtual Layer 2 (Ethernet) network that is overlaid
+in a Layer 3 (IP/UDP) network.
+.Nm
+is analogous to
+.Xr vlan 4
+but is designed to be better suited for large, multiple tenant
+data center environments.
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+The interface may be removed with the
+.Xr ifconfig 8
+.Cm destroy
+command.
+.Pp
+The
+.Nm
+driver creates a pseudo Ethernet network interface
+that supports the usual network
+.Xr ioctl 2 Ns s
+and is thus can be used with
+.Xr ifconfig 8
+like any other Ethernet interface.
+The
+.Nm
+interface encapsulates the Ethernet frame
+by prepending IP/UDP and
+.Nm
+headers.
+Thus, the encapsulated (inner) frame is able to transmitted
+over a routed, Layer 3 network to the remote host.
+.Pp
+The
+.Nm
+interface may be configured in either unicast or multicast mode.
+When in unicast mode,
+the interface creates a tunnel to a single remote host,
+and all traffic is transmitted to that host.
+When in multicast mode,
+the interface joins an IP multicast group,
+and receives packets sent to the group address,
+and transmits packets to either the multicast group address,
+or directly the remote host if there is an appropriate
+forwarding table entry.
+.Pp
+When the
+.Nm
+interface is brought up, a
+.Xr UDP 4
+.Xr socket 9
+is created based on the configuration,
+such as the local address for unicast mode or
+the group address for multicast mode,
+and the listening (local) port number.
+Since multiple
+.Nm
+interfaces may be created that either
+use the same local address
+or join the same group address,
+and use the same port,
+the driver may share a socket among multiple interfaces.
+However, each interface within a socket must belong to
+a unique
+.Nm
+segment.
+The analogous
+.Xr vlan 4
+configuration would be a physical interface configured as
+the parent device for multiple VLAN interfaces, each with
+a unique VLAN tag.
+Each
+.Nm
+segment is identified by a 24-bit value in the
+.Nm
+header called the
+.Dq VXLAN Network Identifier ,
+or VNI.
+.Pp
+When configured with the
+.Xr ifconfig 8
+.Cm learn
+parameter, the interface dynamically creates forwarding table entries
+from received packets.
+An entry in the forwarding table maps the inner source MAC address
+to the outer remote IP address.
+During transmit, the interface attempts to lookup an entry for
+the encapsulated destination MAC address.
+If an entry is found, the IP address in the entry is used to directly
+transmit the encapsulated frame to the destination.
+Otherwise, when configured in multicast mode,
+the interface must flood the frame to all hosts in the group.
+The maximum number of entries in the table is configurable with the
+.Xr ifconfig 8
+.Cm maxaddr
+command.
+Stale entries in the table periodically pruned.
+The timeout is configurable with the
+.Xr ifconfig 8
+.Cm timeout
+command.
+The table may be viewed with the
+.Xr sysctl 8
+.Cm net.link.vlxan.N.ftable.dump
+command.
+.Sh MTU
+Since the
+.Nm
+interface encapsulates the Ethernet frame with an IP, UDP, and
+.Nm
+header, the resulting frame may be larger than the MTU of the
+physical network.
+The
+.Nm
+specification recommends the physical network MTU be configured
+to use jumbo frames to accommodate the encapsulated frame size.
+Alternatively, the
+.Xr ifconfig 8
+.Cm mtu
+command may be used to reduce the MTU size on the
+.Nm
+interface to allow the encapsulated frame to fit in the
+current MTU of the physical network.
+.Sh EXAMPLES
+Create a
+.Nm
+interface in unicast mode
+with the
+.Cm local
+tunnel address of 192.168.100.1,
+and the
+.Cm remote
+tunnel address of 192.168.100.2.
+.Bd -literal -offset indent
+ifconfig vxlan create vni 108 local 192.168.100.1 remote 192.168.100.2
+.Ed
+.Pp
+Create a
+.Nm
+interface in multicast mode,
+with the
+.Cm local
+address of 192.168.10.95,
+and the
+.Cm group
+address of 224.0.2.6.
+The em0 interface will be used to transmit multicast packets.
+.Bd -literal -offset indent
+ifconfig vxlan create vni 42 local 192.168.10.95 group 224.0.2.6 vxlandev em0
+.Ed
+.Pp
+Once created, the
+.Nm
+interface can be configured with
+.Xr ifconfig 8 .
+.Sh SEE ALSO
+.Xr ifconfig 8 ,
+.Xr inet 4 ,
+.Xr inet 6 ,
+.Xr sysctl 8 ,
+.Xr vlan 8
+.Rs
+.%A "M. Mahalingam"
+.%A "et al"
+.%T "Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks"
+.%D August 2014
+.%O "RFC 7348"
+.Re
+.Sh AUTHOR
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Bryan Venteicher Aq bryanv@freebsd.org .
diff --git a/share/man/man5/Makefile b/share/man/man5/Makefile
index 541f211..e848335 100644
--- a/share/man/man5/Makefile
+++ b/share/man/man5/Makefile
@@ -7,6 +7,7 @@
MAN= acct.5 \
ar.5 \
a.out.5 \
+ autofs.5 \
bluetooth.device.conf.5 \
bluetooth.hosts.5 \
bluetooth.protocols.5 \
diff --git a/share/man/man5/autofs.5 b/share/man/man5/autofs.5
new file mode 100644
index 0000000..91a4480
--- /dev/null
+++ b/share/man/man5/autofs.5
@@ -0,0 +1,99 @@
+.\" Copyright (c) 2014 The FreeBSD Foundation
+.\" All rights reserved.
+.\"
+.\" This software was developed by Edward Tomasz Napierala under sponsorship
+.\" from the FreeBSD Foundation.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 3, 2014
+.Dt AUTOFS 5
+.Os
+.Sh NAME
+.Nm autofs
+.Nd "automounter filesystem"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in the
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options AUTOFS"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+autofs_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver is the kernel component of the automounter infrastructure.
+Its job is to pass mount requests to the
+.Xr automountd 8
+daemon, and pause the processes trying to access the automounted filesystem
+until the mount is completed.
+It is mounted by the
+.Xr automount 8 .
+.Sh OPTIONS
+These options are available when
+mounting
+.Nm
+file systems:
+.Bl -tag -width indent
+.It Cm master_options
+Mount options for all filesystems specified in the map entry.
+.It Cm master_prefix
+Filesystem mountpoint prefix.
+.El
+.Sh EXAMPLES
+To unmount all mounted
+.Nm
+filesystems:
+.Pp
+.Dl "umount -At autofs"
+.Pp
+To mount
+.Nm
+filesystems specified in
+.Xr auto_master 5 :
+.Pp
+.Dl "automount"
+.Sh SEE ALSO
+.Xr auto_master 5 ,
+.Xr automount 8 ,
+.Xr automountd 8 ,
+.Xr autounmountd 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 10.1 .
+.Sh AUTHORS
+The
+.Nm
+was developed by
+.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
+under sponsorship from the FreeBSD Foundation.
diff --git a/share/man/man5/pf.conf.5 b/share/man/man5/pf.conf.5
index eff9086..4f95933 100644
--- a/share/man/man5/pf.conf.5
+++ b/share/man/man5/pf.conf.5
@@ -3051,7 +3051,7 @@ Service name database.
.Xr services 5 ,
.Xr ftp-proxy 8 ,
.Xr pfctl 8 ,
-.Xr pflogd 8 ,
+.Xr pflogd 8
.Sh HISTORY
The
.Nm
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index c87de44..09583ec 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 15, 2014
+.Dd September 11, 2014
.Dt RC.CONF 5
.Os
.Sh NAME
@@ -63,18 +63,37 @@ The file
is used to override settings in
.Pa /etc/rc.conf
for historical reasons.
+.Pp
In addition to
.Pa /etc/rc.conf.local
you can also place smaller configuration files for each
.Xr rc 8
script in the
.Pa /etc/rc.conf.d
-directory, which will be included by the
+directory or
+.Ao Ar dir Ac Ns Pa /rc.conf.d
+directories specified in
+.Va local_startup ,
+which will be included by the
.Va load_rc_config
function.
For jail configurations you could use the file
.Pa /etc/rc.conf.d/jail
to store jail specific configuration options.
+If
+.Va local_startup
+contains
+.Pa /usr/local/etc/rc.d
+and
+.Pa /opt/conf ,
+.Pa /usr/local/rc.conf.d/jail
+and
+.Pa /opt/conf/rc.conf.d/jail
+will be loaded.
+If
+.Ao Ar dir Ac Ns Pa /rc.conf.d/ Ns Ao Ar name Ac
+is a directory,
+all of files in the directory will be loaded.
Also see the
.Va rc_conf_files
variable below.
@@ -1180,6 +1199,19 @@ or
.Li inet6 2001:db8:1-f::1/64 .
This notation allows address and prefix length part only,
not the other address modifiers.
+Note that the maximum number of the generated addresses from a range
+specification is limited to an integer value specified in
+.Va netif_ipexpand_max
+in
+.Xr rc.conf 5
+because a small typo can unexpectedly generate a large number of addresses.
+The default value is
+.Li 2048 .
+It can be increased by adding the following line into
+.Xr rc.conf 5 :
+.Bd -literal
+netif_ipexpand_max="4096"
+.Ed
.Pp
In the case of
.Li 192.0.2.5-23/24 ,
@@ -2916,15 +2948,6 @@ This can be set to
.Pq Vt str
IPv6 Site Level Aggregator for
.Xr stf 4 .
-.It Va ipv6_faith_prefix
-.Pq Vt str
-If not set to
-.Dq Li NO ,
-this is the faith prefix to enable a FAITH IPv6-to-IPv4 TCP
-translator.
-You also need
-.Xr faithd 8
-setup.
.It Va ipv6_ipv4mapping
.Pq Vt bool
If set to
@@ -3111,8 +3134,13 @@ set to this device.
If set to
.Dq Li NO ,
no keymap is installed, otherwise the value is used to install
-the keymap file in
-.Pa /usr/share/syscons/keymaps/ Ns Ao Ar value Ac Ns Pa .kbd .
+the keymap file found in
+.Pa /usr/share/syscons/keymaps/ Ns Ao Ar value Ac Ns Pa .kbd
+(if using
+.Xr syscons 4 ) or
+.Pa /usr/share/vt/keymaps/ Ns Ao Ar value Ac Ns Pa .kbd
+(if using
+.Xr vt 4 ) .
.It Va keyrate
.Pq Vt str
The keyboard repeat speed.
@@ -3147,6 +3175,9 @@ If set to
no screen map is installed, otherwise the value is used to install
the screen map file in
.Pa /usr/share/syscons/scrnmaps/ Ns Aq Ar value .
+This parameter is ignored when using
+.Xr vt 4
+as the console driver.
.It Va font8x16
.Pq Vt str
If set to
@@ -3154,7 +3185,9 @@ If set to
the default 8x16 font value is used for screen size requests, otherwise
the value in
.Pa /usr/share/syscons/fonts/ Ns Aq Ar value
-is used.
+or
+.Pa /usr/share/vt/fonts/ Ns Aq Ar value
+is used (depending on the console driver being used).
.It Va font8x14
.Pq Vt str
If set to
@@ -3162,7 +3195,9 @@ If set to
the default 8x14 font value is used for screen size requests, otherwise
the value in
.Pa /usr/share/syscons/fonts/ Ns Aq Ar value
-is used.
+or
+.Pa /usr/share/vt/fonts/ Ns Aq Ar value
+is used (depending on the console driver being used).
.It Va font8x8
.Pq Vt str
If set to
@@ -3170,7 +3205,9 @@ If set to
the default 8x8 font value is used for screen size requests, otherwise
the value in
.Pa /usr/share/syscons/fonts/ Ns Aq Ar value
-is used.
+or
+.Pa /usr/share/vt/fonts/ Ns Aq Ar value
+is used (depending on the console driver being used).
.It Va blanktime
.Pq Vt int
If set to
@@ -3377,6 +3414,8 @@ For example,
.Dq Fl h Li 200
will set the
.Xr syscons 4
+or
+.Xr vt 4
scrollback (history) buffer to 200 lines.
.It Va cron_enable
.Pq Vt bool
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index 3c3c9cf..fa90a16 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -1,7 +1,7 @@
.\" DO NOT EDIT-- this file is automatically generated.
.\" from FreeBSD: head/tools/build/options/makeman 255964 2013-10-01 07:22:04Z des
.\" $FreeBSD$
-.Dd July 16, 2014
+.Dd October 21, 2014
.Dt SRC.CONF 5
.Os
.Sh NAME
@@ -100,9 +100,6 @@ Set to not build
.Xr apm 8 ,
.Xr apmd 8
and related programs.
-.It Va WITHOUT_ARM_EABI
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ARM_EABI 253396 2013-07-16 19:15:19Z andrew
-Set the ARM ABI to OABI.
.It Va WITHOUT_ASSERT_DEBUG
.\" from FreeBSD: head/tools/build/options/WITHOUT_ASSERT_DEBUG 162215 2006-09-11 13:55:27Z ru
Set to compile programs and libraries without the
@@ -214,10 +211,10 @@ Set to build the Clang C/C++ compiler during the normal phase of the build.
It is a default setting on
amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386, pc98/i386, powerpc/powerpc and powerpc/powerpc64.
.It Va WITHOUT_CLANG_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG_BOOTSTRAP 273177 2014-10-16 18:28:11Z skreuzer
Set to not build the Clang C/C++ compiler during the bootstrap phase of the build.
-You must enable wither gcc or clang bootstrap to be able to build the system,
-unless an alternative compiiler is provided via
+You must enable either gcc or clang bootstrap to be able to build the system,
+unless an alternative compiler is provided via
XCC.
.Pp
It is a default setting on
@@ -327,6 +324,9 @@ similar to DWARF and the venerable stabs and is required for DTrace.
Set to not build
.Xr ctm 1
and related utilities.
+.It Va WITHOUT_CUSE
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CUSE 270171 2014-08-19 15:40:26Z hselasky
+Set to not build CUSE-related programs and libraries.
.It Va WITHOUT_CXX
.\" from FreeBSD: head/tools/build/options/WITHOUT_CXX 220402 2011-04-06 20:19:07Z uqs
Set to not build
@@ -404,6 +404,12 @@ program to be built and installed as fmake.
.\" from FreeBSD: head/tools/build/options/WITHOUT_FMTREE 261299 2014-01-30 21:37:43Z brooks
Set to not build and install
.Pa /usr/sbin/fmtree .
+.It Va WITHOUT_FORMAT_EXTENSIONS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_FORMAT_EXTENSIONS 250658 2013-05-15 13:04:10Z brooks
+Set to not enable
+.Fl fformat-extensions
+when compiling the kernel.
+Also disables all format checking.
.It Va WITHOUT_FORTH
.\" from FreeBSD: head/tools/build/options/WITHOUT_FORTH 156932 2006-03-21 07:50:50Z ru
Set to build bootloaders without Forth support.
@@ -432,10 +438,10 @@ Set to build and install gcc and g++.
It is a default setting on
arm/armeb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
.It Va WITHOUT_GCC_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GCC_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GCC_BOOTSTRAP 273177 2014-10-16 18:28:11Z skreuzer
Set to not build gcc and g++ as part of the bootstrap process.
-You must enable wither gcc or clang bootstrap to be able to build the system,
-unless an alternative compiiler is provided via
+You must enable either gcc or clang bootstrap to be able to build the system,
+unless an alternative compiler is provided via
XCC.
.Pp
It is a default setting on
@@ -519,6 +525,9 @@ Set to build Hesiod support.
.It Va WITHOUT_HTML
.\" from FreeBSD: head/tools/build/options/WITHOUT_HTML 156932 2006-03-21 07:50:50Z ru
Set to not build HTML docs.
+.It Va WITHOUT_HYPERV
+.\" from FreeBSD: head/tools/build/options/WITHOUT_HYPERV 271493 2014-09-13 02:15:31Z delphij
+Set to not build or install HyperV utilities.
.It Va WITHOUT_ICONV
.\" from FreeBSD: head/tools/build/options/WITHOUT_ICONV 254919 2013-08-26 17:15:56Z antoine
Set to not build iconv as part of libc.
@@ -610,6 +619,12 @@ Set to build some programs without Kerberos support, like
.Xr sshd 8 ,
and
.Xr telnetd 8 .
+.It Va WITHOUT_KERNEL_SYMBOLS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_KERNEL_SYMBOLS 222189 2011-05-22 18:23:17Z imp
+Set to not install kernel symbol files.
+.Bf -symbolic
+This option is recommended for those people who have small root partitions.
+.Ef
.It Va WITHOUT_KVM
.\" from FreeBSD: head/tools/build/options/WITHOUT_KVM 174550 2007-12-12 16:43:17Z ru
Set to not build the
@@ -885,9 +900,6 @@ When set, it also enforces the following options:
.It
.Va WITHOUT_AUTHPF
.El
-.It Va WITH_PIE
-.\" from FreeBSD: head/tools/build/options/WITH_PIE 267233 2014-06-08 17:29:31Z bdrewery
-Enable building of Position-Independent Executables (PIEs).
.It Va WITHOUT_PKGBOOTSTRAP
.\" from FreeBSD: head/tools/build/options/WITHOUT_PKGBOOTSTRAP 258924 2013-12-04 15:58:42Z bdrewery
Set to not build
@@ -926,10 +938,12 @@ This includes
.Xr rsh 1 ,
etc.
.It Va WITHOUT_RCS
-.\" from FreeBSD: head/tools/build/options/WITHOUT_RCS 256198 2013-10-09 17:07:20Z gjb
+.\" from FreeBSD: head/tools/build/options/WITHOUT_RCS 271401 2014-09-10 19:00:17Z asomers
Set to not build
.Xr rcs 1
-and related utilities.
+,
+.Xr etcupdate 8
+, and related utilities.
.It Va WITHOUT_RESCUE
.\" from FreeBSD: head/tools/build/options/WITHOUT_RESCUE 156932 2006-03-21 07:50:50Z ru
Set to not build
@@ -1044,8 +1058,8 @@ When set, it also enforces the following options:
.Va WITHOUT_GROFF
.El
.It Va WITHOUT_TOOLCHAIN
-.\" from FreeBSD: head/tools/build/options/WITHOUT_TOOLCHAIN 174550 2007-12-12 16:43:17Z ru
-Set to not install
+.\" from FreeBSD: head/tools/build/options/WITHOUT_TOOLCHAIN 273172 2014-10-16 15:55:13Z brooks
+Set to not install header or
programs used for program development,
compilers, debuggers etc.
.Bf -symbolic
@@ -1075,9 +1089,6 @@ and related programs.
.It Va WITHOUT_USB
.\" from FreeBSD: head/tools/build/options/WITHOUT_USB 156932 2006-03-21 07:50:50Z ru
Set to not build USB-related programs and libraries.
-.It Va WITH_USB_GADGET_EXAMPLES
-.\" from FreeBSD: head/tools/build/options/WITH_USB_GADGET_EXAMPLES 254919 2013-08-26 17:15:56Z antoine
-Set to build USB gadget kernel modules.
.It Va WITHOUT_UTMPX
.\" from FreeBSD: head/tools/build/options/WITHOUT_UTMPX 231530 2012-02-11 20:28:42Z ed
Set to not build user accounting tools such as
diff --git a/share/man/man7/Makefile b/share/man/man7/Makefile
index 9dcaad9..65f30d7 100644
--- a/share/man/man7/Makefile
+++ b/share/man/man7/Makefile
@@ -1,7 +1,7 @@
# @(#)Makefile 8.1 (Berkeley) 6/5/93
# $FreeBSD$
-.include <bsd.own.mk>
+.include <src.opts.mk>
#MISSING: eqnchar.7 ms.7 term.7
MAN= adding_user.7 \
@@ -14,6 +14,7 @@ MAN= adding_user.7 \
environ.7 \
ffs.7 \
firewall.7 \
+ growfs.7 \
hier.7 \
hostname.7 \
intro.7 \
@@ -37,4 +38,15 @@ MLINKS+= c99.7 c78.7
MLINKS+= c99.7 c89.7
MLINKS+= c99.7 c90.7
+.if ${MK_TESTS} != "no"
+ATF= ${.CURDIR}/../../../contrib/atf
+.PATH: ${ATF}/doc
+MAN+= atf.7
+
+CLEANFILES+= atf.7
+atf.7: atf.7.in
+ sed -e 's,__DOCDIR__,/usr/share/doc/atf,g' \
+ <"${ATF}/doc/atf.7.in" >atf.7
+.endif
+
.include <bsd.prog.mk>
diff --git a/share/man/man7/growfs.7 b/share/man/man7/growfs.7
new file mode 100644
index 0000000..697305e
--- /dev/null
+++ b/share/man/man7/growfs.7
@@ -0,0 +1,64 @@
+.\" Copyright 2014 John-Mark Gurney
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 1, 2014
+.Dt GROWFS 7
+.Os
+.Sh NAME
+.Nm growfs
+.Nd start up script to grow the root file-system.
+.Sh DESCRIPTION
+The following options in
+.Pa /etc/rc.conf
+control the behavior of
+.Nm :
+.Bl -tag -width ".Va growfs_enable" -offset indent
+.It Va growfs_enable
+.Pq Dq Li NO
+If set to
+.Dq Li YES ,
+the first time the machine boots, the root file-system will be automatically
+expanded, if possible, to fill up all available space after it.
+.El
+.Pp
+To expand the root file-system with-out rebooting, run the following command:
+.Dl % /etc/rc.d/growfs onestart
+.Sh IMPLEMENTATION NOTES
+The script requires that
+.Pa awk
+be present and on the path.
+This usually means that
+.Pa /usr
+should be mounted prior to running the script.
+.Sh FILES
+.Pa /etc/rc.conf
+.Sh EXIT STATUS
+.Ex -std
+.Sh SEE ALSO
+.Xr rc.conf 5
+.Sh AUTHORS
+The man page and script were written by
+.An John-Mark Gurney Aq Mt jmg@FreeBSD.org .
diff --git a/share/man/man7/hier.7 b/share/man/man7/hier.7
index 782517c..76d4f62 100644
--- a/share/man/man7/hier.7
+++ b/share/man/man7/hier.7
@@ -28,7 +28,7 @@
.\" @(#)hier.7 8.1 (Berkeley) 6/5/93
.\" $FreeBSD$
.\"
-.Dd July 25, 2014
+.Dd November 10, 2014
.Dt HIER 7
.Os
.Sh NAME
@@ -48,13 +48,25 @@ programs and configuration files used during operating system bootstrap
.It Pa defaults/
default bootstrapping configuration files; see
.Xr loader.conf 5
+.It Pa dtb/
+Compiled flattened device tree (FDT) files; see
+.Xr fdt 4
+and
+.Xr dtc 1
+.It Pa firmware/
+Loadable modules containing binary firmware for hardware that needs
+firmware downloaded to it to function
.It Pa kernel/
pure kernel executable (the operating system loaded into memory
-at boot time).
+at boot time)
.It Pa modules/
third-party loadable kernel modules;
see
.Xr kldstat 8
+.It Pa zfs/
+Contains
+.Xr zfs 8
+zpool cache files.
.El
.It Pa /cdrom/
default mount point for CD-ROM drives
@@ -368,6 +380,8 @@ shared libraries for compatibility
.It Pa aout/
a.out backward compatibility libraries
.El
+.It Pa debug/
+standalone debug data for the base system libraries and binaries
.It Pa dtrace/
DTrace library scripts
.It Pa engines/
@@ -633,6 +647,26 @@ timezone configuration information;
see
.Xr tzfile 5
.El
+.It Pa vt/
+files used by vt;
+see
+.Xr vt 4
+.Bl -tag -width ".Pa scrnmaps/" -compact
+.It Pa fonts/
+console fonts;
+see
+.Xr vidcontrol 1
+and
+.Xr vidfont 1
+.It Pa keymaps/
+console keyboard maps;
+see
+.Xr kbdcontrol 1
+and
+.Xr kbdmap 1
+.\" .It Pa scrnmaps/
+.\" console screen maps
+.El
.It Pa src/
.Bx ,
third-party, and/or local source files
diff --git a/share/man/man7/release.7 b/share/man/man7/release.7
index 8fc75f3..93aec89 100644
--- a/share/man/man7/release.7
+++ b/share/man/man7/release.7
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 11, 2014
+.Dd October 2, 2014
.Dt RELEASE 7
.Os
.Sh NAME
@@ -351,6 +351,61 @@ Set to the target directory within
to check out
.Va ${UBOOTSRC}/${UBOOTBRANCH} .
.El
+.Sh VIRTUAL MACHINE DISK IMAGES
+The following
+.Fa release.conf
+variables are relevant only to virtual machine disk image builds:
+.Bl -tag -width Ev
+.It Va WITH_VMIMAGES
+Set to a non-null value to build virtual machine disk images as part
+of the release build.
+.Va WITH_VMIMAGES
+may also be specified as an envirionment variable passed to
+.Xr make 1 .
+.Pp
+The option requires
+.Xr mkimg 1
+version 20140927 or later.
+.It Va WITH_COMPRESSED_VMIMAGES
+Set to a non-null value to compress the virtual machine disk images with
+.Xr xz 1
+as part of the
+.Cm install
+.Xr make 1
+target.
+Note that compressing virtual machine disk images may take a very long
+time on some systems.
+.It Va VMBASE
+Set to change the name of the resulting virtual machine disk image file.
+The default value is
+.Va vm .
+.It Va VMSIZE
+Set to change the size of the virtual machine disk capacity.
+The default value is
+.Va 20G .
+See
+.Xr truncate 1
+for valid values.
+.Pp
+Virtual machine disk images are, by default, created as sparse images.
+When
+.Va WITH_COMPRESSED_VMIMAGES
+is used, the resulting files compressed with
+.Xr xz 1
+compress to roughly the same size, regardless of the specified disk image
+size.
+.It Va VMFORMATS
+Set to the target virtual disk image format(s) to create.
+By default, the
+.Va vhdf , Va vmdk , Va qcow2 ,
+and
+.Va raw
+formats are created.
+See
+.Xr mkimg 1
+for valid format values
+.Pq requires version 20140927 or later .
+.El
.Sh MAKEFILE TARGETS
The release makefile
.Pq Pa src/release/Makefile
@@ -407,6 +462,14 @@ Creates a directory named
.Pa ftp
containing the distribution files used in network installations
and suitable for upload to an FTP mirror.
+.It Cm vm-image
+Creates virtual machine disk images in various formats.
+The
+.Cm vm-image
+target requires the
+.Va WITH_VMIMAGES
+.Xr make 1
+envirionment variable to be set to a non-null value.
.El
.Pp
Major subtargets called by targets above:
diff --git a/share/man/man7/security.7 b/share/man/man7/security.7
index d51eea2..d84e4a2 100644
--- a/share/man/man7/security.7
+++ b/share/man/man7/security.7
@@ -894,41 +894,6 @@ A competent sysadmin will turn off all
of these
.Xr inetd 8 Ns -internal
test services.
-.Pp
-Spoofed packet attacks may also be used to overload the kernel route cache.
-Refer to the
-.Va net.inet.ip.rtexpire , net.inet.ip.rtminexpire ,
-and
-.Va net.inet.ip.rtmaxcache
-.Xr sysctl 8
-variables.
-A spoofed packet attack that uses a random source IP will cause
-the kernel to generate a temporary cached route in the route table, viewable
-with
-.Dq Li "netstat -rna | fgrep W3" .
-These routes typically timeout in 1600
-seconds or so.
-If the kernel detects that the cached route table has gotten
-too big it will dynamically reduce the
-.Va rtexpire
-but will never decrease it to
-less than
-.Va rtminexpire .
-There are two problems: (1) The kernel does not react
-quickly enough when a lightly loaded server is suddenly attacked, and (2) The
-.Va rtminexpire
-is not low enough for the kernel to survive a sustained attack.
-If your servers are connected to the internet via a T3 or better it may be
-prudent to manually override both
-.Va rtexpire
-and
-.Va rtminexpire
-via
-.Xr sysctl 8 .
-Never set either parameter to zero
-(unless you want to crash the machine :-)).
-Setting both parameters to 2 seconds should be sufficient to protect the route
-table from attack.
.Sh ACCESS ISSUES WITH KERBEROS AND SSH
There are a few issues with both Kerberos and SSH that need to be addressed
if you intend to use them.
diff --git a/share/man/man8/Makefile b/share/man/man8/Makefile
index aa1258e..2b803b6 100644
--- a/share/man/man8/Makefile
+++ b/share/man/man8/Makefile
@@ -3,7 +3,6 @@
MAN= crash.8 \
diskless.8 \
- hv_kvp_daemon.8 \
intro.8 \
nanobsd.8 \
picobsd.8 \
@@ -11,6 +10,7 @@ MAN= crash.8 \
rc.sendmail.8 \
rc.subr.8 \
rescue.8 \
+ ${_uefi.8} \
yp.8
MLINKS= rc.8 rc.atm.8 \
@@ -25,4 +25,8 @@ MLINKS+=yp.8 NIS.8 \
yp.8 nis.8 \
yp.8 YP.8
+.if ${MACHINE_CPUARCH} == "amd64"
+_uefi.8= uefi.8
+.endif
+
.include <bsd.prog.mk>
diff --git a/share/man/man8/hv_kvp_daemon.8 b/share/man/man8/hv_kvp_daemon.8
deleted file mode 100644
index a095fe8..0000000
--- a/share/man/man8/hv_kvp_daemon.8
+++ /dev/null
@@ -1,96 +0,0 @@
-.\" $FreeBSD$
-.\"
-.\" Copyright (c) 2012 Microsoft Corp.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.Dd September 10, 2013
-.Dt HYPER-V 4
-.Os
-.Sh NAME
-.Nm hv_kvp_daemon
-.Nd Hyper-V Key Value Pair Daemon
-.Sh SYNOPSIS
-To compile this driver into the kernel, place the following lines in
-the system kernel configuration file:
-.Bd -ragged -offset indent
-.Cd "device hyperv"
-.Ed
-.Sh DESCRIPTION
-The
-.Nm
-daemon provides the ability to store, retrieve, modify and delete
-Key Value pairs for
-.Fx
-guest partitions running on Hyper-V.
-Hyper-V allows administrators to store custom metadata in the form
-of Key Value pairs inside the
-.Fx
-guest partition.
-Administrators can use Windows Powershell scripts to add, read, modify
-and delete such Key Value pairs.
-.Pp
-The
-.Nm
-accepts Key Value pair management requests from the
-.Xr hv_kvp 4
-driver and performs the actual metadata management on the file-system.
-.Pp
-The same daemon and driver combination is also used to set and get
-IP addresses from a
-.Fx
-guest.
-.Pp
-The set functionality is particularly
-useful when the
-.Fx
-guest is assigned a static IP address and is failed
-over from one Hyper-V host to another.
-After failover, Hyper-V uses the set IP functionality to automatically
-update the
-.Fx
-guest's IP address to its original static value.
-.Pp
-On the other hand, the get IP functionality is used to update the guest IP
-address in the Hyper-V management console window.
-.Sh SEE ALSO
-.Xr hv_vmbus 4 ,
-.Xr hv_utils 4 ,
-.Xr hv_netvsc 4 ,
-.Xr hv_storvsc 4 ,
-.Xr hv_ata_pci_disengage 4 ,
-.Xr hv_kvp 4
-.Sh HISTORY
-Support for
-.Nm
-first appeared in
-.Fx 10.0 .
-The daemon was developed through a joint effort between Citrix Incorporated,
-Microsoft Corporation, and Network Appliance Incorporated.
-.Sh AUTHORS
-.An -nosplit
-.Fx
-support for
-.Nm
-was first added by
-.An Microsoft BSD Integration Services Team Aq Mt bsdic@microsoft.com .
diff --git a/share/man/man8/nanobsd.8 b/share/man/man8/nanobsd.8
index ef23aa8..3668112 100644
--- a/share/man/man8/nanobsd.8
+++ b/share/man/man8/nanobsd.8
@@ -277,6 +277,8 @@ Disables
.Xr getty 8
on the virtual
.Xr syscons 4
+or
+.Xr vt 4
terminals
.Pq Pa /dev/ttyv*
and enables the use of the first serial port as the system
diff --git a/share/man/man8/rc.subr.8 b/share/man/man8/rc.subr.8
index 7c3b654..47457ea 100644
--- a/share/man/man8/rc.subr.8
+++ b/share/man/man8/rc.subr.8
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 23, 2012
+.Dd October 12, 2014
.Dt RC.SUBR 8
.Os
.Sh NAME
@@ -568,6 +568,22 @@ to before running
Only supported after
.Pa /usr
is mounted.
+.It Va ${name}_env
+A list of environment variables to run
+.Va command
+with.
+This will be passed as arguments to
+.Xr env 1
+utility.
+.It Va ${name}_fib
+FIB
+.Pa Routing Table
+number to run
+.Va command
+with.
+See
+.Xr setfib 1
+for more details.
.It Va ${name}_flags
Arguments to call
.Va command
@@ -622,6 +638,14 @@ as.
Comma separated list of supplementary groups to run the chrooted
.Va command
with.
+.It Va ${name}_prepend
+Commands to be prepended to
+.Va command .
+This is a generic version of
+.Va ${name}_env ,
+.Va ${name}_fib ,
+or
+.Va ${name}_nice .
.It Ar argument Ns Va _cmd
Shell commands which override the default method for
.Ar argument .
diff --git a/share/man/man8/uefi.8 b/share/man/man8/uefi.8
new file mode 100644
index 0000000..ac1a176
--- /dev/null
+++ b/share/man/man8/uefi.8
@@ -0,0 +1,152 @@
+.\" Copyright (c) 2014 The FreeBSD Foundation
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 17, 2014
+.Dt UEFI 8
+.Os
+.Sh NAME
+.Nm UEFI
+.Nd Unified Extensible Firmware Interface bootstrapping procedures
+.Sh DESCRIPTION
+The
+.Nm
+Unified Extensible Firmware Interface provides boot- and run-time services
+to operating systems.
+.Nm
+is a replacement for the legacy BIOS on the i386 and amd64 CPU architectures,
+and is also used on arm64 and ia64.
+.Pp
+The
+.Nm
+boot process loads system bootstrap code located in an EFI System Partition
+(ESP).
+The ESP is a GPT or MBR partition with a specific identifier that contains an
+.Xr msdosfs 5
+FAT file system with a specified file hierarchy.
+.Bl -column -offset indent ".Sy Partition Scheme" ".Sy ESP Identifier"
+.It Sy "Partition Scheme" Ta Sy "ESP Identifier"
+.It GPT Ta C12A7328-F81F-11D2-BA4B-00A0C93EC93B
+.It MBR Ta 0xEF
+.El
+.Pp
+The
+.Nm
+boot process proceeds as follows:
+.Bl -enum -offset indent -compact
+.It
+.Nm
+firmware runs at power up and searches for an OS loader in the EFI system
+partition.
+The path to the loader may be set by an EFI environment variable.
+If not set, the default is
+.Pa /EFI/BOOT/BOOTX64.EFI .
+The default
+.Nm
+boot configuration for
+.Fx
+installs
+.Pa boot1.efi
+as
+.Pa /EFI/BOOT/BOOTX64.EFI .
+.It
+.Pa boot1.efi
+locates the first partition with the type
+.Li freebsd-ufs ,
+and from it loads
+.Pa loader.efi .
+.It
+.Pa loader.efi
+loads and boots the kernel, as described in
+.Xr loader 8 .
+.El
+.Pp
+The
+.Xr vt 4
+system console is automatically selected when booting via
+.Nm .
+.Sh FILES
+.Bl -tag -width /boot/loader -compact
+.It Pa /boot/boot1.efi
+First stage
+.Nm
+bootstrap
+.It Pa /boot/boot1.efifat
+.Xr msdosfs 5
+FAT file system image containing
+.Pa boot1.efi
+for use by
+.Xr bsdinstall 8
+and the
+.Ar bootcode
+argument to
+.Xr gpart 8 .
+.It Pa /boot/loader.efi
+Final stage bootstrap
+.It Pa /boot/kernel/kernel
+default kernel
+.It Pa /boot/kernel.old/kernel
+typical non-default kernel (optional)
+.El
+.Sh SEE ALSO
+.Xr vt 4 ,
+.Xr msdosfs 5 ,
+.Xr boot 8 ,
+.Xr gpart 8
+.Sh HISTORY
+.Nm
+boot support first appeared in
+.Fx 10.1 .
+.Sh AUTHORS
+.An -nosplit
+.Nm
+boot support was developed by
+.An Benno Rice Aq Mt benno@FreeBSD.org ,
+.An Ed Maste Aq Mt emaste@FreeBSD.org ,
+and
+.An Nathan Whitehorn Aq Mt nwhitehorn@FreeBSD.org .
+The
+.Fx
+Foundation sponsored portions of the work.
+.Sh CAVEATS
+EFI environment variables are not supported by
+.Xr loader 8
+or the kernel.
+.Pp
+.Pa boot1.efi
+loads
+.Pa loader.efi
+from the first FreeBSD-UFS file system it locates, even if it is on a
+different disk.
+.Pp
+.Pa boot1.efi
+cannot load
+.Pa loader.efi
+from a
+.Xr ZFS 8
+file system.
+As a result,
+.Nm
+does not support a typical root file system on ZFS configuration.
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
index bfdcc0c..52181a2 100644
--- a/share/man/man9/Makefile
+++ b/share/man/man9/Makefile
@@ -46,6 +46,7 @@ MAN= accept_filter.9 \
BUS_SETUP_INTR.9 \
bus_space.9 \
byteorder.9 \
+ casuword.9 \
cd.9 \
condvar.9 \
config_intrhook.9 \
@@ -199,7 +200,6 @@ MAN= accept_filter.9 \
physio.9 \
pmap.9 \
pmap_activate.9 \
- pmap_change_wiring.9 \
pmap_clear_modify.9 \
pmap_copy.9 \
pmap_enter.9 \
@@ -392,13 +392,21 @@ MLINKS= unr.9 alloc_unr.9 \
unr.9 delete_unrhdr.9 \
unr.9 free_unr.9 \
unr.9 new_unrhdr.9
+MLINKS+=accept_filter.9 accept_filt_add.9 \
+ accept_filter.9 accept_filt_del.9 \
+ accept_filter.9 accept_filt_generic_mod_event.9 \
+ accept_filter.9 accept_filt_get.9
MLINKS+=alq.9 ALQ.9 \
alq.9 alq_close.9 \
alq.9 alq_flush.9 \
alq.9 alq_get.9 \
+ alq.9 alq_getn.9 \
alq.9 alq_open.9 \
+ alq.9 alq_open_flags.9 \
alq.9 alq_post.9 \
- alq.9 alq_write.9
+ alq.9 alq_post_flags.9 \
+ alq.9 alq_write.9 \
+ alq.9 alq_writen.9
MLINKS+=altq.9 ALTQ.9
MLINKS+=atomic.9 atomic_add.9 \
atomic.9 atomic_clear.9 \
@@ -408,7 +416,9 @@ MLINKS+=atomic.9 atomic_add.9 \
atomic.9 atomic_readandclear.9 \
atomic.9 atomic_set.9 \
atomic.9 atomic_store.9 \
- atomic.9 atomic_subtract.9
+ atomic.9 atomic_subtract.9 \
+ atomic.9 atomic_swap.9 \
+ atomic.9 atomic_testandset.9
MLINKS+=bpf.9 bpfattach.9 \
bpf.9 bpfattach2.9 \
bpf.9 bpfdetach.9 \
@@ -436,6 +446,8 @@ MLINKS+=bus_dma.9 busdma.9 \
bus_dma.9 bus_dmamap_create.9 \
bus_dma.9 bus_dmamap_destroy.9 \
bus_dma.9 bus_dmamap_load.9 \
+ bus_dma.9 bus_dmamap_load_bio.9 \
+ bus_dma.9 bus_dmamap_load_ccb.9 \
bus_dma.9 bus_dmamap_load_mbuf.9 \
bus_dma.9 bus_dmamap_load_mbuf_sg.9 \
bus_dma.9 bus_dmamap_load_uio.9 \
@@ -450,7 +462,8 @@ MLINKS+=BUS_READ_IVAR.9 BUS_WRITE_IVAR.9
MLINKS+=BUS_SETUP_INTR.9 bus_setup_intr.9 \
BUS_SETUP_INTR.9 BUS_TEARDOWN_INTR.9 \
BUS_SETUP_INTR.9 bus_teardown_intr.9
-MLINKS+=bus_space.9 bus_space_barrier.9 \
+MLINKS+=bus_space.9 bus_space_alloc.9 \
+ bus_space.9 bus_space_barrier.9 \
bus_space.9 bus_space_copy_region_1.9 \
bus_space.9 bus_space_copy_region_2.9 \
bus_space.9 bus_space_copy_region_4.9 \
@@ -561,6 +574,7 @@ MLINKS+=condvar.9 cv_broadcast.9 \
condvar.9 cv_signal.9 \
condvar.9 cv_timedwait.9 \
condvar.9 cv_timedwait_sig.9 \
+ condvar.9 cv_timedwait_sig_sbt.9 \
condvar.9 cv_wait.9 \
condvar.9 cv_wait_sig.9 \
condvar.9 cv_wait_unlock.9 \
@@ -568,6 +582,9 @@ MLINKS+=condvar.9 cv_broadcast.9 \
MLINKS+=config_intrhook.9 config_intrhook_disestablish.9 \
config_intrhook.9 config_intrhook_establish.9
MLINKS+=contigmalloc.9 contigfree.9
+MLINKS+=casuword.9 casueword.9 \
+ casuword.9 casueword32.9 \
+ casuword.9 casuword32.9
MLINKS+=copy.9 copyin.9 \
copy.9 copyin_nofault.9 \
copy.9 copyinstr.9 \
@@ -665,12 +682,24 @@ MLINKS+=eventtimers.9 et_register.9 \
eventtimers.9 ET_UNLOCK.9 \
eventtimers.9 et_start.9 \
eventtimers.9 et_stop.9
+MLINKS+=fail.9 KFAIL_POINT_CODE.9 \
+ fail.9 KFAIL_POINT_ERROR.9 \
+ fail.9 KFAIL_POINT_GOTO.9 \
+ fail.9 KFAIL_POINT_RETURN.9 \
+ fail.9 KFAIL_POINT_RETURN_VOID.9
MLINKS+=fetch.9 fubyte.9 \
fetch.9 fuswintr.9 \
fetch.9 fuword.9 \
fetch.9 fuword16.9 \
fetch.9 fuword32.9 \
- fetch.9 fuword64.9
+ fetch.9 fuword64.9 \
+ fetch.9 fueword.9 \
+ fetch.9 fueword32.9 \
+ fetch.9 fueword64.9
+MLINKS+=firmware.9 firmware_get.9 \
+ firmware.9 firmware_put.9 \
+ firmware.9 firmware_register.9 \
+ firmware.9 firmware_unregister.9
MLINKS+=fpu_kern.9 fpu_kern_alloc_ctx.9 \
fpu_kern.9 fpu_kern_free_ctx.9 \
fpu_kern.9 fpu_kern_enter.9 \
@@ -678,8 +707,10 @@ MLINKS+=fpu_kern.9 fpu_kern_alloc_ctx.9 \
fpu_kern.9 fpu_kern_thread.9 \
fpu_kern.9 is_fpu_kern_thread.9
MLINKS+=g_attach.9 g_detach.9
-MLINKS+=g_bio.9 g_clone_bio.9 \
+MLINKS+=g_bio.9 g_alloc_bio.9 \
+ g_bio.9 g_clone_bio.9 \
g_bio.9 g_destroy_bio.9 \
+ g_bio.9 g_duplicate_bio.9 \
g_bio.9 g_new_bio.9 \
g_bio.9 g_print_bio.9
MLINKS+=g_consumer.9 g_destroy_consumer.9 \
@@ -693,7 +724,9 @@ MLINKS+=getenv.9 freeenv.9 \
getenv.9 getenv_quad.9 \
getenv.9 getenv_uint.9 \
getenv.9 getenv_ulong.9 \
- getenv.9 testenv.9
+ getenv.9 setenv.9 \
+ getenv.9 testenv.9 \
+ getenv.9 unsetenv.9
MLINKS+=g_event.9 g_cancel_event.9 \
g_event.9 g_post_event.9 \
g_event.9 g_waitfor_event.9
@@ -707,13 +740,22 @@ MLINKS+=hash.9 hash32.9 \
hash.9 hash32_str.9 \
hash.9 hash32_stre.9 \
hash.9 hash32_strn.9 \
- hash.9 hash32_strne.9
+ hash.9 hash32_strne.9 \
+ hash.9 jenkins_hash.9 \
+ hash.9 jenkins_hash32.9
MLINKS+=hashinit.9 hashdestroy.9 \
hashinit.9 hashinit_flags.9 \
hashinit.9 phashinit.9
+MLINKS+=hhook.9 hhook_head_register.9 \
+ hhook.9 hhook_head_deregister.9 \
+ hhook.9 hhook_head_deregister_lookup.9 \
+ hhook.9 hhook_run_hooks.9 \
+ hhook.9 HHOOKS_RUN_IF.9 \
+ hhook.9 HHOOKS_RUN_LOOKUP_IF.9
MLINKS+=ieee80211.9 ieee80211_ifattach.9 \
ieee80211.9 ieee80211_ifdetach.9
-MLINKS+=ieee80211_amrr.9 ieee80211_amrr_cleanup.9 \
+MLINKS+=ieee80211_amrr.9 ieee80211_amrr_choose.9 \
+ ieee80211_amrr.9 ieee80211_amrr_cleanup.9 \
ieee80211_amrr.9 ieee80211_amrr_init.9 \
ieee80211_amrr.9 ieee80211_amrr_node_init.9 \
ieee80211_amrr.9 ieee80211_amrr_setinterval.9 \
@@ -726,6 +768,7 @@ MLINKS+=ieee80211_bmiss.9 ieee80211_beacon_miss.9
MLINKS+=ieee80211_crypto.9 ieee80211_crypto_available.9 \
ieee80211_crypto.9 ieee80211_crypto_decap.9 \
ieee80211_crypto.9 ieee80211_crypto_delglobalkeys.9 \
+ ieee80211_crypto.9 ieee80211_crypto_delkey.9 \
ieee80211_crypto.9 ieee80211_crypto_demic.9 \
ieee80211_crypto.9 ieee80211_crypto_encap.9 \
ieee80211_crypto.9 ieee80211_crypto_enmic.9 \
@@ -764,12 +807,55 @@ MLINKS+=ieee80211_radiotap.9 ieee80211_radiotap_active.9 \
MLINKS+=ieee80211_regdomain.9 ieee80211_alloc_countryie.9 \
ieee80211_regdomain.9 ieee80211_init_channels.9 \
ieee80211_regdomain.9 ieee80211_sort_channels.9
+MLINKS+=ieee80211_scan.9 ieee80211_add_scan.9 \
+ ieee80211_scan.9 ieee80211_bg_scan.9 \
+ ieee80211_scan.9 ieee80211_cancel_scan.9 \
+ ieee80211_scan.9 ieee80211_cancel_scan_any.9 \
+ ieee80211_scan.9 ieee80211_check_scan.9 \
+ ieee80211_scan.9 ieee80211_check_scan_current.9 \
+ ieee80211_scan.9 ieee80211_flush.9 \
+ ieee80211_scan.9 ieee80211_probe_curchan.9 \
+ ieee80211_scan.9 ieee80211_scan_assoc_fail.9 \
+ ieee80211_scan.9 ieee80211_scan_done.9 \
+ ieee80211_scan.9 ieee80211_scan_dump_channels.9 \
+ ieee80211_scan.9 ieee80211_scan_flush.9 \
+ ieee80211_scan.9 ieee80211_scan_iterate.9 \
+ ieee80211_scan.9 ieee80211_scan_next.9 \
+ ieee80211_scan.9 ieee80211_scan_timeout.9 \
+ ieee80211_scan.9 ieee80211_scanner_get.9 \
+ ieee80211_scan.9 ieee80211_scanner_register.9 \
+ ieee80211_scan.9 ieee80211_scanner_unregister.9 \
+ ieee80211_scan.9 ieee80211_scanner_unregister_all.9 \
+ ieee80211_scan.9 ieee80211_start_scan.9
MLINKS+=ieee80211_vap.9 ieee80211_vap_attach.9 \
ieee80211_vap.9 ieee80211_vap_detach.9 \
ieee80211_vap.9 ieee80211_vap_setup.9
-MLINKS+=ifnet.9 ifaddr.9 \
+MLINKS+=ifnet.9 if_addmulti.9 \
+ ifnet.9 if_alloc.9 \
+ ifnet.9 if_allmulti.9 \
+ ifnet.9 if_attach.9 \
ifnet.9 if_data.9 \
- ifnet.9 ifqueue.9
+ ifnet.9 IF_DEQUEUE.9 \
+ ifnet.9 if_delmulti.9 \
+ ifnet.9 if_detach.9 \
+ ifnet.9 if_down.9 \
+ ifnet.9 if_findmulti.9 \
+ ifnet.9 if_free.9 \
+ ifnet.9 if_free_type.9 \
+ ifnet.9 if_up.9 \
+ ifnet.9 ifa_free.9 \
+ ifnet.9 ifa_ifwithaddr.9 \
+ ifnet.9 ifa_ifwithdstaddr.9 \
+ ifnet.9 ifa_ifwithnet.9 \
+ ifnet.9 ifa_ref.9 \
+ ifnet.9 ifaddr.9 \
+ ifnet.9 ifaddr_byindex.9 \
+ ifnet.9 ifaof_ifpforaddr.9 \
+ ifnet.9 ifioctl.9 \
+ ifnet.9 ifpromisc.9 \
+ ifnet.9 ifqueue.9 \
+ ifnet.9 ifunit.9 \
+ ifnet.9 ifunit_ref.9
MLINKS+=insmntque.9 insmntque1.9
MLINKS+=ithread.9 ithread_add_handler.9 \
ithread.9 ithread_create.9 \
@@ -784,6 +870,14 @@ MLINKS+=kernel_mount.9 free_mntarg.9 \
kernel_mount.9 mount_argb.9 \
kernel_mount.9 mount_argf.9 \
kernel_mount.9 mount_argsu.9
+MLINKS+=khelp.9 khelp_add_hhook.9 \
+ khelp.9 KHELP_DECLARE_MOD.9 \
+ khelp.9 KHELP_DECLARE_MOD_UMA.9 \
+ khelp.9 khelp_destroy_osd.9 \
+ khelp.9 khelp_get_id.9 \
+ khelp.9 khelp_get_osd.9 \
+ khelp.9 khelp_init_osd.9 \
+ khelp.9 khelp_remove_hhook.9
MLINKS+=kobj.9 DEFINE_CLASS.9 \
kobj.9 kobj_class_compile.9 \
kobj.9 kobj_class_compile_static.9 \
@@ -794,6 +888,7 @@ MLINKS+=kobj.9 DEFINE_CLASS.9 \
kobj.9 kobj_init_static.9
MLINKS+=kproc.9 kproc_create.9 \
kproc.9 kproc_exit.9 \
+ kproc.9 kproc_kthread_add.9 \
kproc.9 kproc_resume.9 \
kproc.9 kproc_shutdown.9 \
kproc.9 kproc_start.9 \
@@ -828,7 +923,8 @@ MLINKS+=ktr.9 CTR0.9 \
ktr.9 CTR2.9 \
ktr.9 CTR3.9 \
ktr.9 CTR4.9 \
- ktr.9 CTR5.9
+ ktr.9 CTR5.9 \
+ ktr.9 CTR6.9
MLINKS+=lock.9 lockdestroy.9 \
lock.9 lockinit.9 \
lock.9 lockmgr.9 \
@@ -885,6 +981,7 @@ MLINKS+=mbpool.9 mbp_alloc.9 \
mbpool.9 mbp_sync.9
MLINKS+=\
mbuf.9 m_adj.9 \
+ mbuf.9 m_align.9 \
mbuf.9 M_ALIGN.9 \
mbuf.9 m_append.9 \
mbuf.9 m_apply.9 \
@@ -895,6 +992,7 @@ MLINKS+=\
mbuf.9 m_copydata.9 \
mbuf.9 m_copym.9 \
mbuf.9 m_copypacket.9 \
+ mbuf.9 m_copyup.9 \
mbuf.9 m_defrag.9 \
mbuf.9 m_devget.9 \
mbuf.9 m_dup.9 \
@@ -1010,9 +1108,38 @@ MLINKS+=mutex.9 mtx_assert.9 \
MLINKS+=namei.9 NDFREE.9 \
namei.9 NDHASGIANT.9 \
namei.9 NDINIT.9
+MLINKS+=netisr.9 netisr_clearqdrops.9 \
+ netisr.9 netisr_default_flow2cpu.9 \
+ netisr.9 netisr_dispatch.9 \
+ netisr.9 netisr_dispatch_src.9 \
+ netisr.9 netisr_get_cpucount.9 \
+ netisr.9 netisr_get_cpuid.9 \
+ netisr.9 netisr_getqdrops.9 \
+ netisr.9 netisr_getqlimit.9 \
+ netisr.9 netisr_queue.9 \
+ netisr.9 netisr_queue_src.9 \
+ netisr.9 netisr_register.9 \
+ netisr.9 netisr_setqlimit.9 \
+ netisr.9 netisr_unregister.9
+MLINKS+=osd.9 osd_call.9 \
+ osd.9 osd_del.9 \
+ osd.9 osd_deregister.9 \
+ osd.9 osd_exit.9 \
+ osd.9 osd_get.9 \
+ osd.9 osd_register.9 \
+ osd.9 osd_set.9
MLINKS+=pbuf.9 getpbuf.9 \
pbuf.9 relpbuf.9 \
pbuf.9 trypbuf.9
+MLINKS+=PCBGROUP.9 in_pcbgroup_byhash.9 \
+ PCBGROUP.9 in_pcbgroup_byinpcb.9 \
+ PCBGROUP.9 in_pcbgroup_destroy.9 \
+ PCBGROUP.9 in_pcbgroup_enabled.9 \
+ PCBGROUP.9 in_pcbgroup_init.9 \
+ PCBGROUP.9 in_pcbgroup_remove.9 \
+ PCBGROUP.9 in_pcbgroup_update.9 \
+ PCBGROUP.9 in_pcbgroup_update_mbuf.9 \
+ PCBGROUP.9 in6_pcbgroup_byhash.9
MLINKS+=pci.9 pci_alloc_msi.9 \
pci.9 pci_alloc_msix.9 \
pci.9 pci_disable_busmaster.9 \
@@ -1041,8 +1168,15 @@ MLINKS+=pci.9 pci_alloc_msi.9 \
pci.9 pci_set_max_read_req.9 \
pci.9 pci_write_config.9
MLINKS+=pfil.9 pfil_add_hook.9 \
+ pfil.9 pfil_head_register.9 \
+ pfil.9 pfil_head_unregister.9 \
pfil.9 pfil_hook_get.9 \
- pfil.9 pfil_remove_hook.9
+ pfil.9 pfil_remove_hook.9 \
+ pfil.9 pfil_rlock.9 \
+ pfil.9 pfil_run_hooks.9 \
+ pfil.9 pfil_runlock.9 \
+ pfil.9 pfil_wlock.9 \
+ pfil.9 pfil_wunlock.9
MLINKS+=pfind.9 zpfind.9
MLINKS+=pmap_copy.9 pmap_copy_page.9
MLINKS+=pmap_extract.9 pmap_extract_and_hold.9
@@ -1115,6 +1249,11 @@ MLINKS+=rmlock.9 rm_assert.9 \
rmlock.9 rm_wunlock.9
MLINKS+=rtalloc.9 rtalloc1.9 \
rtalloc.9 rtalloc_ign.9 \
+ rtalloc.9 RT_ADDREF.9 \
+ rtalloc.9 RT_LOCK.9 \
+ rtalloc.9 RT_REMREF.9 \
+ rtalloc.9 RT_RTFREE.9 \
+ rtalloc.9 RT_UNLOCK.9 \
rtalloc.9 RTFREE_LOCKED.9 \
rtalloc.9 RTFREE.9 \
rtalloc.9 rtfree.9 \
@@ -1129,6 +1268,7 @@ MLINKS+=rwlock.9 rw_assert.9 \
rwlock.9 rw_destroy.9 \
rwlock.9 rw_downgrade.9 \
rwlock.9 rw_init.9 \
+ rwlock.9 rw_init_flags.9 \
rwlock.9 rw_initialized.9 \
rwlock.9 rw_rlock.9 \
rwlock.9 rw_runlock.9 \
@@ -1166,6 +1306,7 @@ MLINKS+=sbuf.9 sbuf_bcat.9 \
sbuf.9 sbuf_vprintf.9
MLINKS+=scheduler.9 curpriority_cmp.9 \
scheduler.9 maybe_resched.9 \
+ scheduler.9 propagate_priority.9 \
scheduler.9 resetpriority.9 \
scheduler.9 roundrobin.9 \
scheduler.9 roundrobin_interval.9 \
@@ -1254,17 +1395,18 @@ MLINKS+=sleepqueue.9 init_sleepqueues.9 \
sleepqueue.9 sleepq_add.9 \
sleepqueue.9 sleepq_alloc.9 \
sleepqueue.9 sleepq_broadcast.9 \
- sleepqueue.9 sleepq_calc_signal_retval.9 \
- sleepqueue.9 sleepq_catch_signals.9 \
sleepqueue.9 sleepq_free.9 \
sleepqueue.9 sleepq_lookup.9 \
+ sleepqueue.9 sleepq_lock.9 \
sleepqueue.9 sleepq_release.9 \
sleepqueue.9 sleepq_remove.9 \
sleepqueue.9 sleepq_set_timeout.9 \
sleepqueue.9 sleepq_set_timeout_sbt.9 \
sleepqueue.9 sleepq_signal.9 \
+ sleepqueue.9 sleepq_sleepcnt.9 \
sleepqueue.9 sleepq_timedwait.9 \
sleepqueue.9 sleepq_timedwait_sig.9 \
+ sleepqueue.9 sleepq_type.9 \
sleepqueue.9 sleepq_wait.9 \
sleepqueue.9 sleepq_wait_sig.9
MLINKS+=socket.9 soabort.9 \
@@ -1319,6 +1461,8 @@ MLINKS+=stack.9 stack_copy.9 \
stack.9 stack_destroy.9 \
stack.9 stack_print.9 \
stack.9 stack_print_ddb.9 \
+ stack.9 stack_print_short.9 \
+ stack.9 stack_print_short_ddb.9 \
stack.9 stack_put.9 \
stack.9 stack_save.9 \
stack.9 stack_sbuf_print.9 \
@@ -1340,6 +1484,7 @@ MLINKS+=sx.9 sx_assert.9 \
sx.9 sx_init_flags.9 \
sx.9 sx_sleep.9 \
sx.9 sx_slock.9 \
+ sx.9 sx_slock_sig.9 \
sx.9 sx_sunlock.9 \
sx.9 SX_SYSINIT.9 \
sx.9 sx_try_slock.9 \
@@ -1348,36 +1493,42 @@ MLINKS+=sx.9 sx_assert.9 \
sx.9 sx_unlock.9 \
sx.9 sx_xholder.9 \
sx.9 sx_xlock.9 \
+ sx.9 sx_xlock_sig.9 \
sx.9 sx_xlocked.9 \
sx.9 sx_xunlock.9
MLINKS+=sysctl.9 SYSCTL_DECL.9 \
+ sysctl.9 SYSCTL_ADD_INT.9 \
+ sysctl.9 SYSCTL_ADD_LONG.9 \
+ sysctl.9 SYSCTL_ADD_NODE.9 \
+ sysctl.9 SYSCTL_ADD_OPAQUE.9 \
+ sysctl.9 SYSCTL_ADD_PROC.9 \
+ sysctl.9 SYSCTL_ADD_QUAD.9 \
+ sysctl.9 SYSCTL_ADD_ROOT_NODE.9 \
+ sysctl.9 SYSCTL_ADD_STRING.9 \
+ sysctl.9 SYSCTL_ADD_STRUCT.9 \
+ sysctl.9 SYSCTL_ADD_UAUTO.9 \
+ sysctl.9 SYSCTL_ADD_UINT.9 \
+ sysctl.9 SYSCTL_ADD_ULONG.9 \
+ sysctl.9 SYSCTL_ADD_UQUAD.9 \
+ sysctl.9 SYSCTL_CHILDREN.9 \
+ sysctl.9 SYSCTL_STATIC_CHILDREN.9 \
+ sysctl.9 SYSCTL_NODE_CHILDREN.9 \
+ sysctl.9 SYSCTL_PARENT.9 \
sysctl.9 SYSCTL_INT.9 \
sysctl.9 SYSCTL_LONG.9 \
sysctl.9 SYSCTL_NODE.9 \
sysctl.9 SYSCTL_OPAQUE.9 \
sysctl.9 SYSCTL_PROC.9 \
sysctl.9 SYSCTL_QUAD.9 \
+ sysctl.9 SYSCTL_ROOT_NODE.9 \
sysctl.9 SYSCTL_STRING.9 \
sysctl.9 SYSCTL_STRUCT.9 \
sysctl.9 SYSCTL_UINT.9 \
sysctl.9 SYSCTL_ULONG.9 \
sysctl.9 SYSCTL_UQUAD.9
-MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_INT.9 \
- sysctl_add_oid.9 SYSCTL_ADD_LONG.9 \
- sysctl_add_oid.9 SYSCTL_ADD_NODE.9 \
- sysctl_add_oid.9 SYSCTL_ADD_OID.9 \
- sysctl_add_oid.9 SYSCTL_ADD_OPAQUE.9 \
- sysctl_add_oid.9 SYSCTL_ADD_PROC.9 \
- sysctl_add_oid.9 SYSCTL_ADD_QUAD.9 \
- sysctl_add_oid.9 SYSCTL_ADD_STRING.9 \
- sysctl_add_oid.9 SYSCTL_ADD_STRUCT.9 \
- sysctl_add_oid.9 SYSCTL_ADD_UINT.9 \
- sysctl_add_oid.9 SYSCTL_ADD_ULONG.9 \
- sysctl_add_oid.9 SYSCTL_ADD_UQUAD.9 \
- sysctl_add_oid.9 SYSCTL_CHILDREN.9 \
- sysctl_add_oid.9 sysctl_move_oid.9 \
+MLINKS+=sysctl_add_oid.9 sysctl_move_oid.9 \
sysctl_add_oid.9 sysctl_remove_oid.9 \
- sysctl_add_oid.9 SYSCTL_STATIC_CHILDREN.9
+ sysctl_add_oid.9 sysctl_remove_name.9
MLINKS+=sysctl_ctx_init.9 sysctl_ctx_entry_add.9 \
sysctl_ctx_init.9 sysctl_ctx_entry_del.9 \
sysctl_ctx_init.9 sysctl_ctx_entry_find.9 \
@@ -1387,6 +1538,7 @@ MLINKS+=taskqueue.9 TASK_INIT.9 \
taskqueue.9 TASK_INITIALIZER.9 \
taskqueue.9 taskqueue_block.9 \
taskqueue.9 taskqueue_cancel.9 \
+ taskqueue.9 taskqueue_cancel_timeout.9 \
taskqueue.9 taskqueue_create.9 \
taskqueue.9 taskqueue_create_fast.9 \
taskqueue.9 TASKQUEUE_DECLARE.9 \
@@ -1394,14 +1546,20 @@ MLINKS+=taskqueue.9 TASK_INIT.9 \
taskqueue.9 TASKQUEUE_DEFINE_THREAD.9 \
taskqueue.9 taskqueue_drain.9 \
taskqueue.9 taskqueue_drain_all.9 \
+ taskqueue.9 taskqueue_drain_timeout.9 \
taskqueue.9 taskqueue_enqueue.9 \
taskqueue.9 taskqueue_enqueue_fast.9 \
+ taskqueue.9 taskqueue_enqueue_timeout.9 \
taskqueue.9 TASKQUEUE_FAST_DEFINE.9 \
taskqueue.9 TASKQUEUE_FAST_DEFINE_THREAD.9 \
taskqueue.9 taskqueue_free.9 \
taskqueue.9 taskqueue_member.9 \
taskqueue.9 taskqueue_run.9 \
- taskqueue.9 taskqueue_unblock.9
+ taskqueue.9 taskqueue_set_callback.9 \
+ taskqueue.9 taskqueue_start_threads.9 \
+ taskqueue.9 taskqueue_start_threads_pinned.9 \
+ taskqueue.9 taskqueue_unblock.9 \
+ taskqueue.9 TIMEOUT_TASK_INIT.9
MLINKS+=time.9 boottime.9 \
time.9 time_second.9 \
time.9 time_uptime.9
@@ -1412,20 +1570,27 @@ MLINKS+=timeout.9 callout.9 \
timeout.9 callout_handle_init.9 \
timeout.9 callout_init.9 \
timeout.9 callout_init_mtx.9 \
+ timeout.9 callout_init_rm.9 \
timeout.9 callout_init_rw.9 \
timeout.9 callout_pending.9 \
timeout.9 callout_reset.9 \
+ timeout.9 callout_reset_curcpu.9 \
timeout.9 callout_reset_sbt.9 \
timeout.9 callout_reset_on.9 \
timeout.9 callout_reset_sbt_on.9 \
timeout.9 callout_schedule.9 \
+ timeout.9 callout_schedule_curcpu.9 \
+ timeout.9 callout_schedule_on.9 \
timeout.9 callout_stop.9 \
timeout.9 untimeout.9
-MLINKS+=ucred.9 crcopy.9 \
+MLINKS+=ucred.9 cred_update_thread.9 \
+ ucred.9 crcopy.9 \
+ ucred.9 crcopysafe.9 \
ucred.9 crdup.9 \
ucred.9 crfree.9 \
ucred.9 crget.9 \
ucred.9 crhold.9 \
+ ucred.9 crsetgroups.9 \
ucred.9 crshared.9 \
ucred.9 cru2x.9
MLINKS+=uidinfo.9 uifind.9 \
@@ -1572,6 +1737,7 @@ MLINKS+=vrele.9 vput.9 \
vrele.9 vunref.9
MLINKS+=vslock.9 vsunlock.9
MLINKS+=zone.9 uma.9 \
+ zone.9 uma_find_refcnt.9 \
zone.9 uma_zalloc.9 \
zone.9 uma_zalloc_arg.9 \
zone.9 uma_zcreate.9 \
@@ -1580,6 +1746,7 @@ MLINKS+=zone.9 uma.9 \
zone.9 uma_zfree_arg.9 \
zone.9 uma_zone_get_cur.9 \
zone.9 uma_zone_get_max.9 \
- zone.9 uma_zone_set_max.9
+ zone.9 uma_zone_set_max.9 \
+ zone.9 uma_zone_set_warning.9
.include <bsd.prog.mk>
diff --git a/share/man/man9/SDT.9 b/share/man/man9/SDT.9
index 91bf4b1..c65b824 100644
--- a/share/man/man9/SDT.9
+++ b/share/man/man9/SDT.9
@@ -24,13 +24,15 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 17, 2013
+.Dd September 18, 2014
.Dt SDT 9
.Os
.Sh NAME
.Nm SDT
.Nd a DTrace framework for adding statically-defined tracing probes
.Sh SYNOPSIS
+.In sys/param.h
+.In sys/queue.h
.In sys/sdt.h
.Fn SDT_PROVIDER_DECLARE prov
.Fn SDT_PROVIDER_DEFINE prov
diff --git a/share/man/man9/VOP_GETPAGES.9 b/share/man/man9/VOP_GETPAGES.9
index 7869d45..2cc5b7a 100644
--- a/share/man/man9/VOP_GETPAGES.9
+++ b/share/man/man9/VOP_GETPAGES.9
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 27, 2003
+.Dd September 12, 2014
.Dt VOP_GETPAGES 9
.Os
.Sh NAME
@@ -41,9 +41,9 @@
.In sys/vnode.h
.In vm/vm.h
.Ft int
-.Fn VOP_GETPAGES "struct vnode *vp" "vm_page_t *ma" "int count" "int reqpage" "vm_ooffset_t offset"
+.Fn VOP_GETPAGES "struct vnode *vp" "vm_page_t *ma" "int count" "int reqpage"
.Ft int
-.Fn VOP_PUTPAGES "struct vnode *vp" "vm_page_t *ma" "int count" "int sync" "int *rtvals" "vm_ooffset_t offset"
+.Fn VOP_PUTPAGES "struct vnode *vp" "vm_page_t *ma" "int count" "int sync" "int *rtvals"
.Sh DESCRIPTION
The
.Fn VOP_GETPAGES
@@ -81,8 +81,6 @@ page written by
.It Fa reqpage
The index in the page array of the requested page; i.e., the one page which
the implementation of this method must handle.
-.It Fa offset
-Offset in the file at which the mapped pages begin.
.El
.Pp
The status of the
@@ -156,7 +154,7 @@ is
.Sh SEE ALSO
.Xr vm_object_pip_wakeup 9 ,
.Xr vm_page_free 9 ,
-.Xr vm_pagge_sunbusy 9 ,
+.Xr vm_page_sunbusy 9 ,
.Xr vm_page_undirty 9 ,
.Xr vm_page_xunbusy 9 ,
.Xr vnode 9
diff --git a/share/man/man9/altq.9 b/share/man/man9/altq.9
index fd94404..e718027 100644
--- a/share/man/man9/altq.9
+++ b/share/man/man9/altq.9
@@ -256,7 +256,6 @@ still work with
struct mbuf *ifq_tail; | struct mbuf *ifq_tail;
int ifq_len; | int ifq_len;
int ifq_maxlen; | int ifq_maxlen;
- int ifq_drops; | int ifq_drops;
}; | /* driver queue fields */
| ......
| /* altq related fields */
diff --git a/share/man/man9/casuword.9 b/share/man/man9/casuword.9
new file mode 100644
index 0000000..34a0f1d
--- /dev/null
+++ b/share/man/man9/casuword.9
@@ -0,0 +1,95 @@
+.\" Copyright (c) 2014 The FreeBSD Foundation
+.\" All rights reserved.
+.\"
+.\" Part of this documentation was written by
+.\" Konstantin Belousov <kib@FreeBSD.org> under sponsorship
+.\" from the FreeBSD Foundation.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 21, 2014
+.Dt CASU 9
+.Os
+.Sh NAME
+.Nm casueword ,
+.Nm casueword32 ,
+.Nm casuword ,
+.Nm casuword32
+.Nd fetch, compare and store data from user-space
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft int
+.Fn casueword "volatile u_long *base" "u_long oldval" "u_long *oldvalp" "u_long newval"
+.Ft int
+.Fn casueword32 "volatile uint32_t *base" "uint32_t oldval" "uint32_t *oldvalp" "uint32_t newval"
+.Ft u_long
+.Fn casuword "volatile u_long *base" "u_long oldval" "u_long newval"
+.Ft uint32_t
+.Fn casuword32 "volatile uint32_t *base" "uint32_t oldval" "uint32_t newval"
+.Sh DESCRIPTION
+The
+.Nm
+functions are designed to perform atomic compare-and-swap operation on
+the value in the usermode memory of the current process.
+.Pp
+The
+.Nm
+routines reads the value from user memory with address
+.Pa base ,
+and compare the value read with
+.Pa oldval .
+If the values are equal,
+.Pa newval
+is written to the
+.Pa *base .
+In case of
+.Fn casueword32
+and
+.Fn casueword ,
+old value is stored into the (kernel-mode) variable pointed by
+.Pa *oldvalp .
+The userspace value must be naturally aligned.
+.Pp
+The callers of
+.Fn casuword
+and
+.Fn casuword32
+functions cannot distinguish between -1 read from
+userspace and function failure.
+.Sh RETURN VALUES
+The
+.Fn casuword
+and
+.Fn casuword32
+functions return the data fetched or -1 on failure.
+The
+.Fn casueword
+and
+.Fn casueword32
+functions return 0 on success and -1 on failure.
+.Sh SEE ALSO
+.Xr atomic 9 ,
+.Xr fetch 9 ,
+.Xr store 9
diff --git a/share/man/man9/domain.9 b/share/man/man9/domain.9
index 14ae52b..464274b 100644
--- a/share/man/man9/domain.9
+++ b/share/man/man9/domain.9
@@ -26,7 +26,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd December 7, 2012
+.Dd November 6, 2014
.Dt DOMAIN 9
.Os
.Sh NAME
@@ -82,10 +82,9 @@ struct domain {
(void **, int);
int (*dom_rtdetach) /* clean up routing table */
(void **, int);
- int dom_rtoffset; /* an arg to rtattach, in bits */
- int dom_maxrtkey; /* for routing layer */
void *(*dom_ifattach)(struct ifnet *);
void (*dom_ifdetach)(struct ifnet *, void *);
+ int (*dom_ifmtu)(struct ifnet *);
/* af-dependent data on ifnet */
};
.Ed
diff --git a/share/man/man9/fetch.9 b/share/man/man9/fetch.9
index ccf6866..1d46784 100644
--- a/share/man/man9/fetch.9
+++ b/share/man/man9/fetch.9
@@ -34,7 +34,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 5, 2009
+.Dd October 29, 2014
.Dt FETCH 9
.Os
.Sh NAME
@@ -44,43 +44,56 @@
.Nm fuword ,
.Nm fuword16 ,
.Nm fuword32 ,
-.Nm fuword64
+.Nm fuword64 ,
+.Nm fueword ,
+.Nm fueword32 ,
+.Nm fueword64
.Nd fetch data from user-space
.Sh SYNOPSIS
.In sys/types.h
-.In sys/time.h
.In sys/systm.h
.Ft int
-.Fn fubyte "const void *base"
+.Fn fubyte "volatile const void *base"
.Ft long
-.Fn fuword "const void *base"
+.Fn fuword "volatile const void *base"
.Ft int
-.Fn fuword16 "void *base"
+.Fn fuword16 "volatile const void *base"
.Ft int32_t
-.Fn fuword32 "const void *base"
+.Fn fuword32 "volatile const void *base"
.Ft int64_t
-.Fn fuword64 "const void *base"
+.Fn fuword64 "volatile const void *base"
+.Ft long
+.Fn fueword "volatile const void *base" "long *val"
+.Ft int32_t
+.Fn fueword32 "volatile const void *base" "int32_t *val"
+.Ft int64_t
+.Fn fueword64 "volatile const void *base" "int64_t *val"
.In sys/resourcevar.h
.Ft int
.Fn fuswintr "void *base"
.Sh DESCRIPTION
The
.Nm
-functions are designed to copy small amounts of data from user-space.
+functions are designed to copy small amounts of data from user-space
+of the current process.
+If read is successful, it is performed atomically.
+The data read must be naturally aligned.
.Pp
The
.Nm
routines provide the following functionality:
-.Bl -tag -width "fuswintr()"
+.Bl -tag -width "fueword32()"
.It Fn fubyte
Fetches a byte of data from the user-space address
.Pa base .
+The byte read is zero-extended into the results variable.
.It Fn fuword
-Fetches a word of data from the user-space address
+Fetches a word of data (long) from the user-space address
.Pa base .
.It Fn fuword16
Fetches 16 bits of data from the user-space address
.Pa base .
+The half-word read is zero-extended into the results variable.
.It Fn fuword32
Fetches 32 bits of data from the user-space address
.Pa base .
@@ -91,11 +104,46 @@ Fetches 64 bits of data from the user-space address
Fetches a short word of data from the user-space address
.Pa base .
This function is safe to call during an interrupt context.
+.It Fn fueword
+Fetches a word of data (long) from the user-space address
+.Pa base
+and stores the result in the variable pointed by
+.Pa val .
+.It Fn fueword32
+Fetches 32 bits of data from the user-space address
+.Pa base
+and stores the result in the variable pointed by
+.Pa val .
+.It Fn fueword64
+Fetches 64 bits of data from the user-space address
+.Pa base
+and stores the result in the variable pointed by
+.Pa val .
.El
+.Pp
+The callers of
+.Fn fuword ,
+.Fn fuword32
+and
+.Fn fuword64
+functions cannot distinguish between -1 read from
+userspace and function failure.
.Sh RETURN VALUES
The
-.Nm
+.Fn fubyte ,
+.Fn fuword ,
+.Fn fuword16 ,
+.Fn fuword32 ,
+.Fn fuword64 ,
+and
+.Fn fuswintr
functions return the data fetched or -1 on failure.
+The
+.Fn fueword ,
+.Fn fueword32
+and
+.Fn fueword64
+functions return 0 on success and -1 on failure.
.Sh SEE ALSO
.Xr copy 9 ,
.Xr store 9
diff --git a/share/man/man9/fpu_kern.9 b/share/man/man9/fpu_kern.9
index 207e5e8..748e6fc 100644
--- a/share/man/man9/fpu_kern.9
+++ b/share/man/man9/fpu_kern.9
@@ -23,7 +23,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 23, 2014
+.Dd October 23, 2014
.Dt FPU_KERN 9
.Os
.Sh NAME
@@ -157,12 +157,17 @@ There are no errors defined for the function, it always returns 0.
.Pp
The
.Fn fpu_kern_thread
-function provides an optimization for threads which never leave to
+function enables an optimization for threads which never leave to
the usermode.
-Such thread can reuse the usermode save area for the FPU state,
-which is allowed by the function call.
-There is no flags defined for the function, and no error states
+The current thread will reuse the usermode save area for the kernel FPU state
+instead of requiring an explicitly allocated context.
+There are no flags defined for the function, and no error states
that the function returns.
+Once this function has been called, neither
+.Fn fpu_kern_enter
+nor
+.Fn fpu_kern_leave
+is required to be called and the fpu is available for use in the calling thread.
.Pp
The
.Fn is_fpu_kern_thread
diff --git a/share/man/man9/hash.9 b/share/man/man9/hash.9
index 7e48da9..961be0b5 100644
--- a/share/man/man9/hash.9
+++ b/share/man/man9/hash.9
@@ -26,7 +26,7 @@
.\" $OpenBSD: hash.9,v 1.5 2003/04/17 05:08:39 jmc Exp $
.\" $FreeBSD$
.\"
-.Dd September 4, 2012
+.Dd October 18, 2014
.Dt HASH 9
.Os
.Sh NAME
@@ -37,8 +37,10 @@
.Nm hash32_strn ,
.Nm hash32_stre ,
.Nm hash32_strne ,
+.Nm jenkins_hash ,
.Nm jenkins_hash32 ,
-.Nm jenkins_hash
+.Nm murmur3_32_hash ,
+.Nm murmur3_32_hash32
.Nd general kernel hashing functions
.Sh SYNOPSIS
.In sys/hash.h
@@ -56,6 +58,10 @@
.Fn jenkins_hash "const void *buf" "size_t len" "uint32_t hash"
.Ft uint32_t
.Fn jenkins_hash32 "const uint32_t *buf" "size_t count" "uint32_t hash"
+.Ft uint32_t
+.Fn murmur3_32_hash "const void *buf" "size_t len" "uint32_t hash"
+.Ft uint32_t
+.Fn murmur3_32_hash32 "const uint32_t *buf" "size_t count" "uint32_t hash"
.Sh DESCRIPTION
The
.Fn hash32
@@ -130,6 +136,16 @@ sized arrays, thus is simplier and faster.
It accepts an array of
.Ft uint32_t
values in its first argument and size of this array in the second argument.
+.Pp
+The
+.Fn murmur3_32_hash
+and
+.Fn murmur3_32_hash32
+functions are similar to
+.Fn jenkins_hash
+and
+.Fn jenkins_hash32 ,
+but implement the 32-bit version of MurmurHash3.
.Sh RETURN VALUES
The
.Fn hash32
@@ -185,6 +201,10 @@ The
.Nm jenkins_hash
functions were added in
.Fx 10.0 .
+The
+.Nm murmur3_32_hash
+functions were added in
+.Fx 10.1 .
.Sh AUTHORS
The
.Nm hash32
@@ -192,5 +212,9 @@ functions were written by
.An Tobias Weingartner .
The
.Nm jenkins_hash
-functions was written by
-Bob Jenkins .
+functions were written by
+.An Bob Jenkins .
+The
+.Nm murmur3_32_hash
+functions were written by
+.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org .
diff --git a/share/man/man9/ifnet.9 b/share/man/man9/ifnet.9
index 29df470..7aef4de 100644
--- a/share/man/man9/ifnet.9
+++ b/share/man/man9/ifnet.9
@@ -28,7 +28,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd November 5, 2013
+.Dd July 29, 2014
.Dt IFNET 9
.Os
.Sh NAME
@@ -77,9 +77,9 @@
.Ft "struct ifaddr *"
.Fn ifa_ifwithaddr "struct sockaddr *addr"
.Ft "struct ifaddr *"
-.Fn ifa_ifwithdstaddr "struct sockaddr *addr"
+.Fn ifa_ifwithdstaddr "struct sockaddr *addr" "int fib"
.Ft "struct ifaddr *"
-.Fn ifa_ifwithnet "struct sockaddr *addr" "int ignore_ptp"
+.Fn ifa_ifwithnet "struct sockaddr *addr" "int ignore_ptp" "int fib"
.Ft "struct ifaddr *"
.Fn ifaof_ifpforaddr "struct sockaddr *addr" "struct ifnet *ifp"
.Ft void
@@ -1084,10 +1084,6 @@ address in the route table.
.It Va ifa_refcnt
.Pq Vt short
The reference count.
-.It Va ifa_metric
-.Pq Vt int
-A metric associated with this interface address, for the use of some
-external routing protocol.
.El
.Pp
References to
@@ -1393,7 +1389,16 @@ returns an interface address for a point-to-point interface whose
remote
.Pq Dq destination
address is
-.Fa addr .
+.Fa addr
+and a fib is
+.Fa fib .
+If
+.Fa fib
+is
+.Dv RT_ALL_FIBS ,
+then the first interface address matching
+.Fa addr
+will be returned.
.Pp
.Fn ifa_ifwithnet
returns the most specific interface address which matches the
@@ -1405,7 +1410,10 @@ address whose remote address is
if one is found.
If
.Fa ignore_ptp
-is true, skip point-to-point interface addresses.
+is true, skip point-to-point interface addresses. The
+.Fa fib
+parameter is handled the same way as by
+.Fn ifa_ifwithdstaddr .
.Pp
.Fn ifaof_ifpforaddr
returns the most specific address configured on interface
diff --git a/share/man/man9/kernel_mount.9 b/share/man/man9/kernel_mount.9
index 10fb353..873f522 100644
--- a/share/man/man9/kernel_mount.9
+++ b/share/man/man9/kernel_mount.9
@@ -194,7 +194,7 @@ must come in pairs, e.g.,
.Ed
.Sh SEE ALSO
.Xr VFS 9 ,
-.Xr VFS_MOUNT 9 ,
+.Xr VFS_MOUNT 9
.Sh HISTORY
The
.Fn kernel_mount
diff --git a/share/man/man9/lock.9 b/share/man/man9/lock.9
index 22fa2f7..2c874f2 100644
--- a/share/man/man9/lock.9
+++ b/share/man/man9/lock.9
@@ -26,7 +26,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 6, 2013
+.Dd November 2, 2014
.Dt LOCK 9
.Os
.Sh NAME
@@ -145,7 +145,7 @@ Their arguments are:
A pointer to the lock to manipulate.
.It Fa flags
Flags indicating what action is to be taken.
-.Bl -tag -width ".Dv LK_CANRECURSE"
+.Bl -tag -width ".Dv LK_NODDLKTREAT"
.It Dv LK_SHARED
Acquire a shared lock.
If an exclusive lock is currently held,
@@ -199,6 +199,29 @@ Allow recursion on an exclusive lock.
For every lock there must be a release.
.It Dv LK_INTERLOCK
Unlock the interlock (which should be locked already).
+.It Dv LK_NODDLKTREAT
+Normally,
+.Fn lockmgr
+postpones serving further shared requests for shared-locked lock if there is
+exclusive waiter, to avoid exclusive lock starvation.
+But, if the thread requesting the shared lock already owns a shared lockmgr
+lock, the request is granted even in presence of the parallel exclusive lock
+request, which is done to avoid deadlocks with recursive shared acquisition.
+.Pp
+The
+.Dv LK_NODDLKTREAT
+flag can only be used by code which requests shared non-recursive lock.
+The flag allows exclusive requests to preempt the current shared request
+even if the current thread owns shared locks.
+This is safe since shared lock is guaranteed to not recurse, and is used
+when thread is known to held unrelated shared locks, to not cause
+unneccessary starvation. An example is
+.Dv vp
+locking in VFS
+.Xr lookup 9 ,
+when
+.Dv dvp
+is already locked.
.El
.It Fa ilk
An interlock mutex for controlling group access to the lock.
diff --git a/share/man/man9/mbuf.9 b/share/man/man9/mbuf.9
index 8b01b77..6edbf44 100644
--- a/share/man/man9/mbuf.9
+++ b/share/man/man9/mbuf.9
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 5, 2014
+.Dd October 21, 2014
.Dt MBUF 9
.Os
.\"
@@ -355,7 +355,7 @@ developer with common utilities.
Convert an
.Fa mbuf
pointer to a data pointer.
-The macro expands to the data pointer cast to the pointer of the specified
+The macro expands to the data pointer cast to the specified
.Fa type .
.Sy Note :
It is advisable to ensure that there is enough contiguous data in
@@ -738,15 +738,16 @@ the offset in the data region of the
to the data contained in the returned mbuf is stored in
.Fa *offsetp .
If
-.Fa offp
+.Fa offsetp
is NULL, the region may be accessed using
.Fn mtod mbuf type .
If
-.Fa offp
+.Fa offsetp
is non-NULL, the region may be accessed using
-.Fn mtod mbuf uint8_t + *offsetp .
+.Fn mtod mbuf uint8_t
++ *offsetp.
The region of the mbuf chain between its beginning and
-.Fa off
+.Fa offset
is not modified, therefore it is safe to hold pointers to data within
this region before calling
.Fn m_pulldown .
diff --git a/share/man/man9/pmap.9 b/share/man/man9/pmap.9
index 63b8f2a..5d31780 100644
--- a/share/man/man9/pmap.9
+++ b/share/man/man9/pmap.9
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 18, 2014
+.Dd August 3, 2014
.Dt PMAP 9
.Os
.Sh NAME
@@ -89,7 +89,6 @@ operation.
.Sh SEE ALSO
.Xr pmap 9 ,
.Xr pmap_activate 9 ,
-.Xr pmap_change_wiring 9 ,
.Xr pmap_clear_modify 9 ,
.Xr pmap_copy 9 ,
.Xr pmap_copy_page 9 ,
diff --git a/share/man/man9/pmap_unwire.9 b/share/man/man9/pmap_unwire.9
index 8451383..964eff9 100644
--- a/share/man/man9/pmap_unwire.9
+++ b/share/man/man9/pmap_unwire.9
@@ -40,7 +40,6 @@
.Fa "pmap_t pmap" "vm_offset_t start" "vm_offset_t end"
.Fc
.Sh DESCRIPTION
-.Pp
The function
.Fn pmap_unwire
removes the wired attribute from each of the virtual-to-physical page mappings
diff --git a/share/man/man9/sleepqueue.9 b/share/man/man9/sleepqueue.9
index 8557b9f..7f6269b 100644
--- a/share/man/man9/sleepqueue.9
+++ b/share/man/man9/sleepqueue.9
@@ -23,7 +23,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 19, 2013
+.Dd September 22, 2014
.Dt SLEEPQUEUE 9
.Os
.Sh NAME
@@ -32,8 +32,6 @@
.Nm sleepq_add ,
.Nm sleepq_alloc ,
.Nm sleepq_broadcast ,
-.Nm sleepq_calc_signal_retval ,
-.Nm sleepq_catch_signals ,
.Nm sleepq_free ,
.Nm sleepq_lock ,
.Nm sleepq_lookup ,
@@ -62,10 +60,6 @@
.Fn sleepq_alloc "void"
.Ft int
.Fn sleepq_broadcast "void *wchan" "int flags" "int pri" "int queue"
-.Ft int
-.Fn sleepq_calc_signal_retval "int sig"
-.Ft int
-.Fn sleepq_catch_signals "void *wchan"
.Ft void
.Fn sleepq_free "struct sleepqueue *sq"
.Ft struct sleepqueue *
@@ -86,15 +80,15 @@
.Ft u_int
.Fn sleepq_sleepcnt "void *wchan" "int queue"
.Ft int
-.Fn sleepq_timedwait "void *wchan"
+.Fn sleepq_timedwait "void *wchan" "int pri"
.Ft int
-.Fn sleepq_timedwait_sig "void *wchan" "int signal_caught"
+.Fn sleepq_timedwait_sig "void *wchan" "int pri"
.Ft int
.Fn sleepq_type "void *wchan"
.Ft void
-.Fn sleepq_wait "void *wchan"
+.Fn sleepq_wait "void *wchan" "int pri"
.Ft int
-.Fn sleepq_wait_sig "void *wchan"
+.Fn sleepq_wait_sig "void *wchan" "int pri"
.Sh DESCRIPTION
Sleep queues provide a mechanism for suspending execution of a thread until
some condition is met.
@@ -252,17 +246,6 @@ allows to pass additional
.Fn callout_reset_sbt
flags.
.Pp
-The current thread may be marked interruptible by calling
-.Fn sleepq_catch_signals
-with
-.Fa wchan
-set to the wait channel.
-This function returns a signal number if there are any pending signals for
-the current thread and 0 if there is not a pending signal.
-The sleep queue chain associated with argument
-.Fa wchan
-should have been locked by a prior call to
-.Fn sleepq_lock .
.Pp
Once the thread is ready to suspend,
one of the wait functions is called to put the current thread to sleep
@@ -289,12 +272,9 @@ The sleep queue chain associated with argument
needs to have been locked with a prior call to
.Fn sleepq_lock .
The
-.Fa signal_caught
-parameter to
-.Fn sleepq_timedwait_sig
-specifies if a previous call to
-.Fn sleepq_catch_signals
-found a pending signal.
+.Fa pri
+argument is used to set the priority of the thread when it is awakened.
+If it is set to zero, the thread's priority is left alone.
.Pp
When the thread is resumed,
the wait functions return a non-zero value if the thread was awakened due to
@@ -304,20 +284,6 @@ If the sleep timed out, then
is returned.
If the sleep was interrupted by something other than a signal,
then some other return value will be returned.
-If zero is returned after resuming from an interruptible sleep,
-then
-.Fn sleepq_calc_signal_retval
-should be called to determine if the sleep was interrupted by a signal.
-If so,
-.Fn sleepq_calc_signal_retval
-returns
-.Er ERESTART
-if the interrupting signal is restartable and
-.Er EINTR
-otherwise.
-If the sleep was not interrupted by a signal,
-.Fn sleepq_calc_signal_retval
-will return 0.
.Pp
A sleeping thread is normally resumed by the
.Fn sleepq_broadcast
diff --git a/share/man/man9/store.9 b/share/man/man9/store.9
index d333eff..cc442f2 100644
--- a/share/man/man9/store.9
+++ b/share/man/man9/store.9
@@ -34,7 +34,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 5, 2009
+.Dd October 29, 2014
.Dt STORE 9
.Os
.Sh NAME
@@ -48,15 +48,15 @@
.In sys/time.h
.In sys/systm.h
.Ft int
-.Fn subyte "void *base" "int byte"
+.Fn subyte "volatile void *base" "int byte"
.Ft int
-.Fn suword "void *base" "long word"
+.Fn suword "volatile void *base" "long word"
.Ft int
-.Fn suword16 "void *base" "int word"
+.Fn suword16 "volatile void *base" "int word"
.Ft int
-.Fn suword32 "void *base" "int32_t word"
+.Fn suword32 "volatile void *base" "int32_t word"
.Ft int
-.Fn suword64 "void *base" "int64_t word"
+.Fn suword64 "volatile void *base" "int64_t word"
.In sys/resourcevar.h
.Ft int
.Fn suswintr "void *base" "int word"
@@ -64,6 +64,8 @@
The
.Nm
functions are designed to copy small amounts of data to user-space.
+If write is successful, it is performed atomically.
+The data written must be naturally aligned.
.Pp
The
.Nm
diff --git a/share/man/man9/sysctl.9 b/share/man/man9/sysctl.9
index b9a9fe5..cdf0592 100644
--- a/share/man/man9/sysctl.9
+++ b/share/man/man9/sysctl.9
@@ -25,79 +25,429 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 12, 2013
+.Dd October 20, 2014
.Dt SYSCTL 9
.Os
.Sh NAME
.Nm SYSCTL_DECL ,
+.Nm SYSCTL_ADD_INT ,
+.Nm SYSCTL_ADD_LONG ,
+.Nm SYSCTL_ADD_NODE ,
+.Nm SYSCTL_ADD_OPAQUE ,
+.Nm SYSCTL_ADD_PROC ,
+.Nm SYSCTL_ADD_QUAD ,
+.Nm SYSCTL_ADD_ROOT_NODE ,
+.Nm SYSCTL_ADD_STRING ,
+.Nm SYSCTL_ADD_STRUCT ,
+.Nm SYSCTL_ADD_UAUTO ,
+.Nm SYSCTL_ADD_UINT ,
+.Nm SYSCTL_ADD_ULONG ,
+.Nm SYSCTL_ADD_UQUAD ,
+.Nm SYSCTL_CHILDREN ,
+.Nm SYSCTL_STATIC_CHILDREN ,
+.Nm SYSCTL_NODE_CHILDREN ,
+.Nm SYSCTL_PARENT ,
.Nm SYSCTL_INT ,
.Nm SYSCTL_LONG ,
.Nm SYSCTL_NODE ,
.Nm SYSCTL_OPAQUE ,
.Nm SYSCTL_PROC ,
.Nm SYSCTL_QUAD ,
+.Nm SYSCTL_ROOT_NODE ,
.Nm SYSCTL_STRING ,
.Nm SYSCTL_STRUCT ,
.Nm SYSCTL_UINT ,
.Nm SYSCTL_ULONG ,
.Nm SYSCTL_UQUAD
-.Nd Static sysctl declaration functions
+.Nd Dynamic and static sysctl MIB creation functions
.Sh SYNOPSIS
.In sys/types.h
.In sys/sysctl.h
.Fn SYSCTL_DECL name
-.Fn SYSCTL_INT parent nbr name access ptr val descr
-.Fn SYSCTL_LONG parent nbr name access ptr val descr
-.Fn SYSCTL_NODE parent nbr name access handler descr
-.Fn SYSCTL_OPAQUE parent nbr name access ptr len fmt descr
-.Fn SYSCTL_PROC parent nbr name access ptr arg handler fmt descr
-.Fn SYSCTL_QUAD parent nbr name access ptr val descr
-.Fn SYSCTL_STRING parent nbr name access arg len descr
-.Fn SYSCTL_STRUCT parent nbr name access ptr type descr
-.Fn SYSCTL_UINT parent nbr name access ptr val descr
-.Fn SYSCTL_ULONG parent nbr name access ptr val descr
-.Fn SYSCTL_UQUAD parent nbr name access ptr val descr
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_INT
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "int *ptr"
+.Fa "intptr_t val"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_LONG
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "long *ptr"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_NODE
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "int (*handler)(SYSCTL_HANDLER_ARGS)"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_OPAQUE
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "void *ptr"
+.Fa "intptr_t len"
+.Fa "const char *format"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_PROC
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "void *arg1"
+.Fa "intptr_t arg2"
+.Fa "int (*handler) (SYSCTL_HANDLERARGS)"
+.Fa "const char *format"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_QUAD
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "quad_t *ptr"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_ROOT_NODE
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "int (*handler)(SYSCTL_HANDLER_ARGS)"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_STRING
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "char *ptr"
+.Fa "intptr_t len"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_STRUCT
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "void *ptr"
+.Fa struct_type
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_UINT
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "unsigned int *ptr"
+.Fa "intptr_t val"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_ULONG
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "unsigned long *ptr"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_UQUAD
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "u_quad_t *ptr"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_UAUTO
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int ctlflags"
+.Fa "void *ptr"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid_list *
+.Fo SYSCTL_CHILDREN
+.Fa "struct sysctl_oid *oidp"
+.Fc
+.Ft struct sysctl_oid_list *
+.Fo SYSCTL_STATIC_CHILDREN
+.Fa "struct sysctl_oid_list OID_NAME"
+.Fc
+.Ft struct sysctl_oid_list *
+.Fo SYSCTL_NODE_CHILDREN
+.Fa "parent"
+.Fa "name"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_PARENT
+.Fa "struct sysctl_oid *oid"
+.Fc
+.Fn SYSCTL_INT parent number name ctlflags ptr val descr
+.Fn SYSCTL_LONG parent number name ctlflags ptr val descr
+.Fn SYSCTL_NODE parent number name ctlflags handler descr
+.Fn SYSCTL_OPAQUE parent number name ctlflags ptr len format descr
+.Fn SYSCTL_PROC parent number name ctlflags arg1 arg2 handler format descr
+.Fn SYSCTL_QUAD parent number name ctlflags ptr val descr
+.Fn SYSCTL_STRING parent number name ctlflags arg len descr
+.Fn SYSCTL_STRUCT parent number name ctlflags ptr struct_type descr
+.Fn SYSCTL_ROOT_NODE number name ctlflags handler descr
+.Fn SYSCTL_UINT parent number name ctlflags ptr val descr
+.Fn SYSCTL_ULONG parent number name ctlflags ptr val descr
+.Fn SYSCTL_UQUAD parent number name ctlflags ptr val descr
.Sh DESCRIPTION
The
.Nm SYSCTL
-kernel interfaces allow code to statically declare
+kernel interface allows dynamic or static creation of
.Xr sysctl 8
-MIB entries, which will be initialized when the kernel module containing the
-declaration is initialized.
-When the module is unloaded, the sysctl will be automatically destroyed.
-.Pp
-Sysctl nodes are created in a hierarchical tree, with all static nodes being
-represented by named C data structures; in order to create a new node under
-an existing node in the tree, the structure representing the desired parent
-node must be declared in the current context using
-.Fn SYSCTL_DECL .
-.Pp
-New nodes are declared using one of
+MIB entries.
+All static sysctls are automatically destroyed when the module which
+they are part of is unloaded.
+Most top level categories are created statically and are available to
+all kernel code and its modules.
+.Sh DESCRIPTION OF ARGUMENTS
+.Bl -tag -width ctlflags
+.It Fa ctx
+Pointer to sysctl context or NULL, if no context.
+See
+.Xr sysctl_ctx_init 9
+for how to create a new sysctl context.
+Programmers are strongly advised to use contexts to organize the
+dynamic OIDs which they create because when a context is destroyed all
+belonging sysctls are destroyed as well.
+This makes the sysctl cleanup code much simpler.
+Else deletion of all created OIDs is required at module unload.
+.It Fa parent
+A pointer to a
+.Li struct sysctl_oid_list ,
+which is the head of the parent's list of children.
+This pointer is retrieved using the
+.Fn SYSCTL_STATIC_CHILDREN
+macro for static sysctls and the
+.Fn SYSCTL_CHILDREN
+macro for dynamic sysctls.
+The
+.Fn SYSCTL_PARENT
+macro can be used to get the parent of an OID.
+The macro returns NULL if there is no parent.
+.It Fa number
+The OID number that will be assigned to this OID.
+In almost all cases this should be set to
+.Dv OID_AUTO ,
+which will result in the assignment of the next available OID number.
+.It Fa name
+The name of the OID.
+The newly created OID will contain a copy of the name.
+.It Fa ctlflags
+A bit mask of sysctl control flags.
+See the section below describing all the control flags.
+.It Fa arg1
+First callback argument for procedure sysctls.
+.It Fa arg2
+Second callback argument for procedure sysctls.
+.It Fa len
+The length of the data pointed to by the
+.Fa ptr
+argument.
+For string type OIDs a length of zero means that
+.Xr strlen 3
+will be used to get the length of the string at each access to the OID.
+.It Fa ptr
+Pointer to sysctl variable or string data.
+For sysctl values the pointer can be SYSCTL_NULL_XXX_PTR which means the OID is read-only and the returned value should be taken from the
+.Fa val
+argument.
+.It Fa val
+If the
+.Fa ptr
+argument is SYSCTL_NULL_XXX_PTR, gives the constant value returned by this OID.
+Else this argument is not used.
+.It Fa struct_type
+Name of structure type.
+.It Fa handler
+A pointer to the function
+that is responsible for handling read and write requests
+to this OID.
+There are several standard handlers
+that support operations on nodes,
+integers, strings and opaque objects.
+It is possible to define custom handlers using the
+.Fn SYSCTL_PROC
+macro or the
+.Fn SYSCTL_ADD_PROC
+function.
+.It Fa format
+A pointer to a string
+which specifies the format of the OID in a symbolic way.
+This format is used as a hint by
+.Xr sysctl 8
+to apply proper data formatting for display purposes.
+Currently used format names are:
+.Dq N
+for node,
+.Dq A
+for
+.Li "char *" ,
+.Dq I
+for
+.Li "int" ,
+.Dq IU
+for
+.Li "unsigned int" ,
+.Dq L
+for
+.Li "long" ,
+.Dq LU
+for
+.Li "unsigned long" ,
+.Dq Q
+for
+.Li "quad_t" ,
+.Dq QU
+for
+.Li "u_quad_t"
+and
+.Dq S,TYPE
+for
+.Li "struct TYPE"
+structures.
+.It Fa descr
+A pointer to a textual description of the OID.
+.El
+.Sh CREATING ROOT NODES
+Sysctl MIBs or OIDs are created in a hierarchical tree.
+The nodes at the bottom of the tree are called root nodes, and have no
+parent OID.
+To create bottom tree nodes the
+.Fn SYSCTL_ROOT_NODE
+macro or the
+.Fn SYSCTL_ADD_ROOT_NODE
+function needs to be used.
+By default all static sysctl node OIDs are global and need a
+.Fn SYSCTL_DECL
+statement prior to their
+.Fn SYSCTL_NODE
+definition statement, typically in a so-called header file.
+.Sh CREATING SYSCTL STRINGS
+Zero terminated character strings sysctls are created either using the
+.Fn SYSCTL_STRING
+macro or the
+.Fn SYSCTL_ADD_STRING
+function.
+If the
+.Fa len
+argument in zero, the string length is computed at every access to the OID using
+.Xr strlen 3 .
+.Sh CREATING OPAQUE SYSCTLS
+The
+.Fn SYSCTL_OPAQUE
+or
+.Fn SYSCTL_STRUCT
+macros or the
+.Fn SYSCTL_ADD_OPAQUE
+or
+.Fn SYSCTL_ADD_STRUCT
+functions create an OID that handle any chunk of data
+of the size specified by the
+.Fa len
+argument and data pointed to by the
+.Fa ptr
+argument.
+When using the structure version the type is encoded as part of the
+created sysctl.
+.Sh CREATING CUSTOM SYSCTLS
+The
+.Fn SYSCTL_PROC
+macro and the
+.Fn SYSCTL_ADD_PROC
+function
+create OIDs with the specified
+.Pa handler
+function.
+The handler is responsible for handling all read and write requests to
+the OID.
+This OID type is especially useful if the kernel data is not easily
+accessible, or needs to be processed before exporting.
+.Sh CREATING A STATIC SYSCTL
+Static sysctls are declared using one of the
.Fn SYSCTL_INT ,
.Fn SYSCTL_LONG ,
.Fn SYSCTL_NODE ,
.Fn SYSCTL_OPAQUE ,
.Fn SYSCTL_PROC ,
.Fn SYSCTL_QUAD ,
+.Fn SYSCTL_ROOT_NODE ,
.Fn SYSCTL_STRING ,
.Fn SYSCTL_STRUCT ,
.Fn SYSCTL_UINT ,
-.Fn SYSCTL_ULONG ,
-and
-.Fn SYSCTL_UQUAD .
-Each macro accepts a parent name, as declared using
-.Fn SYSCTL_DECL ,
-an OID number, typically
-.Dv OID_AUTO ,
-a node name, a set of control and access flags, and a description.
-Depending on the macro, a pointer to a variable supporting the MIB entry, a
-size, a value, and a function pointer implementing the MIB entry may also be
-present.
-.Pp
-For most of the above macros, declaring a type as part of the access flags is
-not necessary \[em] however, when declaring a sysctl implemented by a function,
-including a type in the access mask is required:
-.Bl -tag -width ".Dv CTLTYPE_STRING"
+.Fn SYSCTL_ULONG
+or
+.Fn SYSCTL_UQUAD
+macros.
+.Sh CREATING A DYNAMIC SYSCTL
+Dynamic nodes are created using one of the
+.Fn SYSCTL_ADD_INT ,
+.Fn SYSCTL_ADD_LONG ,
+.Fn SYSCTL_ADD_NODE ,
+.Fn SYSCTL_ADD_OPAQUE ,
+.Fn SYSCTL_ADD_PROC ,
+.Fn SYSCTL_ADD_QUAD ,
+.Fn SYSCTL_ADD_ROOT_NODE ,
+.Fn SYSCTL_ADD_STRING ,
+.Fn SYSCTL_ADD_STRUCT ,
+.Fn SYSCTL_ADD_UAUTO ,
+.Fn SYSCTL_ADD_UINT ,
+.Fn SYSCTL_ADD_ULONG ,
+or
+.Fn SYSCTL_UQUAD
+functions.
+See
+.Xr sysctl_remove_oid 9
+or
+.Xr sysctl_ctx_free 9
+for more information on how to destroy a dynamically created OID.
+.Sh CONTROL FLAGS
+For most of the above functions and macros, declaring a type as part
+of the access flags is not necessary \[em] however, when declaring a
+sysctl implemented by a function, including a type in the access mask
+is required:
+.Bl -tag -width ".Dv CTLTYPE_NOFETCH"
.It Dv CTLTYPE_NODE
This is a node intended to be a parent for other nodes.
.It Dv CTLTYPE_INT
@@ -127,13 +477,21 @@ flags to be set indicating the read and write disposition of the sysctl:
.It Dv CTLFLAG_RD
This is a read-only sysctl.
.It Dv CTLFLAG_RDTUN
-This is a read-only sysctl which can be set by a system tunable.
+This is a read-only sysctl and tunable which is tried fetched once
+from the system enviroment early during module load or system boot.
.It Dv CTLFLAG_WR
This is a writable sysctl.
.It Dv CTLFLAG_RW
This sysctl is readable and writable.
.It Dv CTLFLAG_RWTUN
-This sysctl is readable and writable and can also be set by a system tunable.
+This is a readable and writeable sysctl and tunable which is tried
+fetched once from the system enviroment early during module load or
+system boot.
+.It Dv CTLFLAG_NOFETCH
+In case the node is marked as a tunable using the CTLFLAG_[XX]TUN,
+this flag will prevent fetching the initial value from the system
+environment. Typically this flag should only be used for very early
+low level system setup code, and not by common drivers and modules.
.El
.Pp
Additionally, any of the following optional flags may also be specified:
@@ -150,49 +508,12 @@ This sysctl can be written to by processes in
When iterating the sysctl name space, do not list this sysctl.
.It Dv CTLFLAG_TUN
Advisory flag that a system tunable also exists for this variable.
-.El
-.Pp
-When creating new sysctls, careful attention should be paid to the security
-implications of the monitoring or management interface being created.
-Most sysctls present in the kernel are read-only or writable only by the
-superuser.
-Sysctls exporting extensive information on system data structures and
-operation, especially those implemented using procedures, will wish to
-implement access control to limit the undesired exposure of information about
-other processes, network connections, etc.
-.Pp
-The following top level sysctl name spaces are commonly used:
-.Bl -tag -width ".Va regression"
-.It Va compat
-Compatibility layer information.
-.It Va debug
-Debugging information.
-Various name spaces exist under
-.Va debug .
-.It Va hw
-Hardware and device driver information.
-.It Va kern
-Kernel behavior tuning; generally deprecated in favor of more specific
-name spaces.
-.It Va machdep
-Machine-dependent configuration parameters.
-.It Va net
-Network subsystem.
-Various protocols have name spaces under
-.Va net .
-.It Va regression
-Regression test configuration and information.
-.It Va security
-Security and security-policy configuration and information.
-.It Va sysctl
-Reserved name space for the implementation of sysctl.
-.It Va user
-Configuration settings relating to user application behavior.
-Generally, configuring applications using kernel sysctls is discouraged.
-.It Va vfs
-Virtual file system configuration and information.
-.It Va vm
-Virtual memory subsystem configuration and information.
+The initial sysctl value is tried fetched once from the system
+enviroment early during module load or system boot.
+.It Dv CTLFLAG_DYN
+Dynamically created OIDs automatically get this flag set.
+.It Dv CTLFLAG_VNET
+OID references a VIMAGE-enabled variable.
.El
.Sh EXAMPLES
Sample use of
@@ -208,10 +529,10 @@ Examples of integer, opaque, string, and procedure sysctls follow:
.Bd -literal -offset indent
/*
* Example of a constant integer value. Notice that the control
- * flags are CTLFLAG_RD, the variable pointer is NULL, and the
- * value is declared.
+ * flags are CTLFLAG_RD, the variable pointer is SYSCTL_NULL_INT_PTR,
+ * and the value is declared.
*/
-SYSCTL_INT(_debug_sizeof, OID_AUTO, bio, CTLFLAG_RD, NULL,
+SYSCTL_INT(_debug_sizeof, OID_AUTO, bio, CTLFLAG_RD, SYSCTL_NULL_INT_PTR,
sizeof(struct bio), "sizeof(struct bio)");
/*
@@ -252,6 +573,45 @@ SYSCTL_PROC(_kern_timecounter, OID_AUTO, hardware, CTLTYPE_STRING |
CTLFLAG_RW, NULL, 0, sysctl_kern_timecounter_hardware, "A",
"");
.Ed
+.Pp
+The following is an example of
+how to create a new top-level category
+and how to hook up another subtree to an existing static node.
+This example does not use contexts,
+which results in tedious management of all intermediate oids,
+as they need to be freed later on:
+.Bd -literal -offset indent
+#include <sys/sysctl.h>
+ ...
+/*
+ * Need to preserve pointers to newly created subtrees,
+ * to be able to free them later:
+ */
+static struct sysctl_oid *root1;
+static struct sysctl_oid *root2;
+static struct sysctl_oid *oidp;
+static int a_int;
+static char *string = "dynamic sysctl";
+ ...
+
+root1 = SYSCTL_ADD_ROOT_NODE(NULL,
+ OID_AUTO, "newtree", CTLFLAG_RW, 0, "new top level tree");
+oidp = SYSCTL_ADD_INT(NULL, SYSCTL_CHILDREN(root1),
+ OID_AUTO, "newint", CTLFLAG_RW, &a_int, 0, "new int leaf");
+ ...
+root2 = SYSCTL_ADD_NODE(NULL, SYSCTL_STATIC_CHILDREN(_debug),
+ OID_AUTO, "newtree", CTLFLAG_RW, 0, "new tree under debug");
+oidp = SYSCTL_ADD_STRING(NULL, SYSCTL_CHILDREN(root2),
+ OID_AUTO, "newstring", CTLFLAG_RD, string, 0, "new string leaf");
+.Ed
+.Pp
+This example creates the following subtrees:
+.Bd -literal -offset indent
+debug.newtree.newstring
+newtree.newint
+.Ed
+.Pp
+.Em "Care should be taken to free all OIDs once they are no longer needed!"
.Sh SYSCTL NAMING
When adding, modifying, or removing sysctl names, it is important to be
aware that these interfaces may be used by users, libraries, applications,
@@ -281,8 +641,8 @@ Use positive logic instead:
.Va foobar ,
.Va foobar_enable .
.Pp
-A temporary sysctl node that should not be relied upon must be designated
-as such by a leading underscore character in its name. For example:
+A temporary sysctl node OID that should not be relied upon must be designated
+as such by a leading underscore character in its name. For example:
.Va _dirty_hack .
.Sh SEE ALSO
.Xr sysctl 3 ,
@@ -309,3 +669,46 @@ addition of MIB nodes.
.Pp
This man page was written by
.An Robert N. M. Watson .
+.Sh SECURITY CONSIDERATIONS
+When creating new sysctls, careful attention should be paid to the security
+implications of the monitoring or management interface being created.
+Most sysctls present in the kernel are read-only or writable only by the
+superuser.
+Sysctls exporting extensive information on system data structures and
+operation, especially those implemented using procedures, will wish to
+implement access control to limit the undesired exposure of information about
+other processes, network connections, etc.
+.Pp
+The following top level sysctl name spaces are commonly used:
+.Bl -tag -width ".Va regression"
+.It Va compat
+Compatibility layer information.
+.It Va debug
+Debugging information.
+Various name spaces exist under
+.Va debug .
+.It Va hw
+Hardware and device driver information.
+.It Va kern
+Kernel behavior tuning; generally deprecated in favor of more specific
+name spaces.
+.It Va machdep
+Machine-dependent configuration parameters.
+.It Va net
+Network subsystem.
+Various protocols have name spaces under
+.Va net .
+.It Va regression
+Regression test configuration and information.
+.It Va security
+Security and security-policy configuration and information.
+.It Va sysctl
+Reserved name space for the implementation of sysctl.
+.It Va user
+Configuration settings relating to user application behavior.
+Generally, configuring applications using kernel sysctls is discouraged.
+.It Va vfs
+Virtual file system configuration and information.
+.It Va vm
+Virtual memory subsystem configuration and information.
+.El
diff --git a/share/man/man9/sysctl_add_oid.9 b/share/man/man9/sysctl_add_oid.9
index 5f67552..e2c75e8 100644
--- a/share/man/man9/sysctl_add_oid.9
+++ b/share/man/man9/sysctl_add_oid.9
@@ -27,13 +27,14 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 12, 2013
+.Dd August 28, 2014
.Dt SYSCTL_ADD_OID 9
.Os
.Sh NAME
.Nm sysctl_add_oid ,
.Nm sysctl_move_oid ,
-.Nm sysctl_remove_oid
+.Nm sysctl_remove_oid ,
+.Nm sysctl_remove_name
.Nd runtime sysctl tree manipulation
.Sh SYNOPSIS
.In sys/types.h
@@ -46,7 +47,7 @@
.Fa "const char *name"
.Fa "int kind"
.Fa "void *arg1"
-.Fa "int arg2"
+.Fa "intptr_t arg2"
.Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
.Fa "const char *format"
.Fa "const char *descr"
@@ -62,160 +63,23 @@
.Fa "int del"
.Fa "int recurse"
.Fc
-.Ft struct sysctl_oid_list *
-.Fo SYSCTL_CHILDREN
+.Ft int
+.Fo sysctl_remove_name
.Fa "struct sysctl_oid *oidp"
-.Fc
-.Ft struct sysctl_oid_list *
-.Fo SYSCTL_STATIC_CHILDREN
-.Fa "struct sysctl_oid_list OID_NAME"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_OID
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int kind"
-.Fa "void *arg1"
-.Fa "int arg2"
-.Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
-.Fa "const char *format"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_NODE
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_STRING
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "char *arg"
-.Fa "int len"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_INT
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "int *arg"
-.Fa "int len"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_UINT
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "unsigned int *arg"
-.Fa "int len"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_LONG
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "long *arg"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_ULONG
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "unsigned long *arg"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_QUAD
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "int64_t *arg"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_UQUAD
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "uint64_t *arg"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_OPAQUE
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
.Fa "const char *name"
-.Fa "int access"
-.Fa "void *arg"
-.Fa "int len"
-.Fa "const char *format"
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_STRUCT
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "void *arg"
-.Fa STRUCT_NAME
-.Fa "const char *descr"
-.Fc
-.Ft struct sysctl_oid *
-.Fo SYSCTL_ADD_PROC
-.Fa "struct sysctl_ctx_list *ctx"
-.Fa "struct sysctl_oid_list *parent"
-.Fa "int number"
-.Fa "const char *name"
-.Fa "int access"
-.Fa "void *arg1"
-.Fa "int arg2"
-.Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
-.Fa "const char *format"
-.Fa "const char *descr"
+.Fa "int del"
+.Fa "int recurse"
.Fc
.Sh DESCRIPTION
-These functions and macros provide an interface
-for creating and deleting sysctl oids at runtime
-(e.g.\& during lifetime of a module).
-The alternative method,
-based on linker sets (see
-.In sys/linker_set.h
-and
-.\" XXX Manual pages should avoid referencing source files
-.Pa src/sys/kern/kern_sysctl.c
-for details), only allows creation and deletion
-on module load and unload respectively.
+These functions provide the interface for creating and deleting sysctl
+OIDs at runtime for example during the lifetime of a module.
+The wrapper macros defined by
+.Xr sysctl 9
+are recommended when creating new OIDs.
+.Fn sysctl_add_oid
+should not be called directly from the code.
.Pp
-Dynamic oids of type
+Dynamic OIDs of type
.Dv CTLTYPE_NODE
are reusable
so that several code sections can create and delete them,
@@ -227,170 +91,51 @@ to create partially overlapping trees that they both can use.
It is not possible to create overlapping leaves,
nor to create different child types with the same name and parent.
.Pp
-Newly created oids are connected to their parent nodes.
-In all these functions and macros
-(with the exception of
-.Fn sysctl_remove_oid ) ,
-one of the required parameters is
-.Fa parent ,
-which points to the head of the parent's list of children.
-.Pp
-Most top level categories are created statically.
-When connecting to existing static oids,
-this pointer can be obtained with the
-.Fn SYSCTL_STATIC_CHILDREN
-macro, where the
-.Fa OID_NAME
-argument is name of the parent oid of type
-.Dv CTLTYPE_NODE
-(i.e., the name displayed by
-.Xr sysctl 8 ,
-preceded by underscore, and with all dots replaced with underscores).
-.Pp
-When connecting to an existing dynamic oid, this pointer
-can be obtained with the
-.Fn SYSCTL_CHILDREN
-macro, where the
-.Fa oidp
-argument points to the parent oid of type
-.Dv CTLTYPE_NODE .
-.Pp
The
.Fn sysctl_add_oid
-function creates raw oids of any type.
-If the oid is successfully created,
-the function returns a pointer to it;
-otherwise it returns
+function creates a raw OID of any type and connects it to its parent node, if any.
+If the OID is successfully created,
+the function returns a pointer to it else
+it returns
.Dv NULL .
Many of the arguments for
.Fn sysctl_add_oid
-are common to the macros.
-The arguments are as follows:
-.Bl -tag -width handler
-.It Fa ctx
-A pointer to an optional sysctl context, or
-.Dv NULL .
-See
-.Xr sysctl_ctx_init 9
-for details.
-Programmers are strongly advised to use contexts
-to organize the dynamic oids which they create,
-unless special creation and deletion sequences are required.
-If
-.Fa ctx
-is not
-.Dv NULL ,
-the newly created oid will be added to this context
-as its first entry.
-.It Fa parent
-A pointer to a
-.Li struct sysctl_oid_list ,
-which is the head of the parent's list of children.
-.It Fa number
-The oid number that will be assigned to this oid.
-In almost all cases this should be set to
-.Dv OID_AUTO ,
-which will result in the assignment of the next available oid number.
-.It Fa name
-The name of the oid.
-The newly created oid will contain a copy of the name.
-.It Fa kind
-The kind of oid,
-specified as a bit mask of the type and access values defined in the
-.In sys/sysctl.h
-header file.
-Oids created dynamically always have the
-.Dv CTLFLAG_DYN
-flag set.
-Access flags specify whether this oid is read-only or read-write,
-and whether it may be modified by all users
-or by the superuser only.
-.It Fa arg1
-A pointer to any data that the oid should reference, or
-.Dv NULL .
-.It Fa arg2
-The size of
-.Fa arg1 ,
-or 0 if
-.Fa arg1
-is
-.Dv NULL .
-.It Fa handler
-A pointer to the function
-that is responsible for handling read and write requests
-to this oid.
-There are several standard handlers
-that support operations on nodes,
-integers, strings and opaque objects.
-It is possible also to define new handlers using the
-.Fn SYSCTL_ADD_PROC
-macro.
-.It Fa format
-A pointer to a string
-which specifies the format of the oid symbolically.
-This format is used as a hint by
-.Xr sysctl 8
-to apply proper data formatting for display purposes.
-Currently used format names are:
-.Dq N
-for node,
-.Dq A
-for
-.Li "char *" ,
-.Dq I
-for
-.Li "int" ,
-.Dq IU
-for
-.Li "unsigned int" ,
-.Dq L
-for
-.Li "long" ,
-.Dq LU
-for
-.Li "unsigned long"
-and
-.Dq S,TYPE
-for
-.Li "struct TYPE"
-structures.
-.It Fa descr
-A pointer to a textual description of the oid.
-.El
+are common to the wrapper macros defined by
+.Xr sysctl 9 .
.Pp
The
.Fn sysctl_move_oid
-function reparents an existing oid.
-The oid is assigned a new number as if it had been created with
+function reparents an existing OID.
+The OID is assigned a new number as if it had been created with
.Fa number
set to
.Dv OID_AUTO .
.Pp
The
.Fn sysctl_remove_oid
-function removes a dynamically created oid from the tree,
+function removes a dynamically created OID from the tree and
optionally freeing its resources.
It takes the following arguments:
.Bl -tag -width recurse
.It Fa oidp
-A pointer to the dynamic oid to be removed.
-If the oid is not dynamic, or the pointer is
+A pointer to the dynamic OID to be removed.
+If the OID is not dynamic, or the pointer is
.Dv NULL ,
the function returns
.Er EINVAL .
.It Fa del
If non-zero,
.Fn sysctl_remove_oid
-will try to free the oid's resources
-when the reference count of the oid becomes zero.
+will try to free the OID's resources
+when the reference count of the OID becomes zero.
However, if
.Fa del
is set to 0,
-the routine will only deregister the oid from the tree,
+the routine will only deregister the OID from the tree,
without freeing its resources.
This behaviour is useful when the caller expects to rollback
(possibly partially failed)
-deletion of many oids later.
+deletion of many OIDs later.
.It Fa recurse
If non-zero, attempt to remove the node and all its children.
If
@@ -412,112 +157,29 @@ Be aware, though, that this may result in a system
if other code sections continue to use removed subtrees.
.El
.Pp
-.\" XXX sheldonh finished up to here
-Again, in most cases the programmer should use contexts,
+The
+.Fn sysctl_remove_name
+function looks up the child node matching the
+.Fa name
+argument and then invokes the
+.Fn sysctl_remove_oid
+function on that node, passing along the
+.Fa del
+and
+.Fa recurse
+arguments.
+If a node having the specified name does not exist an error code of
+.Er ENOENT
+is returned.
+Else the error code from
+.Fn sysctl_remove_oid
+is returned.
+.Pp
+In most cases the programmer should use contexts,
as described in
.Xr sysctl_ctx_init 9 ,
-to keep track of created oids,
+to keep track of created OIDs,
and to delete them later in orderly fashion.
-.Pp
-There is a set of macros defined
-that helps to create oids of given type.
-They are as follows:
-.Bl -tag -width SYSCTL_ADD_STRINGXX
-.It Fn SYSCTL_ADD_OID
-creates a raw oid.
-This macro is functionally equivalent to the
-.Fn sysctl_add_oid
-function.
-.It Fn SYSCTL_ADD_NODE
-creates an oid of type
-.Dv CTLTYPE_NODE ,
-to which child oids may be added.
-.It Fn SYSCTL_ADD_STRING
-creates an oid that handles a zero-terminated character string.
-.It Fn SYSCTL_ADD_INT
-creates an oid that handles an
-.Li int
-variable.
-.It Fn SYSCTL_ADD_UINT
-creates an oid that handles an
-.Li unsigned int
-variable.
-.It Fn SYSCTL_ADD_LONG
-creates an oid that handles a
-.Li long
-variable.
-.It Fn SYSCTL_ADD_ULONG
-creates an oid that handles an
-.Li unsigned long
-variable.
-.It Fn SYSCTL_ADD_QUAD
-creates an oid that handles an
-.Li int64_t
-variable.
-.It Fn SYSCTL_ADD_OPAQUE
-creates an oid that handles any chunk of opaque data
-of the size specified by the
-.Fa len
-argument,
-which is a pointer to a
-.Li "size_t *" .
-.It Fn SYSCTL_ADD_STRUCT
-creates an oid that handles a
-.Li "struct TYPE"
-structure.
-The
-.Fa format
-parameter will be set to
-.Dq S,TYPE
-to provide proper hints to the
-.Xr sysctl 8
-utility.
-.It Fn SYSCTL_ADD_PROC
-creates an oid with the specified
-.Pa handler
-function.
-The handler is responsible for handling read and write requests
-to the oid.
-This oid type is especially useful
-if the kernel data is not easily accessible,
-or needs to be processed before exporting.
-.El
-.Sh EXAMPLES
-The following is an example of
-how to create a new top-level category
-and how to hook up another subtree to an existing static node.
-This example does not use contexts,
-which results in tedious management of all intermediate oids,
-as they need to be freed later on:
-.Bd -literal
-#include <sys/sysctl.h>
- ...
-/* Need to preserve pointers to newly created subtrees, to be able
- * to free them later.
- */
-struct sysctl_oid *root1, *root2, *oidp;
-int a_int;
-char *string = "dynamic sysctl";
- ...
-
-root1 = SYSCTL_ADD_NODE( NULL, SYSCTL_STATIC_CHILDREN(/* tree top */),
- OID_AUTO, "newtree", CTLFLAG_RW, 0, "new top level tree");
-oidp = SYSCTL_ADD_INT( NULL, SYSCTL_CHILDREN(root1),
- OID_AUTO, "newint", CTLFLAG_RW, &a_int, 0, "new int leaf");
- ...
-root2 = SYSCTL_ADD_NODE( NULL, SYSCTL_STATIC_CHILDREN(_debug),
- OID_AUTO, "newtree", CTLFLAG_RW, 0, "new tree under debug");
-oidp = SYSCTL_ADD_STRING( NULL, SYSCTL_CHILDREN(root2),
- OID_AUTO, "newstring", CTLFLAG_RD, string, 0, "new string leaf");
-.Ed
-.Pp
-This example creates the following subtrees:
-.Bd -literal -offset indent
-debug.newtree.newstring
-newtree.newint
-.Ed
-.Pp
-.Em "Care should be taken to free all oids once they are no longer needed!"
.Sh SEE ALSO
.Xr sysctl 8 ,
.Xr sysctl 9 ,
@@ -532,9 +194,9 @@ These functions first appeared in
Sharing nodes between many code sections
causes interdependencies that sometimes may lock the resources.
For example,
-if module A hooks up a subtree to an oid created by module B,
-module B will be unable to delete that oid.
+if module A hooks up a subtree to an OID created by module B,
+module B will be unable to delete that OID.
These issues are handled properly by sysctl contexts.
.Pp
Many operations on the tree involve traversing linked lists.
-For this reason, oid creation and removal is relatively costly.
+For this reason, OID creation and removal is relatively costly.
diff --git a/share/man/man9/sysctl_ctx_init.9 b/share/man/man9/sysctl_ctx_init.9
index b3c0d3b..28c7b93 100644
--- a/share/man/man9/sysctl_ctx_init.9
+++ b/share/man/man9/sysctl_ctx_init.9
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 15, 2000
+.Dd July 31, 2014
.Dt SYSCTL_CTX_INIT 9
.Os
.Sh NAME
@@ -36,7 +36,7 @@
.Nm sysctl_ctx_entry_add ,
.Nm sysctl_ctx_entry_find ,
.Nm sysctl_ctx_entry_del
-.Nd "sysctl context for managing dynamically created sysctl oids"
+.Nd "sysctl context for managing dynamically created sysctl OIDs"
.Sh SYNOPSIS
.In sys/types.h
.In sys/sysctl.h
@@ -65,10 +65,10 @@
.Fc
.Sh DESCRIPTION
These functions provide an interface
-for managing dynamically created oids.
-The sysctl context is responsible for keeping track of created oids,
+for managing dynamically created OIDs.
+The sysctl context is responsible for keeping track of created OIDs,
as well as their proper removal when needed.
-It adds a simple transactional aspect to oid removal operations;
+It adds a simple transactional aspect to OID removal operations;
i.e., if a removal operation fails part way,
it is possible to roll back the sysctl tree
to its previous state.
@@ -87,7 +87,7 @@ a pointer to the context can be passed as an argument to all the
.Fa SYSCTL_ADD_*
macros (see
.Xr sysctl_add_oid 9 ) ,
-and it will be updated with entries pointing to newly created oids.
+and it will be updated with entries pointing to newly created OIDS.
.Pp
Internally, the context is represented as a
.Xr queue 3
@@ -104,14 +104,14 @@ struct sysctl_ctx_entry {
TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry);
.Ed
.Pp
-Each context entry points to one dynamic oid that it manages.
-Newly created oids are always inserted in the front of the list.
+Each context entry points to one dynamic OID that it manages.
+Newly created OIDs are always inserted in the front of the list.
.Pp
The
.Fn sysctl_ctx_free
-function removes the context and associated oids it manages.
+function removes the context and associated OIDs it manages.
If the function completes successfully,
-all managed oids have been unregistered
+all managed OIDs have been unregistered
(removed from the tree)
and freed,
together with all their allocated memory,
@@ -127,34 +127,34 @@ If there are no errors during this step,
.Fn sysctl_ctx_free
proceeds to the next step.
If the first step fails,
-all unregistered oids associated with the context are registered again.
+all unregistered OIDs associated with the context are registered again.
.Pp
.Em Note :
in most cases, the programmer specifies
.Dv OID_AUTO
-as the oid number when creating an oid.
-However, during registration of the oid in the tree,
+as the OID number when creating an OID.
+However, during registration of the OID in the tree,
this number is changed to the first available number
greater than or equal to
.Dv CTL_AUTO_START .
If the first step of context deletion fails,
-re-registration of the oid does not change the already assigned oid number
+re-registration of the OID does not change the already assigned OID number
(which is different from OID_AUTO).
This ensures that re-registered entries
maintain their original positions in the tree.
.Pp
-The second step actually performs the deletion of the dynamic oids.
+The second step actually performs the deletion of the dynamic OIDs.
.Xr sysctl_remove_oid 9
iterates through the context list,
starting from beginning (i.e., the newest entries).
.Em Important :
-this time, the function not only deletes the oids from the tree,
+this time, the function not only deletes the OIDs from the tree,
but also frees their memory (provided that oid_refcnt == 0),
as well as the memory of all context entries.
.Pp
The
.Fn sysctl_ctx_entry_add
-function allows the addition of an existing dynamic oid to a context.
+function allows the addition of an existing dynamic OID to a context.
.Pp
The
.Fn sysctl_ctx_entry_del
@@ -166,7 +166,7 @@ is freed, but the
.Fa oidp
pointer remains intact.
Thereafter, the programmer is responsible for managing the resources
-allocated to this oid.
+allocated to this OID.
.Pp
The
.Fn sysctl_ctx_entry_find
@@ -181,18 +181,18 @@ or
.Sh EXAMPLES
The following is an example of how to create a new top-level category
and how to hook up another subtree to an existing static node.
-This example uses contexts to keep track of the oids.
+This example uses contexts to keep track of the OIDs.
.Bd -literal
#include <sys/sysctl.h>
...
-struct sysctl_ctx_list clist;
-struct sysctl_oid *oidp;
-int a_int;
-const char *string = "dynamic sysctl";
+static struct sysctl_ctx_list clist;
+static struct sysctl_oid *oidp;
+static int a_int;
+static const char *string = "dynamic sysctl";
...
sysctl_ctx_init(&clist);
-oidp = SYSCTL_ADD_NODE(&clist, SYSCTL_STATIC_CHILDREN(/* tree top */),
+oidp = SYSCTL_ADD_ROOT_NODE(&clist,
OID_AUTO, "newtree", CTLFLAG_RW, 0, "new top level tree");
oidp = SYSCTL_ADD_INT(&clist, SYSCTL_CHILDREN(oidp),
OID_AUTO, "newint", CTLFLAG_RW, &a_int, 0, "new int leaf");
@@ -202,9 +202,9 @@ oidp = SYSCTL_ADD_NODE(&clist, SYSCTL_STATIC_CHILDREN(_debug),
oidp = SYSCTL_ADD_STRING(&clist, SYSCTL_CHILDREN(oidp),
OID_AUTO, "newstring", CTLFLAG_RD, string, 0, "new string leaf");
...
-/* Now we can free up the oids */
+/* Now we can free up the OIDs */
if (sysctl_ctx_free(&clist)) {
- printf("can't free this context - other oids depend on it");
+ printf("can't free this context - other OIDs depend on it");
return (ENOTEMPTY);
} else {
printf("Success!\\n");
@@ -237,7 +237,7 @@ These functions first appeared in
.Sh BUGS
The current removal algorithm is somewhat heavy.
In the worst case,
-all oids need to be unregistered, registered again,
+all OIDs need to be unregistered, registered again,
and then unregistered and deleted.
However, the algorithm does guarantee transactional properties
for removal operations.
diff --git a/share/man/man9/timeout.9 b/share/man/man9/timeout.9
index 7d97db6..fad8690 100644
--- a/share/man/man9/timeout.9
+++ b/share/man/man9/timeout.9
@@ -29,31 +29,31 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 17, 2014
+.Dd October 8, 2014
.Dt TIMEOUT 9
.Os
.Sh NAME
-.Nm timeout ,
-.Nm untimeout ,
+.Nm callout_active ,
+.Nm callout_deactivate ,
+.Nm callout_drain ,
.Nm callout_handle_init ,
.Nm callout_init ,
.Nm callout_init_mtx ,
.Nm callout_init_rm ,
.Nm callout_init_rw ,
-.Nm callout_stop ,
-.Nm callout_drain ,
+.Nm callout_pending ,
.Nm callout_reset ,
-.Nm callout_reset_on ,
.Nm callout_reset_curcpu ,
+.Nm callout_reset_on ,
.Nm callout_reset_sbt ,
-.Nm callout_reset_sbt_on ,
.Nm callout_reset_sbt_curcpu ,
+.Nm callout_reset_sbt_on ,
.Nm callout_schedule ,
-.Nm callout_schedule_on ,
.Nm callout_schedule_curcpu ,
-.Nm callout_pending ,
-.Nm callout_active ,
-.Nm callout_deactivate
+.Nm callout_schedule_on ,
+.Nm callout_stop ,
+.Nm timeout ,
+.Nm untimeout
.Nd execute a function after a specified length of time
.Sh SYNOPSIS
.In sys/types.h
@@ -61,331 +61,357 @@
.Bd -literal
typedef void timeout_t (void *);
.Ed
-.Ft struct callout_handle
-.Fn timeout "timeout_t *func" "void *arg" "int ticks"
+.Ft int
+.Fn callout_active "struct callout *c"
+.Ft void
+.Fn callout_deactivate "struct callout *c"
+.Ft int
+.Fn callout_drain "struct callout *c"
.Ft void
.Fn callout_handle_init "struct callout_handle *handle"
.Bd -literal
struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle);
.Ed
.Ft void
-.Fn untimeout "timeout_t *func" "void *arg" "struct callout_handle handle"
-.Ft void
.Fn callout_init "struct callout *c" "int mpsafe"
.Ft void
.Fn callout_init_mtx "struct callout *c" "struct mtx *mtx" "int flags"
-.Fn void
+.Ft void
.Fn callout_init_rm "struct callout *c" "struct rmlock *rm" "int flags"
.Ft void
.Fn callout_init_rw "struct callout *c" "struct rwlock *rw" "int flags"
.Ft int
-.Fn callout_stop "struct callout *c"
-.Ft int
-.Fn callout_drain "struct callout *c"
+.Fn callout_pending "struct callout *c"
.Ft int
.Fn callout_reset "struct callout *c" "int ticks" "timeout_t *func" "void *arg"
.Ft int
+.Fn callout_reset_curcpu "struct callout *c" "int ticks" "timeout_t *func" \
+"void *arg"
+.Ft int
.Fn callout_reset_on "struct callout *c" "int ticks" "timeout_t *func" \
"void *arg" "int cpu"
.Ft int
+.Fn callout_reset_sbt "struct callout *c" "sbintime_t sbt" \
+"sbintime_t pr" "timeout_t *func" "void *arg" "int flags"
+.Ft int
+.Fn callout_reset_sbt_curcpu "struct callout *c" "sbintime_t sbt" \
+"sbintime_t pr" "timeout_t *func" "void *arg" "int flags"
+.Ft int
.Fn callout_reset_sbt_on "struct callout *c" "sbintime_t sbt" \
"sbintime_t pr" "timeout_t *func" "void *arg" "int cpu" "int flags"
.Ft int
-.Fn callout_reset_curcpu "struct callout *c" "int ticks" "timeout_t *func" \
-"void *arg"
-.Ft int
.Fn callout_schedule "struct callout *c" "int ticks"
.Ft int
-.Fn callout_schedule_on "struct callout *c" "int ticks" "int cpu"
-.Ft int
.Fn callout_schedule_curcpu "struct callout *c" "int ticks"
.Ft int
-.Fn callout_pending "struct callout *c"
+.Fn callout_schedule_on "struct callout *c" "int ticks" "int cpu"
.Ft int
-.Fn callout_active "struct callout *c"
-.Fn callout_deactivate "struct callout *c"
-.Sh DESCRIPTION
-The function
-.Fn timeout
-schedules a call to the function given by the argument
-.Fa func
-to take place after
-.Fa ticks Ns No /hz
-seconds.
-Non-positive values of
-.Fa ticks
-are silently converted to the value
-.Sq 1 .
-.Fa func
-should be a pointer to a function that takes a
-.Fa void *
-argument.
-Upon invocation,
-.Fa func
-will receive
-.Fa arg
-as its only argument.
-The return value from
-.Fn timeout
-is a
+.Fn callout_stop "struct callout *c"
.Ft struct callout_handle
-which can be used in conjunction with the
-.Fn untimeout
-function to request that a scheduled timeout be canceled.
+.Fn timeout "timeout_t *func" "void *arg" "int ticks"
+.Ft void
+.Fn untimeout "timeout_t *func" "void *arg" "struct callout_handle handle"
+.Sh DESCRIPTION
The
-.Fn timeout
-call is the old style and new code should use the
-.Fn callout_*
-functions.
+.Nm callout
+API is used to schedule a call to an arbitrary function at a specific
+time in the future.
+Consumers of this API are required to allocate a callout structure
+.Pq struct callout
+for each pending function invocation.
+This structure stores state about the pending function invocation including
+the function to be called and the time at which the function should be invoked.
+Pending function calls can be cancelled or rescheduled to a different time.
+In addition,
+a callout structure may be reused to schedule a new function call after a
+scheduled call is completed.
.Pp
-The function
-.Fn callout_handle_init
-can be used to initialize a handle to a state which will cause
-any calls to
-.Fn untimeout
-with that handle to return with no side
-effects.
+Callouts only provide a single-shot mode.
+If a consumer requires a periodic timer,
+it must explicitly reschedule each function call.
+This is normally done by rescheduling the subsequent call within the called
+function.
.Pp
-Assigning a callout handle the value of
-.Fn CALLOUT_HANDLE_INITIALIZER
-performs the same function as
-.Fn callout_handle_init
-and is provided for use on statically declared or global callout handles.
+Callout functions must not sleep.
+They may not acquire sleepable locks,
+wait on condition variables,
+perform blocking allocation requests,
+or invoke any other action that might sleep.
.Pp
-The function
-.Fn untimeout
-cancels the timeout associated with
-.Fa handle
-using the
-.Fa func
-and
-.Fa arg
-arguments to validate the handle.
-If the handle does not correspond to a timeout with
-the function
-.Fa func
-taking the argument
-.Fa arg
-no action is taken.
-.Fa handle
-must be initialized by a previous call to
-.Fn timeout ,
-.Fn callout_handle_init ,
-or assigned the value of
-.Fn CALLOUT_HANDLE_INITIALIZER "&handle"
-before being passed to
-.Fn untimeout .
-The behavior of calling
-.Fn untimeout
-with an uninitialized handle
-is undefined.
-The
-.Fn untimeout
-call is the old style and new code should use the
-.Fn callout_*
-functions.
-.Pp
-As handles are recycled by the system, it is possible (although unlikely)
-that a handle from one invocation of
-.Fn timeout
-may match the handle of another invocation of
-.Fn timeout
-if both calls used the same function pointer and argument, and the first
-timeout is expired or canceled before the second call.
-The timeout facility offers O(1) running time for
-.Fn timeout
-and
-.Fn untimeout .
-Timeouts are executed from
-.Fn softclock
-with the
-.Va Giant
-lock held.
-Thus they are protected from re-entrancy.
-.Pp
-The functions
+Each callout structure must be initialized by
.Fn callout_init ,
.Fn callout_init_mtx ,
.Fn callout_init_rm ,
-.Fn callout_init_rw ,
-.Fn callout_stop ,
-.Fn callout_drain ,
-.Fn callout_reset
-and
-.Fn callout_schedule
-are low-level routines for clients who wish to allocate their own
-callout structures.
-.Pp
-The function
-.Fn callout_init
-initializes a callout so it can be passed to
-.Fn callout_stop ,
-.Fn callout_drain ,
-.Fn callout_reset
or
-.Fn callout_schedule
-without any side effects.
+.Fn callout_init_rw
+before it is passed to any of the other callout functions.
+The
+.Fn callout_init
+function initializes a callout structure in
+.Fa c
+that is not associated with a specific lock.
If the
.Fa mpsafe
argument is zero,
the callout structure is not considered to be
.Dq multi-processor safe ;
-that is,
-the Giant lock will be acquired before calling the callout function,
+and the Giant lock will be acquired before calling the callout function
and released when the callout function returns.
.Pp
The
-.Fn callout_init_mtx
-function may be used as an alternative to
-.Fn callout_init .
-The parameter
-.Fa mtx
-specifies a mutex that is to be acquired by the callout subsystem
-before calling the callout function, and released when the callout
-function returns.
-The following
-.Fa flags
-may be specified:
-.Bl -tag -width ".Dv CALLOUT_RETURNUNLOCKED"
-.It Dv CALLOUT_RETURNUNLOCKED
-The callout function will release
-.Fa mtx
-itself, so the callout subsystem should not attempt to unlock it
-after the callout function returns.
-.El
-.Pp
-The
+.Fn callout_init_mtx ,
+.Fn callout_init_rm ,
+and
.Fn callout_init_rw
-and the
-.Fn callout_init_rm
-fuctions serve the need of using rwlocks and rmlocks in conjunction
-with callouts.
-The functions do the same as
-.Fn callout_init
-with the possibility of specifying an extra
-.Fa rw
+functions initialize a callout structure in
+.Fa c
+that is associated with a specific lock.
+The lock is specified by the
+.Fa mtx ,
+.Fa rm ,
or
-.Fa rm
-argument.
-If an
-.Fa rm
-argument is specified, the lock should be created without passing the
+.Fa rw
+parameter.
+The associated lock must be held while stopping or rescheduling the
+callout.
+The callout subsystem acquires the associated lock before calling the
+callout function and releases it after the function returns.
+If the callout was cancelled while the callout subsystem waited for the
+associated lock,
+the callout function is not called,
+and the associated lock is released.
+This ensures that stopping or rescheduling the callout will abort any
+previously scheduled invocation.
+.Pp
+Only regular mutexes may be used with
+.Fn callout_init_mtx ;
+spin mutexes are not supported.
+A sleepable read-mostly lock
+.Po
+one initialized with the
.Dv RM_SLEEPABLE
-flag.
-The usable lock classes are currently limited to mutexes, rwlocks and
-non-sleepable rmlocks, because callout handlers run in softclock swi,
-so they cannot sleep nor acquire sleepable locks like sx or lockmgr.
-The following
+flag
+.Pc
+may not be used with
+.Fn callout_init_rm .
+Similarly, other sleepable lock types such as
+.Xr sx 9
+and
+.Xr lockmgr 9
+cannot be used with callouts because sleeping is not permitted in
+the callout subsystem.
+.Pp
+These
.Fa flags
-may be specified:
-.Bl -tag -width ".Dv CALLOUT_SHAREDLOCK"
+may be specified for
+.Fn callout_init_mtx ,
+.Fn callout_init_rm ,
+or
+.Fn callout_init_rw :
+.Bl -tag -width ".Dv CALLOUT_RETURNUNLOCKED"
+.It Dv CALLOUT_RETURNUNLOCKED
+The callout function will release the associated lock itself,
+so the callout subsystem should not attempt to unlock it
+after the callout function returns.
.It Dv CALLOUT_SHAREDLOCK
The lock is only acquired in read mode when running the callout handler.
-It has no effects when used in conjunction with
-.Fa mtx .
+This flag is ignored by
+.Fn callout_init_mtx .
.El
.Pp
The function
.Fn callout_stop
-cancels a callout if it is currently pending.
+cancels a callout
+.Fa c
+if it is currently pending.
If the callout is pending, then
.Fn callout_stop
-will return a non-zero value.
-If the callout is not set, has already been serviced or is currently
-being serviced, then zero will be returned.
-If the callout has an associated mutex, then that mutex must be
-held when this function is called.
+returns a non-zero value.
+If the callout is not set,
+has already been serviced,
+or is currently being serviced,
+then zero will be returned.
+If the callout has an associated lock,
+then that lock must be held when this function is called.
.Pp
The function
.Fn callout_drain
is identical to
.Fn callout_stop
-except that it will wait for the callout to be completed if it is
-already in progress.
+except that it will wait for the callout
+.Fa c
+to complete if it is already in progress.
This function MUST NOT be called while holding any
locks on which the callout might block, or deadlock will result.
Note that if the callout subsystem has already begun processing this
-callout, then the callout function may be invoked during the execution of
-.Fn callout_drain .
+callout, then the callout function may be invoked before
+.Fn callout_drain
+returns.
However, the callout subsystem does guarantee that the callout will be
fully stopped before
.Fn callout_drain
returns.
.Pp
-The function
-.Fn callout_reset
-first performs the equivalent of
-.Fn callout_stop
-to disestablish the callout, and then establishes a new callout in the
-same manner as
-.Fn timeout .
-If there was already a pending callout and it was rescheduled, then
-.Fn callout_reset
-will return a non-zero value.
-If the callout has an associated mutex, then that mutex must be
-held when this function is called.
-The function
-.Fn callout_schedule
-(re)schedules an existing callout for a new period of time;
-it is equivalent to calling
-.Fn callout_reset
-with the
-.Fa func
-and
-.Fa arg
-parameters extracted from the callout structure (though possibly with
-lower overhead).
-.Pp
-The functions
-.Fn callout_reset_on
-and
-.Fn callout_schedule_on
-are equivalent to
+The
.Fn callout_reset
and
.Fn callout_schedule
-but take an extra parameter specifying the target CPU for the callout.
+function families schedule a future function invocation for callout
+.Fa c .
+If
+.Fa c
+already has a pending callout,
+it is cancelled before the new invocation is scheduled.
+These functions return a non-zero value if a pending callout was cancelled
+and zero if there was no pending callout.
+If the callout has an associated lock,
+then that lock must be held when any of these functions are called.
.Pp
-The function
-.Fn callout_reset_sbt_on
-allows to get higher time resolution, taking relative or absolute time
-and precision instead of relative ticks count.
-If specified time is in past, it will be silently converted to present
-to run handler as soon as possible.
+The time at which the callout function will be invoked is determined by
+either the
+.Fa ticks
+argument or the
+.Fa sbt ,
+.Fa pr ,
+and
+.Fa flags
+arguments.
+When
+.Fa ticks
+is used,
+the callout is scheduled to execute after
+.Fa ticks Ns No /hz
+seconds.
+Non-positive values of
+.Fa ticks
+are silently converted to the value
+.Sq 1 .
.Pp
-The following
+The
+.Fa sbt ,
+.Fa pr ,
+and
+.Fa flags
+arguments provide more control over the scheduled time including
+support for higher resolution times,
+specifying the precision of the scheduled time,
+and setting an absolute deadline instead of a relative timeout.
+The callout is scheduled to execute in a time window which begins at
+the time specified in
+.Fa sbt
+and extends for the amount of time specified in
+.Fa pr .
+If
+.Fa sbt
+specifies a time in the past,
+the window is adjusted to start at the current time.
+A non-zero value for
+.Fa pr
+allows the callout subsystem to coalesce callouts scheduled close to each
+other into fewer timer interrupts,
+reducing processing overhead and power consumption.
+These
.Fa flags
-may be specified:
+may be specified to adjust the interpretation of
+.Fa sbt
+and
+.Fa pr :
.Bl -tag -width ".Dv C_DIRECT_EXEC"
.It Dv C_ABSOLUTE
Handle the
.Fa sbt
-argument as absolute time of the event since boot, or relative time otherwise.
+argument as an absolute time since boot.
+By default,
+.Fa sbt
+is treated as a relative amount of time,
+similar to
+.Fa ticks .
.It Dv C_DIRECT_EXEC
-Run handler directly from hardware interrupt context instead of softclock swi.
-It is faster, but puts more constraints on handlers.
-Handlers may use only spin mutexes for locking, and they must be fast because
-they run with absolute priority.
+Run the handler directly from hardware interrupt context instead of from the
+softclock thread.
+This reduces latency and overhead, but puts more constraints on the callout
+function.
+Callout functions run in this context may use only spin mutexes for locking
+and should be as small as possible because they run with absolute priority.
.It Fn C_PREL
Specifies relative event time precision as binary logarithm of time interval
divided by acceptable time deviation: 1 -- 1/2, 2 -- 1/4, etc.
-Smaller value allows to aggregate more events in one timer interrupt to
-reduce processing overhead and power consumption.
+Note that the larger of
+.Fa pr
+or this value is used as the length of the time window.
+Smaller values
+.Pq which result in larger time intervals
+allow the callout subsystem to aggregate more events in one timer interrupt.
.It Dv C_HARDCLOCK
-Align the timeouts, if possible, to
-.Fn hardclock
-calls.
+Align the timeouts to
+.Fn hardclock
+calls if possible.
.El
.Pp
-The functions
-.Fn callout_reset_curcpu
+The
+.Fn callout_reset
+functions accept a
+.Fa func
+argument which identifies the function to be called when the time expires.
+It must be a pointer to a function that takes a single
+.Fa void *
+argument.
+Upon invocation,
+.Fa func
+will receive
+.Fa arg
+as its only argument.
+The
+.Fn callout_schedule
+functions reuse the
+.Fa func
and
-.Fn callout_schedule_curcpu
-are wrappers for
-.Fn callout_reset_on
+.Fa arg
+arguments from the previous callout.
+Note that one of the
+.Fn callout_reset
+functions must always be called to initialize
+.Fa func
+and
+.Fa arg
+before one of the
+.Fn callout_schedule
+functions can be used.
+.Pp
+The callout subsystem provides a softclock thread for each CPU in the system.
+Callouts are assigned to a single CPU and are executed by the softclock thread
+for that CPU.
+Initially,
+callouts are assigned to CPU 0.
+The
+.Fn callout_reset_on ,
+.Fn callout_reset_sbt_on ,
and
.Fn callout_schedule_on
-using the current CPU as the target CPU.
+functions assign the callout to CPU
+.Fa cpu .
+The
+.Fn callout_reset_curcpu ,
+.Fn callout_reset_sbt_curpu ,
+and
+.Fn callout_schedule_curcpu
+functions assign the callout to the current CPU.
+The
+.Fn callout_reset ,
+.Fn callout_reset_sbt ,
+and
+.Fn callout_schedule
+functions schedule the callout to execute in the softclock thread of the CPU
+to which it is currently assigned.
+.Pp
+Softclock threads are not pinned to their respective CPUs by default.
+The softclock thread for CPU 0 can be pinned to CPU 0 by setting the
+.Va kern.pin_default_swi
+loader tunable to a non-zero value.
+Softclock threads for CPUs other than zero can be pinned to their
+respective CPUs by setting the
+.Va kern.pin_pcpu_swi
+loader tunable to a non-zero value.
.Pp
The macros
.Fn callout_pending ,
@@ -393,10 +419,6 @@ The macros
and
.Fn callout_deactivate
provide access to the current state of the callout.
-Careful use of these macros can avoid many of the race conditions
-that are inherent in asynchronous timer facilities; see
-.Sx "Avoiding Race Conditions"
-below for further details.
The
.Fn callout_pending
macro checks whether a callout is
@@ -409,7 +431,8 @@ starts to process this callout,
.Fn callout_pending
will return
.Dv FALSE
-even though the callout function may not have finished (or even begun)
+even though the callout function may not have finished
+.Pq or even begun
executing.
The
.Fn callout_active
@@ -433,45 +456,64 @@ but it
clear it when a callout expires normally via the execution of the
callout function.
.Ss "Avoiding Race Conditions"
-The callout subsystem invokes callout functions from its own timer
+The callout subsystem invokes callout functions from its own thread
context.
-Without some kind of synchronization it is possible that a callout
+Without some kind of synchronization,
+it is possible that a callout
function will be invoked concurrently with an attempt to stop or reset
the callout by another thread.
-In particular, since callout functions typically acquire a mutex as
+In particular, since callout functions typically acquire a lock as
their first action, the callout function may have already been invoked,
-but be blocked waiting for that mutex at the time that another thread
+but is blocked waiting for that lock at the time that another thread
tries to reset or stop the callout.
.Pp
-The callout subsystem provides a number of mechanisms to address these
-synchronization concerns:
+There are three main techniques for addressing these
+synchronization concerns.
+The first approach is preferred as it is the simplest:
.Bl -enum -offset indent
.It
-If the callout has an associated mutex that was specified using the
-.Fn callout_init_mtx
-function (or implicitly specified as the
-.Va Giant
-mutex using
+Callouts can be associated with a specific lock when they are initialized
+by
+.Fn callout_init_mtx ,
+.Fn callout_init_rm ,
+or
+.Fn callout_init_rw .
+When a callout is associated with a lock,
+the callout subsystem acquires the lock before the callout function is
+invoked.
+This allows the callout subsystem to transparently handle races between
+callout cancellation,
+scheduling,
+and execution.
+Note that the associated lock must be acquired before calling
+.Fn callout_stop
+or one of the
+.Fn callout_reset
+or
+.Fn callout_schedule
+functions to provide this safety.
+.Pp
+A callout initialized via
.Fn callout_init
with
.Fa mpsafe
-set to
-.Dv FALSE ) ,
-then this mutex is used to avoid the race conditions.
-The associated mutex must be acquired by the caller before calling
-.Fn callout_stop
-or
-.Fn callout_reset
-and it is guaranteed that the callout will be correctly stopped
-or reset as expected.
-Note that it is still necessary to use
-.Fn callout_drain
-before destroying the callout or its associated mutex.
+set to zero is implicitly associated with the
+.Va Giant
+mutex.
+If
+.Va Giant
+is held when cancelling or rescheduling the callout,
+then its use will prevent races with the callout function.
.It
The return value from
.Fn callout_stop
-and
+.Po
+or the
.Fn callout_reset
+and
+.Fn callout_schedule
+function families
+.Pc
indicates whether or not the callout was removed.
If it is known that the callout was set and the callout function has
not yet executed, then a return value of
@@ -606,19 +648,134 @@ data objects that have already been destroyed or recycled.
To ensure that the callout is completely finished, a call to
.Fn callout_drain
should be used.
-.Sh RETURN VALUES
-The
+In particular,
+a callout should always be drained prior to destroying its associated lock
+or releasing the storage for the callout structure.
+.Sh LEGACY API
+.Bf Sy
+The functions below are a legacy API that will be removed in a future release.
+New code should not use these routines.
+.Ef
+.Pp
+The function
.Fn timeout
-function returns a
+schedules a call to the function given by the argument
+.Fa func
+to take place after
+.Fa ticks Ns No /hz
+seconds.
+Non-positive values of
+.Fa ticks
+are silently converted to the value
+.Sq 1 .
+.Fa func
+should be a pointer to a function that takes a
+.Fa void *
+argument.
+Upon invocation,
+.Fa func
+will receive
+.Fa arg
+as its only argument.
+The return value from
+.Fn timeout
+is a
.Ft struct callout_handle
-that can be passed to
+which can be used in conjunction with the
+.Fn untimeout
+function to request that a scheduled timeout be canceled.
+.Pp
+The function
+.Fn callout_handle_init
+can be used to initialize a handle to a state which will cause
+any calls to
+.Fn untimeout
+with that handle to return with no side
+effects.
+.Pp
+Assigning a callout handle the value of
+.Fn CALLOUT_HANDLE_INITIALIZER
+performs the same function as
+.Fn callout_handle_init
+and is provided for use on statically declared or global callout handles.
+.Pp
+The function
+.Fn untimeout
+cancels the timeout associated with
+.Fa handle
+using the
+.Fa func
+and
+.Fa arg
+arguments to validate the handle.
+If the handle does not correspond to a timeout with
+the function
+.Fa func
+taking the argument
+.Fa arg
+no action is taken.
+.Fa handle
+must be initialized by a previous call to
+.Fn timeout ,
+.Fn callout_handle_init ,
+or assigned the value of
+.Fn CALLOUT_HANDLE_INITIALIZER "&handle"
+before being passed to
.Fn untimeout .
+The behavior of calling
+.Fn untimeout
+with an uninitialized handle
+is undefined.
+.Pp
+As handles are recycled by the system, it is possible (although unlikely)
+that a handle from one invocation of
+.Fn timeout
+may match the handle of another invocation of
+.Fn timeout
+if both calls used the same function pointer and argument, and the first
+timeout is expired or canceled before the second call.
+The timeout facility offers O(1) running time for
+.Fn timeout
+and
+.Fn untimeout .
+Timeouts are executed from
+.Fn softclock
+with the
+.Va Giant
+lock held.
+Thus they are protected from re-entrancy.
+.Sh RETURN VALUES
+The
+.Fn callout_active
+macro returns the state of a callout's
+.Em active
+flag.
+.Pp
+The
+.Fn callout_pending
+macro returns the state of a callout's
+.Em pending
+flag.
+.Pp
+The
+.Fn callout_reset
+and
+.Fn callout_schedule
+function families return non-zero if the callout was pending before the new
+function invocation was scheduled.
+.Pp
The
.Fn callout_stop
and
.Fn callout_drain
functions return non-zero if the callout was still pending when it was
called or zero otherwise.
+The
+.Fn timeout
+function returns a
+.Ft struct callout_handle
+that can be passed to
+.Fn untimeout .
.Sh HISTORY
The current timeout and untimeout routines are based on the work of
.An Adam M. Costello
diff --git a/share/man/man9/vm_page_busy.9 b/share/man/man9/vm_page_busy.9
index bc4b796..9503dac 100644
--- a/share/man/man9/vm_page_busy.9
+++ b/share/man/man9/vm_page_busy.9
@@ -95,7 +95,7 @@ themselves.
For example, when a thread wants to access or update page contents
without a lock held the page is shared busied.
.Pp
-Before busing a page the vm_object lock must be held.
+Before busying a page the vm_object lock must be held.
The same rule applies when a page is unbusied.
This makes the vm_object lock a real busy interlock.
.Pp
diff --git a/share/man/man9/vnode.9 b/share/man/man9/vnode.9
index cc80bde..074d8ec 100644
--- a/share/man/man9/vnode.9
+++ b/share/man/man9/vnode.9
@@ -170,7 +170,6 @@ intertwining of VM Objects and Vnodes.
.Xr VOP_GETACL 9 ,
.Xr VOP_GETEXTATTR 9 ,
.Xr VOP_GETPAGES 9 ,
-.Xr VOP_GETVOBJECT 9 ,
.Xr VOP_INACTIVE 9 ,
.Xr VOP_IOCTL 9 ,
.Xr VOP_LINK 9 ,
diff --git a/share/misc/bsd-family-tree b/share/misc/bsd-family-tree
index 930c91d..ad2d52c 100644
--- a/share/misc/bsd-family-tree
+++ b/share/misc/bsd-family-tree
@@ -291,21 +291,32 @@ FreeBSD 5.2 | | | |
| | | | | | |
| FreeBSD | | NetBSD 6.1.2 | |
| 9.2 Mac OS X | | | |
- | 10.9 | | OpenBSD 5.4 |
- | | | | | DragonFly 3.6.0
- | | | | | |
- *--FreeBSD | | NetBSD 6.1.3 | |
- | 10.0 | | | | |
- | | | | | DragonFly 3.6.1
- | | | | | |
- | | | | | |
- | | | | | DragonFly 3.6.2
- | | | NetBSD 6.1.4 | |
- | | | | |
- | | | OpenBSD 5.5 |
- | | | | DragonFly 3.8.0
- | | | | |
- | | | | |
+ | | 10.9 | | OpenBSD 5.4 |
+ | `-----. | | | | DragonFly 3.6.0
+ | \ | | | | |
+ *--FreeBSD | | | NetBSD 6.1.3 | |
+ | 10.0 | | | | | |
+ | | | | | | DragonFly 3.6.1
+ | | | | | | |
+ | | | | | | |
+ | | | | | | DragonFly 3.6.2
+ | | | | NetBSD 6.1.4 | |
+ | | | | | |
+ | | | | OpenBSD 5.5 |
+ | | | | | |
+ | | | | | DragonFly 3.8.0
+ | | | | | |
+ | | | | | |
+ | | | | | DragonFly 3.8.1
+ | | | | | |
+ | | | | | |
+ | | | | | DragonFly 3.6.3
+ | | | | | |
+ | FreeBSD | | | |
+ | 9.3 | | | |
+ | | | | DragonFly 3.8.2
+ | Mac OS X | | |
+ | 10.10 | | |
| | | | |
| | | | |
| | | | |
@@ -640,6 +651,11 @@ NetBSD 6.0.5 2014-04-19 [NDB]
NetBSD 6.1.4 2014-04-19 [NDB]
OpenBSD 5.5 2014-05-01 [OBD]
DragonFly 3.8.0 2014-06-04 [DFB]
+DragonFly 3.8.1 2014-06-16 [DFB]
+DragonFly 3.6.3 2014-06-17 [DFB]
+FreeBSD 9.3 2014-07-05 [FBD]
+DragonFly 3.8.2 2014-08-08 [DFB]
+Mac OS X 10.10 2014-10-16 [APL]
Bibliography
------------------------
diff --git a/share/misc/committers-ports.dot b/share/misc/committers-ports.dot
index 02c303e..f072236 100644
--- a/share/misc/committers-ports.dot
+++ b/share/misc/committers-ports.dot
@@ -49,6 +49,7 @@ ale [label="Alex Dupre\nale@FreeBSD.org\n2004/01/12"]
alepulver [label="Alejandro Pulver\nalepulver@FreeBSD.org\n2006/04/01"]
alexbl [label="Alexander Botero-Lowry\nalexbl@FreeBSD.org\n2006/09/11"]
alexey [label="Alexey Degtyarev\nalexey@FreeBSD.org\n2013/11/09"]
+alonso [label="Alonso Schaich\nalonso@FreeBSD.org\n2014/08/14"]
amdmi3 [label="Dmitry Marakasov\namdmi3@FreeBSD.org\n2008/06/19"]
anray [label="Andrey Slusar\nanray@FreeBSD.org\n2005/12/11"]
antoine [label="Antoine Brodin\nantoine@FreeBSD.org\n2013/04/03"]
@@ -86,6 +87,7 @@ delphij [label="Xin Li\ndelphij@FreeBSD.org\n2006/05/01"]
demon [label="Dmitry Sivachenko\ndemon@FreeBSD.org\n2000/11/13"]
dhn [label="Dennis Herrmann\ndhn@FreeBSD.org\n2009/03/03"]
dryice [label="Dryice Dong Liu\ndryice@FreeBSD.org\n2006/12/25"]
+dvl [label="Dan Langille\ndvl@FreeBSD.org\n2014/08/10"]
eadler [label="Eitan Adler\neadler@FreeBSD.org\n2011/08/17"]
edwin [label="Edwin Groothuis\nedwin@FreeBSD.org\n2002/10/22"]
ehaupt [label="Emanuel Haupt\nehaupt@FreeBSD.org\n2005/10/03"]
@@ -419,11 +421,13 @@ marcus -> jmallett
marino -> robak
+makc -> alonso
makc -> bf
makc -> jhale
makc -> rakuco
mat -> bmah
+mat -> dvl
mat -> thierry
mezz -> tmclaugh
@@ -491,6 +495,8 @@ philip -> koitsu
rafan -> chinsan
+rakuco -> alonso
+
rene -> bar
rene -> crees
rene -> jgh
@@ -558,6 +564,7 @@ wen -> pawel
wg -> alexey
wg -> danilo
+wg -> dvl
wg -> nemysis
will -> lioux
diff --git a/share/misc/committers-src.dot b/share/misc/committers-src.dot
index 891efa3..07d6aa7 100644
--- a/share/misc/committers-src.dot
+++ b/share/misc/committers-src.dot
@@ -170,6 +170,7 @@ grehan [label="Peter Grehan\ngrehan@FreeBSD.org\n2002/08/08"]
grog [label="Greg Lehey\ngrog@FreeBSD.org\n1998/08/30"]
gshapiro [label="Gregory Shapiro\ngshapiro@FreeBSD.org\n2000/07/12"]
harti [label="Hartmut Brandt\nharti@FreeBSD.org\n2003/01/29"]
+hiren [label="Hiren Panchasara\nhiren@FreeBSD.org\n2013/04/12"]
hmp [label="Hiten Pandya\nhmp@FreeBSD.org\n2004/03/23"]
ian [label="Ian Lepore\nian@FreeBSD.org\n2013/01/07"]
iedowse [label="Ian Dowse\niedowse@FreeBSD.org\n2000/12/01"]
@@ -178,6 +179,7 @@ ivoras [label="Ivan Voras\nivoras@FreeBSD.org\n2008/06/10"]
jamie [label="Jamie Gritton\njamie@FreeBSD.org\n2009/01/28"]
jasone [label="Jason Evans\njasone@FreeBSD.org\n1999/03/03"]
jceel [label="Jakub Klama\njceel@FreeBSD.org\n2011/09/25"]
+jch [label="Julien Charbon\njch@FreeBSD.org\n2014/09/24"]
jchandra [label="Jayachandran C.\njchandra@FreeBSD.org\n2010/05/19"]
jeff [label="Jeff Roberson\njeff@FreeBSD.org\n2002/02/21"]
jh [label="Jaakko Heinonen\njh@FreeBSD.org\n2009/10/02"]
@@ -228,6 +230,7 @@ mp [label="Mark Peek\nmp@FreeBSD.org\n2001/07/27"]
mr [label="Michael Reifenberger\nmr@FreeBSD.org\n2001/09/30"]
neel [label="Neel Natu\nneel@FreeBSD.org\n2009/09/20"]
netchild [label="Alexander Leidinger\nnetchild@FreeBSD.org\n2005/03/31"]
+ngie [label="Garrett Cooper\nngie@FreeBSD.org\n2014/07/27"]
nork [label="Norikatsu Shigemura\nnork@FreeBSD.org\n2009/06/09"]
np [label="Navdeep Parhar\nnp@FreeBSD.org\n2009/06/05"]
nwhitehorn [label="Nathan Whitehorn\nnwhitehorn@FreeBSD.org\n2008/07/03"]
@@ -482,6 +485,7 @@ jdp -> fjoe
jhb -> arr
jhb -> avg
+jhb -> jch
jhb -> jeff
jhb -> kbyanc
jhb -> peterj
@@ -512,6 +516,8 @@ jlemon -> brooks
jmallett -> pkelsey
+jmmv -> ngie
+
joerg -> brian
joerg -> eik
joerg -> jmg
@@ -623,6 +629,7 @@ rpaulo -> avg
rpaulo -> bschmidt
rpaulo -> dim
rpaulo -> jmmv
+rpaulo -> ngie
rrs -> brucec
rrs -> jchandra
@@ -660,6 +667,7 @@ sam -> andre
sam -> benjsc
sam -> sephe
+sbruno -> hiren
sbruno -> jimharris
schweikh -> dds
diff --git a/share/misc/scsi_modes b/share/misc/scsi_modes
index 4f7e59a..781b8f1 100644
--- a/share/misc/scsi_modes
+++ b/share/misc/scsi_modes
@@ -223,7 +223,8 @@
{Correction Span} i1
{Head Offset Count} i1
{Data Strobe Offset Count} i1
- {Reserved} *i1
+ {LBPERE (LBP Error Reporting Enabled)} t1
+ {Reserved} *t7
{Write Retry Count} i1
{Reserved} *i1
{Recovery Time Limit} i2
diff --git a/share/mk/atf.test.mk b/share/mk/atf.test.mk
index f7d66bf..0863203 100644
--- a/share/mk/atf.test.mk
+++ b/share/mk/atf.test.mk
@@ -71,7 +71,11 @@ BINDIR.${_T}= ${TESTSDIR}
MAN.${_T}?= # empty
SRCS.${_T}?= ${_T}.c
DPADD.${_T}+= ${LIBATF_C}
-LDADD.${_T}+= -latf-c
+.if empty(LDFLAGS:M-static) && empty(LDFLAGS.${_T}:M-static)
+LDADD.${_T}+= ${LDATF_C}
+.else
+LDADD.${_T}+= ${LIBATF_C}
+.endif
USEPRIVATELIB+= atf-c
TEST_INTERFACE.${_T}= atf
.endfor
@@ -85,7 +89,11 @@ BINDIR.${_T}= ${TESTSDIR}
MAN.${_T}?= # empty
SRCS.${_T}?= ${_T}${CXX_SUFFIX:U.cc}
DPADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C}
-LDADD.${_T}+= -latf-c++ -latf-c
+.if empty(LDFLAGS:M-static) && empty(LDFLAGS.${_T}:M-static)
+LDADD.${_T}+= ${LDATF_CXX} ${LDATF_C}
+.else
+LDADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C}
+.endif
USEPRIVATELIB+= atf-c++
TEST_INTERFACE.${_T}= atf
.endfor
@@ -105,8 +113,12 @@ ATF_TESTS_SH_SED_${_T}?= # empty
ATF_TESTS_SH_SRC_${_T}?= ${_T}.sh
${_T}: ${ATF_TESTS_SH_SRC_${_T}}
echo '#! /usr/libexec/atf-sh' > ${.TARGET}.tmp
+.if empty(ATF_TESTS_SH_SED_${_T})
+ cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp
+.else
cat ${.ALLSRC:N*Makefile*} \
| sed ${ATF_TESTS_SH_SED_${_T}} >>${.TARGET}.tmp
+.endif
chmod +x ${.TARGET}.tmp
mv ${.TARGET}.tmp ${.TARGET}
.endfor
diff --git a/share/mk/bsd.compiler.mk b/share/mk/bsd.compiler.mk
index 933d540..c5d43d8 100644
--- a/share/mk/bsd.compiler.mk
+++ b/share/mk/bsd.compiler.mk
@@ -48,7 +48,8 @@ COMPILER_VERSION!=echo ${_v:M[1-9].[0-9]*} | awk -F. '{print $$1 * 10000 + $$2 *
.endif
.undef _v
-.if ${COMPILER_TYPE} == "clang"
+.if ${COMPILER_TYPE} == "clang" || \
+ (${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800)
COMPILER_FEATURES= c++11
.else
COMPILER_FEATURES=
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
index a38c718..759c768 100644
--- a/share/mk/bsd.dep.mk
+++ b/share/mk/bsd.dep.mk
@@ -49,7 +49,7 @@ GTAGSFLAGS?= -o
HTAGSFLAGS?=
.if ${CC} != "cc"
-MKDEPCMD?= CC='${CC}' mkdep
+MKDEPCMD?= CC='${CC} ${DEPFLAGS}' mkdep
.else
MKDEPCMD?= mkdep
.endif
@@ -73,7 +73,7 @@ tags: ${SRCS}
CLEANFILES?=
.if !exists(${.OBJDIR}/${DEPENDFILE})
-.for _S in ${SRCS:N*.[hly]}
+.for _S in ${SRCS:N*.[dhly]}
${_S:R}.o: ${_S}
.endfor
.endif
@@ -123,26 +123,31 @@ ${_YC:R}.o: ${_YC}
# DTrace probe definitions
# libelf is currently needed for drti.o
.if ${SRCS:M*.d}
-LDFLAGS+= -lelf
-LDADD+= ${LIBELF}
-CFLAGS+= -D_DTRACE_VERSION=1
+LDADD+= -lelf
+DPADD+= ${LIBELF}
+CFLAGS+= -I${.OBJDIR}
.endif
.for _DSRC in ${SRCS:M*.d:N*/*}
.for _D in ${_DSRC:R}
+DHDRS+= ${_D}.h
${_D}.h: ${_DSRC}
${DTRACE} -xnolibs -h -s ${.ALLSRC}
-SRCS:= ${SRCS:S/${_DSRC}/${_D}.h/}
-${_D}.o: ${_D}.h ${_DSRC} ${OBJS} ${SOBJS}
- ${DTRACE} -xnolibs -G -o ${.TARGET} -s ${_DSRC} \
- ${OBJS:S/${_D}.o//} ${SOBJS:S/${_D}.o//}
-CLEANFILES+= ${_D}.h ${_D}.o
-.if defined(PROG)
+SRCS:= ${SRCS:S/^${_DSRC}$//}
OBJS+= ${_D}.o
-.else
-SOBJS+= ${_D}.o
+CLEANFILES+= ${_D}.h ${_D}.o
+${_D}.o: ${_DSRC} ${OBJS:S/^${_D}.o$//}
+ ${DTRACE} -xnolibs -G -o ${.TARGET} -s ${.ALLSRC}
+.if defined(LIB)
+CLEANFILES+= ${_D}.So ${_D}.po
+${_D}.So: ${_DSRC} ${SOBJS:S/^${_D}.So$//}
+ ${DTRACE} -xnolibs -G -o ${.TARGET} -s ${.ALLSRC}
+${_D}.po: ${_DSRC} ${POBJS:S/^${_D}.po$//}
+ ${DTRACE} -xnolibs -G -o ${.TARGET} -s ${.ALLSRC}
.endif
.endfor
.endfor
+beforedepend: ${DHDRS}
+beforebuild: ${DHDRS}
.endif
.if defined(.PARSEDIR)
@@ -218,8 +223,10 @@ cleandepend:
.endif
.if !target(checkdpadd) && (defined(DPADD) || defined(LDADD))
-_LDADD_FROM_DPADD= ${DPADD:C;^/usr/lib/lib(.*)\.a$;-l\1;}
-_LDADD_CANONICALIZED= ${LDADD:S/$//}
+_LDADD_FROM_DPADD= ${DPADD:R:T:C;^lib(.*)$;-l\1;g}
+# Ignore -Wl,--start-group/-Wl,--end-group as it might be required in the
+# LDADD list due to unresolved symbols
+_LDADD_CANONICALIZED= ${LDADD:N:R:T:C;^lib(.*)$;-l\1;g:N-Wl,--[es]*-group}
checkdpadd:
.if ${_LDADD_FROM_DPADD} != ${_LDADD_CANONICALIZED}
@echo ${.CURDIR}
diff --git a/share/mk/bsd.endian.mk b/share/mk/bsd.endian.mk
index 565d1aa..c82c37f 100644
--- a/share/mk/bsd.endian.mk
+++ b/share/mk/bsd.endian.mk
@@ -2,16 +2,13 @@
.if ${MACHINE_ARCH} == "amd64" || \
${MACHINE_ARCH} == "i386" || \
- ${MACHINE_ARCH} == "arm" || \
- ${MACHINE_ARCH} == "armv6" || \
- ${MACHINE_ARCH} == "armv6hf" || \
+ (${MACHINE} == "arm" && ${MACHINE_ARCH:Marm*eb*} == "") || \
${MACHINE_ARCH:Mmips*el} != ""
TARGET_ENDIANNESS= 1234
.elif ${MACHINE_ARCH} == "powerpc" || \
${MACHINE_ARCH} == "powerpc64" || \
${MACHINE_ARCH} == "sparc64" || \
- ${MACHINE_ARCH} == "armeb" || \
- ${MACHINE_ARCH} == "armv6eb" || \
+ (${MACHINE} == "arm" && ${MACHINE_ARCH:Marm*eb*} != "") || \
${MACHINE_ARCH:Mmips*} != ""
TARGET_ENDIANNESS= 4321
.endif
diff --git a/share/mk/bsd.incs.mk b/share/mk/bsd.incs.mk
index 08ef376..4c63f71 100644
--- a/share/mk/bsd.incs.mk
+++ b/share/mk/bsd.incs.mk
@@ -4,7 +4,7 @@
.error bsd.incs.mk cannot be included directly.
.endif
-.if ${MK_TOOLCHAIN} != "no"
+.if ${MK_INCLUDES} != "no"
INCSGROUPS?= INCS
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 8e7dc3d..717f30b 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -158,7 +158,7 @@ LDFLAGS+= -Wl,--version-script=${VERSION_MAP}
.endif
.if defined(USEPRIVATELIB)
-LDFLAGS+= -L${_SHLIBDIRPREFIX}${LIBPRIVATEDIR} -rpath ${LIBPRIVATEDIR}
+LDFLAGS+= -rpath ${LIBPRIVATEDIR}
.endif
.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
@@ -343,11 +343,11 @@ _SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}}
realinstall: _libinstall
.ORDER: beforeinstall _libinstall
_libinstall:
-.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no"
+.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" && !defined(PRIVATELIB)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${_LIBDIR}
.endif
-.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
+.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) && !defined(PRIVATELIB)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${_LIBDIR}
.endif
@@ -363,7 +363,7 @@ _libinstall:
${_INSTALLFLAGS} \
${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}
.endif
-.if defined(SHLIB_LINK)
+.if defined(SHLIB_LINK) && !defined(PRIVATELIB)
.if commands(${SHLIB_LINK:R}.ld)
${INSTALL} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} ${SHLIB_LINK:R}.ld \
@@ -382,7 +382,7 @@ _libinstall:
.endif # SHLIB_LDSCRIPT
.endif # SHLIB_LINK
.endif # SHIB_NAME
-.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
+.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" && !defined(PRIVATELIB)
${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${_LIBDIR}
.endif
diff --git a/share/mk/bsd.libnames.mk b/share/mk/bsd.libnames.mk
index 0f61600..b3d160d 100644
--- a/share/mk/bsd.libnames.mk
+++ b/share/mk/bsd.libnames.mk
@@ -8,13 +8,13 @@
.error bsd.libnames.mk cannot be included directly.
.endif
+.sinclude <src.libnames.mk>
+
LIBCRT0?= ${DESTDIR}${LIBDIR}/crt0.o
LIBALIAS?= ${DESTDIR}${LIBDIR}/libalias.a
LIBARCHIVE?= ${DESTDIR}${LIBDIR}/libarchive.a
LIBASN1?= ${DESTDIR}${LIBDIR}/libasn1.a
-LIBATF_C?= ${DESTDIR}${LIBPRIVATEDIR}/libatf-c.a
-LIBATF_CXX?= ${DESTDIR}${LIBPRIVATEDIR}/libatf-c++.a
LIBATM?= ${DESTDIR}${LIBDIR}/libatm.a
LIBAUDITD?= ${DESTDIR}${LIBDIR}/libauditd.a
LIBAVL?= ${DESTDIR}${LIBDIR}/libavl.a
@@ -43,12 +43,14 @@ LIBDEVINFO?= ${DESTDIR}${LIBDIR}/libdevinfo.a
LIBDEVSTAT?= ${DESTDIR}${LIBDIR}/libdevstat.a
LIBDIALOG?= ${DESTDIR}${LIBDIR}/libdialog.a
LIBDNS?= ${DESTDIR}${LIBDIR}/libdns.a
+LIBDPV?= ${DESTDIR}${LIBDIR}/libdpv.a
LIBDTRACE?= ${DESTDIR}${LIBDIR}/libdtrace.a
LIBDWARF?= ${DESTDIR}${LIBDIR}/libdwarf.a
LIBEDIT?= ${DESTDIR}${LIBDIR}/libedit.a
LIBELF?= ${DESTDIR}${LIBDIR}/libelf.a
LIBEXECINFO?= ${DESTDIR}${LIBDIR}/libexecinfo.a
LIBFETCH?= ${DESTDIR}${LIBDIR}/libfetch.a
+LIBFIGPAR?= ${DESTDIR}${LIBDIR}/libfigpar.a
LIBFL?= "don't use LIBFL, use LIBL"
LIBFORM?= ${DESTDIR}${LIBDIR}/libform.a
LIBG2C?= ${DESTDIR}${LIBDIR}/libg2c.a
@@ -58,8 +60,6 @@ LIBGSSAPI?= ${DESTDIR}${LIBDIR}/libgssapi.a
LIBGSSAPI_KRB5?= ${DESTDIR}${LIBDIR}/libgssapi_krb5.a
LIBHDB?= ${DESTDIR}${LIBDIR}/libhdb.a
LIBHEIMBASE?= ${DESTDIR}${LIBDIR}/libheimbase.a
-LIBHEIMIPCC?= ${DESTDIR}${LIBPRIVATEDIR}/libheimipcc.a
-LIBHEIMIPCS?= ${DESTDIR}${LIBPRIVATEDIR}/libheimipcs.a
LIBHEIMNTLM?= ${DESTDIR}${LIBDIR}/libheimntlm.a
LIBHEIMSQLITE?= ${DESTDIR}${LIBDIR}/libheimsqlite.a
LIBHX509?= ${DESTDIR}${LIBDIR}/libhx509.a
@@ -74,7 +74,6 @@ LIBKICONV?= ${DESTDIR}${LIBDIR}/libkiconv.a
LIBKRB5?= ${DESTDIR}${LIBDIR}/libkrb5.a
LIBKVM?= ${DESTDIR}${LIBDIR}/libkvm.a
LIBL?= ${DESTDIR}${LIBDIR}/libl.a
-LIBLDNS?= ${DESTDIR}${LIBPRIVATEDIR}/libldns.a
LIBLN?= "don't use LIBLN, use LIBL"
LIBLZMA?= ${DESTDIR}${LIBDIR}/liblzma.a
LIBM?= ${DESTDIR}${LIBDIR}/libm.a
@@ -134,19 +133,18 @@ LIBRTLD_DB?= ${DESTDIR}${LIBDIR}/librtld_db.a
LIBSBUF?= ${DESTDIR}${LIBDIR}/libsbuf.a
LIBSDP?= ${DESTDIR}${LIBDIR}/libsdp.a
LIBSMB?= ${DESTDIR}${LIBDIR}/libsmb.a
-LIBSSH?= ${DESTDIR}${LIBPRIVATEDIR}/libssh.a
LIBSSL?= ${DESTDIR}${LIBDIR}/libssl.a
+LIBSSP_NONSHARED?= ${DESTDIR}${LIBDIR}/libssp_nonshared.a
LIBSTAND?= ${DESTDIR}${LIBDIR}/libstand.a
LIBSTDCPLUSPLUS?= ${DESTDIR}${LIBDIR}/libstdc++.a
LIBTACPLUS?= ${DESTDIR}${LIBDIR}/libtacplus.a
LIBTERMCAP?= ${DESTDIR}${LIBDIR}/libtermcap.a
+LIBTERMCAPW?= ${DESTDIR}${LIBDIR}/libtermcapw.a
LIBTERMLIB?= "don't use LIBTERMLIB, use LIBTERMCAP"
LIBTINFO?= "don't use LIBTINFO, use LIBNCURSES"
-LIBUCL?= ${DESTDIR}${LIBPRIVATEDIR}/libucl.a
LIBUFS?= ${DESTDIR}${LIBDIR}/libufs.a
LIBUGIDFW?= ${DESTDIR}${LIBDIR}/libugidfw.a
LIBUMEM?= ${DESTDIR}${LIBDIR}/libumem.a
-LIBUNBOUND?= ${DESTDIR}${LIBPRIVATEDIR}/libunbound.a
LIBUSBHID?= ${DESTDIR}${LIBDIR}/libusbhid.a
LIBUSB?= ${DESTDIR}${LIBDIR}/libusb.a
LIBULOG?= ${DESTDIR}${LIBDIR}/libulog.a
diff --git a/share/mk/bsd.mkopt.mk b/share/mk/bsd.mkopt.mk
index c3054cd..46f835b 100644
--- a/share/mk/bsd.mkopt.mk
+++ b/share/mk/bsd.mkopt.mk
@@ -4,11 +4,11 @@
# Generic mechanism to deal with WITH and WITHOUT options and turn
# them into MK_ options.
#
-# For each option FOO in __DEFUALT_YES_OPTIONS, MK_FOO is set to
+# For each option FOO in __DEFAULT_YES_OPTIONS, MK_FOO is set to
# "yes", unless WITHOUT_FOO is defined, in which case it is set to
# "no".
#
-# For each option FOO in __DEFUALT_NO_OPTIONS, MK_FOO is set to "no",
+# For each option FOO in __DEFAULT_NO_OPTIONS, MK_FOO is set to "no",
# unless WITH_FOO is defined, in which case it is set to "yes".
#
# If both WITH_FOO and WITHOUT_FOO are defined, WITHOUT_FOO wins and
diff --git a/share/mk/bsd.obj.mk b/share/mk/bsd.obj.mk
index c5b4636..f2d4a5c 100644
--- a/share/mk/bsd.obj.mk
+++ b/share/mk/bsd.obj.mk
@@ -121,7 +121,7 @@ whereobj:
.if ${CANONICALOBJDIR} != ${.CURDIR} && exists(${CANONICALOBJDIR}/)
cleanobj:
- @rm -rf ${CANONICALOBJDIR}
+ @-rm -rf ${CANONICALOBJDIR}
.else
cleanobj: clean cleandepend
.endif
@@ -139,7 +139,7 @@ clean:
rm -f ${CLEANFILES}
.endif
.if defined(CLEANDIRS) && !empty(CLEANDIRS)
- rm -rf ${CLEANDIRS}
+ -rm -rf ${CLEANDIRS}
.endif
.endif
diff --git a/share/mk/bsd.opts.mk b/share/mk/bsd.opts.mk
index 38d1c23..44d274a 100644
--- a/share/mk/bsd.opts.mk
+++ b/share/mk/bsd.opts.mk
@@ -51,6 +51,7 @@ __<bsd.opts.mk>__:
__DEFAULT_YES_OPTIONS = \
ASSERT_DEBUG \
DOCCOMPRESS \
+ INCLUDES \
INSTALLLIB \
KERBEROS \
MAN \
@@ -68,8 +69,7 @@ __DEFAULT_NO_OPTIONS = \
CTF \
DEBUG_FILES \
INSTALL_AS_USER \
- INFO \
- PIE
+ INFO
# meta mode related
diff --git a/share/mk/bsd.port.mk b/share/mk/bsd.port.mk
index 87e4935..4f73d12 100644
--- a/share/mk/bsd.port.mk
+++ b/share/mk/bsd.port.mk
@@ -1,6 +1,18 @@
# $FreeBSD$
-PORTSDIR?= /usr/ports
+.if !defined(PORTSDIR)
+# Autodetect if the command is being run in a ports tree that's not rooted
+# in the default /usr/ports. The ../../.. case is in case ports ever grows
+# a third level.
+.for RELPATH in . .. ../.. ../../..
+.if !defined(_PORTSDIR) && exists(${.CURDIR}/${RELPATH}/Mk/bsd.port.mk)
+_PORTSDIR= ${.CURDIR}/${RELPATH}
+.endif
+.endfor
+_PORTSDIR?= /usr/ports
+PORTSDIR!= realpath ${_PORTSDIR}
+.endif
+
BSDPORTMK?= ${PORTSDIR}/Mk/bsd.port.mk
# Needed to keep bsd.own.mk from reading in /etc/src.conf
diff --git a/share/mk/bsd.port.subdir.mk b/share/mk/bsd.port.subdir.mk
index 5115602..8e608a1 100644
--- a/share/mk/bsd.port.subdir.mk
+++ b/share/mk/bsd.port.subdir.mk
@@ -1,6 +1,18 @@
# $FreeBSD$
-PORTSDIR?= /usr/ports
+.if !defined(PORTSDIR)
+# Autodetect if the command is being run in a ports tree that's not rooted
+# in the default /usr/ports. The ../../.. case is in case ports ever grows
+# a third level.
+.for RELPATH in . .. ../.. ../../..
+.if !defined(_PORTSDIR) && exists(${.CURDIR}/${RELPATH}/Mk/bsd.port.mk)
+_PORTSDIR= ${.CURDIR}/${RELPATH}
+.endif
+.endfor
+_PORTSDIR?= /usr/ports
+PORTSDIR!= realpath ${_PORTSDIR}
+.endif
+
BSDPORTSUBDIRMK?= ${PORTSDIR}/Mk/bsd.port.subdir.mk
.include "${BSDPORTSUBDIRMK}"
diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk
index f6d2f20..b5ec068 100644
--- a/share/mk/bsd.prog.mk
+++ b/share/mk/bsd.prog.mk
@@ -11,18 +11,6 @@
CFLAGS+=${COPTS}
.endif
-.if ${MK_PIE} != "no" && (!defined(NO_PIE) || ${NO_PIE} == "no")
-.if !defined(RESCUE) && !defined(NO_SHARED)
-CFLAGS+= -fPIE -pie
-LDFLAGS+= -pie
-.elif defined(NO_SHARED)
-.if ${NO_SHARED} == "no" || ${NO_SHARED} == "NO"
-CFLAGS+= -fPIE -pie
-LDFLAGS+= -pie
-.endif
-.endif
-.endif
-
.if ${MK_ASSERT_DEBUG} == "no"
CFLAGS+= -DNDEBUG
NO_WERROR=
@@ -41,9 +29,7 @@ CTFFLAGS+= -g
PROG= ${PROG_CXX}
.endif
-.if defined(PROG) && target(${PROG})
-MK_DEBUG_FILES= no
-.elif !empty(LDFLAGS:M-Wl,*--oformat,*) || !empty(LDFLAGS:M-static)
+.if !empty(LDFLAGS:M-Wl,*--oformat,*) || !empty(LDFLAGS:M-static)
MK_DEBUG_FILES= no
.endif
@@ -162,7 +148,8 @@ MAN1= ${MAN}
.if defined(_SKIP_BUILD)
all:
.else
-all: objwarn ${PROG} ${SCRIPTS}
+all: beforebuild .WAIT ${PROG} ${SCRIPTS}
+beforebuild: objwarn
.if ${MK_MAN} != "no"
all: _manpages
.endif
diff --git a/share/mk/bsd.progs.mk b/share/mk/bsd.progs.mk
index c5e8c3d..2af32b6 100644
--- a/share/mk/bsd.progs.mk
+++ b/share/mk/bsd.progs.mk
@@ -42,10 +42,15 @@ PROG ?= $t
.if defined(PROG)
# just one of many
-PROG_VARS += BINDIR CFLAGS CPPFLAGS CXXFLAGS DPADD DPLIBS LDADD MAN SRCS
+PROG_OVERRIDE_VARS += BINDIR DPSRCS MAN SRCS
+PROG_VARS += CFLAGS CPPFLAGS CXXFLAGS DPADD DPLIBS LDADD LDFLAGS ${PROG_OVERRIDE_VARS}
.for v in ${PROG_VARS:O:u}
-.if defined(${v}.${PROG}) || defined(${v}_${PROG})
-$v += ${${v}_${PROG}:U${${v}.${PROG}}}
+.if empty(${PROG_OVERRIDE_VARS:M$v})
+.if defined(${v}.${PROG})
+$v += ${${v}.${PROG}}
+.elif defined(${v}_${PROG})
+$v += ${${v}_${PROG}}
+.endif
.else
$v ?=
.endif
@@ -61,7 +66,7 @@ UPDATE_DEPENDFILE ?= NO
DEPENDFILE?= .depend.${PROG}
# prog.mk will do the rest
.else
-all: ${PROGS}
+all: ${FILES} ${PROGS} ${SCRIPTS}
# We cannot capture dependencies for meta mode here
UPDATE_DEPENDFILE = NO
@@ -70,12 +75,18 @@ UPDATE_DEPENDFILE = NO
.endif
.endif
+# The non-recursive call to bsd.progs.mk will handle FILES; NUL out
+# FILESGROUPS so recursive calls don't duplicate the work
+.ifdef _RECURSING_PROGS
+FILESGROUPS=
+.endif
+
# handle being called [bsd.]progs.mk
.include <bsd.prog.mk>
.ifndef _RECURSING_PROGS
# tell progs.mk we might want to install things
-PROGS_TARGETS+= cleandepend cleandir cleanobj depend install
+PROGS_TARGETS+= checkdpadd clean cleandepend cleandir cleanobj depend install
.for p in ${PROGS}
.if defined(PROGS_CXX) && !empty(PROGS_CXX:M$p)
@@ -85,31 +96,34 @@ x.$p= PROG_CXX=$p
$p ${p}_p: .PHONY .MAKE
(cd ${.CURDIR} && ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
- SUBDIR= PROG=$p ${x.$p})
+ SUBDIR= PROG=$p \
+ DEPENDFILE=.depend.$p .MAKE.DEPENDFILE=.depend.$p \
+ ${x.$p})
.for t in ${PROGS_TARGETS:O:u}
$p.$t: .PHONY .MAKE
(cd ${.CURDIR} && ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
- SUBDIR= PROG=$p ${x.$p} ${@:E})
+ SUBDIR= PROG=$p \
+ DEPENDFILE=.depend.$p .MAKE.DEPENDFILE=.depend.$p \
+ ${x.$p} ${@:E})
.endfor
.endfor
+.if !empty(PROGS)
.for t in ${PROGS_TARGETS:O:u}
$t: ${PROGS:%=%.$t}
.endfor
+.endif
-SCRIPTS_TARGETS+= cleandepend cleandir cleanobj depend install
+.if empty(PROGS) && !empty(SCRIPTS)
-.for p in ${SCRIPTS}
-.for t in ${SCRIPTS_TARGETS:O:u}
-$p.$t: .PHONY .MAKE
- (cd ${.CURDIR} && ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
- SUBDIR= SCRIPT=$p ${x.$p} ${@:E})
-.endfor
+.for t in ${PROGS_TARGETS:O:u}
+scripts.$t: .PHONY .MAKE
+ (cd ${.CURDIR} && ${MAKE} -f ${MAKEFILE} SUBDIR= _RECURSING_PROGS= \
+ $t)
+$t: scripts.$t
.endfor
-.for t in ${SCRIPTS_TARGETS:O:u}
-$t: ${SCRIPTS:%=%.$t}
-.endfor
+.endif
.endif
diff --git a/share/mk/bsd.sys.mk b/share/mk/bsd.sys.mk
index a84d23d..bd1d087 100644
--- a/share/mk/bsd.sys.mk
+++ b/share/mk/bsd.sys.mk
@@ -54,6 +54,9 @@ CWARNFLAGS+= -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls\
.if !defined(NO_WMISSING_VARIABLE_DECLARATIONS)
CWARNFLAGS.clang+= -Wmissing-variable-declarations
.endif
+.if !defined(NO_WTHREAD_SAFETY)
+CWARNFLAGS.clang+= -Wthread-safety
+.endif
.endif # WARNS >= 6
.if ${WARNS} >= 2 && ${WARNS} <= 4
# XXX Delete -Wuninitialized by default for now -- the compiler doesn't
diff --git a/share/mk/bsd.test.mk b/share/mk/bsd.test.mk
index 9c1667a..4538338 100644
--- a/share/mk/bsd.test.mk
+++ b/share/mk/bsd.test.mk
@@ -54,9 +54,11 @@ _TESTS=
.include <plain.test.mk>
.include <tap.test.mk>
-.if !empty(TESTS_SUBDIRS)
-SUBDIR+= ${TESTS_SUBDIRS}
+.for ts in ${TESTS_SUBDIRS}
+.if empty(SUBDIR:M${ts})
+SUBDIR+= ${ts}
.endif
+.endfor
# it is rare for test cases to have man pages
.if !defined(MAN)
diff --git a/share/mk/netbsd-tests.test.mk b/share/mk/netbsd-tests.test.mk
new file mode 100644
index 0000000..5c31d77
--- /dev/null
+++ b/share/mk/netbsd-tests.test.mk
@@ -0,0 +1,46 @@
+# $FreeBSD$
+
+.if !target(__netbsd_tests.test.mk__)
+__netbsd_tests.test.mk__:
+
+.if !defined(OBJTOP)
+.error "Please define OBJTOP to the absolute path of the top of the object tree"
+.endif
+
+.if !defined(SRCTOP)
+.error "Please define SRCTOP to the absolute path of the top of the source tree"
+.endif
+
+.if !defined(TESTSRC)
+.error "Please define TESTSRC to the absolute path of the test sources, e.g. contrib/netbsd-tests/lib/libc/stdio"
+.endif
+
+.PATH: ${TESTSRC}
+
+LIBNETBSD_SRCDIR= ${SRCTOP}/lib/libnetbsd
+LIBNETBSD_OBJDIR= ${OBJTOP}/lib/libnetbsd
+
+.for t in ${NETBSD_ATF_TESTS_C}
+CFLAGS.$t+= -I${LIBNETBSD_SRCDIR} -I${SRCTOP}/contrib/netbsd-tests
+LDFLAGS.$t+= -L${LIBNETBSD_OBJDIR}
+
+DPADD.$t+= ${LIBNETBSD}
+LDADD.$t+= -lnetbsd
+
+SRCS.$t?= ${t:C/^/t_/:C/_test$//g}.c
+.endfor
+
+ATF_TESTS_C+= ${NETBSD_ATF_TESTS_C}
+
+# A C++ analog isn't provided because there aren't any C++ testcases in
+# contrib/netbsd-tests
+
+.for t in ${NETBSD_ATF_TESTS_SH}
+ATF_TESTS_SH_SRC_$t?= ${t:C/^/t_/:C/_test$//g}.sh
+.endfor
+
+ATF_TESTS_SH+= ${NETBSD_ATF_TESTS_SH}
+
+.endif
+
+# vim: syntax=make
diff --git a/share/mk/plain.test.mk b/share/mk/plain.test.mk
index f26bab3..03c27f0 100644
--- a/share/mk/plain.test.mk
+++ b/share/mk/plain.test.mk
@@ -57,8 +57,12 @@ CLEANFILES+= ${_T} ${_T}.tmp
PLAIN_TESTS_SH_SED_${_T}?= # empty
PLAIN_TESTS_SH_SRC_${_T}?= ${_T}.sh
${_T}: ${PLAIN_TESTS_SH_SRC_${_T}}
+.if empty(PLAIN_TESTS_SH_SED_${_T})
+ cat ${.ALLSRC:N*Makefile*} >${.TARGET}.tmp
+.else
cat ${.ALLSRC:N*Makefile*} \
| sed ${PLAIN_TESTS_SH_SED_${_T}} >${.TARGET}.tmp
+.endif
chmod +x ${.TARGET}.tmp
mv ${.TARGET}.tmp ${.TARGET}
.endfor
diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk
new file mode 100644
index 0000000..336ede1
--- /dev/null
+++ b/share/mk/src.libnames.mk
@@ -0,0 +1,58 @@
+# $FreeBSD$
+#
+# The include file <src.libnames.mk> define library names suitable
+# for INTERNALLIB and PRIVATELIB definition
+
+.if !target(__<bsd.init.mk>__)
+.error src.libnames.mk cannot be included directly.
+.endif
+
+ROOTOBJDIR= ${.OBJDIR:S/${.CURDIR}//}${.MAKE.MAKEFILES:M*/src.libnames.mk:H:H:H}
+
+LIBATF_CDIR= ${ROOTOBJDIR}/lib/atf/libatf-c
+LDATF_C?= ${LIBATF_CDIR}/libatf-c.so
+LIBATF_C?= ${LIBATF_CDIR}/libatf-c.a
+
+LIBATF_CXXDIR= ${ROOTOBJDIR}/lib/atf/libatf-c++
+LDATF_CXX?= ${LIBATF_CXXDIR}/libatf-c++.so
+LIBATF_CXX?= ${LIBATF_CXXDIR}/libatf-c++.a
+
+LIBBSDSTATDIR= ${ROOTOBJDIR}/lib/libbsdstat
+LDBSDSTAT?= ${LIBBSDSTATDIR}/libbsdstat.so
+LIBBSDSTAT?= ${LIBBSDSTATDIR}/libbsdstat.a
+
+LIBEVENTDIR= ${ROOTOBJDIR}/lib/libevent
+LDEVENT?= ${LIBEVENTDIR}/libevent.so
+LIBEVENT?= ${LIBEVENTDIR}/libevent.a
+
+LIBHEIMIPCCDIR= ${ROOTOBJDIR}/kerberos5/lib/libheimipcc
+LDHEIMIPCC?= ${LIBHEIMIPCCDIR}/libheimipcc.so
+LIBHEIMIPCC?= ${LIBHEIMIPCCDIR}/libheimipcc.a
+
+LIBHEIMIPCSDIR= ${ROOTOBJDIR}/kerberos5/lib/libheimipcs
+LDHEIMIPCS?= ${LIBHEIMIPCSDIR}/libheimipcs.so
+LIBHEIMIPCS?= ${LIBHEIMIPCSDIR}/libheimipcs.a
+
+LIBLDNSDIR= ${ROOTOBJDIR}/lib/libldns
+LDLDNS?= ${LIBLDNSDIR}/libldns.so
+LIBLDNS?= ${LIBLDNSDIR}/libldns.a
+
+LIBSSHDIR= ${ROOTOBJDIR}/secure/lib/libssh
+LDSSH?= ${LIBSSHDIR}/libssh.so
+LIBSSH?= ${LIBSSHDIR}/libssh.a
+
+LIBUNBOUNDDIR= ${ROOTOBJDIR}/lib/libunbound
+LDUNBOUND?= ${LIBUNBOUNDDIR}/libunbound.so
+LIBUNBOUND?= ${LIBUNBOUNDDIR}/libunbound.a
+
+LIBUCLDIR= ${ROOTOBJDIR}/lib/libucl
+LDUCL?= ${LIBUCLDIR}/libucl.so
+LIBUCL?= ${LIBUCLDIR}/libucl.a
+
+LIBREADLINEDIR= ${ROOTOBJDIR}/gnu/lib/libreadline/readline
+LDREADLINE?= ${LIBREADLINEDIR}/libreadline.a
+LIBREADLINE?= ${LIBREADLINEDIR}/libreadline.a
+
+LIBOHASHDIR= ${ROOTOBJDIR}/lib/libohash
+LDOHASH?= ${LIBOHASHDIR}/libohash.a
+LIBOHASH?= ${LIBOHASHDIR}/libohash.a
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index fa116b2..44d171d 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -48,7 +48,6 @@ __DEFAULT_YES_OPTIONS = \
ACPI \
AMD \
APM \
- ARM_EABI \
AT \
ATM \
AUDIT \
@@ -91,6 +90,7 @@ __DEFAULT_YES_OPTIONS = \
GPL_DTC \
GROFF \
HTML \
+ HYPERV \
ICONV \
INET \
INET6 \
@@ -170,8 +170,7 @@ __DEFAULT_NO_OPTIONS = \
SHARED_TOOLCHAIN \
SORT_THREADS \
SVN \
- SYSROOT \
- USB_GADGET_EXAMPLES
+ SYSROOT
#
# Default behaviour of some options depends on the architecture. Unfortunately
@@ -195,7 +194,7 @@ __TT=${MACHINE}
# Clang is only for x86, powerpc and little-endian arm right now, by default.
.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*}
__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL CLANG_BOOTSTRAP
-.elif ${__T} == "arm" || ${__T} == "armv6" || ${__T} == "armv6hf"
+.elif ${__TT} == "arm" && ${__T:Marm*eb*} == ""
__DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP
# GCC is unable to build the full clang on arm, disable it by default.
__DEFAULT_NO_OPTIONS+=CLANG_FULL
@@ -203,8 +202,8 @@ __DEFAULT_NO_OPTIONS+=CLANG_FULL
__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL CLANG_BOOTSTRAP
.endif
# Clang the default system compiler only on little-endian arm and x86.
-.if ${__T} == "amd64" || ${__T} == "arm" || ${__T} == "armv6" || \
- ${__T} == "armv6hf" || ${__T} == "i386"
+.if ${__T} == "amd64" || (${__TT} == "arm" && ${__T:Marm*eb*} == "") || \
+ ${__T} == "i386"
__DEFAULT_YES_OPTIONS+=CLANG_IS_CC
__DEFAULT_NO_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX
.else
@@ -308,6 +307,7 @@ MK_BINUTILS:= no
MK_CLANG:= no
MK_GCC:= no
MK_GDB:= no
+MK_INCLUDES:= no
.endif
.if ${MK_CLANG} == "no"
@@ -332,6 +332,7 @@ MK_CLANG_FULL:= no
KVM \
NETGRAPH \
PAM \
+ TESTS \
WIRELESS
.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
MK_${var}_SUPPORT:= no
@@ -359,4 +360,12 @@ MK_${vv:H}:= ${MK_${vv:T}}
MK_LLDB:= no
.endif
+# gcc 4.8 and newer supports libc++, so suppress gnuc++ in that case.
+# while in theory we could build it with that, we don't want to do
+# that since it creates too much confusion for too little gain.
+.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800
+MK_GNUCXX:=no
+MK_GCC:=no
.endif
+
+.endif # !target(__<src.opts.mk>__)
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index f63d829..54ded9d 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -137,6 +137,8 @@ OBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import
OBJCOPY ?= objcopy
+OBJDUMP ?= objdump
+
PC ?= pc
PFLAGS ?=
@@ -146,6 +148,10 @@ RFLAGS ?=
SHELL ?= sh
+.if !defined(%POSIX)
+SIZE ?= size
+.endif
+
YACC ?= yacc
.if defined(%POSIX)
YFLAGS ?=
diff --git a/share/mk/tap.test.mk b/share/mk/tap.test.mk
index 058ebdf..ec86088 100644
--- a/share/mk/tap.test.mk
+++ b/share/mk/tap.test.mk
@@ -86,7 +86,11 @@ CLEANFILES+= ${_T} ${_T}.tmp
TAP_TESTS_SH_SED_${_T}?= # empty
TAP_TESTS_SH_SRC_${_T}?= ${_T}.sh
${_T}: ${TAP_TESTS_SH_SRC_${_T}}
+.if empty(TAP_TESTS_SH_SED_${_T})
+ cat ${.ALLSRC} >${.TARGET}.tmp
+.else
cat ${.ALLSRC} | sed ${TAP_TESTS_SH_SED_${_T}} >${.TARGET}.tmp
+.endif
chmod +x ${.TARGET}.tmp
mv ${.TARGET}.tmp ${.TARGET}
.endfor
diff --git a/share/syscons/keymaps/INDEX.keymaps b/share/syscons/keymaps/INDEX.keymaps
index 1ecfa74..221bf5a 100644
--- a/share/syscons/keymaps/INDEX.keymaps
+++ b/share/syscons/keymaps/INDEX.keymaps
@@ -4,7 +4,7 @@
#
# Format <file>:<lang>:<description>
#
-# lang: ar bg cs da de el en es fi fr hr hu hy is it iw ja kk ko nl no pl
+# lang: ar bg cs da de el en es fi fr he hr hu hy is it ja kk ko nl no pl
# pt ro ru sh sk sl sv tr uk zh
# lang: lang,lang
#
@@ -27,7 +27,7 @@ MENU:fr:Choisissez la nationalité de votre clavier
MENU:pl:Wybierz uk³ad klawiatury
MENU:pt:Escolha o layout do teclado
MENU:es:Seleccione el idioma de su teclado
-MENU:iw:êìù úãì÷îä úôù úà øçá
+MENU:he:êìù úãì÷îä úôù úà øçá
MENU:uk:BÉÂÅÒ¦ÔØ ÒÏÚËÌÁÄËÕ ËÌÁצÁÔÕÒÉ
MENU:el:ÅðéëÝîôå ôï ðëçêôñïëüãéï ôçò êïíóüëáò
MENU:hy:ÀÝïñ»ù ëï»Õݳ߳ñÇ ¹³ë³íáñáõÃÛáõÝÁ
@@ -36,7 +36,7 @@ FONT:en:cp437-8x16.fnt
FONT:de,fr,da,no,sv,pt,es:iso-8x16.fnt
FONT:ru:koi8-r-8x16.fnt
FONT:pl:iso02-8x16.fnt
-FONT:iw:iso08-8x16.fnt
+FONT:he:iso08-8x16.fnt
FONT:uk:koi8-u-8x16.fnt
FONT:el:iso07-8x16.fnt
FONT:hy:haik8-8x16.fnt
@@ -52,8 +52,10 @@ be.iso.acc.kbd:fr:Belge ISO-8859-1 (avec accents)
be.iso.acc.kbd:pt:Belga ISO-8859-1 (com acentos)
be.iso.acc.kbd:es:Belga ISO-8859-1 (con acentos)
-bg.bds.ctrlcaps.kbd:bg:Bulgarian BDS
-bg.phonetic.ctrlcaps.kbd:bg:Bulgarian Phonetic
+bg.bds.ctrlcaps.kbd:en:Bulgarian (BDS)
+bg.bds.ctrlcaps.kbd:de:Bulgarisch (BDS)
+bg.phonetic.ctrlcaps.kbd:en:Bulgarian (Phonetic)
+bg.phonetic.ctrlcaps.kbd:de:Bulgarisch (phonetisch)
br275.iso.kbd:en:Brazilian 275 ISO-8859-1
br275.iso.kbd:de:Brasilianisch 275 ISO-8859-1
@@ -74,10 +76,13 @@ br275.cp850.kbd:pt:Brasileiro 275 Codepage 850
br275.cp850.kbd:es:Brasileño 275 Codepage 850
by.cp1131.kbd:en:Belarusian Codepage 1131
+by.cp1131.kbd:de:Weißrussisch Code page 1131
by.cp1131.kbd:fr:Biélorusse Code page 1131
+by.cp1251.kbd:de:Weißrussisch Codepage 1251
by.cp1251.kbd:en:Belarusian Codepage 1251
by.cp1251.kbd:fr:Biélorusse Code page 1251
by.iso5.kbd:en:Belarusian ISO-8859-5
+by.iso5.kbd:de:Weißrussisch ISO-8859-5
by.iso5.kbd:fr:Biélorusse ISO-8859-5
ce.iso2.kbd:en:Central European ISO-8859-2
@@ -88,6 +93,7 @@ ce.iso2.kbd:es:Centroeuropeo ISO-8859-2
colemak.iso15.acc.kbd:en:Colemak ergonomic alternative
cs.latin2.qwertz.kbd:en:Czech ISO-8859-2 (QWERTZ, accent keys)
+cs.latin2.qwertz.kbd:de:Tschechisch ISO-8859-2 (QWERTZ, mit Akzenten)
cs.latin2.qwertz.kbd:fr:Tchèque ISO-8859-2 (QWERTZ, avec accents)
cs.latin2.qwertz.kbd:es:Checo ISO-8859-2 (QWERTZ, con acentos)
@@ -118,8 +124,14 @@ danish.cp865.kbd:pt:Dinamarquês Codepage 865
danish.cp865.kbd:es:Danés Codepage 865
danish.iso.macbook.kbd:da:Danish ISO-8859-1 (macbook)
+danish.iso.macbook.kbd:da:Dansk ISO-8859-1 (macbook)
+danish.iso.macbook.kbd:de:Dänisch ISO-8859-1 (Macbook)
+danish.iso.macbook.kbd:fr:Danois ISO-8859-1 (macbook)
+danish.iso.macbook.kbd:pt:Dinamarquês ISO-8859-1 (macbook)
+danish.iso.macbook.kbd:es:Danés ISO-8859-1 (macbook)
dutch.iso.acc.kbd:en:Dutch ISO keymap (accent keys)
+dutch.iso.acc.kbd:de:Holländisch (mit Akzenten)
eee_nordic.kbd:en:Nordic layout on Asus eeePC
eee_nordic.kbd:fr:Norvégien phonétique sur Asus eeePC
@@ -193,19 +205,19 @@ fr_CA.iso.acc.kbd:fr:Français Canadien ISO-8859-1 (avec accents)
fr_CA.iso.acc.kbd:es:Francocanadiense ISO-8859-1 (con acentos)
fr_CA.iso.acc.kbd:uk:æÒÁÎÃÕÚØËÏ-ËÁÎÁÄÓØËÁ ISO-8859-1 (accent keys)
-german.iso.kbd:en:German ISO-8859-1
-german.iso.kbd:de:Deutsch ISO-8859-1
-german.iso.kbd:fr:Allemand ISO-8859-1
-german.iso.kbd:pt:Alemão ISO-8859-1
-german.iso.kbd:es:Alemán ISO-8859-1
-german.iso.kbd:uk:î¦ÍÅÃØËÁ ISO-8859-1
+german.iso.kbd:en:German ISO-8859-15
+german.iso.kbd:de:Deutsch ISO-8859-15
+german.iso.kbd:fr:Allemand ISO-8859-15
+german.iso.kbd:pt:Alemão ISO-8859-15
+german.iso.kbd:es:Alemán ISO-8859-15
+german.iso.kbd:uk:î¦ÍÅÃØËÁ ISO-8859-15
-german.iso.acc.kbd:en:German ISO-8859-1 (accent keys)
-german.iso.acc.kbd:de:Deutsch ISO-8859-1 (mit Akzenten)
-german.iso.acc.kbd:fr:Allemand ISO-8859-1 (avec accents)
-german.iso.acc.kbd:pt:Alemão ISO-8859-1 (com acentos)
-german.iso.acc.kbd:es:Alemán ISO-8859-1 (con acentos)
-german.iso.acc.kbd:uk:î¦ÍÅÃØËÁ ISO-8859-1 (accent keys)
+german.iso.acc.kbd:en:German ISO-8859-15 (accent keys)
+german.iso.acc.kbd:de:Deutsch ISO-8859-15 (mit Akzenten)
+german.iso.acc.kbd:fr:Allemand ISO-8859-15 (avec accents)
+german.iso.acc.kbd:pt:Alemão ISO-8859-15 (com acentos)
+german.iso.acc.kbd:es:Alemán ISO-8859-15 (con acentos)
+german.iso.acc.kbd:uk:î¦ÍÅÃØËÁ ISO-8859-15 (accent keys)
german.cp850.kbd:en:German Codepage 850
german.cp850.kbd:de:Deutsch Codeseite 850
@@ -215,14 +227,17 @@ german.cp850.kbd:es:Alemán Codepage 850
german.cp850.kbd:uk:î¦ÍÅÃØËÁ CP-850
gr.elot.acc.kbd:en:Greek ISO-8859-7 ELOT
+gr.elot.acc.kbd:de:Grieschisch ISO-8859-7 ELOT
gr.elot.acc.kbd:fr:Grec ISO-8859-7 ELOT
gr.elot.acc.kbd:el:Åëëçíéêü ISO-8859-7 ÅËÏÔ
gr.us101.acc.kbd:en:Greek ISO-8859-7 (101 keys)
+gr.us101.acc.kbd:de:Grieschisch ISO-8859-7 (101 Tasten)
gr.us101.acc.kbd:fr:Grec ISO-8859-7 (101 touches)
gr.us101.acc.kbd:el:Åëëçíéêü ISO-8859-7 (101 ðëÞêôñùí)
iw.iso8.kbd:en:Hebrew ISO-8859-8
+iw.iso8.kbd:de:Hebräisch ISO-8859-8
iw.iso8.kbd:fr:Hébreu ISO-8859-8
iw.iso8.kbd:he:ISO-8859-8 úéøáò
@@ -280,15 +295,25 @@ jp.106x.kbd:es:Japonés 106x
jp.106x.kbd:uk:ñÐÏÎÓØËÁ 106x
jp.pc98.kbd:en:Japanese PC-98x1
+jp.pc98.kbd:de:Japanisch PC-98x1
jp.pc98.kbd:fr:Japonais PC-98x1
+jp.pc98.kbd:pt:Japonês PC-98x1
+jp.pc98.kbd:es:Japonés PC-98x1
+jp.pc98.kbd:uk:ñÐÏÎÓØËÁ PC-98x1
jp.pc98.iso.kbd:en:Japanese PC-98x1 (ISO)
+jp.pc98.iso.kbd:de:Japanisch PC-98x1 (ISO)
jp.pc98.iso.kbd:fr:Japonais PC-98x1 (ISO)
+jp.pc98.iso.kbd:pt:Japonês PC-98x1 (ISO)
+jp.pc98.iso.kbd:es:Japonés PC-98x1 (ISO)
+jp.pc98.iso.kbd:uk:ñÐÏÎÓØËÁ PC-98x1 (ISO)
kk.pt154.kst.kbd:en:Kazakh PT154 codepage
+kk.pt154.kst.kbd:de:Kasachisch PT154 codepage
kk.pt154.kst.kbd:fr:Kazakh PT154 code page
-kk.pt154.io.kbd:en:Kazakh PT154 codepage
-kk.pt154.io.kbd:fr:Kazakh PT154 code page
+kk.pt154.io.kbd:en:Kazakh PT154 codepage (with IO)
+kk.pt154.io.kbd:de:Kasachisch PT154 codepage (mit IO)
+kk.pt154.io.kbd:fr:Kazakh PT154 code page (avec IO)
latinamerican.kbd:en:Latin American
latinamerican.kbd:de:Latein Amerikanisch
@@ -301,6 +326,7 @@ latinamerican.iso.acc.kbd:fr:Amérique latine (avec accents)
latinamerican.iso.acc.kbd:pt,es:América Latina (com acentos)
lt.iso4.kbd:en:Lithuanian ISO-8859-4
+lt.iso4.kbd:de:Litauisch ISO-8859-4
lt.iso4.kbd:fr:Lithuanien ISO-8859-4
lt.iso4.kbd:es:Lituano ISO-8859-4
@@ -310,6 +336,7 @@ norwegian.iso.kbd:de:Norwegisch ISO-8859-1
norwegian.iso.kbd:fr:Norvégien ISO-8859-1
norwegian.iso.kbd:pt:Norueguês ISO-8859-1
norwegian.iso.kbd:es:Noruego ISO-8859-1
+
norwegian.dvorak.kbd:en:Norwegian dvorak
norwegian.dvorak.kbd:no:Norsk dvorak
norwegian.dvorak.kbd:de:Norwegisch dvorak
@@ -352,8 +379,11 @@ ru.cp866.kbd:es:Ruso Codepage 866 (alternativo)
ru.cp866.kbd:uk:òÏÓ¦ÊÓØËÁ CP-866 (ÁÌØÔÅÒÎÁÔÉ×ÎÁ)
ru.iso5.kbd:en:Russian ISO-8859-5
+ru.iso5.kbd:de:Russisch ISO-8859-5
ru.iso5.kbd:fr:Russe ISO-8859-5
ru.iso5.kbd:ru:òÕÓÓËÉÊ ISO-8859-5
+ru.iso5.kbd:pt:Russo ISO-8859-5
+ru.iso5.kbd:es:Ruso ISO-8859-5
ru.iso5.kbd:uk:òÏÓ¦ÊÓØËÉÊ ISO-8859-5
ru.koi8-r.kbd:en:Russian koi8-r
@@ -465,6 +495,7 @@ swissgerman.macbook.acc.kbd:pt:Suiço-Alemão Macbook/Macbook Pro (com acentos)
swissgerman.macbook.acc.kbd:es:Germanosuizo Macbook/Macbook Pro (con acentos)
tr.iso9.q.kbd:en:Turkish ISO-8859-9
+tr.iso9.q.kbd:de:Türkisch ISO-8859-9
tr.iso9.q.kbd:fr:Turc ISO-8859-9
tr.iso9.q.kbd:uk:ôÕÒÅÃØËÁ ISO-8859-9
@@ -475,6 +506,10 @@ uk.iso.kbd:pt:Reino Unido ISO-8859-1
uk.iso.kbd:es:Británico ISO-8859-1
uk.iso-ctrl.kbd:en:United Kingdom ISO-8859-1 (Caps Lock acts as Left Ctrl)
+uk.iso-ctrl.kbd:de:Vereinigtes Königreich ISO-8859-1 (Caps Lock als linke Strg)
+#uk.iso-ctrl.kbd:fr:Royaume Uni ISO-8859-1 (caps lock acts as Left Ctrl)
+#uk.iso-ctrl.kbd:pt:Reino Unido ISO-8859-1 (caps lock acts as Left Ctrl)
+#uk.iso-ctrl.kbd:es:Británico ISO-8859-1 (caps lock acts as Left Ctrl)
uk.cp850.kbd:en:United Kingdom Codepage 850
uk.cp850.kbd:de:Vereinigtes Königreich Codeseite 850
@@ -483,9 +518,13 @@ uk.cp850.kbd:pt:Reino Unido Codepage 850
uk.cp850.kbd:es:Británico Codepage 850
uk.cp850-ctrl.kbd:en:United Kingdom Codepage 850 (Caps Lock acts as Left Ctrl)
+uk.cp850.kbd:de:Vereinigtes Königreich ISO-8859-1 (Caps Lock als linke Strg)
+#uk.cp850.kbd:fr:Royaume Uni ISO-8859-1 (caps lock acts as Left Ctrl)
+#uk.cp850.kbd:pt:Reino Unido ISO-8859-1 (caps lock acts as Left Ctrl)
+#uk.cp850.kbd:es:Británico ISO-8859-1 (caps lock acts as Left Ctrl)
uk.dvorak.kbd:en:United Kingdom Dvorak
-uk.dvorak.kbd:de:Vereinigtes K\xf6nigreich Dvorak
+uk.dvorak.kbd:de:Vereinigtes Königreich Dvorak
uk.dvorak.kbd:fr:Royaume Uni Dvorak
uk.dvorak.kbd:pt:Reino Unido Dvorak
uk.dvorak.kbd:es:Británico Dvorak
@@ -521,6 +560,10 @@ us.dvorakl.kbd:pt:Estados Unidos da América dvorakl
us.dvorakl.kbd:es:Estadounidense dvorak zurdo
us.dvorakp.kbd:en:United States of America Programmer Dvorak
+us.dvorakp.kbd:de:US-amerikanisch (Dvorak für Programmierer)
+us.dvorakp.kbd:fr:États Unis d'Amérique dvorakp
+us.dvorakp.kbd:pt:Estados Unidos da América dvorakp
+us.dvorakp.kbd:es:Estadounidense dvorakp
us.dvorakx.kbd:en:United States of America dvorakx
us.dvorakx.kbd:de:US-amerikanisch dvorakx
@@ -543,14 +586,17 @@ us.unix.kbd:pt:Estados Unidos da América unix
us.unix.kbd:es:Estadounidense Unix tradicional
ua.iso5.kbd:en:Ukrainian ISO-8859-5
+ua.iso5.kbd:de:Ukrainisch ISO-8859-5
ua.iso5.kbd:fr:Ukrainien ISO-8859-5
ua.iso5.kbd:ru:õËÒÁÉÎÓËÉÊ ISO-8859-5
ua.iso5.kbd:uk:õËÒÁ§ÎÓØËÁ ISO-8859-5
ua.koi8-u.kbd:en:Ukrainian koi8-u
+ua.koi8-u.kbd:de:Ukrainisch koi8-u
ua.koi8-u.kbd:fr:Ukrainien koi8-u
ua.koi8-u.kbd:uk:õËÒÁ§ÎÓØËÁ koi8-u
ua.koi8-u.shift.alt.kbd:en:Ukrainian koi8-u with koi8-r (shift)
+ua.koi8-u.shift.alt.kbd:de:Ukrainisch koi8-u mit koi8-r (shift)
ua.koi8-u.shift.alt.kbd:fr:Ukrainien koi8-u avec koi8-r (shift)
ua.koi8-u.shift.alt.kbd:uk:õËÒÁ§ÎÓØËÁ koi8-u Ú koi8-r (shift)
diff --git a/share/syscons/keymaps/be.iso.acc.kbd b/share/syscons/keymaps/be.iso.acc.kbd
index 83a093c..7f6d247 100644
--- a/share/syscons/keymaps/be.iso.acc.kbd
+++ b/share/syscons/keymaps/be.iso.acc.kbd
@@ -42,7 +42,7 @@
036 'j' 'J' nl nl 'j' 'J' nl nl C
037 'k' 'K' vt vt 'k' 'K' vt vt C
038 'l' 'L' ff ff 'l' 'L' ff ff C
- 039 'm' 'M' cr cr 'm' 'M' cr cr O
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
040 249 '%' nop nop dacu dacu nop nop O
041 178 179 nop nop 178 179 nop nop O
042 lshift lshift lshift lshift lshift lshift lshift lshift O
@@ -53,7 +53,7 @@
047 'v' 'V' syn syn 'v' 'V' syn syn C
048 'b' 'B' stx stx 'b' 'B' stx stx C
049 'n' 'N' so so 'n' 'N' so so C
- 050 ',' '?' nop nop ',' '?' nop nop C
+ 050 ',' '?' nop nop ',' '?' nop nop O
051 ';' '.' nop nop ';' '.' nop nop O
052 ':' '/' nop nop ':' '/' nop nop O
053 '=' '+' nop nop dtil dtil nop nop O
diff --git a/share/syscons/keymaps/cs.latin2.qwertz.kbd b/share/syscons/keymaps/cs.latin2.qwertz.kbd
index fefebe0..25dbe5a 100644
--- a/share/syscons/keymaps/cs.latin2.qwertz.kbd
+++ b/share/syscons/keymaps/cs.latin2.qwertz.kbd
@@ -1,5 +1,5 @@
# Czech Standard Typewriter QWERTZ Keyboard
-# by Rudolf Cejka <cejkar@dcse.fee.vutbr.cz>
+# by Rudolf Cejka <cejkar@fit.vutbr.cz>
#
# $FreeBSD$
#
diff --git a/share/syscons/keymaps/uk.iso-ctrl.kbd b/share/syscons/keymaps/uk.iso-ctrl.kbd
index 2225c30..7b529fb 100644
--- a/share/syscons/keymaps/uk.iso-ctrl.kbd
+++ b/share/syscons/keymaps/uk.iso-ctrl.kbd
@@ -46,7 +46,7 @@
040 ''' '@' nul nul ''' '@' nul nul O
041 '`' 172 nop nop '|' '|' nop nop O
042 lshift lshift lshift lshift lshift lshift lshift lshift O
- 043 '#' '~' nop nop '~' '~' nop nop O
+ 043 '#' '~' nop nop '#' '~' nop nop O
044 'z' 'Z' sub sub 'z' 'Z' sub sub C
045 'x' 'X' can can 'x' 'X' can can C
046 'c' 'C' etx etx 'c' 'C' etx etx C
diff --git a/share/syscons/keymaps/uk.iso.kbd b/share/syscons/keymaps/uk.iso.kbd
index adaf9d0..b7b9c32 100644
--- a/share/syscons/keymaps/uk.iso.kbd
+++ b/share/syscons/keymaps/uk.iso.kbd
@@ -46,7 +46,7 @@
040 ''' '@' nul nul ''' '@' nul nul O
041 '`' 172 nop nop '|' '|' nop nop O
042 lshift lshift lshift lshift lshift lshift lshift lshift O
- 043 '#' '~' nop nop '~' '~' nop nop O
+ 043 '#' '~' nop nop '#' '~' nop nop O
044 'z' 'Z' sub sub 'z' 'Z' sub sub C
045 'x' 'X' can can 'x' 'X' can can C
046 'c' 'C' etx etx 'c' 'C' etx etx C
diff --git a/share/vt/keymaps/INDEX.keymaps b/share/vt/keymaps/INDEX.keymaps
new file mode 100644
index 0000000..8a33bc8
--- /dev/null
+++ b/share/vt/keymaps/INDEX.keymaps
@@ -0,0 +1,598 @@
+# $FreeBSD$
+#
+# database for kbdmap(8)
+#
+# Format <file>:<lang>:<description>
+#
+# lang: ar bg cs da de el en es fi fr he hr hu hy is it ja kk ko nl no pl
+# pt ro ru sh sk sl sv tr uk zh
+# lang: lang,lang
+#
+# If lang empty use 'en' (us-english) as default.
+#
+# Example:
+# german.iso.kbd:de:deutsch
+# german.iso.kbd:en:german
+#
+# See also setlocal
+# /usr/share/locale, /usr/X11/lib/X11/locale/locale.alias
+#
+#
+# Language support: MENU, FONT
+#
+MENU:en:Choose your keyboard language
+MENU:da,no,sv:Vælg dit keyboard layout
+MENU:de:Wählen Sie Ihre Tastaturbelegung
+MENU:fr:Choisissez la nationalité de votre clavier
+MENU:pl:Wybierz układ klawiatury
+MENU:pt:Escolha o layout do teclado
+MENU:es:Seleccione el idioma de su teclado
+MENU::ךלש תדלקמה תפש ×ª× ×¨×—×‘
+MENU:uk:Bиберіть розкладку клавіатури
+MENU:el:Επιλέξτε το πληκτÏολόγιο της κονσόλας
+MENU:hy:Ô¸Õ¶Õ¿Ö€Õ¥Ö„ Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ« Õ¤Õ¡Õ½Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨
+
+#
+# The font definition for "en" is the fall-back font for
+# all languages.
+# Add language specific font definitions only where required!
+#
+FONT:en:vgarom-8x16.hex
+
+#
+be.kbd:en:Belgian
+be.kbd:de:Belgisch
+be.kbd:fr:Belge
+be.kbd:pt,es:Belga
+
+be.acc.kbd:en:Belgian (accent keys)
+be.acc.kbd:de:Belgisch (mit Akzenten)
+be.acc.kbd:fr:Belge (avec accents)
+be.acc.kbd:pt:Belga (com acentos)
+be.acc.kbd:es:Belga (con acentos)
+
+bg.bds.kbd:en:Bulgarian (BDS)
+bg.bds.kbd:de:Bulgarisch (BDS)
+
+bg.phonetic.kbd:en:Bulgarian (Phonetic)
+bg.phonetic.kbd:de:Bulgarisch (phonetisch)
+
+br.kbd:en:Brazilian (accent keys)
+br.kbd:de:Brasilianisch (mit Akzenten)
+br.kbd:fr:Brésilien (avec accents)
+br.kbd:pt:Brasileiro (com acentos)
+br.kbd:es:Brasileño (con acentos)
+
+br.noacc.kbd:en:Brazilian (without accent keys)
+br.noacc.kbd:de:Brasilianisch (ohne Akzente)
+br.noacc.kbd:fr:Brésilien (sans accents)
+br.noacc.kbd:pt:Brasileiro (without accent keys)
+br.noacc.kbd:es:Brasileño (without accent keys)
+
+by.kbd:en:Belarusian
+by.kbd:de:Weißrussisch
+by.kbd:fr:Biélorusse
+
+centraleuropean.kbd:en:Central European
+centraleuropean.kbd:de:Zentral Europäisch
+centraleuropean.kbd:fr:Centre européen
+centraleuropean.kbd:es:Centroeuropeo
+
+centraleuropean.qwerty.kbd:en:Central European (QWERTY)
+centraleuropean.qwerty.kbd:de:Zentral Europäisch (QWERTY)
+centraleuropean.qwerty.kbd:fr:Centre européen (QWERTY)
+centraleuropean.qwerty.kbd:es:Centroeuropeo (QWERTY)
+
+colemak.acc.kbd:en:Colemak ergonomic alternative
+
+cz.kbd:en:Czech (QWERTZ, accent keys)
+cz.kbd:de:Tschechisch (QWERTZ, mit Akzenten)
+cz.kbd:fr:Tchèque (QWERTZ, avec accents)
+cz.kbd:es:Checo (QWERTZ, con acentos)
+
+cz.kbd.from-ce:en:Czech
+cz.kbd.from-ce:de:Tschechisch
+cz.kbd.from-ce:fr:Tchèque
+cz.kbd.from-ce:es:Checo
+
+cz.qwerty.kbd.from-ce:en:Czech (QWERTY)
+cz.qwerty.kbd.from-ce:de:Tschechisch (QWERTY)
+cz.qwerty.kbd.from-ce:fr:Tchèquey (QWERTY)
+cz.qwerty.kbd.from-ce:es:Checo (QWERTY)
+
+dk.kbd:en:Danish
+dk.kbd:da:Dansk
+dk.kbd:de:Dänisch
+dk.kbd:fr:Danois
+dk.kbd:pt:Dinamarquês
+dk.kbd:es:Danés
+
+dk.acc.kbd:en:Danish (accent keys)
+dk.acc.kbd:da:Dansk (accent taster)
+dk.acc.kbd:de:Dänisch (mit Akzenten)
+dk.acc.kbd:fr:Danois (avec accents)
+dk.acc.kbd:pt:Dinamarquês (com acentos)
+dk.acc.kbd:es:Danés (con acentos)
+
+dk.kbd.from-cp865:en:Danish
+dk.kbd.from-cp865:da:Dansk
+dk.kbd.from-cp865:de:Dänisch
+dk.kbd.from-cp865:fr:Danois
+dk.kbd.from-cp865:pt:Dinamarquês
+dk.kbd.from-cp865:es:Danés
+
+dk.macbook.kbd:da:Danish (macbook)
+dk.macbook.kbd:da:Dansk (macbook)
+dk.macbook.kbd:de:Dänisch (Macbook)
+dk.macbook.kbd:fr:Danois (macbook)
+dk.macbook.kbd:pt:Dinamarquês (macbook)
+dk.macbook.kbd:es:Danés (macbook)
+
+nl.kbd:en:Dutch (accent keys)
+nl.kbd:de:Holländisch (mit Akzenten)
+
+nordic.asus-eee.kbd:en:Nordic layout on Asus eeePC
+nordic.asus-eee.kbd:fr:Norvégien phonétique sur Asus eeePC
+
+gr.kbd:en:Greek (104 keys)
+gr.kbd:fr:Grec (104 touches)
+gr.kbd:el:Ελληνικό (104 πλήκτÏων)
+
+ee.kbd.from-iso1:en:Estonian
+ee.kbd.from-iso1:de:Estnisch
+ee.kbd.from-iso1:fr:Estonien
+ee.kbd.from-iso1:es:Estonio
+
+ee.kbd:en:Estonian
+ee.kbd:de:Estnisch
+ee.kbd:fr:Estonien
+ee.kbd:es:Estonio
+
+ee.kbd.from-cp850:en:Estonian
+ee.kbd.from-cp850:de:Estnisch
+ee.kbd.from-cp850:fr:Estonien
+ee.kbd.from-cp850:es:Estonio
+
+fi.kbd:en:Finnish
+fi.kbd:de:Finnisch
+fi.kbd:fr:Finlandais
+fi.kbd:es:Finlandés
+
+fi.kbd.from-cp850:en:Finnish
+fi.kbd.from-cp850:de:Finnisch
+fi.kbd.from-cp850:fr:Finlandais
+fi.kbd.from-cp850:es:Finlandés
+
+fr.kbd:en:French
+fr.kbd:de:Französisch
+fr.kbd:fr:Français
+fr.kbd:pt:Francês
+fr.kbd:es:Francés
+fr.kbd:uk:Французька
+
+fr.acc.kbd:en:French (accent keys)
+fr.acc.kbd:de:Französisch (mit Akzenten)
+fr.acc.kbd:fr:Français (avec accents)
+fr.acc.kbd:pt:Francês (com acentos)
+fr.acc.kbd:es:Francés (con acentos)
+fr.acc.kbd:uk:Французька (accent keys)
+
+fr.macbook.kbd:en:French Macbook/Macbook Pro (accent keys)
+fr.macbook.kbd:de:Französisch Macbook/Macbook Pro (mit Aksenten)
+fr.macbook.kbd:fr:Français Macbook/Macbook Pro (accent keys)
+fr.macbook.kbd:pt:Francês Macbook/Macbook Pro (com acentos)
+fr.macbook.kbd:es:Francés Macbook/Macbook Pro (con acentos)
+
+fr.dvorak.kbd:en:French Dvorak-like
+fr.dvorak.kbd:de:Französisch Dvorak
+fr.dvorak.kbd:fr:Français Dvorak
+fr.dvorak.kbd:pt:Francês Dvorak
+fr.dvorak.kbd:es:Francés Dvorak
+fr.dvorak.kbd:uk:French Dvorak-like
+
+fr.dvorak.acc.kbd:en:French Dvorak-like (accent keys)
+fr.dvorak.acc.kbd:de:Französisch Dvorak (mit Akzenten)
+fr.dvorak.acc.kbd:fr:Français Dvorak (accent keys)
+fr.dvorak.acc.kbd:pt:Francês Dvorak (com acentos)
+fr.dvorak.acc.kbd:es:Francés Dvorak (con acentos)
+fr.dvorak.acc.kbd:uk:French Dvorak-like (accent keys)
+
+ca.kbd:en:Canadian Bilingual
+
+ca-fr.kbd:en:French Canadian (accent keys)
+ca-fr.kbd:de:Französisch Kanada (mit Akzenten)
+ca-fr.kbd:fr:Français Canadien (avec accents)
+ca-fr.kbd:es:Francocanadiense (con acentos)
+ca-fr.kbd:uk:Французько-канадÑька (accent keys)
+
+de.kbd:en:German
+de.kbd:de:Deutsch
+de.kbd:fr:Allemand
+de.kbd:pt:Alemão
+de.kbd:es:Alemán
+de.kbd:uk:Ðімецька
+
+de.acc.kbd:en:German (accent keys)
+de.acc.kbd:de:Deutsch (mit Akzenten)
+de.acc.kbd:fr:Allemand (avec accents)
+de.acc.kbd:pt:Alemão (com acentos)
+de.acc.kbd:es:Alemán (con acentos)
+de.acc.kbd:uk:Ðімецька (accent keys)
+
+de.noacc.kbd:en:German (no accent keys)
+de.noacc.kbd:de:Deutsch (ohne Akzente)
+de.noacc.kbd:fr:Allemand (sans accents)
+de.noacc.kbd:pt:Alemão (no accent keys)
+de.noacc.kbd:es:Alemán (no accent keys)
+de.noacc.kbd:uk:Ðімецька (no accent keys)
+
+de.kbd.from-cp850:en:German
+de.kbd.from-cp850:de:Deutsch
+de.kbd.from-cp850:fr:Allemand
+de.kbd.from-cp850:pt:Alemão
+de.kbd.from-cp850:es:Alemán
+de.kbd.from-cp850:uk:Ðімецька
+
+gr.elot.acc.kbd:en:Greek ELOT
+gr.elot.acc.kbd:de:Grieschisch ELOT
+gr.elot.acc.kbd:fr:Grec ELOT
+gr.elot.acc.kbd:el:Ελληνικό ΕΛΟΤ
+
+gr.101.acc.kbd:en:Greek (101 keys)
+gr.101.acc.kbd:de:Grieschisch (101 Tasten)
+gr.101.acc.kbd:fr:Grec (101 touches)
+gr.101.acc.kbd:el:Ελληνικό (101 πλήκτÏων)
+
+il.kbd:en:Hebrew
+il.kbd:de:Hebräisch
+il.kbd:fr:Hébreu
+il.kbd::תירבע
+
+hr.kbd:en:Croatian
+hr.kbd:de:Kroatisch
+hr.kbd:fr:Croate
+hr.kbd:es:Croata
+
+hu.101.kbd:en:Hungarian (101 keys)
+hu.101.kbd:de:Ungarisch (101 Tasten)
+hu.101.kbd:fr:Hongrois (101 touches)
+hu.101.kbd:es:Húngaro (101)
+
+hu.102.kbd:en:Hungarian (102 keys)
+hu.102.kbd:de:Ungarisch (102 Tasten)
+hu.102.kbd:fr:Hongrois (102 touches)
+hu.102.kbd:es:Húngaro (102)
+
+am.kbd:hy:Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶ Õ°Õ¶Õ¹ÕµÕ¸Ö‚Õ¶Õ¡ÕµÕ«Õ¶ (Phonetic) Õ¤Õ¡Õ½Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶
+am.kbd:ru:ÐрмÑнÑÐºÐ°Ñ Ñ„Ð¾Ð½ÐµÑ‚Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ñ€Ð°Ñкладка
+am.kbd:en:Armenian phonetic layout
+am.kbd:fr:Arménien phonétique
+am.kbd:de:Armenische phonetische Tastenbelegung
+
+is.kbd:en:Icelandic
+is.kbd:de:Isländisch
+is.kbd:fr:Islandais
+is.kbd:pt:Islandês
+is.kbd:es:Islandés
+
+is.acc.kbd:en:Icelandic (accent keys)
+is.acc.kbd:de:Isländisch (mit Akzenten)
+is.acc.kbd:fr:Islandais (avec accents)
+is.acc.kbd:pt:Islandês (com acentos)
+is.acc.kbd:es:Islandés (con acentos)
+
+it.kbd:en:Italian
+it.kbd:de:Italienisch
+it.kbd:fr:Italien
+it.kbd:pt,es:Italiano
+it.kbd:uk:ІталійÑька
+
+jp.kbd:en:Japanese 106
+jp.kbd:de:Japanisch 106
+jp.kbd:fr:Japonais 106
+jp.kbd:pt:Japonês 106
+jp.kbd:es:Japonés 106
+jp.kbd:uk:ЯпонÑька 106
+
+jp.capsctrl.kbd:en:Japanese 106x
+jp.capsctrl.kbd:de:Japanisch 106x
+jp.capsctrl.kbd:fr:Japonais 106x
+jp.capsctrl.kbd:pt:Japonês 106x
+jp.capsctrl.kbd:es:Japonés 106x
+jp.capsctrl.kbd:uk:ЯпонÑька 106x
+
+jp.pc98.kbd:en:Japanese PC-98x1
+jp.pc98.kbd:de:Japanisch PC-98x1
+jp.pc98.kbd:fr:Japonais PC-98x1
+jp.pc98.kbd:pt:Japonês PC-98x1
+jp.pc98.kbd:es:Japonés PC-98x1
+jp.pc98.kbd:uk:ЯпонÑька PC-98x1
+
+jp.pc98.iso.kbd:en:Japanese PC-98x1 (ISO)
+jp.pc98.iso.kbd:de:Japanisch PC-98x1 (ISO)
+jp.pc98.iso.kbd:fr:Japonais PC-98x1 (ISO)
+jp.pc98.iso.kbd:pt:Japonês PC-98x1 (ISO)
+jp.pc98.iso.kbd:es:Japonés PC-98x1 (ISO)
+jp.pc98.iso.kbd:uk:ЯпонÑька PC-98x1 (ISO)
+
+kz.kst.kbd:en:Kazakh
+kz.kst.kbd:de:Kasachisch
+kz.kst.kbd:fr:Kazakh
+
+kz.io.kbd:en:Kazakh
+kz.io.kbd:de:Kasachisch
+kz.io.kbd:fr:Kazakh
+
+latinamerican.kbd:en:Latin American
+latinamerican.kbd:de:Latein Amerikanisch
+latinamerican.kbd:fr:Amérique latine
+latinamerican.kbd:pt,es:América Latina
+
+latinamerican.acc.kbd:en:Latin American (accent keys)
+latinamerican.acc.kbd:de:Latein Amerikanisch (mit Akzenten)
+latinamerican.acc.kbd:fr:Amérique latine (avec accents)
+latinamerican.acc.kbd:pt,es:América Latina (com acentos)
+
+lt.kbd:en:Lithuanian
+lt.kbd:de:Litauisch
+lt.kbd:fr:Lithuanien
+lt.kbd:es:Lituano
+
+no.kbd:en:Norwegian
+no.kbd:no:Norsk
+no.kbd:de:Norwegisch
+no.kbd:fr:Norvégien
+no.kbd:pt:Norueguês
+no.kbd:es:Noruego
+
+no.dvorak.kbd:en:Norwegian dvorak
+no.dvorak.kbd:no:Norsk dvorak
+no.dvorak.kbd:de:Norwegisch dvorak
+no.dvorak.kbd:fr:Norvégien dvorak
+no.dvorak.kbd:pt:Norueguês dvorak
+no.dvorak.kbd:es:Noruego Idvorak
+
+pl.kbd:en:Polish (programmer's)
+pl.kbd:de:Polnisch (für Programmierer)
+pl.kbd:fr:Polonais (pour programmeurs)
+pl.kbd:pl:Polska (programisty)
+pl.kbd:pt:Polonês (para programadores)
+pl.kbd:es:Polaco (para programadores)
+
+pl.dvorak.kbd:en:Polish Dvorak
+pl.dvorak.kbd:de:Polnisch Dvorak
+pl.dvorak.kbd:fr:Polonais Dvorak
+pl.dvorak.kbd:pl:Polska Dvorak
+pl.dvorak.kbd:pt:Polonês Dvorak
+pl.dvorak.kbd:es:Polaco Dvorak
+
+pt.kbd:en:Portuguese
+pt.kbd:de:Portugisisch
+pt.kbd:fr:Portugais
+pt.kbd:pt:Português
+pt.kbd:es:Portugués
+
+pt.acc.kbd:en:Portuguese (accent keys)
+pt.acc.kbd:de:Portugisisch (mit Akzenten)
+pt.acc.kbd:fr:Portugais (avec accents)
+pt.acc.kbd:pt:Português (com acentos)
+pt.acc.kbd:es:Portugués (con acentos)
+
+ru.kbd.from-cp866:en:Russian (alternative)
+ru.kbd.from-cp866:de:Russisch (alternativ)
+ru.kbd.from-cp866:ru:РуÑÑкий (alternative)
+ru.kbd.from-cp866:fr:Russe (alternative)
+ru.kbd.from-cp866:pt:Russo (alternativo)
+ru.kbd.from-cp866:es:Ruso (alternativo)
+ru.kbd.from-cp866:uk:РоÑійÑька (альтернативна)
+
+ru.kbd.from-iso5:en:Russian
+ru.kbd.from-iso5:de:Russisch
+ru.kbd.from-iso5:fr:Russe
+ru.kbd.from-iso5:ru:РуÑÑкий
+ru.kbd.from-iso5:pt:Russo
+ru.kbd.from-iso5:es:Ruso
+ru.kbd.from-iso5:uk:РоÑійÑький
+
+ru.kbd:en:Russian
+ru.kbd:de:Russisch
+ru.kbd:ru:РуÑÑкий
+ru.kbd:fr:Russe
+ru.kbd:pt:Russo
+ru.kbd:es:Ruso
+ru.kbd:uk:РоÑійÑька
+
+ru.shift.kbd:en:Russian (shift)
+ru.shift.kbd:de:Russisch (shift)
+ru.shift.kbd:ru:РуÑÑкий (shift)
+ru.shift.kbd:fr:Russe (shift)
+ru.shift.kbd:pt:Russo (shift)
+ru.shift.kbd:es:Ruso (shift)
+ru.shift.kbd:uk:РоÑійÑька (shift)
+
+ru.win.kbd:en:Russian (winkeys)
+ru.win.kbd:de:Russisch (winkeys)
+ru.win.kbd:ru:РуÑÑкий (winkeys)
+ru.win.kbd:fr:Russe (winkeys)
+ru.win.kbd:pt:Russo (winkeys)
+ru.win.kbd:es:Ruso (winkeys)
+ru.win.kbd:uk:РоÑійÑька (winkeys)
+
+es.dvorak.kbd:en:Spanish Dvorak
+es.dvorak.kbd:de:Spanisch Dvorak
+es.dvorak.kbd:fr:Espagnol Dvorak
+es.dvorak.kbd:pt:Espanhol Dvorak
+es.dvorak.kbd:es:Español Dvorak
+
+es.kbd.from-iso1:en:Spanish
+es.kbd.from-iso1:de:Spanisch
+es.kbd.from-iso1:fr:Espagnol
+es.kbd.from-iso1:pt:Espanhol
+es.kbd.from-iso1:es:Español
+
+es.acc.kbd:en:Spanish (accent keys)
+es.acc.kbd:de:Spanisch (accent keys)
+es.acc.kbd:fr:Espagnol (avec accents)
+es.acc.kbd:pt:Espanhol (com acentos)
+es.acc.kbd:es:Español (con acentos)
+
+es.kbd:en:Spanish (accent keys)
+es.kbd:de:Spanisch (accent keys)
+es.kbd:fr:Espagnol (avec accents)
+es.kbd:pt:Espanhol (com acentos)
+es.kbd:es:Español (con acentos)
+
+si.kbd:en:Slovenian
+si.kbd:de:Slovenisch
+si.kbd:fr:Slovène
+si.kbd:pt:Eslovênio
+si.kbd:es:Esloveno
+
+sk.kbd:en:Slovak
+sk.kbd:de:Slovakisch
+sk.kbd:fr:Slovène
+sk.kbd:es:Eslovaco
+
+se.kbd:en:Swedish
+se.kbd:de:Schwedisch
+se.kbd:fr:Suédois
+se.kbd:pt,es:Sueco
+
+se.kbd.from-cp850:en:Swedish
+se.kbd.from-cp850:de:Schwedisch
+se.kbd.from-cp850:fr:Suédois
+se.kbd.from-cp850:pt,es:Sueco
+
+ch-fr.kbd:en:Swiss-French
+ch-fr.kbd:de:Schweiz-Französisch
+ch-fr.kbd:fr:Suisse-Français
+ch-fr.kbd:es:Francosuizo
+
+ch-fr.acc.kbd:en:Swiss-French (accent keys)
+ch-fr.acc.kbd:de:Schweiz-Französisch (mit Akzenten)
+ch-fr.acc.kbd:fr:Suisse-Français (avec accents)
+ch-fr.acc.kbd:es:Francosuizo (con acentos)
+
+ch-fr.kbd.from-cp850:en:Swiss-French
+ch-fr.kbd.from-cp850:de:Schweiz-Französisch
+ch-fr.kbd.from-cp850:fr:Suisse-Français
+ch-fr.kbd.from-cp850:es:Francosuizo
+
+ch.kbd:en:Swiss-German
+ch.kbd:de:Schweiz-Deutsch
+ch.kbd:fr:Suisse-Allemand
+ch.kbd:pt:Suiço-Alemão
+ch.kbd:es:Germanosuizo
+
+ch.acc.kbd:en:Swiss-German (accent keys)
+ch.acc.kbd:de:Schweiz-Deutsch (mit Akzenten)
+ch.acc.kbd:fr:Suisse-Allemand (avec accents)
+ch.acc.kbd:pt:Suiço-Alemão (com acentos)
+ch.acc.kbd:es:Germanosuizo (con acentos)
+
+ch.kbd.from-cp850:en:Swiss-German
+ch.kbd.from-cp850:de:Schweiz-Deutsch
+ch.kbd.from-cp850:fr:Suisse-Allemand
+ch.kbd.from-cp850:pt:Suiço-Alemão
+ch.kbd.from-cp850:es:Germanosuizo
+
+ch.macbook.acc.kbd:en:Swiss-German Macbook/Macbook Pro (accent keys)
+ch.macbook.acc.kbd:de:Schweiz-Deutsch Macbook/Macbook Pro (mit Akzenten)
+ch.macbook.acc.kbd:fr:Suisse-Allemand Macbook/Macbook Pro (avec accents)
+ch.macbook.acc.kbd:pt:Suiço-Alemão Macbook/Macbook Pro (com acentos)
+ch.macbook.acc.kbd:es:Germanosuizo Macbook/Macbook Pro (con acentos)
+
+tr.kbd:en:Turkish
+tr.kbd:de:Türkisch
+tr.kbd:fr:Turc
+tr.kbd:uk:Турецька
+
+uk.kbd:en:United Kingdom
+uk.kbd:de:Vereinigtes Königreich
+uk.kbd:fr:Royaume Uni
+uk.kbd:pt:Reino Unido
+uk.kbd:es:Británico
+
+uk.capsctrl.kbd:en:United Kingdom (Caps Lock acts as Left Ctrl)
+uk.capsctrl.kbd:de:Vereinigtes Königreich (Caps Lock als linke Strg)
+#uk.iso-ctrl.kbd:fr:Royaume Uni (caps lock acts as Left Ctrl)
+#uk.iso-ctrl.kbd:pt:Reino Unido (caps lock acts as Left Ctrl)
+#uk.iso-ctrl.kbd:es:Británico (caps lock acts as Left Ctrl)
+
+uk.dvorak.kbd:en:United Kingdom Dvorak
+uk.dvorak.kbd:de:Vereinigtes Königreich Dvorak
+uk.dvorak.kbd:fr:Royaume Uni Dvorak
+uk.dvorak.kbd:pt:Reino Unido Dvorak
+uk.dvorak.kbd:es:Británico Dvorak
+
+us.kbd:en:United States of America
+us.kbd:de:US-amerikanisch
+us.kbd:fr:États Unis d'Amérique
+us.kbd:pt:Estados Unidos da América
+us.kbd:es:Estadounidense
+
+us.acc.kbd:en:United States of America (accent keys)
+us.acc.kbd:de:US-amerikanisch (mit Akzenten)
+us.acc.kbd:fr:États Unis d'Amérique (avec accents)
+us.acc.kbd:pt:Estados Unidos da América (com acentos)
+us.acc.kbd:es:Estadounidense (con acentos)
+
+us.dvorak.kbd:en:United States of America dvorak
+us.dvorak.kbd:de:US-amerikanisch dvorak
+us.dvorak.kbd:fr:États Unis d'Amérique dvorak
+us.dvorak.kbd:pt:Estados Unidos da América dvorak
+us.dvorak.kbd:es:Estadounidense dvorak
+
+us.dvorakr.kbd:en:United States of America righthand dvorak
+us.dvorakr.kbd:de:US-amerikanisch dvorak rechte Hand
+us.dvorakr.kbd:fr:États Unis d'Amérique dvorakr
+us.dvorakr.kbd:pt:Estados Unidos da América dvorakr
+us.dvorakr.kbd:es:Estadounidense dvorak diestro
+
+us.dvorakl.kbd:en:United States of America lefthand dvorak
+us.dvorakl.kbd:de:US-amerikanisch dvorak linke Hand
+us.dvorakl.kbd:fr:États Unis d'Amérique dvorakl
+us.dvorakl.kbd:pt:Estados Unidos da América dvorakl
+us.dvorakl.kbd:es:Estadounidense dvorak zurdo
+
+us.dvorakp.kbd:en:United States of America Programmer Dvorak
+us.dvorakp.kbd:de:US-amerikanisch (Dvorak für Programmierer)
+us.dvorakp.kbd:fr:États Unis d'Amérique dvorakp
+us.dvorakp.kbd:pt:Estados Unidos da América dvorakp
+us.dvorakp.kbd:es:Estadounidense dvorakp
+
+us.dvorakx.kbd:en:United States of America dvorakx
+us.dvorakx.kbd:de:US-amerikanisch dvorakx
+us.dvorakx.kbd:fr:États Unis d'Amérique dvorakx
+us.dvorakx.kbd:pt:Estados Unidos da América dvorakx
+us.dvorakx.kbd:es:Estadounidense dvorakx
+
+us.emacs.kbd:en:United States of America Emacs optimized layout
+us.emacs.kbd:de:US-amerikanisch für Emacs optimiert
+us.emacs.kbd:fr:États Unis d'Amérique emacs
+us.emacs.kbd:pt:Estados Unidos da América emacs
+us.emacs.kbd:es:Estadounidense optimizado para Emacs
+
+us.ctrl.kbd:en:United States of America (Caps Lock acts as Left Ctrl)
+
+us.unix.kbd:en:United States of America Traditional Unix Workstation
+us.unix.kbd:de:US-amerikanisch traditionelles Unix Layout
+us.unix.kbd:fr:États Unis d'Amérique unix
+us.unix.kbd:pt:Estados Unidos da América unix
+us.unix.kbd:es:Estadounidense Unix tradicional
+
+ua.kbd.from-iso5:en:Ukrainian
+ua.kbd.from-iso5:de:Ukrainisch
+ua.kbd.from-iso5:fr:Ukrainien
+ua.kbd.from-iso5:ru:УкраинÑкий
+ua.kbd.from-iso5:uk:УкраїнÑька
+
+ua.kbd:en:Ukrainian
+ua.kbd:de:Ukrainisch
+ua.kbd:fr:Ukrainien
+ua.kbd:uk:УкраїнÑька
+
+ua.shift.alt.kbd:en:Ukrainian (with Russian) (shift)
+ua.shift.alt.kbd:de:Ukrainisch (mit Russisch) (shift)
+ua.shift.alt.kbd:fr:Ukrainien (koi8-u avec koi8-r) (shift)
+ua.shift.alt.kbd:uk:УкраїнÑька (koi8-u з) koi8-r (shift)
diff --git a/share/vt/keymaps/Makefile b/share/vt/keymaps/Makefile
index 35944a9..762cb17 100644
--- a/share/vt/keymaps/Makefile
+++ b/share/vt/keymaps/Makefile
@@ -1,6 +1,90 @@
# $FreeBSD$
-FILES= pl.kbd ua.kbd ua.shift.alt.kbd
+FILES= INDEX.keymaps \
+ am.kbd \
+ be.acc.kbd \
+ be.kbd \
+ bg.bds.kbd \
+ bg.phonetic.kbd \
+ br.kbd \
+ br.noacc.kbd \
+ by.kbd \
+ ca.kbd \
+ ca-fr.kbd \
+ centraleuropean.kbd \
+ centraleuropean.qwerty.kbd \
+ ch-fr.acc.kbd \
+ ch-fr.kbd \
+ ch.acc.kbd \
+ ch.kbd \
+ ch.macbook.acc.kbd \
+ colemak.acc.kbd \
+ cz.kbd \
+ de.acc.kbd \
+ de.noacc.kbd \
+ de.kbd \
+ dk.acc.kbd \
+ dk.kbd \
+ dk.macbook.kbd \
+ ee.kbd \
+ es.acc.kbd \
+ es.dvorak.kbd \
+ es.kbd \
+ fi.kbd \
+ fr.acc.kbd \
+ fr.dvorak.acc.kbd \
+ fr.dvorak.kbd \
+ fr.kbd \
+ fr.macbook.kbd \
+ gr.101.acc.kbd \
+ gr.elot.acc.kbd \
+ gr.kbd \
+ hr.kbd \
+ hu.101.kbd \
+ hu.102.kbd \
+ il.kbd \
+ is.acc.kbd \
+ is.kbd \
+ it.kbd \
+ jp.capsctrl.kbd \
+ jp.kbd \
+ jp.pc98.iso.kbd \
+ jp.pc98.kbd \
+ kz.io.kbd \
+ kz.kst.kbd \
+ latinamerican.acc.kbd \
+ latinamerican.kbd \
+ lt.kbd \
+ nl.kbd \
+ no.dvorak.kbd \
+ no.kbd \
+ nordic.asus-eee.kbd \
+ pl.dvorak.kbd \
+ pl.kbd \
+ pt.acc.kbd \
+ pt.kbd \
+ ru.kbd \
+ ru.shift.kbd \
+ ru.win.kbd \
+ se.kbd \
+ si.kbd \
+ sk.kbd \
+ tr.kbd \
+ ua.kbd \
+ ua.shift.alt.kbd \
+ uk.capsctrl.kbd \
+ uk.dvorak.kbd \
+ uk.kbd \
+ us.acc.kbd \
+ us.ctrl.kbd \
+ us.dvorak.kbd \
+ us.dvorakl.kbd \
+ us.dvorakp.kbd \
+ us.dvorakr.kbd \
+ us.dvorakx.kbd \
+ us.emacs.kbd \
+ us.kbd \
+ us.unix.kbd \
FILESDIR= ${SHAREDIR}/vt/keymaps
diff --git a/share/vt/keymaps/am.kbd b/share/vt/keymaps/am.kbd
new file mode 100644
index 0000000..0c32243
--- /dev/null
+++ b/share/vt/keymaps/am.kbd
@@ -0,0 +1,247 @@
+# $FreeBSD$
+#
+# FreeBSD Armenian Phonetic keyboard layout
+# by Vahe Khachikyan <vahe@khachikyan.de>
+# US <=> Armphonetic lock (AltGrLock) Alt+Ctrl+Shift
+# US <=> Armphonetic shift (AltGr) Alt
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc nop nop debug esc O
+ 002 '1' '!' nop nop 0x0567 0x0537 nop nop O
+ 003 '2' '@' nul nul 0x0569 0x0539 nul nul O
+ 004 '3' '#' nop nop 0x0583 0x0553 nop nop O
+ 005 '4' '$' nop nop 0x0571 0x0541 nop nop O
+ 006 '5' '%' nop nop 0x057b 0x054b nop nop O
+ 007 '6' '^' rs rs ')' '(' rs rs O
+ 008 '7' '&' nop nop 0x0587 '%' nop nop O
+ 009 '8' '*' nop nop 0x057c 0x054c nop nop O
+ 010 '9' '(' nop nop 0x0579 0x0549 nop nop O
+ 011 '0' ')' nop nop 0x0573 0x0543 nop nop O
+ 012 '-' '_' us us 0x2014 '-' us us O
+ 013 '=' '+' nop nop 0x056a 0x053a nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0x0584 0x0554 dc1 dc1 C
+ 017 'w' 'W' etb etb 0x0578 0x0548 etb etb C
+ 018 'e' 'E' enq enq 0x0565 0x0535 enq enq C
+ 019 'r' 'R' dc2 dc2 0x0580 0x0550 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 0x057f 0x054f dc4 dc4 C
+ 021 'y' 'Y' em em 0x0568 0x0538 em em C
+ 022 'u' 'U' nak nak 0x0582 0x0552 nak nak C
+ 023 'i' 'I' ht ht 0x056b 0x053b ht ht C
+ 024 'o' 'O' si si 0x0585 0x0555 si si C
+ 025 'p' 'P' dle dle 0x057a 0x054a dle dle C
+ 026 '[' '{' esc esc 0x056d 0x053d esc esc O
+ 027 ']' '}' gs gs 0x056e 0x053e gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl alock lctrl alock O
+ 030 'a' 'A' soh soh 0x0561 0x0531 soh soh C
+ 031 's' 'S' dc3 dc3 0x057d 0x054d dc3 dc3 C
+ 032 'd' 'D' eot eot 0x0564 0x0534 eot eot C
+ 033 'f' 'F' ack ack 0x0586 0x0556 ack ack C
+ 034 'g' 'G' bel bel 0x0563 0x0533 bel bel C
+ 035 'h' 'H' bs bs 0x0570 0x0540 bs bs C
+ 036 'j' 'J' nl nl 0x0575 0x0545 nl nl C
+ 037 'k' 'K' vt vt 0x056f 0x053f vt vt C
+ 038 'l' 'L' ff ff 0x056c 0x053c ff ff C
+ 039 ';' ':' nop nop 0x0589 0x2026 nop nop O
+ 040 ''' '"' nop nop 0x055b 0x055a nop nop O
+ 041 '`' '~' nop nop 0x055d 0x055c nop nop O
+ 042 lshift lshift lshift lshift lshift lshift alock alock O
+ 043 '\' '|' fs fs 0x0577 0x0547 fs fs O
+ 044 'z' 'Z' sub sub 0x0566 0x0536 sub sub C
+ 045 'x' 'X' can can 0x0572 0x0542 can can C
+ 046 'c' 'C' etx etx 0x0581 0x0551 etx etx C
+ 047 'v' 'V' syn syn 0x057e 0x054e syn syn C
+ 048 'b' 'B' stx stx 0x0562 0x0532 stx stx C
+ 049 'n' 'N' so so 0x0576 0x0546 so so C
+ 050 'm' 'M' cr cr 0x0574 0x0544 cr cr C
+ 051 ',' '<' nop nop ',' 0xab nop nop O
+ 052 '.' '>' nop nop '.' 0xbb nop nop O
+ 053 '/' '?' nop nop 0xe000 0x055e nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' nop nop '*' '*' O
+ 056 lalt lalt lalt alock lalt lalt lalt alock O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 nop nop esc esc esc esc debug esc O
+ 130 0x0567 0x0537 nop nop '1' '!' nop nop O
+ 131 0x0569 0x0539 nul nul '2' '@' nul nul O
+ 132 0x0583 0x0553 nop nop '3' '#' nop nop O
+ 133 0x0571 0x0541 nop nop '4' '$' nop nop O
+ 134 0x057b 0x054b nop nop '5' '%' nop nop O
+ 135 ')' '(' rs rs '6' '^' rs rs O
+ 136 0x0587 '%' nop nop '7' '&' nop nop O
+ 137 0x057c 0x054c nop nop '8' '*' nop nop O
+ 138 0x0579 0x0549 nop nop '9' '(' nop nop O
+ 139 0x0573 0x0543 nop nop '0' ')' nop nop O
+ 140 0x2014 '-' us us '-' '_' us us O
+ 141 0x056a 0x053a nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 0x0584 0x0554 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 0x0578 0x0548 etb etb 'w' 'W' etb etb C
+ 146 0x0565 0x0535 enq enq 'e' 'E' enq enq C
+ 147 0x0580 0x0550 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 0x057f 0x054f dc4 dc4 't' 'T' dc4 dc4 C
+ 149 0x0568 0x0538 em em 'y' 'Y' em em C
+ 150 0x0582 0x0552 nak nak 'u' 'U' nak nak C
+ 151 0x056b 0x053b ht ht 'i' 'I' ht ht C
+ 152 0x0585 0x0555 si si 'o' 'O' si si C
+ 153 0x057a 0x054a dle dle 'p' 'P' dle dle C
+ 154 0x056d 0x053d esc esc '[' '{' esc esc O
+ 155 0x056e 0x053e gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl alock lctrl alock O
+ 158 0x0561 0x0531 soh soh 'a' 'A' soh soh C
+ 159 0x057d 0x054d dc3 dc3 's' 'S' dc3 dc3 C
+ 160 0x0564 0x0534 eot eot 'd' 'D' eot eot C
+ 161 0x0586 0x0556 ack ack 'f' 'F' ack ack C
+ 162 0x0563 0x0533 bel bel 'g' 'G' bel bel C
+ 163 0x0570 0x0540 bs bs 'h' 'H' bs bs C
+ 164 0x0575 0x0545 nl nl 'j' 'J' nl nl C
+ 165 0x056f 0x053f vt vt 'k' 'K' vt vt C
+ 166 0x056c 0x053c ff ff 'l' 'L' ff ff C
+ 167 0x0589 0x2026 nop nop ';' ':' nop nop O
+ 168 0x055b 0x055a nop nop ''' '"' nop nop O
+ 169 0x055d 0x055c nop nop '`' '~' nop nop O
+ 170 lshift lshift lshift lshift lshift lshift alock alock O
+ 171 0x0577 0x0547 fs fs '|' '|' fs fs O
+ 172 0x0566 0x0536 sub sub 'z' 'Z' sub sub C
+ 173 0x0572 0x0542 can can 'x' 'X' can can C
+ 174 0x0581 0x0551 etx etx 'c' 'C' etx etx C
+ 175 0x057e 0x054e syn syn 'v' 'V' syn syn C
+ 176 0x0562 0x0532 stx stx 'b' 'B' stx stx C
+ 177 0x0576 0x0546 so so 'n' 'N' so so C
+ 178 0x0574 0x0544 cr cr 'm' 'M' cr cr C
+ 179 ',' 0xab nop nop ',' '<' nop nop O
+ 180 '.' 0xbb nop nop '.' '>' nop nop O
+ 181 0xe000 0x055e nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 nop nop '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt alock lalt lalt lalt alock O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 scr01 scr11 fkey25 fkey37 fkey01 fkey13 scr01 scr11 O
+ 188 scr02 scr12 fkey26 fkey38 fkey02 fkey14 scr02 scr12 O
+ 189 scr03 scr13 fkey27 fkey39 fkey03 fkey15 scr03 scr13 O
+ 190 scr04 scr14 fkey28 fkey40 fkey04 fkey16 scr04 scr14 O
+ 191 scr05 scr15 fkey29 fkey41 fkey05 fkey17 scr05 scr15 O
+ 192 scr06 scr16 fkey30 fkey42 fkey06 fkey18 scr06 scr16 O
+ 193 scr07 scr07 fkey31 fkey43 fkey07 fkey19 scr07 scr07 O
+ 194 scr08 scr08 fkey32 fkey44 fkey08 fkey20 scr08 scr08 O
+ 195 scr09 scr09 fkey33 fkey45 fkey09 fkey21 scr09 scr09 O
+ 196 scr10 scr10 fkey34 fkey46 fkey10 fkey22 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 '7' '7' '7' '7' fkey49 '7' '7' '7' N
+ 200 '8' '8' '8' '8' fkey50 '8' '8' '8' N
+ 201 '9' '9' '9' '9' fkey51 '9' '9' '9' N
+ 202 '-' '-' '-' '-' fkey52 '-' '-' '-' N
+ 203 '4' '4' '4' '4' fkey53 '4' '4' '4' N
+ 204 '5' '5' '5' '5' fkey54 '5' '5' '5' N
+ 205 '6' '6' '6' '6' fkey55 '6' '6' '6' N
+ 206 '+' '+' '+' '+' fkey56 '+' '+' '+' N
+ 207 '1' '1' '1' '1' fkey57 '1' '1' '1' N
+ 208 '2' '2' '2' '2' fkey58 '2' '2' '2' N
+ 209 '3' '3' '3' '3' fkey59 '3' '3' '3' N
+ 210 '0' '0' '0' '0' fkey60 '0' '0' '0' N
+ 211 '.' '.' '.' '.' del '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 scr11 scr11 fkey35 fkey47 fkey11 fkey23 scr11 scr11 O
+ 216 scr12 scr12 fkey36 fkey48 fkey12 fkey24 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nop nop debug debug nscr nscr nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 susp nop slock saver slock saver susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/be.acc.kbd b/share/vt/keymaps/be.acc.kbd
new file mode 100644
index 0000000..8f43a00
--- /dev/null
+++ b/share/vt/keymaps/be.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop '|' '|' nop nop O
+ 003 0xe9 '2' nul nul '@' '@' nul nul O
+ 004 '"' '3' nop nop '#' '#' nop nop O
+ 005 ''' '4' nop nop ''' '4' nop nop O
+ 006 '(' '5' nop nop '(' '5' nop nop O
+ 007 0xa7 '6' rs rs '^' '^' rs rs O
+ 008 0xe8 '7' nop nop 0xe8 '7' nop nop O
+ 009 '!' '8' nop nop '!' '8' nop nop O
+ 010 0xe7 '9' nop nop '{' '{' nop nop O
+ 011 0xe0 '0' nop nop '}' '}' nop nop O
+ 012 ')' 0xb0 nop nop ')' 0xb0 nop nop O
+ 013 '-' '_' us us '-' '_' us us O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 'a' 'A' soh soh C
+ 017 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dcir duml esc esc '[' '[' esc esc O
+ 027 '$' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 0xf9 '%' nop nop dacu dacu nop nop O
+ 041 0xb2 0xb3 nop nop 0xb2 0xb3 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0xb5 0xa3 nop nop dgra dgra nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' etb etb C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 ',' '?' nop nop ',' '?' nop nop O
+ 051 ';' '.' nop nop ';' '.' nop nop O
+ 052 ':' '/' nop nop ':' '/' nop nop O
+ 053 '=' '+' nop nop dtil dtil nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '\' '\' fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/be.kbd b/share/vt/keymaps/be.kbd
new file mode 100644
index 0000000..d9c4246
--- /dev/null
+++ b/share/vt/keymaps/be.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop '|' '|' nop nop O
+ 003 0xe9 '2' nul nul '@' '@' nul nul O
+ 004 '"' '3' nop nop '#' '#' nop nop O
+ 005 ''' '4' nop nop ''' '4' nop nop O
+ 006 '(' '5' nop nop '(' '5' nop nop O
+ 007 0xa7 '6' rs rs '^' '^' rs rs O
+ 008 0xe8 '7' nop nop 0xe8 '7' nop nop O
+ 009 '!' '8' nop nop '!' '8' nop nop O
+ 010 0xe7 '9' nop nop '{' '{' nop nop O
+ 011 0xe0 '0' nop nop '}' '}' nop nop O
+ 012 ')' 0xb0 nop nop ')' 0xb0 nop nop O
+ 013 '-' '_' us us '-' '_' us us O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 'a' 'A' soh soh C
+ 017 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '^' 0xa8 esc esc '[' '[' esc esc O
+ 027 '$' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 0xf9 '%' nop nop ''' ''' nop nop O
+ 041 0xb2 0xb3 nop nop 0xb2 0xb3 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0xb5 0xa3 nop nop '`' '`' nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' etb etb C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 ',' '?' nop nop ',' '?' nop nop O
+ 051 ';' '.' nop nop ';' '.' nop nop O
+ 052 ':' '/' nop nop ':' '/' nop nop O
+ 053 '=' '+' nop nop '~' '~' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '\' '\' fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/bg.bds.kbd b/share/vt/keymaps/bg.bds.kbd
new file mode 100644
index 0000000..ba87abb1
--- /dev/null
+++ b/share/vt/keymaps/bg.bds.kbd
@@ -0,0 +1,245 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock alock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '?' nul nul '2' '@' nul nul O
+ 132 '3' '+' nop nop '3' '#' nop nop O
+ 133 '4' '"' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '=' rs rs '6' '^' rs rs O
+ 136 '7' ':' nop nop '7' '&' nop nop O
+ 137 '8' '/' nop nop '8' '*' nop nop O
+ 138 '9' '-' nop nop '9' '(' nop nop O
+ 139 '0' 0x0419 nop nop '0' ')' nop nop O
+ 140 '-' '-' us us '-' '_' us us O
+ 141 '.' 'V' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 ',' 0x045b dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 0x0453 0x0433 etb etb 'w' 'W' etb etb C
+ 146 0x0445 0x0425 enq enq 'e' 'E' enq enq C
+ 147 0x0448 0x0428 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 0x0458 0x0438 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 0x0459 0x0439 em em 'y' 'Y' em em C
+ 150 0x044a 0x042a nak nak 'u' 'U' nak nak C
+ 151 0x0451 0x0431 ht ht 'i' 'I' ht ht C
+ 152 0x0444 0x0424 si si 'o' 'O' si si C
+ 153 0x0447 0x0427 dle dle 'p' 'P' dle dle C
+ 154 0x0456 0x0436 esc esc '[' '{' esc esc C
+ 155 ';' 0x0407 gs gs ']' '}' gs gs C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x045c 0x043c soh soh 'a' 'A' soh soh C
+ 159 0x045f 0x043f dc3 dc3 's' 'S' dc3 dc3 C
+ 160 0x0440 0x0420 eot eot 'd' 'D' eot eot C
+ 161 0x044e 0x042e ack ack 'f' 'F' ack ack C
+ 162 0x0446 0x0426 bel bel 'g' 'G' bel bel C
+ 163 0x0443 0x0423 bs bs 'h' 'H' bs bs C
+ 164 0x0452 0x0432 nl nl 'j' 'J' nl nl C
+ 165 0x044d 0x042d vt vt 'k' 'K' vt vt C
+ 166 0x0442 0x0422 ff ff 'l' 'L' ff ff C
+ 167 0x044c 0x042c nop nop ';' ':' nop nop C
+ 168 0x0457 0x0437 nop nop ''' '"' nop nop C
+ 169 '(' ')' nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 0x045e 0x043e sub sub 'z' 'Z' sub sub C
+ 173 0x0449 0x0429 can can 'x' 'X' can can C
+ 174 0x045a 0x043a etx etx 'c' 'C' etx etx C
+ 175 0x0447 0x0427 syn syn 'v' 'V' syn syn C
+ 176 0x0454 0x0434 stx stx 'b' 'B' stx stx C
+ 177 0x0455 0x0435 so so 'n' 'N' so so C
+ 178 0x044f 0x042f cr cr 'm' 'M' cr cr C
+ 179 0x2116 0x0430 nop nop ',' '<' nop nop C
+ 180 0x044b 0x042b nop nop '.' '>' nop nop C
+ 181 0x0441 0x0421 nop nop '/' '?' nop nop C
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock alock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+
+
+
diff --git a/share/vt/keymaps/bg.phonetic.kbd b/share/vt/keymaps/bg.phonetic.kbd
new file mode 100644
index 0000000..dd652b5
--- /dev/null
+++ b/share/vt/keymaps/bg.phonetic.kbd
@@ -0,0 +1,260 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock alock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '@' nul nul '2' '@' nul nul O
+ 132 '3' '#' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' us us '-' '_' us us O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 0x045f 0x043f dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 0x0442 0x0422 etb etb 'w' 'W' etb etb C
+ 146 0x0445 0x0425 enq enq 'e' 'E' enq enq C
+ 147 0x2116 0x0430 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 0x0452 0x0432 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 0x045a 0x043a em em 'y' 'Y' em em C
+ 150 0x0453 0x0433 nak nak 'u' 'U' nak nak C
+ 151 0x0448 0x0428 ht ht 'i' 'I' ht ht C
+ 152 0x044e 0x042e si si 'o' 'O' si si C
+ 153 0x044f 0x042f dle dle 'p' 'P' dle dle C
+ 154 0x0458 0x0438 esc esc '[' '{' esc esc C
+ 155 0x0459 0x0439 gs gs ']' '}' gs gs C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x0440 0x0420 soh soh 'a' 'A' soh soh C
+ 159 0x0451 0x0431 dc3 dc3 's' 'S' dc3 dc3 C
+ 160 0x0444 0x0424 eot eot 'd' 'D' eot eot C
+ 161 0x0454 0x0434 ack ack 'f' 'F' ack ack C
+ 162 0x0443 0x0423 bel bel 'g' 'G' bel bel C
+ 163 0x0455 0x0435 bs bs 'h' 'H' bs bs C
+ 164 0x0449 0x0429 nl nl 'j' 'J' nl nl C
+ 165 0x044a 0x042a vt vt 'k' 'K' vt vt C
+ 166 0x044b 0x042b ff ff 'l' 'L' ff ff C
+ 167 ';' ':' nop nop ';' ':' nop nop O
+ 168 ''' '"' nop nop ''' '"' nop nop O
+ 169 0x0457 0x0437 nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 0x045e 0x043e fs fs '\' '|' fs fs C
+ 172 0x0447 0x0427 sub sub 'z' 'Z' sub sub C
+ 173 0x045c 0x043c can can 'x' 'X' can can C
+ 174 0x0456 0x0436 etx etx 'c' 'C' etx etx C
+ 175 0x0446 0x0426 syn syn 'v' 'V' syn syn C
+ 176 0x0441 0x0421 stx stx 'b' 'B' stx stx C
+ 177 0x044d 0x042d so so 'n' 'N' so so C
+ 178 0x044c 0x042c cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock alock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+ 237 nop nop nop nop nop nop nop nop O
+ 238 nop nop nop nop nop nop nop nop O
+ 239 nop nop nop nop nop nop nop nop O
+ 240 nop nop nop nop nop nop nop nop O
+ 241 nop nop nop nop nop nop nop nop O
+ 242 nop nop nop nop nop nop nop nop O
+ 243 nop nop nop nop nop nop nop nop O
+ 244 nop nop nop nop nop nop nop nop O
+ 245 nop nop nop nop nop nop nop nop O
+ 246 nop nop nop nop nop nop nop nop O
+ 247 nop nop nop nop nop nop nop nop O
+ 248 nop nop nop nop nop nop nop nop O
+ 249 nop nop nop nop nop nop nop nop O
+ 250 nop nop nop nop nop nop nop nop O
+ 251 nop nop nop nop nop nop nop nop O
+ 252 nop nop nop nop nop nop nop nop O
+ 253 nop nop nop nop nop nop nop nop O
+ 254 nop nop nop nop nop nop nop nop O
+ 255 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/br.kbd b/share/vt/keymaps/br.kbd
new file mode 100644
index 0000000..37e85ea
--- /dev/null
+++ b/share/vt/keymaps/br.kbd
@@ -0,0 +1,151 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xb9 '!' nop nop O
+ 003 '2' '@' nul nul 0xb2 '@' nul nul O
+ 004 '3' '#' nop nop 0xb3 '#' nop nop O
+ 005 '4' '$' nop nop 0xa3 '$' nop nop O
+ 006 '5' '%' nop nop 0xa2 '%' nop nop O
+ 007 '6' duml rs rs 0xac duml rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop 0xa7 '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dacu dgra nop nop dacu dgra nop nop O
+ 027 '[' '{' esc esc 0xaa '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe7 0xc7 nop nop 0xe7 0xc7 nop nop C
+ 040 dtil dcir nop nop dtil dcir nop nop O
+ 041 ''' '"' nop nop ''' '"' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs 0xba '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 ';' ':' nop nop ';' ':' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 '/' '?' nop nop 0xb0 '?' nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 '.' '.' '.' '.' '.' '.' '.' '.' N
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
diff --git a/share/vt/keymaps/br.noacc.kbd b/share/vt/keymaps/br.noacc.kbd
new file mode 100644
index 0000000..103a081
--- /dev/null
+++ b/share/vt/keymaps/br.noacc.kbd
@@ -0,0 +1,132 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xb9 '!' nop nop O
+ 003 '2' '@' nul nul 0xb2 '@' nul nul O
+ 004 '3' '#' nop nop 0xb3 '#' nop nop O
+ 005 '4' '$' nop nop 0xa3 '$' nop nop O
+ 006 '5' '%' nop nop 0xa2 '%' nop nop O
+ 007 '6' 0xa8 rs rs 0xac 0xbf rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop 0xa7 '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xb4 '`' nop nop 0xb4 '`' nop nop O
+ 027 '[' '{' esc esc 0xaa '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe7 0xc7 nop nop 0xe7 0xc7 nop nop C
+ 040 '~' '^' nop nop '~' '^' nop nop O
+ 041 ''' '"' nop nop ''' '"' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs 0xba '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 ';' ':' nop nop ';' ':' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 '/' '?' nop nop 0xb0 '?' nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 '.' '.' '.' '.' '.' '.' '.' '.' N
diff --git a/share/vt/keymaps/by.kbd b/share/vt/keymaps/by.kbd
new file mode 100644
index 0000000..8de2ac4
--- /dev/null
+++ b/share/vt/keymaps/by.kbd
@@ -0,0 +1,224 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '@' nul nul O
+ 132 '3' 0x2116 nop nop '3' '#' nop nop O
+ 133 '4' ';' nop nop '4' ';' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' ':' rs rs '6' '^' rs rs O
+ 136 '7' '?' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' us us '-' '_' us us O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 0x0439 0x0419 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 0x0446 0x0426 etb etb 'w' 'W' etb etb C
+ 146 0x0443 0x0423 enq enq 'e' 'E' enq enq C
+ 147 0x043a 0x041a dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 0x0435 0x0415 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 0x043d 0x041d em em 'y' 'Y' em em C
+ 150 0x0433 0x0413 nak nak 'u' 'U' nak nak C
+ 151 0x0448 0x0428 ht ht 'i' 'I' ht ht C
+ 152 0x045e 0x040e si si 'o' 'O' si si C
+ 153 0x0437 0x0417 dle dle 'p' 'P' dle dle C
+ 154 0x0445 0x0425 esc esc '[' '{' esc esc C
+ 155 ''' ''' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x0444 0x0424 soh soh 'a' 'A' soh soh C
+ 159 0x044b 0x042b dc3 dc3 's' 'S' dc3 dc3 C
+ 160 0x0432 0x0412 eot eot 'd' 'D' eot eot C
+ 161 0x0430 0x0410 ack ack 'f' 'F' ack ack C
+ 162 0x043f 0x041f bel bel 'g' 'G' bel bel C
+ 163 0x0440 0x0420 bs bs 'h' 'H' bs bs C
+ 164 0x043e 0x041e nl nl 'j' 'J' nl nl C
+ 165 0x043b 0x041b vt vt 'k' 'K' vt vt C
+ 166 0x0434 0x0414 ff ff 'l' 'L' ff ff C
+ 167 0x0436 0x0416 nop nop ';' ':' nop nop C
+ 168 0x044d 0x042d nop nop ''' '"' nop nop C
+ 169 0x0451 0x0401 nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 0x044f 0x042f sub sub 'z' 'Z' sub sub C
+ 173 0x0447 0x0427 can can 'x' 'X' can can C
+ 174 0x0441 0x0421 etx etx 'c' 'C' etx etx C
+ 175 0x043c 0x041c syn syn 'v' 'V' syn syn C
+ 176 0x0456 0x0406 stx stx 'b' 'B' stx stx C
+ 177 0x0442 0x0422 so so 'n' 'N' so so C
+ 178 0x044c 0x042c cr cr 'm' 'M' cr cr C
+ 179 0x0431 0x0411 nop nop ',' '<' nop nop C
+ 180 0x044e 0x042e nop nop '.' '>' nop nop C
+ 181 '.' ',' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr nscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/ca-fr.kbd b/share/vt/keymaps/ca-fr.kbd
new file mode 100644
index 0000000..1d62e2c
--- /dev/null
+++ b/share/vt/keymaps/ca-fr.kbd
@@ -0,0 +1,143 @@
+# French Canadian keyboard
+# by Alexandre Normand (outcast@globetretrotter.net)
+# with the help of Demis (demis@club-internet.fr)
+#
+# July 4, 1999
+#
+# $FreeBSD$
+
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xb1 '!' nop nop O
+ 003 '2' '"' nul nul '@' '"' nul nul O
+ 004 '3' '/' nop nop 0xa3 '/' nop nop O
+ 005 '4' '$' nop nop 0xa2 '$' nop nop O
+ 006 '5' '%' nop nop 0xa4 '%' nop nop O
+ 007 '6' '?' nop nop 0xac '?' nop nop O
+ 008 '7' '&' nop nop '|' '&' nop nop O
+ 009 '8' '*' nop nop 0xb2 '*' nop nop O
+ 010 '9' '(' nop nop 0xb3 '(' nop nop O
+ 011 '0' ')' nop nop 0xbc ')' nop nop O
+ 012 '-' '_' nop nop 0xbd '_' nop nop O
+ 013 '=' '+' nop nop 0xbe '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dcir dcir esc esc '[' dcir esc esc O
+ 027 dced duml gs gs ']' duml gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop '~' ':' nop nop O
+ 040 dgra dgra nop nop '{' dgra nop nop O
+ 041 '#' '|' nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '<' '>' fs fs '}' '>' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ''' nop nop '_' ''' nop nop O
+ 052 '.' '.' nop nop '.' '.' nop nop O
+ 053 0xe9 0xc9 nop nop dacu 0xc9 nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 0xab 0xbb nop nop 0xb0 0xbb nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/ca.kbd b/share/vt/keymaps/ca.kbd
new file mode 100644
index 0000000..de59f38
--- /dev/null
+++ b/share/vt/keymaps/ca.kbd
@@ -0,0 +1,139 @@
+# Canadian Bilingual keyboard
+#
+# $FreeBSD$
+
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xb1 '!' nop nop O
+ 003 '2' '@' nul nul '@' '"' nul nul O
+ 004 '3' '#' nop nop 0xa3 '/' nop nop O
+ 005 '4' '$' nop nop 0xa2 '$' nop nop O
+ 006 '5' '%' nop nop 0xa4 '%' nop nop O
+ 007 '6' '^' nop nop 0xac '?' nop nop O
+ 008 '7' '&' nop nop '|' '&' nop nop O
+ 009 '8' '*' nop nop 0xb2 '*' nop nop O
+ 010 '9' '(' nop nop 0xb3 '(' nop nop O
+ 011 '0' ')' nop nop 0xbc ')' nop nop O
+ 012 '-' '_' nop nop 0xbd '_' nop nop O
+ 013 '=' '+' nop nop 0xbe '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 0xa7 'O' si si C
+ 025 'p' 'P' dle dle 0xb6 'P' dle dle C
+ 026 '[' '{' nop nop dcir dcir nop nop O
+ 027 ']' '}' nop nop dced duml gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop '~' ':' nop nop O
+ 040 ''' '"' nop nop dgra dgra nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '<' '>' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop '<' ''' nop nop O
+ 052 '.' '>' nop nop '>' '.' nop nop O
+ 053 '/' '?' nop nop dacu 0xc9 nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' nop nop 0xab 0xbb nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/centraleuropean.kbd b/share/vt/keymaps/centraleuropean.kbd
new file mode 100644
index 0000000..4344761
--- /dev/null
+++ b/share/vt/keymaps/centraleuropean.kbd
@@ -0,0 +1,242 @@
+# Keyboard map for Central European languages under FreeBSD.
+# Created by G. Adam Stanislav <adam@whizkidtech.net>
+#
+# Version 1.0 - 1999-03-18
+#
+# $FreeBSD$
+#
+# This map uses a QWERTZ keyboard for its basic layout.
+# It adds a "third row" to the top of the PC keyboard. To
+# access the third row, press and hold the Alt key, then
+# strike a key in the top row.
+#
+# Note that some of the third-row keys produce characters.
+# Others must be followed by another keystroke resulting
+# in accented characters. To print the accent mark alone,
+# press the space bar after pressing and releasing the
+# alt-accent mark key.
+#
+# In most cases I have mapped a key to a character or an
+# accent mark because the key on the US QWERTY keyboard
+# somewhat resembles the result.
+#
+# In addition to the top row, three keys on the numeric keypad
+# are mapped for the use with IS 8859-2 when combined with the
+# Alt key: The dot (del) key combined with alt will print a
+# comma instead of a dot; alt-/ will show the division mark,
+# and alt-* the multpilication sign.
+#
+# You can see the layout here:
+#
+# alt-` ˛ (ogonek) and alt-~ ¸ (cedilla)
+# Examples: ęąţçş
+# alt-! ß (German double s)
+# alt-@ ° (degree)
+# alt-# ¤ (currency)
+# alt-$ § (section, called paragraf in most CE languages)
+# alt-% ¨ (umlaut, dve bodky)
+# Examples: äüöë
+# alt-^ ^ (circumflex, vokáň)
+# Examples: ôâî
+# alt-& ­ (hyphen, pomlÄka, rozdeľovacie znamienko)
+# alt-* ° (ring)
+# Examples: ůŮ
+# alt-( Ë (Hungarian long umlaut)
+# Examples: őű
+# alt-) Ë™ (dot accent)
+# Examples: żŻ
+# alt-- ´ (acute, dĺžeň, Äárka)
+# Examples: áśéíúńźŕĺ
+# alt-= ˇ (caron, mäkÄeň, háÄek) and alt-+ ˘ (breve)
+# Examples: ăÄřľÄťňž
+# alt-\ / (slash)
+# Examples: Ä‘Å‚
+# alt-/ [on numeric keypad] ÷
+# alt-* [on numeric keypad] ×
+# alt-. [on numeric keypad] ,
+#
+# This layout offers access to the entire character set of
+# ISO 8859-2, used by Slovak, Czech, German, Polish, Croatian,
+# Slovenian, Rumanian, Hungarian, and probably other languages,
+# while remaining mostly compatible with the default US QWERTY
+# keyboard.
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xdf 0xdf nop nop O
+ 003 '2' '@' nul nul 0xb0 0xb0 nul nul O
+ 004 '3' '#' nop nop 0xa4 0xa4 nop nop O
+ 005 '4' '$' nop nop 0xa7 0xa7 nop nop O
+ 006 '5' '%' nop nop duml duml nop nop O
+ 007 '6' '^' rs rs dcir dcir rs rs O
+ 008 '7' '&' nop nop 0xad 0xad nop nop O
+ 009 '8' '*' nop nop drin drin nop nop O
+ 010 '9' '(' nop nop ddac ddac nop nop O
+ 011 '0' ')' nop nop ddot ddot nop nop O
+ 012 '-' '_' us us dacu dacu us us O
+ 013 '=' '+' nop nop dcar dbre nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'k' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop dogo dced nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs dsla dsla fs fs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' 0xd7 0xd7 0xd7 0xd7 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' 0xf7 0xf7 0xf7 0xf7 N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 )
+ ( 'c' 0x0107 ) ( 'C' 0x0106 )
+ ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd )
+ ( 'l' 0x013a ) ( 'L' 0x0139 )
+ ( 'n' 0x0144 ) ( 'N' 0x0143 )
+ ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'r' 0x0155 ) ( 'R' 0x0154 )
+ ( 's' 0x015b ) ( 'S' 0x015a )
+ ( 'u' 0xfa ) ( 'U' 0xda )
+ ( 'y' 0xfd ) ( 'Y' 0xdd )
+ ( 'z' 0x017a ) ( 'Z' 0x0179 )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 )
+ ( 'i' 0xee ) ( 'I' 0xce )
+ ( 'o' 0xf4 ) ( 'O' 0xd4 )
+
+ dbre 0x02d8 ( 'a' 0x0103 ) ( 'A' 0x0102 )
+ ( 'c' 0x010d ) ( 'C' 0x010c )
+ ( 'd' 0x010f ) ( 'D' 0x010e )
+ ( 'e' 0x011b ) ( 'E' 0x011a )
+ ( 'l' 0x013e ) ( 'L' 0x013d )
+ ( 'n' 0x0148 ) ( 'N' 0x0147 )
+ ( 'r' 0x0159 ) ( 'R' 0x0158 )
+ ( 's' 0x0161 ) ( 'S' 0x0160 )
+ ( 't' 0x0165 ) ( 'T' 0x0164 )
+ ( 'z' 0x017e ) ( 'Z' 0x017d )
+
+ ddot 0x02d9 ( 'z' 0x017c ) ( 'Z' 0x017b )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 )
+ ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc )
+
+ dsla '/' ( 'd' 0x0111 ) ( 'D' 0x0110 )
+ ( 'l' 0x0142 ) ( 'L' 0x0141 )
+
+ drin 0xb0 ( 'u' 0x016f ) ( 'U' 0x016e )
+
+ dced 0xb8 ( 'a' 0x0105 ) ( 'A' 0x0104 )
+ ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 'e' 0x0119 ) ( 'E' 0x0118 )
+ ( 's' 0x015f ) ( 'S' 0x015e )
+ ( 't' 0x0163 ) ( 'T' 0x0162 )
+
+ ddac 0x02dd ( 'o' 0x0151 ) ( 'O' 0x0150 )
+ ( 'u' 0x0171 ) ( 'U' 0x0170 )
+
+ dogo 0x02db ( 'a' 0x0105 ) ( 'A' 0x0104 )
+ ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 'e' 0x0119 ) ( 'E' 0x0118 )
+ ( 's' 0x015f ) ( 'S' 0x015e )
+ ( 't' 0x0163 ) ( 'T' 0x0162 )
+
+ dcar 0x02c7 ( 'a' 0x0103 ) ( 'A' 0x0102 )
+ ( 'c' 0x010d ) ( 'C' 0x010c )
+ ( 'd' 0x010f ) ( 'D' 0x010e )
+ ( 'e' 0x011b ) ( 'E' 0x011a )
+ ( 'l' 0x013e ) ( 'L' 0x013d )
+ ( 'n' 0x0148 ) ( 'N' 0x0147 )
+ ( 'r' 0x0159 ) ( 'R' 0x0158 )
+ ( 's' 0x0161 ) ( 'S' 0x0160 )
+ ( 't' 0x0165 ) ( 'T' 0x0164 )
+ ( 'z' 0x017e ) ( 'Z' 0x017d )
diff --git a/share/vt/keymaps/centraleuropean.qwerty.kbd b/share/vt/keymaps/centraleuropean.qwerty.kbd
new file mode 100644
index 0000000..ce2ea2e
--- /dev/null
+++ b/share/vt/keymaps/centraleuropean.qwerty.kbd
@@ -0,0 +1,242 @@
+# Keyboard map for Central European languages under FreeBSD.
+# Created by G. Adam Stanislav <adam@whizkidtech.net>
+#
+# Version 1.0 - 1999-03-18
+#
+# $FreeBSD$
+#
+# This map uses the US QWERTY keyboard for its basic layout.
+# It adds a "third row" to the top of the PC keyboard. To
+# access the third row, press and hold the Alt key, then
+# strike a key in the top row.
+#
+# Note that some of the third-row keys produce characters.
+# Others must be followed by another keystroke resulting
+# in accented characters. To print the accent mark alone,
+# press the space bar after pressing and releasing the
+# alt-accent mark key.
+#
+# In most cases I have mapped a key to a character or an
+# accent mark because the key on the US QWERTY keyboard
+# somewhat resembles the result.
+#
+# In addition to the top row, three keys on the numeric keypad
+# are mapped for the use with IS 8859-2 when combined with the
+# Alt key: The dot (del) key combined with alt will print a
+# comma instead of a dot; alt-/ will show the division mark,
+# and alt-* the multpilication sign.
+#
+# You can see the layout here:
+#
+# alt-` ˛ (ogonek) and alt-~ ¸ (cedilla)
+# Examples: ęąţçş
+# alt-! ß (German double s)
+# alt-@ ° (degree)
+# alt-# ¤ (currency)
+# alt-$ § (section, called paragraf in most CE languages)
+# alt-% ¨ (umlaut, dve bodky)
+# Examples: äüöë
+# alt-^ ^ (circumflex, vokáň)
+# Examples: ôâî
+# alt-& ­ (hyphen, pomlÄka, rozdeľovacie znamienko)
+# alt-* ° (ring)
+# Examples: ůŮ
+# alt-( Ë (Hungarian long umlaut)
+# Examples: őű
+# alt-) Ë™ (dot accent)
+# Examples: żŻ
+# alt-- ´ (acute, dĺžeň, Äárka)
+# Examples: áśéíúńźŕĺ
+# alt-= ˇ (caron, mäkÄeň, háÄek) and alt-+ ˘ (breve)
+# Examples: ăÄřľÄťňž
+# alt-\ / (slash)
+# Examples: Ä‘Å‚
+# alt-/ [on numeric keypad] ÷
+# alt-* [on numeric keypad] ×
+# alt-. [on numeric keypad] ,
+#
+# This layout offers access to the entire character set of
+# ISO 8859-2, used by Slovak, Czech, German, Polish, Croatian,
+# Slovenian, Rumanian, Hungarian, and probably other languages,
+# while remaining fully compatible with the default US QWERTY
+# keyboard.
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xdf 0xdf nop nop O
+ 003 '2' '@' nul nul 0xb0 0xb0 nul nul O
+ 004 '3' '#' nop nop 0xa4 0xa4 nop nop O
+ 005 '4' '$' nop nop 0xa7 0xa7 nop nop O
+ 006 '5' '%' nop nop duml duml nop nop O
+ 007 '6' '^' rs rs dcir dcir rs rs O
+ 008 '7' '&' nop nop 0xad 0xad nop nop O
+ 009 '8' '*' nop nop drin drin nop nop O
+ 010 '9' '(' nop nop ddac ddac nop nop O
+ 011 '0' ')' nop nop ddot ddot nop nop O
+ 012 '-' '_' us us dacu dacu us us O
+ 013 '=' '+' nop nop dcar dbre nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'k' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop dogo dced nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs dsla dsla fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' 0xd7 0xd7 0xd7 0xd7 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' 0xf7 0xf7 0xf7 0xf7 N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 )
+ ( 'c' 0x0107 ) ( 'C' 0x0106 )
+ ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd )
+ ( 'l' 0x013a ) ( 'L' 0x0139 )
+ ( 'n' 0x0144 ) ( 'N' 0x0143 )
+ ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'r' 0x0155 ) ( 'R' 0x0154 )
+ ( 's' 0x015b ) ( 'S' 0x015a )
+ ( 'u' 0xfa ) ( 'U' 0xda )
+ ( 'y' 0xfd ) ( 'Y' 0xdd )
+ ( 'z' 0x017a ) ( 'Z' 0x0179 )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 )
+ ( 'i' 0xee ) ( 'I' 0xce )
+ ( 'o' 0xf4 ) ( 'O' 0xd4 )
+
+ dbre 0x02d8 ( 'a' 0x0103 ) ( 'A' 0x0102 )
+ ( 'c' 0x010d ) ( 'C' 0x010c )
+ ( 'd' 0x010f ) ( 'D' 0x010e )
+ ( 'e' 0x011b ) ( 'E' 0x011a )
+ ( 'l' 0x013e ) ( 'L' 0x013d )
+ ( 'n' 0x0148 ) ( 'N' 0x0147 )
+ ( 'r' 0x0159 ) ( 'R' 0x0158 )
+ ( 's' 0x0161 ) ( 'S' 0x0160 )
+ ( 't' 0x0165 ) ( 'T' 0x0164 )
+ ( 'z' 0x017e ) ( 'Z' 0x017d )
+
+ ddot 0x02d9 ( 'z' 0x017c ) ( 'Z' 0x017b )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 )
+ ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc )
+
+ dsla '/' ( 'd' 0x0111 ) ( 'D' 0x0110 )
+ ( 'l' 0x0142 ) ( 'L' 0x0141 )
+
+ drin 0xb0 ( 'u' 0x016f ) ( 'U' 0x016e )
+
+ dced 0xb8 ( 'a' 0x0105 ) ( 'A' 0x0104 )
+ ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 'e' 0x0119 ) ( 'E' 0x0118 )
+ ( 's' 0x015f ) ( 'S' 0x015e )
+ ( 't' 0x0163 ) ( 'T' 0x0162 )
+
+ ddac 0x02dd ( 'o' 0x0151 ) ( 'O' 0x0150 )
+ ( 'u' 0x0171 ) ( 'U' 0x0170 )
+
+ dogo 0x02db ( 'a' 0x0105 ) ( 'A' 0x0104 )
+ ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 'e' 0x0119 ) ( 'E' 0x0118 )
+ ( 's' 0x015f ) ( 'S' 0x015e )
+ ( 't' 0x0163 ) ( 'T' 0x0162 )
+
+ dcar 0x02c7 ( 'a' 0x0103 ) ( 'A' 0x0102 )
+ ( 'c' 0x010d ) ( 'C' 0x010c )
+ ( 'd' 0x010f ) ( 'D' 0x010e )
+ ( 'e' 0x011b ) ( 'E' 0x011a )
+ ( 'l' 0x013e ) ( 'L' 0x013d )
+ ( 'n' 0x0148 ) ( 'N' 0x0147 )
+ ( 'r' 0x0159 ) ( 'R' 0x0158 )
+ ( 's' 0x0161 ) ( 'S' 0x0160 )
+ ( 't' 0x0165 ) ( 'T' 0x0164 )
+ ( 'z' 0x017e ) ( 'Z' 0x017d )
diff --git a/share/vt/keymaps/ch-fr.acc.kbd b/share/vt/keymaps/ch-fr.acc.kbd
new file mode 100644
index 0000000..cea506b
--- /dev/null
+++ b/share/vt/keymaps/ch-fr.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+#
+# swissfrench keymap, accent keys
+# created 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 0xe7 nop nop '4' 0xe7 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 0xac 0xac nop nop O
+ 008 '7' '/' nop nop 0xa6 0xa6 nop nop O
+ 009 '8' '(' esc esc 0xde 0xde esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs dacu dacu fs fs O
+ 013 dcir dgra nop nop dtil dtil nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xe8 0xfc esc esc '[' 0xdc esc esc C
+ 027 duml '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe9 0xf6 nop nop 0xe9 0xd6 nop nop C
+ 040 0xe0 0xe4 nop nop '{' 0xc4 nop nop C
+ 041 0xa7 0xb0 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 0xa3 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'o' 0xf5 ) ( 'O' 0xd5 )
+ ( 'n' 0xf1 ) ( 'N' 0xd1 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
diff --git a/share/vt/keymaps/ch-fr.kbd b/share/vt/keymaps/ch-fr.kbd
new file mode 100644
index 0000000..173690c
--- /dev/null
+++ b/share/vt/keymaps/ch-fr.kbd
@@ -0,0 +1,117 @@
+# $FreeBSD$
+#
+# swissfrench keymap, no dead keys
+# created 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 0xe7 nop nop '4' 0xe7 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 0xac 0xac nop nop O
+ 008 '7' '/' nop nop 0xa6 0xa6 nop nop O
+ 009 '8' '(' esc esc 0xa2 0xa2 esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs 0xb4 0xb4 fs fs O
+ 013 '^' '`' nop nop '~' '~' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xe8 0xfc esc esc '[' 0xdc esc esc C
+ 027 0xa8 '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe9 0xf6 nop nop 0xe9 0xd6 nop nop C
+ 040 0xe0 0xe4 nop nop '{' 0xc4 nop nop C
+ 041 0xa7 0xb0 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 0xa3 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/ch.acc.kbd b/share/vt/keymaps/ch.acc.kbd
new file mode 100644
index 0000000..6791199
--- /dev/null
+++ b/share/vt/keymaps/ch.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+#
+# swissgerman keymap, accent keys
+# created 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 0xe7 nop nop '4' 0xe7 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 0xac 0xac nop nop O
+ 008 '7' '/' nop nop 0xa6 0xa6 nop nop O
+ 009 '8' '(' esc esc 0xde 0xde esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs dacu dacu fs fs O
+ 013 dcir dgra nop nop dtil dtil nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xfc 0xe8 esc esc '[' 0xdc esc esc C
+ 027 duml '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xe9 nop nop 0xf6 0xd6 nop nop C
+ 040 0xe4 0xe0 nop nop '{' 0xc4 nop nop C
+ 041 0xa7 0xb0 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 0xa3 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'o' 0xf5 ) ( 'O' 0xd5 )
+ ( 'n' 0xf1 ) ( 'N' 0xd1 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
diff --git a/share/vt/keymaps/ch.kbd b/share/vt/keymaps/ch.kbd
new file mode 100644
index 0000000..a39dc59
--- /dev/null
+++ b/share/vt/keymaps/ch.kbd
@@ -0,0 +1,117 @@
+# $FreeBSD$
+#
+# swissgerman keymap, no dead keys
+# created 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 0xe7 nop nop '4' 0xe7 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 0xac 0xac nop nop O
+ 008 '7' '/' nop nop 0xa6 0xa6 nop nop O
+ 009 '8' '(' esc esc 0xde 0xde esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs 0xb4 0xb4 fs fs O
+ 013 '^' '`' nop nop '~' '~' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xfc 0xe8 esc esc '[' 0xdc esc esc C
+ 027 0xa8 '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xe9 nop nop 0xf6 0xd6 nop nop C
+ 040 0xe4 0xe0 nop nop '{' 0xc4 nop nop C
+ 041 0xa7 0xb0 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 0xa3 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/ch.macbook.acc.kbd b/share/vt/keymaps/ch.macbook.acc.kbd
new file mode 100644
index 0000000..8bf6985
--- /dev/null
+++ b/share/vt/keymaps/ch.macbook.acc.kbd
@@ -0,0 +1,138 @@
+# $FreeBSD$
+#
+# swissgerman Macbook/Macbook PRO keymap, with accent keys
+# derived from swissgerman.iso.acc.kbd
+# 06.08.2010 by Andreas Tobler <andreast@fgznet.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '1' '1' nop nop O
+ 003 '2' '"' nul nul '2' '2' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 0xe7 nop nop '4' 0xe7 nop nop O
+ 006 '5' '%' nop nop '[' '[' nop nop O
+ 007 '6' '&' nop nop ']' ']' nop nop O
+ 008 '7' '/' nop nop '|' '\' nop nop O
+ 009 '8' '(' esc esc '{' '{' nop nop O
+ 010 '9' ')' gs gs '}' '}' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs dacu dacu fs fs O
+ 013 dcir dgra nop nop dtil dtil nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dgra duml esc esc '[' 0xdc esc esc C
+ 027 duml '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel '@' '@' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe9 0xe9 nop nop 0xf6 0xd6 nop nop C
+ 040 0xe0 0xe0 nop nop '{' 0xc4 nop nop C
+ 041 '<' '>' nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 0xa3 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so '~' '~' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'o' 0xf5 ) ( 'O' 0xd5 )
+ ( 'n' 0xf1 ) ( 'N' 0xd1 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
diff --git a/share/vt/keymaps/colemak.acc.kbd b/share/vt/keymaps/colemak.acc.kbd
new file mode 100644
index 0000000..8091281
--- /dev/null
+++ b/share/vt/keymaps/colemak.acc.kbd
@@ -0,0 +1,147 @@
+# $FreeBSD$
+#
+# Colemak Layout for FreeBSD console
+# 2006-01-01 Shai Coleman, http://colemak.com/ . Public domain.
+
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+
+ 041 '`' '~' nop nop dtil '~' nop nop O
+ 002 '1' '!' nop nop 0xa1 0xb9 nop nop O
+ 003 '2' '@' nul nul 0xba 0xb2 nul nul O
+ 004 '3' '#' nop nop 0xaa 0xb3 nop nop O
+ 005 '4' '$' nop nop 0xa2 0xa3 nop nop O
+ 006 '5' '%' nop nop 0xa4 0xa5 nop nop O
+ 007 '6' '^' rs rs '~' '~' rs rs O
+ 008 '7' '&' nop nop 0xf0 0xd0 nop nop O
+ 009 '8' '*' nop nop 0xfe 0xde nop nop O
+ 010 '9' '(' nop nop '~' '~' nop nop O
+ 011 '0' ')' nop nop '~' '~' nop nop O
+ 012 '-' '_' us us '~' '~' us us O
+ 013 '=' '+' nop nop 0xd7 0xf7 nop nop O
+
+ 016 'q' 'Q' dc1 dc1 0xe4 0xc4 dc1 dc1 C
+ 017 'w' 'W' etb etb 0xe5 0xc5 etb etb C
+ 018 'f' 'F' ack ack 0xe3 0xc3 ack ack C
+ 019 'p' 'P' dle dle 0xf8 0xd8 dle dle C
+ 020 'g' 'G' bel bel '~' '~' bel bel C
+ 021 'j' 'J' nl nl '~' '~' nl nl C
+ 022 'l' 'L' ff ff '~' '~' ff ff C
+ 023 'u' 'U' nak nak 0xfa 0xda nak nak C
+ 024 'y' 'Y' em em 0xfc 0xdc em em C
+ 025 ';' ':' nop nop 0xf6 0xd6 nop nop O
+ 026 '[' '{' esc esc 0xab '~' esc esc O
+ 027 ']' '}' gs gs 0xbb '~' gs gs O
+ 043 '\' '|' fs fs '~' '~' fs fs O
+
+ 030 'a' 'A' soh soh 0xe1 0xc1 soh soh C
+ 031 'r' 'R' dc2 dc2 dgra '~' dc2 dc2 C
+ 032 's' 'S' dc3 dc3 0xdf '~' dc3 dc3 C
+ 033 't' 'T' dc4 dc4 dacu '~' dc4 dc4 C
+ 034 'd' 'D' eot eot duml '~' eot eot C
+ 035 'h' 'H' bs bs '~' '~' bs bs C
+ 036 'n' 'N' so so 0xf1 0xd1 so so C
+ 037 'e' 'E' enq enq 0xe9 0xc9 enq enq C
+ 038 'i' 'I' ht ht 0xed 0xcd ht ht C
+ 039 'o' 'O' si si 0xf3 0xd3 si si C
+ 040 ''' '"' nop nop 0xf5 0xd5 nop nop O
+
+ 044 'z' 'Z' sub sub 0xe6 0xc6 sub sub C
+ 045 'x' 'X' can can dcir '~' can can C
+ 046 'c' 'C' etx etx 0xe7 0xc7 etx etx C
+ 047 'v' 'V' syn syn 0xbd 0xbc syn syn C
+ 048 'b' 'B' stx stx '~' '~' stx stx C
+ 049 'k' 'K' vt vt drin '~' vt vt C
+ 050 'm' 'M' cr cr '~' '~' cr cr C
+ 051 ',' '<' nop nop dced '~' nop nop O
+ 052 '.' '>' nop nop '~' '~' nop nop O
+ 053 '/' '?' nop nop 0xbf '~' nop nop O
+
+ 058 bs bs bs bs bs bs bs bs O
+ 086 '-' '_' us us '~' '~' us us O
+ 057 ' ' ' ' nul nul ' ' ' ' susp susp O
+
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug debug O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nscr nscr ht btab nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr nop nop debug debug debug debug O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 saver saver susp susp nop nop susp susp O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/cz.kbd b/share/vt/keymaps/cz.kbd
new file mode 100644
index 0000000..3db432e
--- /dev/null
+++ b/share/vt/keymaps/cz.kbd
@@ -0,0 +1,296 @@
+# Czech Standard Typewriter QWERTZ Keyboard
+# by Rudolf Cejka <cejkar@fit.vutbr.cz>
+#
+# $FreeBSD$
+#
+# English/Czech keyboard lock: (Left)Alt+Shift
+# English/Czech keyboard shift: (Right)AltGr
+#
+# Meta shift: (Right|Left)Windows, Menu
+#
+# Previous screen: Ctrl+(Grey)Left
+# Next screen: Ctrl+(Grey)Right
+#
+# Screen saver: Shift+Pause
+# Suspend power (APM): (Left)Alt+Pause
+#
+# Accent characters:
+# acute: [=/+] and =SZszRALCEINOUYralceinouy => ´ŚŹśźŔÃĹĆÉÃŃÓÚÃŕáĺćéíńóúý
+# caron: Shift+[=/+] and =LSTZlstzCEDNRcednrUu => ˇĽŠŤŽľšťžČĚĎŇŘÄÄ›ÄňřŮů
+# circumflex: Alt+Ctrl+[=/+] and =AIOaio => ^ÂÎÔâîô
+# breve: Ctrl+Shift+[=/+] and =Aa => ˘Ăă
+# cedilla: Ctrl+[-/_] and -SsCTct => ¸ŞşÇŢçţ
+# dot: Alt+[=/+] and =Zz => ˙Żż
+# double acute: Alt+Shift+[-/_] and -OUou => ËÅŰőű
+# double dot: Alt+Shift+[=/+] and =AEOUaeou => ¨ÄËÖÜäëöü
+# ogonek: Ctrl+Shift+[-/_] and -AaEe => ˛ĄąĘę
+# ring: Ctrl+[=/+] and =Uuso78/ => °Ůůߤ§×÷
+# slash: Alt+[-/_] and -LlDd => ­ÅÅ‚ÄÄ‘
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug panic O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshifta lshifta lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' N
+ 056 lalt lalta lalt lalt lalt lalta lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ashift ashift ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 pscr pscr fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 nscr nscr fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 meta meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 meta meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug panic O
+ 130 '+' '1' nop nop '+' '1' nop nop O
+ 131 0x011b '2' nop nop 0x011b '2' nop nop O
+ 132 0x0161 '3' nop nop 0x0161 '3' nop nop O
+ 133 0x010d '4' nop nop 0x010d '4' nop nop O
+ 134 0x0159 '5' nop nop 0x0159 '5' nop nop O
+ 135 0x017e '6' nop nop 0x017e '6' nop nop O
+ 136 0xfd '7' nop nop 0xfd '7' nop nop O
+ 137 0xe1 '8' nop nop 0xe1 '8' nop nop O
+ 138 0xed '9' nop nop 0xed '9' nop nop O
+ 139 0xe9 '0' nop nop 0xe9 '0' nop nop O
+ 140 '=' '%' dced dogo dsla ddac nop nop O
+ 141 dacu dcar drin dbre ddot duml dcir nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'w' 'W' etb etb 'w' 'W' etb etb C
+ 146 'e' 'E' enq enq 'e' 'E' enq enq C
+ 147 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 150 'u' 'U' nak nak 'u' 'U' nak nak C
+ 151 'i' 'I' ht ht 'i' 'I' ht ht C
+ 152 'o' 'O' si si 'o' 'O' si si C
+ 153 'p' 'P' dle dle 'p' 'P' dle dle C
+ 154 0xfa '/' nop nop 0xfa '/' nop nop O
+ 155 ')' '(' nop nop ')' '(' nop nop O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'a' 'A' soh soh 'a' 'A' soh soh C
+ 159 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 'd' 'D' eot eot 'd' 'D' eot eot C
+ 161 'f' 'F' ack ack 'f' 'F' ack ack C
+ 162 'g' 'G' bel bel 'g' 'G' bel bel C
+ 163 'h' 'H' bs bs 'h' 'H' bs bs C
+ 164 'j' 'J' nl nl 'j' 'J' nl nl C
+ 165 'k' 'K' vt vt 'k' 'K' vt vt C
+ 166 'l' 'L' ff ff 'l' 'L' ff ff C
+ 167 0x016f '"' nop nop 0x016f '"' nop nop O
+ 168 0xa7 '!' nop nop 0xa7 '!' nop nop O
+ 169 '`' ';' nop nop '`' ';' nop nop O
+ 170 lshift lshift lshift lshift lshifta lshifta lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 'y' 'Y' em em 'y' 'Y' em em C
+ 173 'x' 'X' can can 'x' 'X' can can C
+ 174 'c' 'C' etx etx 'c' 'C' etx etx C
+ 175 'v' 'V' syn syn 'v' 'V' syn syn C
+ 176 'b' 'B' stx stx 'b' 'B' stx stx C
+ 177 'n' 'N' so so 'n' 'N' so so C
+ 178 'm' 'M' cr cr 'm' 'M' cr cr C
+ 179 ',' '?' nop nop ',' '?' nop nop O
+ 180 '.' ':' nop nop '.' ':' nop nop O
+ 181 '-' '_' us us '-' '_' us us O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' N
+ 184 lalt lalta lalt lalt lalt lalta lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl N
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ashift ashift ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 pscr pscr fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 nscr nscr fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 meta meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 meta meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+
+ dacu 0xb4 ( 0xb4 0xb4 ) ( 'S' 0x015a ) ( 'Z' 0x0179 ) ( 's' 0x015b )
+ ( 'z' 0x017a ) ( 'R' 0x0154 ) ( 'A' 0xc1 ) ( 'L' 0x0139 )
+ ( 'C' 0x0106 ) ( 'E' 0xc9 ) ( 'I' 0xcd ) ( 'N' 0x0143 )
+ ( 'O' 0xd3 ) ( 'U' 0xda ) ( 'Y' 0xdd ) ( 'r' 0x0155 )
+ ( 'a' 0xe1 ) ( 'l' 0x013a ) ( 'c' 0x0107 ) ( 'e' 0xe9 )
+ ( 'i' 0xed ) ( 'n' 0x0144 ) ( 'o' 0xf3 ) ( 'u' 0xfa )
+ ( 'y' 0xfd )
+
+ dcir '^' ( '^' '^' ) ( 'A' 0xc2 ) ( 'I' 0xce ) ( 'O' 0xd4 )
+ ( 'a' 0xe2 ) ( 'i' 0xee ) ( 'o' 0xf4 )
+
+ dbre 0x02d8 ( 0x02d8 0x02d8 ) ( 'A' 0x0102 ) ( 'a' 0x0103 )
+
+ ddot 0x02d9 ( 0x02d9 0x02d9 ) ( 'Z' 0x017b ) ( 'z' 0x017c )
+
+ duml 0xa8 ( 0xa8 0xa8 ) ( 'A' 0xc4 ) ( 'E' 0xcb ) ( 'O' 0xd6 )
+ ( 'U' 0xdc ) ( 'a' 0xe4 ) ( 'e' 0xeb ) ( 'o' 0xf6 )
+ ( 'u' 0xfc )
+
+ dsla 0xad ( 0xad 0xad ) ( 'L' 0x0141 ) ( 'l' 0x0142 ) ( 'D' 0x0110 )
+ ( 'd' 0x0111 )
+
+ drin 0xb0 ( 0xb0 0xb0 ) ( 'U' 0x016e ) ( 'u' 0x016f ) ( 's' 0xdf )
+ ( 'o' 0xa4 ) ( 0xfd 0xa7 ) ( 0xe1 0xd7 ) ( '-' 0xf7 )
+
+ dced 0xb8 ( 0xb8 0xb8 ) ( 'S' 0x015e ) ( 's' 0x015f ) ( 'C' 0xc7 )
+ ( 'T' 0x0162 ) ( 'c' 0xe7 ) ( 't' 0x0163 )
+
+ ddac 0x02dd ( 0x02dd 0x02dd ) ( 'O' 0x0150 ) ( 'U' 0x0170 ) ( 'o' 0x0151 )
+ ( 'u' 0x0171 )
+
+ dogo 0x02db ( 0x02db 0x02db ) ( 'A' 0x0104 ) ( 'a' 0x0105 ) ( 'E' 0x0118 )
+ ( 'e' 0x0119 )
+
+ dcar 0x02c7 ( 0x02c7 0x02c7 ) ( 'L' 0x013d ) ( 'S' 0x0160 ) ( 'T' 0x0164 )
+ ( 'Z' 0x017d ) ( 'l' 0x013e ) ( 's' 0x0161 ) ( 't' 0x0165 )
+ ( 'z' 0x017e ) ( 'C' 0x010c ) ( 'E' 0x011a ) ( 'D' 0x010e )
+ ( 'N' 0x0147 ) ( 'R' 0x0158 ) ( 'c' 0x010d ) ( 'e' 0x011b )
+ ( 'd' 0x010f ) ( 'n' 0x0148 ) ( 'r' 0x0159 ) ( 'U' 0x016e )
+ ( 'u' 0x016f )
diff --git a/share/vt/keymaps/de.acc.kbd b/share/vt/keymaps/de.acc.kbd
new file mode 100644
index 0000000..36de267
--- /dev/null
+++ b/share/vt/keymaps/de.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop 0xb2 0xb2 nop nop O
+ 004 '3' 0xa7 nop nop 0xb3 0xb3 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 0xdf '?' fs fs '\' '\' fs fs O
+ 013 dacu dgra nop nop 0xb3 0xb4 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' nul nul C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xfc 0xdc nop nop 0xfc 0xdc esc nop C
+ 027 '+' '*' nop nop dtil dtil nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xd6 nop nop 0xf6 0xd6 nop nop C
+ 040 0xe4 0xc4 nop nop 0xe4 0xc4 nop nop C
+ 041 dcir 0xb0 rs rs '^' 0xb0 rs rs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' ''' nop nop '#' ''' nop nop O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 0xa2 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' 0xa6 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/de.kbd b/share/vt/keymaps/de.kbd
new file mode 100644
index 0000000..7568e27
--- /dev/null
+++ b/share/vt/keymaps/de.kbd
@@ -0,0 +1,126 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop 0xb2 0xb2 nop nop O
+ 004 '3' 0xa7 nop nop 0xb3 0xb3 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 0xdf '?' fs fs '\' '\' fs fs O
+ 013 dacu dgra nop nop 0xb3 0xb4 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' nul nul C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xfc 0xdc nop nop 0xfc 0xdc esc nop C
+ 027 '+' '*' nop nop '~' '~' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xd6 nop nop 0xf6 0xd6 nop nop C
+ 040 0xe4 0xc4 nop nop 0xe4 0xc4 nop nop C
+ 041 dcir 0xb0 rs rs '^' 0xb0 rs rs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' ''' nop nop '#' ''' nop nop O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 0xa2 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' 0xa6 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
diff --git a/share/vt/keymaps/de.noacc.kbd b/share/vt/keymaps/de.noacc.kbd
new file mode 100644
index 0000000..26ff37a
--- /dev/null
+++ b/share/vt/keymaps/de.noacc.kbd
@@ -0,0 +1,115 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop 0xb2 0xb2 nop nop O
+ 004 '3' 0xa7 nop nop 0xb3 0xb3 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 0xdf '?' fs fs '\' '\' fs fs O
+ 013 ''' '`' nop nop 0xb3 0xb4 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' nul nul C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xfc 0xdc nop nop 0xfc 0xdc esc nop C
+ 027 '+' '*' nop nop '~' '~' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xd6 nop nop 0xf6 0xd6 nop nop C
+ 040 0xe4 0xc4 nop nop 0xe4 0xc4 nop nop C
+ 041 '^' 0xb0 rs rs '^' 0xb0 rs rs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' ''' nop nop '#' ''' nop nop O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 0xa2 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+# 083 del ',' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' 0xa6 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/dk.acc.kbd b/share/vt/keymaps/dk.acc.kbd
new file mode 100644
index 0000000..ef97c92
--- /dev/null
+++ b/share/vt/keymaps/dk.acc.kbd
@@ -0,0 +1,162 @@
+# Copyright (c) 2004
+# Kim Norgaard <jasen@jasen.dk>, Denmark.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer as
+# the first lines of this file unmodified.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY KIM NOORGAARD ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL KIM NOORGAARD BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xa1 0xb9 nop nop O
+ 003 '2' '"' nul nul '@' 0xb2 nul nul O
+ 004 '3' '#' nop nop 0x9e 0xb3 nop nop O
+ 005 '4' 0xa4 nop nop '$' 0xa4 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' esc esc '[' '8' esc esc O
+ 010 '9' ')' gs gs ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' nop nop '+' 0xbf nop nop O
+ 013 dacu dgra nop nop '|' '`' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xe5 0xc5 nop nop 0x86 0x8f nop nop C
+ 027 duml dcir rs rs dtil '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 0xdf 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe6 0xc6 nop nop 0x91 0x92 nop nop C
+ 040 0xf8 0xd8 nop nop 0x9b 0x9d nop nop C
+ 041 0xbd 0xa7 nop nop 0xbd 0xa7 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ duml '"' ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu ''' ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/dk.kbd b/share/vt/keymaps/dk.kbd
new file mode 100644
index 0000000..58789ff
--- /dev/null
+++ b/share/vt/keymaps/dk.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 0x9e '#' nop nop O
+ 005 '4' 0xa4 nop nop '$' 0xa4 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' esc esc '[' '(' esc esc O
+ 010 '9' ')' gs gs ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' nop nop '+' '?' nop nop O
+ 013 ''' '`' nop nop '|' '`' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xe5 0xc5 nop nop 0x86 0x8f nop nop C
+ 027 '"' '^' rs rs '~' '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe6 0xc6 nop nop 0x91 0x92 nop nop C
+ 040 0xf8 0xd8 nop nop 0x9b 0x9d nop nop C
+ 041 0xbd 0xa7 nop nop 0xbd 0xa7 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/dk.macbook.kbd b/share/vt/keymaps/dk.macbook.kbd
new file mode 100644
index 0000000..e7a7dea
--- /dev/null
+++ b/share/vt/keymaps/dk.macbook.kbd
@@ -0,0 +1,117 @@
+# $FreeBSD$
+# Danish keyboard layout for Apple MacBook keyboards. Not all
+# key combinations are available in this character set yet.
+# by Erik Cederstrand <erik@cederstrand.dk>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' '1' nop 0xa1 0xaf '1' '1' O
+ 003 '2' '"' '2' '2' nop nop '2' '2' O
+ 004 '3' '#' '3' '3' 0xa7 '$' '3' '3' O
+ 005 '4' nop '4' '4' 0xa3 0xa2 '4' '4' O
+ 006 '5' '%' '5' '5' nop nop '5' '5' O
+ 007 '6' '&' '6' '6' nop nop '6' '6' O
+ 008 '7' '/' '7' '7' 0xb6 '\' '7' '7' O
+ 009 '8' '(' '8' '8' '[' '{' '8' '8' O
+ 010 '9' ')' '9' '9' ']' '}' '9' '9' O
+ 011 '0' '=' '0' '0' nop nop '0' '0' O
+ 012 '+' '?' '+' '+' 0xb1 0xbf '+' '+' O
+ 013 dacu dgra dacu dacu ''' nop dacu dacu O
+ 014 bs del del bs del bs susp bs O
+ 015 ht btab ht ht ht btab ht ht O
+ 016 'q' 'Q' dc1 dc1 0xba nop nop nop C
+ 017 'w' 'W' etb etb 'w' 0xb0 nop nop C
+ 018 'e' 'E' enq enq 0xdf nop nop nop C
+ 019 'r' 'R' dc2 dc2 0xae nop nop nop C
+ 020 't' 'T' dc4 dc4 nop nop nop nop C
+ 021 'y' 'Y' em em 0xa5 0xff nop nop C
+ 022 'u' 'U' nak nak 0xfc nop nop nop C
+ 023 'i' 'I' ht ht '|' nop nop nop C
+ 024 'o' 'O' si si nop nop nop nop C
+ 025 'p' 'P' dle dle nop nop nop nop C
+ 026 0xe5 nop nop nop nop nop nop nop C
+ 027 0xa8 '^' nop nop '~' '^' '~' '~' O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0xaa nop nop nop C
+ 031 's' 'S' dc3 dc3 nop nop nop nop C
+ 032 'd' 'D' eot eot 0xf0 nop nop nop C
+ 033 'f' 'F' ack ack nop nop nop nop C
+ 034 'g' 'G' bel bel 0xa9 nop nop nop C
+ 035 'h' 'H' bs bs 0xab 0xbb nop nop C
+ 036 'j' 'J' nl nl nop nop nop nop C
+ 037 'k' 'K' vt vt nop nop nop nop C
+ 038 'l' 'L' ff ff 0xac nop nop nop C
+ 039 0xe6 nop nop nop 0xe4 nop nop nop C
+ 040 0xf8 nop nop nop 0xf6 nop nop nop C
+ 041 '$' 0xa7 '0' '0' nop ''' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop '@' nop nop nop O
+ 044 'z' 'Z' sub sub nop 0xb8 nop nop C
+ 045 'x' 'X' can can nop nop nop nop C
+ 046 'c' 'C' etx etx 0xe7 nop nop nop C
+ 047 'v' 'V' syn syn 'v' 'V' nop nop C
+ 048 'b' 'B' stx stx nop nop nop nop C
+ 049 'n' 'N' so so 0xf1 nop nop nop C
+ 050 'm' 'M' cr cr 0xb5 nop nop nop C
+ 051 ',' ';' ',' ',' ',' ';' ',' ',' O
+ 052 '.' ':' '.' '.' 0xb7 0xf7 '.' '.' O
+ 053 '-' '_' '-' '-' '-' nop '-' '-' O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 nlock fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 slock fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 '7' '7' '7' '7' '7' '7' '7' '7' N
+ 072 '8' '8' '8' '8' '8' '8' '8' '8' N
+ 073 '9' '9' '9' '9' '9' '9' '9' '9' N
+ 074 '-' '-' '-' '-' '-' '-' '-' '-' N
+ 075 '4' '4' '4' '4' '4' '4' '4' '4' N
+ 076 '5' '5' '5' '5' '5' '5' '5' '5' N
+ 077 '6' '6' '6' '6' '6' '6' '6' '6' N
+ 078 '+' '+' '+' '+' '+' '+' '+' '+' N
+ 079 '1' '1' '1' '1' '1' '1' '1' '1' N
+ 080 '2' '2' '2' '2' '2' '2' '2' '2' N
+ 081 '3' '3' '3' '3' '3' '3' '3' '3' N
+ 082 '0' '0' '0' '0' '0' '0' '0' '0' N
+ 083 ',' ',' ',' ',' ',' ',' ',' ',' N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 'I' fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 'Q' fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 'O' fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 'G' fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 del del del del del fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/ee.kbd b/share/vt/keymaps/ee.kbd
new file mode 100644
index 0000000..24eea36
--- /dev/null
+++ b/share/vt/keymaps/ee.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 0xa3 nop nop nop O
+ 005 '4' '$' nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+ 013 '`' '`' nop nop '`' '`' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 0x20ac enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xfc 0xdc nop nop 0xfc 0xdc nop nop C
+ 027 0xf5 0xd5 nop nop 0xa7 0xa7 nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 0x0161 0x0160 dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xd6 nop nop 0xf6 0xd6 nop nop C
+ 040 0xe4 0xc4 nop nop '^' '^' nop nop C
+ 041 '~' '~' nop nop '~' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 0x017e 0x017d sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/es.acc.kbd b/share/vt/keymaps/es.acc.kbd
new file mode 100644
index 0000000..4648fe6
--- /dev/null
+++ b/share/vt/keymaps/es.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 0xb7 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '~' '~' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 0xac 0xac nop nop O
+ 008 '7' '/' nop nop '7' '/' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' nop nop ''' '?' nop nop O
+ 013 0xa1 0xbf nop nop 0xa1 0xbf nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0xe9 0xc9 enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 0xfa 0xda nak nak C
+ 023 'i' 'I' ht ht 0xed 0xcd ht ht C
+ 024 'o' 'O' si si 0xf3 0xd3 si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dgra dcir esc esc '[' '[' esc esc O
+ 027 '+' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0xe1 0xc1 soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf1 0xd1 nop nop '~' '~' nop nop C
+ 040 dacu duml nop nop '{' '{' nop nop O
+ 041 0xba 0xaa fs fs '\' '\' fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0xe7 0xc7 rs rs '}' '}' rs rs C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/es.dvorak.kbd b/share/vt/keymaps/es.dvorak.kbd
new file mode 100644
index 0000000..f016257
--- /dev/null
+++ b/share/vt/keymaps/es.dvorak.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+#
+# Submitted by: Ãlvaro Castillo <netsys@fedoraproject.org>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '|' '!' nop nop O
+ 003 '2' '"' nop nop '@' '"' nop nop O
+ 004 '3' 0xb7 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '~' '~' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 0xac 0xac nop nop O
+ 008 '7' '/' nop nop '7' '/' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' nop nop ''' '?' nop nop O
+ 013 0xa1 0xbf nop nop 0xa1 0xbf nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 '.' ':' nop nop '.' ':' nop nop O
+ 017 ',' ';' nop nop ',' ';' nop nop O
+ 018 0xf1 0xd1 nop nop '~' '~' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'h' 'H' bs bs 'h' 'H' bs bs C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 dgra dcir esc esc '[' '[' esc esc O
+ 027 '+' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 0xf3 0xd3 si si C
+ 032 'e' 'E' enq enq 0x20ac 0x20ac enq enq C
+ 033 'u' 'U' nak nak 0xfa 0xda nak nak C
+ 034 'i' 'I' ht ht 0xed 0xcd ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 dacu duml nop nop '{' '{' nop nop O
+ 041 '\' '|' fs fs '\' '|' fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0xe7 0xc7 rs rs '}' '}' rs rs O
+ 044 '-' '_' us us '-' '_' us us O
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/es.kbd b/share/vt/keymaps/es.kbd
new file mode 100644
index 0000000..2297574
--- /dev/null
+++ b/share/vt/keymaps/es.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 0xb7 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '~' '~' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 0xac 0xac nop nop O
+ 008 '7' '/' nop nop '7' '/' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' nop nop ''' '?' nop nop O
+ 013 0xa1 0xbf nop nop 0xa1 0xbf nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 0x20ac enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 0xfa 0xda nak nak C
+ 023 'i' 'I' ht ht 0xed 0xcd ht ht C
+ 024 'o' 'O' si si 0xf3 0xd3 si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dgra dcir esc esc '[' '[' esc esc O
+ 027 '+' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0xe1 0xc1 soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf1 0xd1 nop nop '~' '~' nop nop C
+ 040 dacu duml nop nop '{' '{' nop nop O
+ 041 0xba 0xaa fs fs '\' '\' fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0xe7 0xc7 rs rs '}' '}' rs rs C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/fi.kbd b/share/vt/keymaps/fi.kbd
new file mode 100644
index 0000000..bea4cf1
--- /dev/null
+++ b/share/vt/keymaps/fi.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 0xa3 nop nop nop O
+ 005 '4' 0xa4 nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+ 013 0x80 '`' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xe5 0xc5 nop nop '}' ']' nop nop C
+ 027 0xa8 '^' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xd6 nop nop '|' '\' nop nop C
+ 040 0xe4 0xc4 nop nop '{' '[' nop nop C
+ 041 0xa7 0xbd nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop nop nop nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/fr.acc.kbd b/share/vt/keymaps/fr.acc.kbd
new file mode 100644
index 0000000..250f4a7
--- /dev/null
+++ b/share/vt/keymaps/fr.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop nop nop nop nop C
+ 003 0xe9 '2' nul nul '~' nop nop nop C
+ 004 '"' '3' nop nop '#' nop nop nop C
+ 005 ''' '4' nop nop '{' nop nop nop C
+ 006 '(' '5' nop nop '[' nop nop nop C
+ 007 '-' '6' nop nop '|' nop nop nop C
+ 008 0xe8 '7' nop nop '`' nop nop nop C
+ 009 '_' '8' nop nop '\' nop fs nop C
+ 010 0xe7 '9' nop nop '^' nop nop nop C
+ 011 0xe0 '0' nop nop '@' nop nop nop C
+ 012 ')' 0xb0 nop nop ']' nop nop nop C
+ 013 '=' '+' nop nop '}' nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 0xe2 0xe4 dc1 dc1 C
+ 017 'z' 'Z' sub sub 'z' 'Z' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 0xed 0xec em em C
+ 022 'u' 'U' nak nak 0xfb 0xfc nak nak C
+ 023 'i' 'I' ht ht 0xee 0xef ht ht C
+ 024 'o' 'O' si si 0xf4 0xf6 si si C
+ 025 'p' 'P' dle dle 0xf7 0xe6 dle dle C
+ 026 dcir duml esc esc '[' '{' esc esc O
+ 027 '$' 0xa3 gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 0xf9 '%' nul nul ''' '@' nul nul O
+ 041 0xb2 nop nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '*' 0xb5 nop nop '#' '~' nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 0xdf 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 ',' '?' nop nop nop nop nop nop O
+ 051 ';' '.' nop nop ',' '<' nop nop O
+ 052 ':' '/' nop nop '.' '>' nop nop O
+ 053 '!' 0xa7 nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs 0xab 0xbb fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/fr.dvorak.acc.kbd b/share/vt/keymaps/fr.dvorak.acc.kbd
new file mode 100644
index 0000000..cce19f7
--- /dev/null
+++ b/share/vt/keymaps/fr.dvorak.acc.kbd
@@ -0,0 +1,153 @@
+# A Dvorak keyboard for French
+#
+# This is a Dvorak-like layout for French
+# according to Francis Leboutte on
+# http://www.algo.be/ergo/dvorak-fr.html
+#
+# Note that letters with accents won't be correctly
+# displayed unless one uses the correct font:
+# vidcontrol -f iso15-8x16.fnt
+#
+# -Frédéric Praca <frederic.praca@freebsd-fr.org>
+# -Clément Pillias <clement.pillias@free.fr> for accent keys
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '=' '1' nop nop nop nop nop nop C
+ 003 '/' '2' nop nop nop nop nop nop C
+ 004 '-' '3' nop nop nop nop nop nop C
+ 005 0xe8 '4' nop nop nop nop nop nop C
+ 006 '\' '5' nop nop nop nop nop nop C
+ 007 dcir '6' nop nop nop nop nop nop C
+ 008 '(' '7' nop nop nop nop nop nop C
+ 009 dgra '8' nop nop nop nop nop nop C
+ 010 ')' '9' nop nop nop nop nop nop C
+ 011 '"' '0' nop nop nop nop nop nop C
+ 012 '[' '+' nop nop nop nop nop nop C
+ 013 ']' '%' nop nop nop nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ':' '?' nop nop nop nop nop nop O
+ 017 ''' '<' nop nop nop nop nop nop C
+ 018 0xe9 '>' nop nop nop nop nop nop C
+ 019 'g' 'G' nop nop nop nop nop nop C
+ 020 '.' '!' nop nop nop nop nop nop O
+ 021 'h' 'H' nop nop nop nop nop nop C
+ 022 'v' 'V' nop nop nop nop nop nop C
+ 023 'c' 'C' nop nop nop nop nop nop C
+ 024 'm' 'M' nop nop nop nop nop nop C
+ 025 'k' 'K' nop nop nop nop nop nop C
+ 026 'z' 'Z' nop nop nop nop nop nop C
+ 027 ddia '&' nop nop nop nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'o' 'O' nop nop nop nop nop nop C
+ 031 'a' 'A' nop nop nop nop nop nop C
+ 032 'u' 'U' nop nop nop nop nop nop C
+ 033 'e' 'E' nop nop nop nop nop nop C
+ 034 'b' 'B' nop nop nop nop nop nop C
+ 035 'f' 'F' nop nop nop nop nop nop C
+ 036 's' 'S' nop nop nop nop nop nop C
+ 037 't' 'T' nop nop nop nop nop nop C
+ 038 'n' 'N' nop nop nop nop nop nop C
+ 039 'd' 'D' nop nop nop nop nop nop C
+ 040 'w' 'W' nop nop nop nop nop nop C
+ 041 '_' '*' nop nop nop nop nop nop C
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 dtil '#' nop nop nop nop nop nop O
+ 044 ';' '|' nop nop nop nop nop nop O
+ 045 'q' 'Q' nop nop nop nop nop nop C
+ 046 ',' '@' nop nop nop nop nop nop O
+ 047 'i' 'I' nop nop nop nop nop nop C
+ 048 'y' 'Y' nop nop nop nop nop nop C
+ 049 'x' 'X' nop nop nop nop nop nop C
+ 050 'r' 'R' nop nop nop nop nop nop C
+ 051 'l' 'L' nop nop nop nop nop nop C
+ 052 'p' 'P' nop nop nop nop nop nop C
+ 053 'j' 'J' nop nop nop nop nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 0xe0 0xe7 nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( '/' 0xb1 ) ( '-' 0xbc ) ( 0xe8 0xbd ) ( '\' 0xbe )
+ ( '?' 0xc6 ) ( 'C' 0xc7 )
+ ( ':' 0xe6 ) ( '`' '$' ) ( 0xe9 0xc9 ) ( 'g' 0xa4 )
+ ( '.' 0xb0 ) ( 'c' 0xe7 ) ( 'm' 0xb5 )
+ ( 'O' 0xd2 ) ( 'A' 0xc0 ) ( 'U' 0xd9 ) ( 'E' 0xc8 )
+ ( 'o' 0xf2 ) ( 'a' 0xe0 ) ( 'u' 0xf9 ) ( 'e' 0xe8 )
+ ( 's' 0xab ) ( 'n' 0xbb )
+ ( 0xe7 0xc7 ) ( '|' 0xbc ) ( 'I' 0xcc )
+ ( 0xe0 0xc0 ) ( ';' 0xbd ) ( 'q' '{' ) ( ',' '}' )
+ ( 'i' 0xec ) ( 'r' 0xba ) ( 'p' 0xa7 )
+ ( '!' 0xa1 )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'e' 0xea ) ( 'i' 0xee ) ( 'o' 0xf4 ) ( 'u' 0xfb )
+ ( 'A' 0xc2 ) ( 'E' 0xca ) ( 'I' 0xce ) ( 'O' 0xd4 ) ( 'U' 0xdb )
+
+ dtil '~' ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ ddia '"' ( 'a' 0xe4 ) ( 'e' 0xeb ) ( 'i' 0xef ) ( 'o' 0xf6 ) ( 'u' 0xfc )
+ ( 'A' 0xc4 ) ( 'E' 0xcb ) ( 'I' 0xcf ) ( 'O' 0xd6 ) ( 'U' 0xdc )
+ ( 'y' 0xff ) ( 'Y' 0xbe )
+
+ dacu 0xb4( 'a' 0xe1 ) ( 'e' 0xe9 ) ( 'i' 0xed ) ( 'o' 0xf3 ) ( 'u' 0xfa )
+ ( 'A' 0xc1 ) ( 'E' 0xc9 ) ( 'I' 0xcd ) ( 'O' 0xd3 ) ( 'U' 0xda )
+ ( 'Y' 0xdd ) ( 'y' 0xfd )
diff --git a/share/vt/keymaps/fr.dvorak.kbd b/share/vt/keymaps/fr.dvorak.kbd
new file mode 100644
index 0000000..38fd124
--- /dev/null
+++ b/share/vt/keymaps/fr.dvorak.kbd
@@ -0,0 +1,122 @@
+# A Dvorak keyboard for French
+#
+# This is a Dvorak-like layout for French
+# according to Francis Leboutte on
+# http://www.algo.be/ergo/dvorak-fr.html
+#
+# -Frédéric Praca <frederic.praca@freebsd-fr.org>
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '=' '1' nop ' ' '=' '1' nop nop C
+ 003 0xe0 '2' nop '~' 0xe0 '2' nop nop C
+ 004 '-' '3' nop '#' '-' '3' nop nop C
+ 005 0xe8 '4' nop '{' 0xe8 '4' nop nop C
+ 006 '/' '5' nop '[' '/' '5' nop nop C
+ 007 '^' '6' nop '|' '^' '6' nop nop C
+ 008 '(' '7' nop '`' '(' '7' nop nop C
+ 009 '`' '8' nop '\' '`' '8' nop nop C
+ 010 ')' '9' nop '^' ')' '9' nop nop C
+ 011 '"' '0' nop '@' '"' '0' nop nop C
+ 012 '[' '|' nop ']' '[' '|' nop nop O
+ 013 ']' '%' nop '}' ']' '%' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ':' '?' nop ' ' ':' '?' nop nop O
+ 017 ''' '<' nop ' ' ''' '<' nop nop C
+ 018 0xe9 '>' nop '?' 0xe9 '>' nop nop C
+ 019 'g' 'G' nop ' ' 'g' 'G' nop nop C
+ 020 '.' '!' nop ' ' '.' '!' nop nop O
+ 021 'h' 'H' nop ' ' 'h' 'H' nop nop C
+ 022 'v' 'V' nop ' ' 'v' 'V' nop nop C
+ 023 'c' 'C' nop ' ' 'c' 'C' nop nop C
+ 024 'm' 'M' nop ' ' 'm' 'M' nop nop C
+ 025 'k' 'K' nop ' ' 'k' 'K' nop nop C
+ 026 'z' 'Z' nop ' ' 'z' 'Z' nop nop C
+ 027 0xa8 '&' nop 0xa4 0xa8 '&' nop nop C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'o' 'O' nop ' ' 'o' 'O' nop nop C
+ 031 'a' 'A' nop ' ' 'a' 'A' nop nop C
+ 032 'u' 'U' nop ' ' 'u' 'U' nop nop C
+ 033 'e' 'E' nop ' ' 'e' 'E' nop nop C
+ 034 'b' 'B' nop ' ' 'b' 'B' nop nop C
+ 035 'f' 'F' nop ' ' 'f' 'F' nop nop C
+ 036 's' 'S' nop ' ' 's' 'S' nop nop C
+ 037 't' 'T' nop ' ' 't' 'T' nop nop C
+ 038 'n' 'N' nop ' ' 'n' 'N' nop nop C
+ 039 'd' 'D' nop ' ' 'd' 'D' nop nop C
+ 040 'w' 'W' nop ' ' 'w' 'W' nop nop C
+ 041 0xb2 nop nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '~' '#' nop ' ' '~' '#' nop nop O
+ 044 ';' '@' nop ' ' ';' '@' nop nop O
+ 045 'q' 'Q' nop ' ' 'q' 'Q' nop nop C
+ 046 ',' '\' nop ' ' ',' '\' nop nop O
+ 047 'i' 'I' nop ' ' 'i' 'I' nop nop C
+ 048 'y' 'Y' nop ' ' 'y' 'Y' nop nop C
+ 049 'x' 'X' nop ' ' 'x' 'X' nop nop C
+ 050 'r' 'R' nop ' ' 'r' 'R' nop nop C
+ 051 'l' 'L' nop ' ' 'l' 'L' nop nop C
+ 052 'p' 'P' nop ' ' 'p' 'P' nop nop C
+ 053 'j' 'J' nop ' ' 'j' 'J' nop nop N
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '+' '*' nop ' ' '+' '*' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/fr.kbd b/share/vt/keymaps/fr.kbd
new file mode 100644
index 0000000..a7e92fa
--- /dev/null
+++ b/share/vt/keymaps/fr.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop nop nop nop nop C
+ 003 0xe9 '2' nul nul '~' nop nop nop C
+ 004 '"' '3' nop nop '#' nop nop nop C
+ 005 ''' '4' nop nop '{' nop nop nop C
+ 006 '(' '5' nop nop '[' nop nop nop C
+ 007 '-' '6' nop nop '|' nop nop nop C
+ 008 0xe8 '7' nop nop '`' nop nop nop C
+ 009 '_' '8' nop nop '\' nop fs nop C
+ 010 0xe7 '9' nop nop '^' nop nop nop C
+ 011 0xe0 '0' nop nop '@' nop nop nop C
+ 012 ')' 0xb0 nop nop ']' nop nop nop C
+ 013 '=' '+' nop nop '}' nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 0xe2 0xe4 dc1 dc1 C
+ 017 'z' 'Z' sub sub 'z' 'Z' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 0xed 0xec em em C
+ 022 'u' 'U' nak nak 0xfb 0xfc nak nak C
+ 023 'i' 'I' ht ht 0xee 0xef ht ht C
+ 024 'o' 'O' si si 0xf4 0xf6 si si C
+ 025 'p' 'P' dle dle 0xf7 0xe6 dle dle C
+ 026 0xea 0xf4 esc esc '[' '{' esc esc O
+ 027 '$' 0xa3 gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 0xf9 '%' nul nul ''' '@' nul nul O
+ 041 0xb2 nop nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '*' 0xb5 nop nop '#' '~' nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 0xdf 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 ',' '?' nop nop nop nop nop nop O
+ 051 ';' '.' nop nop ',' '<' nop nop O
+ 052 ':' '/' nop nop '.' '>' nop nop O
+ 053 '!' 0xa7 nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs 0xab 0xbb fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/fr.macbook.kbd b/share/vt/keymaps/fr.macbook.kbd
new file mode 100644
index 0000000..18144cf
--- /dev/null
+++ b/share/vt/keymaps/fr.macbook.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop nop nop nop nop C
+ 003 0xe9 '2' nul nul '~' nop nop nop C
+ 004 '"' '3' nop nop '#' nop nop nop C
+ 005 ''' '4' nop nop '{' nop nop nop C
+ 006 '(' '5' nop nop '[' nop nop nop C
+ 007 0xa7 '6' nop nop '|' nop nop nop C
+ 008 0xe8 '7' nop nop '`' nop nop nop C
+ 009 '!' '8' nop nop '\' nop fs nop C
+ 010 0xe7 '9' nop nop '^' nop nop nop C
+ 011 0xe0 '0' nop nop '@' nop nop nop C
+ 012 ')' 0xb0 nop nop ']' nop nop nop C
+ 013 '-' '_' nop nop '}' nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 0xe2 0xe4 dc1 dc1 C
+ 017 'z' 'Z' sub sub 'z' 'Z' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 0xae 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 0xed 0xec em em C
+ 022 'u' 'U' nak nak 0xfb 0xfc nak nak C
+ 023 'i' 'I' ht ht 0xee 0xef ht ht C
+ 024 'o' 'O' si si 0xbd 0xbc si si C
+ 025 'p' 'P' dle dle 0xf7 0xe6 dle dle C
+ 026 dcir duml esc esc '[' '{' esc esc O
+ 027 '$' '*' gs gs 0xa4 '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' '|' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 0xf9 '%' nul nul ''' '@' nul nul O
+ 041 '@' '#' nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 dgra 0xa3 nop nop '#' '~' nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 0xa9 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 0xdf 'B' stx stx C
+ 049 'n' 'N' so so '~' 'N' so so C
+ 050 ',' '?' nop nop nop nop nop nop O
+ 051 ';' '.' nop nop ',' '<' nop nop O
+ 052 ':' '/' nop nop '.' '\' nop nop O
+ 053 '=' '+' nop nop nop nop nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs 0xab 0xbb fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/gr.101.acc.kbd b/share/vt/keymaps/gr.101.acc.kbd
new file mode 100644
index 0000000..89a931f
--- /dev/null
+++ b/share/vt/keymaps/gr.101.acc.kbd
@@ -0,0 +1,255 @@
+# $FreeBSD$
+#
+# Built on Wed 1 Apr 15:59:44 EEST 1998 by peppe@cs.uoi.gr
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+#
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 ';' ':' dc1 dc1 C
+ 017 'w' 'W' etb etb 0x03c2 0x03a3 etb etb C
+ 018 'e' 'E' enq enq 0x03b5 0x0395 enq enq C
+ 019 'r' 'R' dc2 dc2 0x03c1 0x03a1 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 0x03c4 0x03a4 dc4 dc4 C
+ 021 'y' 'Y' em em 0x03c5 0x03a5 em em C
+ 022 'u' 'U' nak nak 0x03b8 0x0398 nak nak C
+ 023 'i' 'I' ht ht 0x03b9 0x0399 ht ht C
+ 024 'o' 'O' si si 0x03bf 0x039f si si C
+ 025 'p' 'P' dle dle 0x03c0 0x03a0 dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x03b1 0x0391 soh soh C
+ 031 's' 'S' dc3 dc3 0x03c3 0x03a3 dc3 dc3 C
+ 032 'd' 'D' eot eot 0x03b4 0x0394 eot eot C
+ 033 'f' 'F' ack ack 0x03c6 0x03a6 ack ack C
+ 034 'g' 'G' bel bel 0x03b3 0x0393 bel bel C
+ 035 'h' 'H' bs bs 0x03b7 0x0397 bs bs C
+ 036 'j' 'J' nl nl 0x03be 0x039e nl nl C
+ 037 'k' 'K' vt vt 0x03ba 0x039a vt vt C
+ 038 'l' 'L' ff ff 0x03bb 0x039b ff ff C
+ 039 ';' ':' nop nop dacu ddia dcir nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 0x03b6 0x0396 sub sub C
+ 045 'x' 'X' can can 0x03c7 0x03a7 can can C
+ 046 'c' 'C' etx etx 0x03c8 0x03a8 etx etx C
+ 047 'v' 'V' syn syn 0x03c9 0x03a9 syn syn C
+ 048 'b' 'B' stx stx 0x03b2 0x0392 stx stx C
+ 049 'n' 'N' so so 0x03bd 0x039d so so C
+ 050 'm' 'M' cr cr 0x03bc 0x039c cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' alock ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' nop nop '\' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock slock slock slock slock slock slock slock O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+#
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+#
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop esc esc debug nop O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '@' nul nul '2' '@' nul nul O
+ 132 '3' '#' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 ';' ':' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 0x03c2 0x03a3 etb etb 'w' 'W' etb etb C
+ 146 0x03b5 0x0395 enq enq 'e' 'E' enq enq C
+ 147 0x03c1 0x03a1 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 0x03c4 0x03a4 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 0x03c5 0x03a5 em em 'y' 'Y' em em C
+ 150 0x03b8 0x0398 nak nak 'u' 'U' nak nak C
+ 151 0x03b9 0x0399 ht ht 'i' 'I' ht ht C
+ 152 0x03bf 0x039f si si 'o' 'O' si si C
+ 153 0x03c0 0x03a0 dle dle 'p' 'P' dle dle C
+ 154 '[' '{' esc esc '[' '{' esc esc O
+ 155 ']' '}' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x03b1 0x0391 soh soh 'a' 'A' soh soh C
+ 159 0x03c3 0x03a3 dc3 dc3 's' 'S' dc3 dc3 C
+ 160 0x03b4 0x0394 eot eot 'd' 'D' eot eot C
+ 161 0x03c6 0x03a6 ack ack 'f' 'F' ack ack C
+ 162 0x03b3 0x0393 bel bel 'g' 'G' bel bel C
+ 163 0x03b7 0x0397 bs bs 'h' 'H' bs bs C
+ 164 0x03be 0x039e nl nl 'j' 'J' nl nl C
+ 165 0x03ba 0x039a vt vt 'k' 'K' vt vt C
+ 166 0x03bb 0x039b ff ff 'l' 'L' ff ff C
+ 167 dacu ddia dcir nop ';' ':' nop nop O
+ 168 ''' '"' nop nop ''' '"' nop nop O
+ 169 '`' '~' nop nop '`' '~' nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 0x03b6 0x0396 sub sub 'z' 'Z' sub sub C
+ 173 0x03c7 0x03a7 can can 'x' 'X' can can C
+ 174 0x03c8 0x03a8 etx etx 'c' 'C' etx etx C
+ 175 0x03c9 0x03a9 syn syn 'v' 'V' syn syn C
+ 176 0x03b2 0x0392 stx stx 'b' 'B' stx stx C
+ 177 0x03bd 0x039d so so 'n' 'N' so so C
+ 178 0x03bc 0x039c cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' alock ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 ns ns ns ns ns ns ns ns O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 '\' '|' nop nop '\' '|' nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock slock slock slock slock slock slock slock O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+
+ dacu 0x0384 ( 0x03b1 0x03ac ) ( 0x0391 0x0386 ) ( 0x03b5 0x03ad ) ( 0x0395 0x0388 )
+ ( 0x03b9 0x03af ) ( 0x0399 0x038a ) ( 0x03b7 0x03ae ) ( 0x0397 0x0389 )
+ ( 0x03c5 0x03cd ) ( 0x03a5 0x038e ) ( 0x03bf 0x03cc ) ( 0x039f 0x038c )
+ ( 0x03c9 0x03ce ) ( 0x03a9 0x038f )
+
+ dcir 0x0385 ( 0x03b9 0x0390 ) ( 0x0399 0x03aa ) ( 0x03c5 0x03b0 ) ( 0x03a5 0x03ab )
+
+ ddia 0xa8 ( 0x03b9 0x03ca ) ( 0x0399 0x03aa ) ( 0x03c5 0x03cb ) ( 0x03a5 0x03ab )
diff --git a/share/vt/keymaps/gr.elot.acc.kbd b/share/vt/keymaps/gr.elot.acc.kbd
new file mode 100644
index 0000000..1a758a7
--- /dev/null
+++ b/share/vt/keymaps/gr.elot.acc.kbd
@@ -0,0 +1,255 @@
+# $FreeBSD$
+#
+# Built on Wed 1 Apr 15:59:44 EEST 1998 by peppe@cs.uoi.gr
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+#
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' 0xa3 nop nop '3' 0xa3 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0xab 0xbb dc1 dc1 C
+ 017 'w' 'W' etb etb 0x03c2 0x03a3 etb etb C
+ 018 'e' 'E' enq enq 0x03b5 0x0395 enq enq C
+ 019 'r' 'R' dc2 dc2 0x03c1 0x03a1 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 0x03c4 0x03a4 dc4 dc4 C
+ 021 'y' 'Y' em em 0x03c5 0x03a5 em em C
+ 022 'u' 'U' nak nak 0x03b8 0x0398 nak nak C
+ 023 'i' 'I' ht ht 0x03b9 0x0399 ht ht C
+ 024 'o' 'O' si si 0x03bf 0x039f si si C
+ 025 'p' 'P' dle dle 0x03c0 0x03a0 dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x03b1 0x0391 soh soh C
+ 031 's' 'S' dc3 dc3 0x03c3 0x03a3 dc3 dc3 C
+ 032 'd' 'D' eot eot 0x03b4 0x0394 eot eot C
+ 033 'f' 'F' ack ack 0x03c6 0x03a6 ack ack C
+ 034 'g' 'G' bel bel 0x03b3 0x0393 bel bel C
+ 035 'h' 'H' bs bs 0x03b7 0x0397 bs bs C
+ 036 'j' 'J' nl nl 0x03be 0x039e nl nl C
+ 037 'k' 'K' vt vt 0x03ba 0x039a vt vt C
+ 038 'l' 'L' ff ff 0x03bb 0x039b ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 '/' '@' nop nop dacu ddia nop dcir O
+ 041 '`' ''' nop nop '`' ''' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' fs fs '#' '~' fs fs O
+ 044 'z' 'Z' sub sub 0x03b6 0x0396 sub sub C
+ 045 'x' 'X' can can 0x03c7 0x03a7 can can C
+ 046 'c' 'C' etx etx 0x03c8 0x03a8 etx etx C
+ 047 'v' 'V' syn syn 0x03c9 0x03a9 syn syn C
+ 048 'b' 'B' stx stx 0x03b2 0x0392 stx stx C
+ 049 'n' 'N' so so 0x03bd 0x039d so so C
+ 050 'm' 'M' cr cr 0x03bc 0x039c cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' alock ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' nop nop '\' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock slock slock slock slock slock slock slock O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+#
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+#
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop esc esc debug nop O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '"' nul nul O
+ 132 '3' 0xa3 nop nop '3' 0xa3 nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 0xab 0xbb dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 0x03c2 0x03a3 etb etb 'w' 'W' etb etb C
+ 146 0x03b5 0x0395 enq enq 'e' 'E' enq enq C
+ 147 0x03c1 0x03a1 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 0x03c4 0x03a4 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 0x03c5 0x03a5 em em 'y' 'Y' em em C
+ 150 0x03b8 0x0398 nak nak 'u' 'U' nak nak C
+ 151 0x03b9 0x0399 ht ht 'i' 'I' ht ht C
+ 152 0x03bf 0x039f si si 'o' 'O' si si C
+ 153 0x03c0 0x03a0 dle dle 'p' 'P' dle dle C
+ 154 '[' '{' esc esc '[' '{' esc esc O
+ 155 ']' '}' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x03b1 0x0391 soh soh 'a' 'A' soh soh C
+ 159 0x03c3 0x03a3 dc3 dc3 's' 'S' dc3 dc3 C
+ 160 0x03b4 0x0394 eot eot 'd' 'D' eot eot C
+ 161 0x03c6 0x03a6 ack ack 'f' 'F' ack ack C
+ 162 0x03b3 0x0393 bel bel 'g' 'G' bel bel C
+ 163 0x03b7 0x0397 bs bs 'h' 'H' bs bs C
+ 164 0x03be 0x039e nl nl 'j' 'J' nl nl C
+ 165 0x03ba 0x039a vt vt 'k' 'K' vt vt C
+ 166 0x03bb 0x039b ff ff 'l' 'L' ff ff C
+ 167 ';' ':' nop nop ';' ':' nop nop O
+ 168 dacu ddia dcir nop '/' '@' nop nop O
+ 169 '`' ''' nop nop '`' ''' nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '#' '~' fs fs '#' '~' fs fs O
+ 172 0x03b6 0x0396 sub sub 'z' 'Z' sub sub C
+ 173 0x03c7 0x03a7 can can 'x' 'X' can can C
+ 174 0x03c8 0x03a8 etx etx 'c' 'C' etx etx C
+ 175 0x03c9 0x03a9 syn syn 'v' 'V' syn syn C
+ 176 0x03b2 0x0392 stx stx 'b' 'B' stx stx C
+ 177 0x03bd 0x039d so so 'n' 'N' so so C
+ 178 0x03bc 0x039c cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' alock ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 ns ns ns ns ns ns ns ns O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 '\' '|' nop nop '\' '|' nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock slock slock slock slock slock slock slock O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+
+ dacu 0x0384 ( 0x03b1 0x03ac ) ( 0x0391 0x0386 ) ( 0x03b5 0x03ad ) ( 0x0395 0x0388 )
+ ( 0x03b9 0x03af ) ( 0x0399 0x038a ) ( 0x03b7 0x03ae ) ( 0x0397 0x0389 )
+ ( 0x03c5 0x03cd ) ( 0x03a5 0x038e ) ( 0x03bf 0x03cc ) ( 0x039f 0x038c )
+ ( 0x03c9 0x03ce ) ( 0x03a9 0x038f )
+
+ dcir 0x0385 ( 0x03b9 0x0390 ) ( 0x0399 0x03aa ) ( 0x03c5 0x03b0 ) ( 0x03a5 0x03ab )
+
+ ddia 0xa8 ( 0x03b9 0x03ca ) ( 0x0399 0x03aa ) ( 0x03c5 0x03cb ) ( 0x03a5 0x03ab )
diff --git a/share/vt/keymaps/gr.kbd b/share/vt/keymaps/gr.kbd
new file mode 100644
index 0000000..816205e
--- /dev/null
+++ b/share/vt/keymaps/gr.kbd
@@ -0,0 +1,290 @@
+# Greek keyboard for FreeBSD
+# by Basileios Anastasatos <B.Anastasatos@Freemail.gr>
+#
+# $FreeBSD$
+#
+# English/Greek keyboard lock: (Left)Alt+(Left|Right)Shift
+# English/Greek keyboard shift: (Right)AltGr
+#
+# Meta shift: (Right)Windows or Menu
+#
+# Extra escape (for vi users): (Left)Windows
+#
+# Previous screen: Ctrl+Left Arrow
+# Next screen: Ctrl+Right Arrow
+#
+# Screen saver: Shift+Pause
+# Suspend power (APM): (Left)Alt+Pause
+#
+# Composite characters:
+# acute (tonos): [;/:] and ΑΕΗΙΟΥΩαεηιουω => ΆΈΉΊΌΎÎάέήίόÏÏŽ
+# diaeresis (dialytika): Shift+[;/:] and ΙΥιυ => ΪΫϊϋ
+# acute and diaeresis: Ctrl+[;/:] and ιυ => Îΰ
+#
+# Greek semicolon (ano teleia): Shift+'w/W' => ·
+#
+# Other characters from the ISO 8859-7 charset:
+#
+# Key combination Code Symbol Name
+#
+# Ctrl+[`/~] 166 ¦ BROKEN BAR
+# Shift+Ctrl+[`/~] 189 ½ VULGAR FRACTION ONE HALF
+# Ctrl+[1/!] 178 ² SUPERSCRIPT TWO
+# Shift+Ctrl+[1/!] 179 ³ SUPERSCRIPT THREE
+# Shift(+Ctrl)+[3/#] 169 © COPYRIGHT SIGN
+# Shift(+Ctrl)+[4/$] 163 £ POUND SIGN
+# Shift(+Ctrl)+[5/%] 167 § SECTION SIGN
+# Shift(+Ctrl)+[7/&] 161 ‘ SINGLE HIGH-REVERSED-9 QUOTATION MARK
+# Shift(+Ctrl)+[8/*] 162 ’ RIGHT SINGLE QUOTATION MARK
+# Shift(+Ctrl)+[9/(] 171 « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+# Shift(+Ctrl)+[0/)] 187 » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+# Shift(+Ctrl)+[=/+] 177 ± PLUS-MINUS SIGN
+# Shift(+Ctrl)+['/"] 176 ° DEGREE SIGN
+# Shift(+Ctrl)+[,/<] 173 ­ SOFT HYPHEN
+# Shift(+Ctrl)+[./>] 175 ― HORIZONTAL BAR
+# Shift(+Ctrl)+[//?] 172 ¬ NOT SIGN
+# Ctrl+Shift+Space 160   NO-BREAK SPACE
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug panic O
+ 002 '1' '!' 0xb2 0xb3 '1' '!' 0xb2 0xb3 O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' 0xa9 0xa9 '3' '#' 0xa9 0xa9 O
+ 005 '4' '$' 0xa3 0xa3 '4' '$' 0xa3 0xa3 O
+ 006 '5' '%' 0xa7 0xa7 '5' '%' 0xa7 0xa7 O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' 0x2018 0x2018 '7' '&' 0x2018 0x2018 O
+ 009 '8' '*' 0x2019 0x2019 '8' '*' 0x2019 0x2019 O
+ 010 '9' '(' 0xab 0xab '9' '(' 0xab 0xab O
+ 011 '0' ')' 0xbb 0xbb '0' ')' 0xbb 0xbb O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' 0xb1 0xb1 '=' '+' 0xb1 0xb1 O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' 0xb0 0xb0 ''' '"' 0xb0 0xb0 O
+ 041 '`' '~' 0xa6 0xbd '`' '~' 0xa6 0xbd O
+ 042 lshift lshift lshift lshift lshifta lshifta lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' 0xad 0xad ',' '<' 0xad 0xad O
+ 052 '.' '>' 0x2015 0x2015 '.' '>' 0x2015 0x2015 O
+ 053 '/' '?' 0xac 0xac '/' '?' 0xac 0xac O
+ 054 rshift rshift rshift rshift rshifta rshifta rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' N
+ 056 lalt lalta lalt lalt lalt lalta lalt lalt O
+ 057 ' ' ' ' nul 0xa0 ' ' ' ' susp 0xa0 O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ashift ashift ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 pscr pscr fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 nscr nscr fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 esc esc fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 meta meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug panic O
+ 130 '1' '!' 0xb2 0xb3 '1' '!' 0xb2 0xb3 O
+ 131 '2' '@' nul nul '2' '@' nul nul O
+ 132 '3' '#' 0xa9 0xa9 '3' '#' 0xa9 0xa9 O
+ 133 '4' '$' 0xa3 0xa3 '4' '$' 0xa3 0xa3 O
+ 134 '5' '%' 0xa7 0xa7 '5' '%' 0xa7 0xa7 O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' 0x2018 0x2018 '7' '&' 0x2018 0x2018 O
+ 137 '8' '*' 0x2019 0x2019 '8' '*' 0x2019 0x2019 O
+ 138 '9' '(' 0xab 0xab '9' '(' 0xab 0xab O
+ 139 '0' ')' 0xbb 0xbb '0' ')' 0xbb 0xbb O
+ 140 '-' '_' us us '-' '_' us us O
+ 141 '=' '+' 0xb1 0xb1 '=' '+' 0xb1 0xb1 O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 ';' ':' dc1 dc1 ';' ':' dc1 dc1 C
+ 145 0x03c2 0xb7 etb etb 0x03c2 0xb7 etb etb C
+ 146 0x03b5 0x0395 enq enq 0x03b5 0x0395 enq enq C
+ 147 0x03c1 0x03a1 dc2 dc2 0x03c1 0x03a1 dc2 dc2 C
+ 148 0x03c4 0x03a4 dc4 dc4 0x03c4 0x03a4 dc4 dc4 C
+ 149 0x03c5 0x03a5 em em 0x03c5 0x03a5 em em C
+ 150 0x03b8 0x0398 nak nak 0x03b8 0x0398 nak nak C
+ 151 0x03b9 0x0399 ht ht 0x03b9 0x0399 ht ht C
+ 152 0x03bf 0x039f si si 0x03bf 0x039f si si C
+ 153 0x03c0 0x03a0 dle dle 0x03c0 0x03a0 dle dle C
+ 154 '[' '{' esc esc '[' '{' esc esc O
+ 155 ']' '}' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x03b1 0x0391 soh soh 0x03b1 0x0391 soh soh C
+ 159 0x03c3 0x03a3 dc3 dc3 0x03c3 0x03a3 dc3 dc3 C
+ 160 0x03b4 0x0394 eot eot 0x03b4 0x0394 eot eot C
+ 161 0x03c6 0x03a6 ack ack 0x03c6 0x03a6 ack ack C
+ 162 0x03b3 0x0393 bel bel 0x03b3 0x0393 bel bel C
+ 163 0x03b7 0x0397 bs bs 0x03b7 0x0397 bs bs C
+ 164 0x03be 0x039e nl nl 0x03be 0x039e nl nl C
+ 165 0x03ba 0x039a vt vt 0x03ba 0x039a vt vt C
+ 166 0x03bb 0x039b ff ff 0x03bb 0x039b ff ff C
+ 167 dacu ddia ddac nop dacu ddia ddac nop O
+ 168 ''' '"' 0xb0 0xb0 ''' '"' 0xb0 0xb0 O
+ 169 '`' '~' 0xa6 0xbd '`' '~' 0xa6 0xbd O
+ 170 lshift lshift lshift lshift lshifta lshifta lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 0x03b6 0x0396 sub sub 0x03b6 0x0396 sub sub C
+ 173 0x03c7 0x03a7 can can 0x03c7 0x03a7 can can C
+ 174 0x03c8 0x03a8 etx etx 0x03c8 0x03a8 etx etx C
+ 175 0x03c9 0x03a9 syn syn 0x03c9 0x03a9 syn syn C
+ 176 0x03b2 0x0392 stx stx 0x03b2 0x0392 stx stx C
+ 177 0x03bd 0x039d so so 0x03bc 0x039c so so C
+ 178 0x03bc 0x039c cr cr 0x03bb 0x039b cr cr C
+ 179 ',' '<' 0xad 0xad ',' '<' 0xad 0xad O
+ 180 '.' '>' 0x2015 0x2015 '.' '>' 0x2015 0x2015 O
+ 181 '/' '?' 0xac 0xac '/' '?' 0xac 0xac O
+ 182 rshift rshift rshift rshift rshifta rshifta rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' N
+ 184 lalt lalta lalt lalt lalt lalta lalt lalt O
+ 185 ' ' ' ' nul 0xa0 ' ' ' ' susp 0xa0 O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl N
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ashift ashift ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 pscr pscr fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 nscr nscr fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 esc esc fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 meta meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+
+#
+# accent capital lower
+# ----------------------------------------------
+ dacu 0x0384 ( 0x0384 0x0384 ) ( 0x0391 0x0386 ) ( 0x03b1 0x03ac )
+ ( 0x0395 0x0388 ) ( 0x03b5 0x03ad )
+ ( 0x0397 0x0389 ) ( 0x03b7 0x03ae )
+ ( 0x0399 0x038a ) ( 0x03b9 0x03af )
+ ( 0x039f 0x038c ) ( 0x03bf 0x03cc )
+ ( 0x03a5 0x038e ) ( 0x03c5 0x03cd )
+ ( 0x03a9 0x038f ) ( 0x03c9 0x03ce )
+
+ ddac 0x0385 ( 0x0385 0x0385 ) ( 0x03b9 0x0390 )
+ ( 0x03c5 0x03b0 )
+
+ ddia 0xa8 ( 0xa8 0xa8 ) ( 0x0399 0x03aa ) ( 0x03b9 0x03ca )
+ ( 0x03a5 0x03ab ) ( 0x03c5 0x03cb )
diff --git a/share/vt/keymaps/hr.kbd b/share/vt/keymaps/hr.kbd
new file mode 100644
index 0000000..69aa304
--- /dev/null
+++ b/share/vt/keymaps/hr.kbd
@@ -0,0 +1,117 @@
+# $FreeBSD$
+#
+# Slovenian keyboard
+# Blaz Zupan <blaz@amis.net>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '~' '~' nop nop O
+ 003 '2' '"' nul nul 0x02c7 0x02c7 nul nul O
+ 004 '3' '#' nop nop '^' '^' nop nop O
+ 005 '4' '$' nop nop 0x02d8 0x02d8 nop nop O
+ 006 '5' '%' nop nop 0xb0 0xb0 nop nop O
+ 007 '6' '&' rs rs 0x02db 0x02db rs rs O
+ 008 '7' '/' nop nop '`' '`' nop nop O
+ 009 '8' '(' nop nop 0x02d9 0x02d9 nop nop O
+ 010 '9' ')' nop nop ''' ''' nop nop O
+ 011 '0' '=' nop nop 0x02dd 0x02dd nop nop O
+ 012 ''' '?' us us 0xa8 0xa8 us us O
+ 013 '+' '*' nop nop 0xb8 0xb8 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '\' '\' dc1 dc1 C
+ 017 'w' 'W' etb etb '|' '|' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0x0161 0x0160 esc esc 0xf7 0xf7 esc esc C
+ 027 0x0111 0x0110 gs gs 0xd7 0xd7 gs gs C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack '[' '[' ack ack C
+ 034 'g' 'G' bel bel ']' ']' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 0x0142 0x0142 vt vt C
+ 038 'l' 'L' ff ff 0x0141 0x0141 ff ff C
+ 039 0x010d 0x010c nop nop 0x010d 0x010c nop nop C
+ 040 0x0107 0x0106 nop nop 0xdf 0xdf nop nop C
+ 041 0xb8 0xa8 nop nop 0xb8 0xa8 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0x017e 0x017d fs fs 0xa4 0xa4 fs fs C
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn '@' '@' syn syn C
+ 048 'b' 'B' stx stx '{' '{' stx stx C
+ 049 'n' 'N' so so '}' '}' so so C
+ 050 'm' 'M' cr cr 0xa7 0xa7 cr cr C
+ 051 ',' ';' nop nop '<' ';' '<' nop O
+ 052 '.' ':' nop nop '>' ':' '>' nop O
+ 053 '-' '_' nop nop '-' '_' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/hu.101.kbd b/share/vt/keymaps/hu.101.kbd
new file mode 100644
index 0000000..3101b36
--- /dev/null
+++ b/share/vt/keymaps/hu.101.kbd
@@ -0,0 +1,293 @@
+# $FreeBSD$
+#
+# This is for use with a US keyboard, with only the
+# Hungarian accented characters added to it, and some tricks:
+# The accented characters are available as Alt + something: (and the upper
+# case version is with Alt + Shift + something)
+# ' -> a'
+# ; -> e'
+# ` -> i'
+# = -> o'
+# 0 -> o:
+# [ -> o"
+# ] -> u'
+# - -> u:
+# \ -> u"
+# (i' and I' has another method: Alt + j -> i' and Alt + i -> I')
+#
+# This keymap file has a switching feature:
+# with the Shift+Ctrl combination,
+# we can change the keyboard from US kbd (with hungarian accented letters as
+# Alt+something) to a US kbd, with the help of which we can type the accented
+# characters
+# without the Alt key (and can type the original characters as Alt + ;). So
+# after loading that keymap:
+# ; -> ;
+# Alt + ; -> e'
+# press Shift+Ctrl, and get:
+# ; -> e'
+# Alt + ; -> ;
+# The keyboard switch can be seen at the CapsLock led: off = normal mode; on =
+# switched mode. By the way, we cannot see the CapsLock key's status ;-(
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop 0xf6 0xd6 nop nop O
+ 012 '-' '_' ns ns 0xfc 0xdc ns ns C
+ 013 '=' '+' nop nop 0xf3 0xd3 nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 0xcd 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc 0x0151 0x0150 esc esc C
+ 027 ']' '}' gs gs 0xfa 0xda gs gs C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 0xed 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop 0xe9 0xc9 nop nop C
+ 040 ''' '"' nop nop 0xe1 0xc1 nop nop C
+ 041 '`' '~' nop nop 0xed 0xcd nop nop C
+ 042 lshift lshift alock lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 0x0171 0x0170 fs fs C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop C
+ 054 rshift rshift alock rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 0xed 0xcd nop nop nop nop nop nop C
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+# ------------------------------------------------------------------
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '@' nul nul '2' '@' nul nul O
+ 132 '3' '#' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 0xf6 0xd6 nop nop '0' ')' nop nop O
+ 140 0xfc 0xdc ns ns '-' '_' ns ns C
+ 141 0xf3 0xd3 nop nop '=' '+' nop nop C
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'w' 'W' etb etb 'w' 'W' etb etb C
+ 146 'e' 'E' enq enq 'e' 'E' enq enq C
+ 147 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 'y' 'Y' em em 'y' 'Y' em em C
+ 150 'u' 'U' nak nak 'u' 'U' nak nak C
+ 151 'i' 'I' ht ht 0xcd 'I' ht ht C
+ 152 'o' 'O' si si 'o' 'O' si si C
+ 153 'p' 'P' dle dle 'p' 'P' dle dle C
+ 154 0x0151 0x0150 esc esc '[' '{' esc esc C
+ 155 0xfa 0xda gs gs ']' '}' gs gs C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'a' 'A' soh soh 'a' 'A' soh soh C
+ 159 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 'd' 'D' eot eot 'd' 'D' eot eot C
+ 161 'f' 'F' ack ack 'f' 'F' ack ack C
+ 162 'g' 'G' bel bel 'g' 'G' bel bel C
+ 163 'h' 'H' bs bs 'h' 'H' bs bs C
+ 164 'j' 'J' nl nl 0xed 'J' nl nl C
+ 165 'k' 'K' vt vt 'k' 'K' vt vt C
+ 166 'l' 'L' ff ff 'l' 'L' ff ff C
+ 167 0xe9 0xc9 nop nop ';' ':' nop nop C
+ 168 0xe1 0xc1 nop nop ''' '"' nop nop C
+ 169 0xed 0xcd nop nop '`' '~' nop nop C
+ 170 lshift lshift alock lshift lshift lshift lshift lshift O
+ 171 0x0171 0x0170 fs fs '\' '|' fs fs C
+ 172 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 173 'x' 'X' can can 'x' 'X' can can C
+ 174 'c' 'C' etx etx 'c' 'C' etx etx C
+ 175 'v' 'V' syn syn 'v' 'V' syn syn C
+ 176 'b' 'B' stx stx 'b' 'B' stx stx C
+ 177 'n' 'N' so so 'n' 'N' so so C
+ 178 'm' 'M' cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop C
+ 182 rshift rshift alock rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 0xed 0xcd nop nop nop nop nop nop C
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr cr cr cr cr cr cr O
+ 218 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+ 237 nop nop nop nop nop nop nop nop O
+ 238 nop nop nop nop nop nop nop nop O
+ 239 nop nop nop nop nop nop nop nop O
+ 240 nop nop nop nop nop nop nop nop O
+ 241 nop nop nop nop nop nop nop nop O
+ 242 nop nop nop nop nop nop nop nop O
+ 243 nop nop nop nop nop nop nop nop O
+ 244 nop nop nop nop nop nop nop nop O
+ 245 nop nop nop nop nop nop nop nop O
+ 246 nop nop nop nop nop nop nop nop O
+ 247 nop nop nop nop nop nop nop nop O
+ 248 nop nop nop nop nop nop nop nop O
+ 249 nop nop nop nop nop nop nop nop O
+ 250 nop nop nop nop nop nop nop nop O
+ 251 nop nop nop nop nop nop nop nop O
+ 252 nop nop nop nop nop nop nop nop O
+ 253 nop nop nop nop nop nop nop nop O
+ 254 nop nop nop nop nop nop nop nop O
+ 255 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/hu.102.kbd b/share/vt/keymaps/hu.102.kbd
new file mode 100644
index 0000000..532cbd8
--- /dev/null
+++ b/share/vt/keymaps/hu.102.kbd
@@ -0,0 +1,142 @@
+# This is an as-close-as-possible (closer :-) representation of the
+# Hungarian keyboard standard (after M$'s W*). There are so many PCs in
+# Hungary with that type of keyboard.
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' ''' nop nop '~' nop nop nop O
+ 003 '2' '"' nop nop 0x02c7 nop nop nop O
+ 004 '3' '+' nop nop '^' nop rs rs O
+ 005 '4' '!' nop nop 0x02d8 nop nop nop O
+ 006 '5' '%' nop nop 0xb0 nop nop nop O
+ 007 '6' '/' rs rs 0x02db nop rs rs O
+ 008 '7' '=' nop nop '`' nop nop nop O
+ 009 '8' '(' nop nop 0x02d9 nop nop nop O
+ 010 '9' ')' nop nop 0xb4 nop nop nop O
+ 011 0xf6 0xd6 nop nop 0x02dd nop nop nop C
+ 012 0xfc 0xdc nop nop 0xa8 nop nop nop C
+ 013 0xf3 0xd3 nop nop 0xb8 nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '\' nop fs fs C
+ 017 'w' 'W' etb etb '|' nop etb etb C
+ 018 'e' 'E' enq enq nop nop enq enq C
+ 019 'r' 'R' dc2 dc2 nop nop dc2 dc2 C
+ 020 't' 'T' dc4 dc4 nop nop dc4 dc4 C
+ 021 'z' 'Z' sub sub nop nop sub sub C
+ 022 'u' 'U' nak nak nop nop nak nak C
+ 023 'i' 'I' ht ht 0xcd nop ht ht C
+ 024 'o' 'O' si si nop nop si si C
+ 025 'p' 'P' dle dle nop nop dle dle C
+ 026 0x0151 0x0150 esc esc 0xf7 nop esc esc C
+ 027 0xfa 0xda gs gs 0xd7 nop gs gs C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh nop nop soh soh C
+ 031 's' 'S' dc3 dc3 0x0111 nop dc3 dc3 C
+ 032 'd' 'D' eot eot 0x0110 nop eot eot C
+ 033 'f' 'F' ack ack '[' nop esc esc C
+ 034 'g' 'G' bel bel ']' nop gs gs C
+ 035 'h' 'H' bs bs nop nop bs bs C
+ 036 'j' 'J' nl nl 0xed nop nl nl C
+ 037 'k' 'K' vt vt 0x0142 nop vt vt C
+ 038 'l' 'L' ff ff 0x0141 nop ff ff C
+ 039 0xe9 0xc9 nop nop '$' nop nop nop C
+ 040 0xe1 0xc1 nop nop 0xdf nop nop nop C
+ 041 '0' 0x15 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0x0171 0x0170 fs fs 0xa4 nop fs fs C
+ 044 'y' 'Y' em em '>' '<' em em C
+ 045 'x' 'X' can can '#' nop can can C
+ 046 'c' 'C' etx etx '&' nop etx etx C
+ 047 'v' 'V' syn syn '@' nop nul nul C
+ 048 'b' 'B' stx stx '{' nop stx stx C
+ 049 'n' 'N' so so '}' nop so so C
+ 050 'm' 'M' cr cr '<' nop cr cr C
+ 051 ',' '?' nop nop ';' nop nop nop O
+ 052 '.' ':' nop nop '>' nop nop nop O
+ 053 '-' '_' ns ns '*' nop nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 0xed 0xcd nop nop '<' nop nop nop C
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+# the left Windows key. If you would like to use them,
+# program these keys with:
+# kbdcontrol -f 62 'strings you would like to send'
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+# the right Windows key.
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+# the right Menu pointer key.
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/il.kbd b/share/vt/keymaps/il.kbd
new file mode 100644
index 0000000..49e1876
--- /dev/null
+++ b/share/vt/keymaps/il.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '/' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb ''' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x05e7 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 0x05e8 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 0x05d0 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 0x05d8 'Y' em em C
+ 022 'u' 'U' nak nak 0x05d5 'U' nak nak C
+ 023 'i' 'I' ht ht 0x05df 'I' ht ht C
+ 024 'o' 'O' si si 0x05dd 'O' si si C
+ 025 'p' 'P' dle dle 0x05e4 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x05e9 'A' soh soh C
+ 031 's' 'S' dc3 dc3 0x05d3 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 0x05d2 'D' eot eot C
+ 033 'f' 'F' ack ack 0x05db 'F' ack ack C
+ 034 'g' 'G' bel bel 0x05e2 'G' bel bel C
+ 035 'h' 'H' bs bs 0x05d9 'H' bs bs C
+ 036 'j' 'J' nl nl 0x05d7 'J' nl nl C
+ 037 'k' 'K' vt vt 0x05dc 'K' vt vt C
+ 038 'l' 'L' ff ff 0x05da 'L' ff ff C
+ 039 ';' ':' nop nop 0x05e3 ':' nop nop O
+ 040 ''' '"' nop nop ',' '"' nop nop O
+ 041 '`' '~' nop nop ';' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 0x05d6 'Z' sub sub C
+ 045 'x' 'X' can can 0x05e1 'X' can can C
+ 046 'c' 'C' etx etx 0x05d1 'C' etx etx C
+ 047 'v' 'V' syn syn 0x05d4 'V' syn syn C
+ 048 'b' 'B' stx stx 0x05e0 'B' stx stx C
+ 049 'n' 'N' so so 0x05de 'N' so so C
+ 050 'm' 'M' cr cr 0x05e6 'M' cr cr C
+ 051 ',' '<' nop nop 0x05ea '<' nop nop O
+ 052 '.' '>' nop nop 0x05e5 '>' nop nop O
+ 053 '/' '?' nop nop '.' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/is.acc.kbd b/share/vt/keymaps/is.acc.kbd
new file mode 100644
index 0000000..99f4361
--- /dev/null
+++ b/share/vt/keymaps/is.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul nop nop nul nul O
+ 004 '3' '#' nop nop nop nop nop nop O
+ 005 '4' '$' nop nop nop nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop nop nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 0xf6 0xd6 nop nop '\' nop fs nop C
+ 013 '-' '_' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xf0 0xd0 nop nop nop nop nop nop C
+ 027 ''' '?' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 0xdf 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe6 0xc6 nop nop '|' '\' nop nop C
+ 040 dacu dacu nop nop dtil nop nop nop C
+ 041 drin duml nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '+' '*' nop nop '`' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop nop nop nop O
+ 052 '.' ':' nop nop nop nop nop nop O
+ 053 0xfe 0xde us nop nop nop nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/is.kbd b/share/vt/keymaps/is.kbd
new file mode 100644
index 0000000..a0103e7
--- /dev/null
+++ b/share/vt/keymaps/is.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul nop nop nul nul O
+ 004 '3' '#' nop nop 0xa3 nop nop nop O
+ 005 '4' '$' nop nop 0xa4 nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop nop nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 0xf6 0xd6 nop nop '\' nop fs nop O
+ 013 '-' '_' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xf0 0xd0 nop nop '}' ']' nop nop C
+ 027 ''' '?' nop nop '~' nop nop nop C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 0xdf 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe6 0xc6 nop nop '|' '\' nop nop C
+ 040 0xb4 0xb4 nop nop '~' '[' nop nop C
+ 041 0xb0 0xa8 nop nop '^' '*' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '+' '*' nop nop '`' '*' nop nop C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 0xfe 0xde us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/it.kbd b/share/vt/keymaps/it.kbd
new file mode 100644
index 0000000..ffcdc2b
--- /dev/null
+++ b/share/vt/keymaps/it.kbd
@@ -0,0 +1,164 @@
+# $FreeBSD$
+#
+# Aggiunte ad una tastiera italiana standard :
+#
+# -- ~ : SHIFT + ALT + a accentata
+# -- { : SHIFT + [
+# : ALT + 7
+# -- } : SHIFT + ]
+# : ALT + 0
+# -- [ : definita anche come ALT + 8
+# -- ] : definita anche come ALT + 9
+# -- ` : ALT + '
+# : CTRL + '
+#
+# Per l'utilizzo della stessa in modo permanente e/o
+# per eventuali note su specifiche applicazioni:
+# Gruppo utenti FreeBSD Italia - http://www.gufi.org
+# Gianmarco Home Page - http://www.gufi.org/~gmarco
+#
+#
+# Credits to:
+#
+# Gianmarco Giovannelli <gmarco@giovannelli.it>
+# Nicola Vitale <nivit@libero.it>
+# Marco Trentini <m.trentini@remotelab.org>
+#
+####################################################################
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xb9 0xa1 nop nop O
+ 003 '2' '"' nul duml 0xb2 nop nul nul O
+ 004 '3' 0xa3 nop nop 0xb3 0xa3 nop nop O
+ 005 '4' '$' nop nop 0xbc '$' nop nop O
+ 006 '5' '%' nop nop 0xbd nop nop nop O
+ 007 '6' '&' rs rs 0xbe nop rs rs O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' 0xb1 nop nop O
+ 011 '0' '=' nop nop '}' 0xb0 nop nop O
+ 012 ''' '?' '`' dacu '`' 0xbf us dgra O
+ 013 0xec '^' nop dcir '~' dogo nop dtil O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb nop nop etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 0xa7 0xae dc2 dc2 C
+ 020 't' 'T' dc4 dc4 nop nop dc4 dc4 C
+ 021 'y' 'Y' em em nop 0xa5 em em C
+ 022 'u' 'U' nak nak nop nop nak nak C
+ 023 'i' 'I' ht ht nop nop ht ht C
+ 024 'o' 'O' si si 0xf8 0xd8 si si C
+ 025 'p' 'P' dle dle 0xfe 0xde dle dle C
+ 026 0xe8 0xe9 esc esc '[' '{' esc esc O
+ 027 '+' '*' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0xe6 0xc6 soh soh C
+ 031 's' 'S' dc3 dc3 0xdf 0xa7 dc3 dc3 C
+ 032 'd' 'D' eot eot 0xf0 0xd0 eot eot C
+ 033 'f' 'F' ack ack nop 0xaa ack ack C
+ 034 'g' 'G' bel bel nop nop bel bel C
+ 035 'h' 'H' bs bs nop nop bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' '&' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf2 0xe7 nop nop '@' ddac nop nop O
+ 040 0xe0 0xb0 nop drin '#' '~' nop dtil O
+ 041 '\' '|' fs nop 0xac nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0xf9 0xa7 fs dgra fs fs fs dbre O
+ 044 'z' 'Z' sub sub 0xab '<' sub sub C
+ 045 'x' 'X' can can 0xbb '>' can can C
+ 046 'c' 'C' etx etx 0xa2 0xa9 etx etx C
+ 047 'v' 'V' syn syn nop '`' syn syn C
+ 048 'b' 'B' stx stx nop ''' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xba cr cr C
+ 051 ',' ';' nop nop '_' 0xd7 nop nop O
+ 052 '.' ':' nop nop 0xb7 0xf7 nop nop O
+ 053 '-' '_' nop nop ddot ddot nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' 0xa6 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot pdwn O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu ''' ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ dmac 0xaf
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/jp.capsctrl.kbd b/share/vt/keymaps/jp.capsctrl.kbd
new file mode 100644
index 0000000..294d531
--- /dev/null
+++ b/share/vt/keymaps/jp.capsctrl.kbd
@@ -0,0 +1,120 @@
+# $FreeBSD$
+#
+# (this one has capslock and control swapped)
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop '2' '"' nop nop O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' ''' nop nop '7' ''' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '~' nop nop '0' '~' nop nop O
+ 012 '-' '=' nop nop '-' '=' nop nop O
+ 013 '^' '~' rs rs '^' '~' rs rs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '@' '`' nul nul '@' '`' nul nul O
+ 027 '[' '{' esc esc '[' '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 clock clock clock clock clock clock clock clock O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' '+' nop nop ';' '+' nop nop O
+ 040 ':' '*' nop nop ':' '*' nop nop O
+ 041 esc esc esc esc esc esc debug esc O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs ']' '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 115 '\' '_' fs us '\' '_' fs us O
+ 121 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 123 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 125 0xa5 '|' fs us 0xa5 '|' fs us O
diff --git a/share/vt/keymaps/jp.kbd b/share/vt/keymaps/jp.kbd
new file mode 100644
index 0000000..1fbff5d
--- /dev/null
+++ b/share/vt/keymaps/jp.kbd
@@ -0,0 +1,118 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop '2' '"' nop nop O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' ''' nop nop '7' ''' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '~' nop nop '0' '~' nop nop O
+ 012 '-' '=' nop nop '-' '=' nop nop O
+ 013 '^' '~' rs rs '^' '~' rs rs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '@' '`' nul nul '@' '`' nul nul O
+ 027 '[' '{' esc esc '[' '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' '+' nop nop ';' '+' nop nop O
+ 040 ':' '*' nop nop ':' '*' nop nop O
+ 041 esc esc esc esc esc esc debug esc O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs ']' '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 115 '\' '_' fs us '\' '_' fs us O
+ 121 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 123 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 125 0xa5 '|' fs us 0xa5 '|' fs us O
diff --git a/share/vt/keymaps/jp.pc98.iso.kbd b/share/vt/keymaps/jp.pc98.iso.kbd
new file mode 100644
index 0000000..b60375c
--- /dev/null
+++ b/share/vt/keymaps/jp.pc98.iso.kbd
@@ -0,0 +1,134 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 esc esc esc esc esc esc debug esc O
+ 001 '1' '!' '!' '!' '1' '!' '!' '!' O
+ 002 '2' '@' sub sub '2' '"' nul nul O
+ 003 '3' '#' esc esc '3' '#' esc esc O
+ 004 '4' '$' fs fs '4' '$' fs fs O
+ 005 '5' '%' gs gs '5' '%' gs gs O
+ 006 '6' '^' rs rs '6' '&' rs rs O
+ 007 '7' '&' '&' '&' '7' ''' us us O
+ 008 '8' '*' bs bs '8' '(' del del O
+ 009 '9' '(' '(' '(' '9' ')' '9' '9' O
+ 010 '0' ')' ')' ')' '0' nop '0' '0' O
+ 011 '-' '_' us us '-' '=' '-' '-' O
+ 012 '=' '+' '+' '+' '^' '`' rs rs O
+ 013 0xa5 '|' fs fs 0xa5 '|' fs fs O
+ 014 bs bs bs bs bs bs bs bs O
+ 015 ht btab ht btab ht btab ht btab O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '@' '~' nul nul O
+ 027 ']' '}' gs gs '[' '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 'a' 'A' soh soh 'a' 'A' soh soh C
+ 030 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 031 'd' 'D' eot eot 'd' 'D' eot eot C
+ 032 'f' 'F' ack ack 'f' 'F' ack ack C
+ 033 'g' 'G' bel bel 'g' 'G' bel bel C
+ 034 'h' 'H' bs bs 'h' 'H' bs bs C
+ 035 'j' 'J' nl nl 'j' 'J' nl nl C
+ 036 'k' 'K' vt vt 'k' 'K' vt vt C
+ 037 'l' 'L' ff ff 'l' 'L' ff ff C
+ 038 ';' ':' ';' ';' ';' '+' ';' ';' O
+ 039 ''' '"' ''' ''' ':' '*' ':' ':' O
+ 040 '`' '~' '~' '~' ']' '}' gs gs O
+ 041 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 042 'x' 'X' can can 'x' 'X' can can C
+ 043 'c' 'C' etx etx 'c' 'C' etx etx C
+ 044 'v' 'V' syn syn 'v' 'V' syn syn C
+ 045 'b' 'B' stx stx 'b' 'B' stx stx C
+ 046 'n' 'N' so so 'n' 'N' so so C
+ 047 'm' 'M' cr cr 'm' 'M' cr cr C
+ 048 ',' '<' '<' '<' ',' '<' '<' '<' O
+ 049 '.' '>' '>' '>' '.' '>' '>' '>' O
+ 050 '/' '?' del del '/' '?' del del O
+ 051 '\' '|' fs fs nop '_' us us O
+ 052 ' ' ' ' nul nul ' ' ' ' nul nul O
+ 053 esc esc esc esc esc esc esc esc O
+ 054 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 055 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 056 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 057 del del del del del del boot boot N
+ 058 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 059 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 060 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 061 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 062 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 063 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 064 '-' '-' '-' '-' '-' '-' '-' '-' O
+ 065 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 066 '7' '7' '7' '7' '7' '7' '7' '7' O
+ 067 '8' '8' '8' '8' '8' '8' '8' '8' O
+ 068 '9' '9' '9' '9' '9' '9' '9' '9' O
+ 069 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 070 '4' '4' '4' '4' '4' '4' '4' '4' O
+ 071 '5' '5' '5' '5' '5' '5' '5' '5' O
+ 072 '6' '6' '6' '6' '6' '6' '6' '6' O
+ 073 '+' '+' '+' '+' '+' '+' '+' '+' O
+ 074 '1' '1' '1' '1' '1' '1' '1' '1' O
+ 075 '2' '2' '2' '2' '2' '2' '2' '2' O
+ 076 '3' '3' '3' '3' '3' '3' '3' '3' O
+ 077 '=' '=' '=' '=' '=' '=' '=' '=' O
+ 078 '0' '0' '0' '0' '0' '0' '0' '0' O
+ 079 ',' ',' ',' ',' ',' ',' ',' ',' O
+ 080 '.' '.' '.' '.' '.' '.' '.' '.' O
+ 081 meta meta meta meta meta meta meta meta O
+ 082 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 083 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 084 slock slock slock slock slock slock slock slock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 nop nop nop nop nop nop nop nop O
+ 088 nop nop nop nop nop nop nop nop O
+ 089 nop nop nop nop nop nop nop nop O
+ 090 nop nop nop nop nop nop nop nop O
+ 091 nop nop nop nop nop nop nop nop O
+ 092 nop nop nop nop nop nop nop nop O
+ 093 nop nop nop nop nop nop nop nop O
+ 094 nop nop nop nop nop nop nop nop O
+ 095 nop nop nop nop nop nop nop nop O
+ 096 slock saver slock saver susp nop susp nop O
+ 097 nscr nscr debug debug nop nop nop nop O
+ 098 fkey01 fkey13 fkey25 fkey37 scr01 scr01 scr01 scr01 O
+ 099 fkey02 fkey14 fkey26 fkey38 scr02 scr02 scr02 scr02 O
+ 100 fkey03 fkey15 fkey27 fkey39 scr03 scr03 scr03 scr03 O
+ 101 fkey04 fkey16 fkey28 fkey40 scr04 scr04 scr04 scr04 O
+ 102 fkey05 fkey17 fkey29 fkey41 scr05 scr05 scr05 scr05 O
+ 103 fkey06 fkey18 fkey30 fkey42 scr06 scr06 scr06 scr06 O
+ 104 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 105 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 106 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 107 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 113 clock clock clock clock clock clock clock clock O
+ 114 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 115 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 116 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+
diff --git a/share/vt/keymaps/jp.pc98.kbd b/share/vt/keymaps/jp.pc98.kbd
new file mode 100644
index 0000000..6c8a4d6
--- /dev/null
+++ b/share/vt/keymaps/jp.pc98.kbd
@@ -0,0 +1,134 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 esc esc esc esc esc esc debug esc O
+ 001 '1' '!' '!' '!' '1' '!' '!' '!' O
+ 002 '2' '"' sub sub '2' '@' nul nul O
+ 003 '3' '#' esc esc '3' '#' esc esc O
+ 004 '4' '$' fs fs '4' '$' fs fs O
+ 005 '5' '%' gs gs '5' '%' gs gs O
+ 006 '6' '&' rs rs '6' '^' rs rs O
+ 007 '7' ''' us us '7' '&' '&' '&' O
+ 008 '8' '(' del del '8' '*' bs bs O
+ 009 '9' ')' '9' '9' '9' '(' '(' '(' O
+ 010 '0' nop '0' '0' '0' ')' ')' ')' O
+ 011 '-' '=' '-' '-' '-' '_' us us O
+ 012 '^' '`' rs rs '=' '+' '+' '+' O
+ 013 '\' '|' fs fs 0xa5 '|' fs fs O
+ 014 bs bs bs bs bs bs bs bs O
+ 015 ht btab ht btab ht btab ht btab O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '@' '~' nul nul '[' '{' esc esc O
+ 027 '[' '{' esc esc ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 'a' 'A' soh soh 'a' 'A' soh soh C
+ 030 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 031 'd' 'D' eot eot 'd' 'D' eot eot C
+ 032 'f' 'F' ack ack 'f' 'F' ack ack C
+ 033 'g' 'G' bel bel 'g' 'G' bel bel C
+ 034 'h' 'H' bs bs 'h' 'H' bs bs C
+ 035 'j' 'J' nl nl 'j' 'J' nl nl C
+ 036 'k' 'K' vt vt 'k' 'K' vt vt C
+ 037 'l' 'L' ff ff 'l' 'L' ff ff C
+ 038 ';' '+' ';' ';' ';' ':' ';' ';' O
+ 039 ':' '*' ':' ':' ''' '"' ''' ''' O
+ 040 ']' '}' gs gs '`' '~' '~' '~' O
+ 041 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 042 'x' 'X' can can 'x' 'X' can can C
+ 043 'c' 'C' etx etx 'c' 'C' etx etx C
+ 044 'v' 'V' syn syn 'v' 'V' syn syn C
+ 045 'b' 'B' stx stx 'b' 'B' stx stx C
+ 046 'n' 'N' so so 'n' 'N' so so C
+ 047 'm' 'M' cr cr 'm' 'M' cr cr C
+ 048 ',' '<' '<' '<' ',' '<' '<' '<' O
+ 049 '.' '>' '>' '>' '.' '>' '>' '>' O
+ 050 '/' '?' del del '/' '?' del del O
+ 051 nop '_' us us '\' '|' fs fs O
+ 052 ' ' ' ' nul nul ' ' ' ' nul nul O
+ 053 esc esc esc esc esc esc esc esc O
+ 054 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 055 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 056 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 057 del del del del del del boot boot N
+ 058 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 059 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 060 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 061 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 062 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 063 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 064 '-' '-' '-' '-' '-' '-' '-' '-' O
+ 065 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 066 '7' '7' '7' '7' '7' '7' '7' '7' O
+ 067 '8' '8' '8' '8' '8' '8' '8' '8' O
+ 068 '9' '9' '9' '9' '9' '9' '9' '9' O
+ 069 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 070 '4' '4' '4' '4' '4' '4' '4' '4' O
+ 071 '5' '5' '5' '5' '5' '5' '5' '5' O
+ 072 '6' '6' '6' '6' '6' '6' '6' '6' O
+ 073 '+' '+' '+' '+' '+' '+' '+' '+' O
+ 074 '1' '1' '1' '1' '1' '1' '1' '1' O
+ 075 '2' '2' '2' '2' '2' '2' '2' '2' O
+ 076 '3' '3' '3' '3' '3' '3' '3' '3' O
+ 077 '=' '=' '=' '=' '=' '=' '=' '=' O
+ 078 '0' '0' '0' '0' '0' '0' '0' '0' O
+ 079 ',' ',' ',' ',' ',' ',' ',' ',' O
+ 080 '.' '.' '.' '.' '.' '.' '.' '.' O
+ 081 meta meta meta meta meta meta meta meta O
+ 082 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 083 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 084 slock slock slock slock slock slock slock slock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 nop nop nop nop nop nop nop nop O
+ 088 nop nop nop nop nop nop nop nop O
+ 089 nop nop nop nop nop nop nop nop O
+ 090 nop nop nop nop nop nop nop nop O
+ 091 nop nop nop nop nop nop nop nop O
+ 092 nop nop nop nop nop nop nop nop O
+ 093 nop nop nop nop nop nop nop nop O
+ 094 nop nop nop nop nop nop nop nop O
+ 095 nop nop nop nop nop nop nop nop O
+ 096 slock saver slock saver susp nop susp nop O
+ 097 nscr nscr debug debug nop nop nop nop O
+ 098 fkey01 fkey13 fkey25 fkey37 scr01 scr01 scr01 scr01 O
+ 099 fkey02 fkey14 fkey26 fkey38 scr02 scr02 scr02 scr02 O
+ 100 fkey03 fkey15 fkey27 fkey39 scr03 scr03 scr03 scr03 O
+ 101 fkey04 fkey16 fkey28 fkey40 scr04 scr04 scr04 scr04 O
+ 102 fkey05 fkey17 fkey29 fkey41 scr05 scr05 scr05 scr05 O
+ 103 fkey06 fkey18 fkey30 fkey42 scr06 scr06 scr06 scr06 O
+ 104 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 105 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 106 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 107 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 113 clock clock clock clock clock clock clock clock O
+ 114 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 115 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 116 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+
diff --git a/share/vt/keymaps/kz.io.kbd b/share/vt/keymaps/kz.io.kbd
new file mode 100644
index 0000000..1f280d3
--- /dev/null
+++ b/share/vt/keymaps/kz.io.kbd
@@ -0,0 +1,244 @@
+# $FreeBSD$
+# KST KazSSR 903-90 with CYRILLIC LETTER IO
+# Birsh T <birsh@mail.kz>, 2003-12-02
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 0x04e3 0x04e3 debug nop O
+ 002 '1' '!' nop nop 0x04b1 0x040e nop nop O
+ 003 '2' '@' nul nul 0x0406 0x0410 0x0496 0x0496 O
+ 004 '3' '#' nop nop 0x0456 0x0408 nop nop O
+ 005 '4' '$' nop nop 0x0499 0x04e8 nop nop O
+ 006 '5' '%' nop nop 0x04e9 0x0498 nop nop O
+ 007 '6' '^' rs rs 0xb6 0x042e 0x04bb 0x04bb O
+ 008 '7' '&' nop nop 0xb7 0x04b0 nop nop O
+ 009 '8' '*' nop nop 0x0451 0x04d8 nop nop O
+ 010 '9' '(' nop nop 0x2116 0x0401 nop nop O
+ 011 '0' ')' nop nop 0xb0 0xa9 nop nop O
+ 012 '-' '_' us us 0x04ef 0x042f 0x04b9 0x04b9 O
+ 013 '=' '+' nop nop 0x04aa 0xab nop nop O
+ 014 bs bs del del 0x04b2 0x04b2 0x044f 0x044f O
+ 015 ht btab nop nop 0x04af btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0x0441 0x0421 0x2018 0x2018 C
+ 017 'w' 'W' etb etb 0x0447 0x0427 0x2014 0x2014 C
+ 018 'e' 'E' enq enq 0x0435 0x0415 0x2026 0x2026 C
+ 019 'r' 'R' dc2 dc2 0x0442 0x0422 0x2019 0x2019 C
+ 020 't' 'T' dc4 dc4 0x0444 0x0424 0x201d 0x201d C
+ 021 'y' 'Y' em em 0x0449 0x0429 0x04b7 0x04b7 C
+ 022 'u' 'U' nak nak 0x0445 0x0425 0x2022 0x2022 C
+ 023 'i' 'I' ht ht 0x0439 0x0419 0x04af 0x04af C
+ 024 'o' 'O' si si 0x043f 0x041f 0x04b8 0x04b8 C
+ 025 'p' 'P' dle dle 0x0440 0x0420 0x0497 0x0497 C
+ 026 '[' '{' esc esc 0x042b 0x044b 0x04e3 0x04e3 O
+ 027 ']' '}' gs gs 0x042d 0x044d 0x049b 0x049b O
+ 028 cr cr nl nl 0x049a 0x049a 0x04a0 0x04a0 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x0431 0x0411 0x0492 0x0492 C
+ 031 's' 'S' dc3 dc3 0x0443 0x0423 0x201c 0x201c C
+ 032 'd' 'D' eot eot 0x0434 0x0414 0x201e 0x201e C
+ 033 'f' 'F' ack ack 0x0436 0x0416 0x04b6 0x04b6 C
+ 034 'g' 'G' bel bel 0x0437 0x0417 0x04ae 0x04ae C
+ 035 'h' 'H' bs bs 0x0438 0x0418 0x04b2 0x04b2 C
+ 036 'j' 'J' nl nl 0x043a 0x041a 0x04a0 0x04a0 C
+ 037 'k' 'K' vt vt 0x043b 0x041b 0x04e2 0x04e2 C
+ 038 'l' 'L' ff ff 0x043c 0x041c 0x04a2 0x04a2 C
+ 039 ';' ':' nop nop 0xbb 0x04d9 nop nop O
+ 040 ''' '"' nop nop 0xa7 0x045e nop nop O
+ 041 '`' '~' nop nop 0x0430 0x044e nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 0x042c 0x044c 0x04a3 0x04a3 O
+ 044 'z' 'Z' sub sub 0x044a 0x042a 0x04a1 0x04a1 C
+ 045 'x' 'X' can can 0x0448 0x0428 0x04b3 0x04b3 C
+ 046 'c' 'C' etx etx 0x0433 0x0413 0x0493 0x0493 C
+ 047 'v' 'V' syn syn 0x0446 0x0426 0x2013 0x2013 C
+ 048 'b' 'B' stx stx 0x0432 0x0412 0x04ee 0x04ee C
+ 049 'n' 'N' so so 0x043e 0x041e 0x04ba 0x04ba C
+ 050 'm' 'M' cr cr 0x043d 0x041d 0x049a 0x049a C
+ 051 ',' '<' nop nop 0xac 0x0458 nop nop O
+ 052 '.' '>' nop nop 0xae 0x04ab nop nop O
+ 053 '/' '?' nop nop 0x049c 0x049d nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 0x04d8 0x04d8 0x04a0 0x04a0 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 0xa0 0xa0 susp 0xa0 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 0xb7 0xb7 0xb7 0xb7 N
+ 072 fkey50 '8' '8' '8' 0x0451 0x0451 0x0451 0x0451 N
+ 073 fkey51 '9' '9' '9' 0x2116 0x2116 0x2116 0x2116 N
+ 074 fkey52 '-' '-' '-' 0x04ef 0x04ef 0x04ef 0x04ef N
+ 075 fkey53 '4' '4' '4' 0x0499 0x0499 0x0499 0x0499 N
+ 076 fkey54 '5' '5' '5' 0x04e9 0x04e9 0x04e9 0x04e9 N
+ 077 fkey55 '6' '6' '6' 0xb6 0xb6 0xb6 0xb6 N
+ 078 fkey56 '+' '+' '+' 0xab 0xab 0xab 0xab N
+ 079 fkey57 '1' '1' '1' 0x04b1 0x04b1 0x04b1 0x04b1 N
+ 080 fkey58 '2' '2' '2' 0x0406 0x0406 0x0406 0x0406 N
+ 081 fkey59 '3' '3' '3' 0x0456 0x0456 0x0456 0x0456 N
+ 082 fkey60 '0' '0' '0' 0xb0 0xb0 0xb0 0xb0 N
+ 083 del '.' '.' '.' 0xae 0xae boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 0x049a 0x049a 0x04a0 0x04a0 O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 0x049c 0x049c nop nop O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 0x04e3 0x04e3 debug nop O
+ 130 '"' '!' nop nop 0x04b1 0x040e nop nop O
+ 131 0x04d9 0x04d8 nul nul 0x0406 0x0410 0x0496 0x0496 C
+ 132 0x0456 0x0406 nop nop 0x0456 0x0408 nop nop C
+ 133 0x04a3 0x04a2 nop nop 0x0499 0x04e8 nop nop C
+ 134 0x0493 0x0492 nop nop 0x04e9 0x0498 nop nop C
+ 135 ',' ';' rs rs 0xb6 0x042e 0x04bb 0x04bb O
+ 136 '.' ':' nop nop 0xb7 0x04b0 nop nop O
+ 137 0x04af 0x04ae nop nop 0x0451 0x04d8 nop nop C
+ 138 0x04b1 0x04b0 nop nop 0x2116 0x0401 nop nop C
+ 139 0x049b 0x049a nop nop 0xb0 0xa9 nop nop C
+ 140 0x04e9 0x04e8 us us 0x04ef 0x042f 0x04b9 0x04b9 C
+ 141 0x04bb 0x04ba nop nop 0x04aa 0xab nop nop C
+ 142 bs bs del del 0x04b2 0x04b2 0x044f 0x044f O
+ 143 ht btab nop nop 0x04af btab nop nop O
+ 144 0x0439 0x0419 dc1 dc1 0x0441 0x0421 0x2018 0x2018 C
+ 145 0x0446 0x0426 etb etb 0x0447 0x0427 0x2014 0x2014 C
+ 146 0x0443 0x0423 enq enq 0x0435 0x0415 0x2026 0x2026 C
+ 147 0x043a 0x041a dc2 dc2 0x0442 0x0422 0x2019 0x2019 C
+ 148 0x0435 0x0415 dc4 dc4 0x0444 0x0424 0x201d 0x201d C
+ 149 0x043d 0x041d em em 0x0449 0x0429 0x04b7 0x04b7 C
+ 150 0x0433 0x0413 nak nak 0x0445 0x0425 0x2022 0x2022 C
+ 151 0x0448 0x0428 ht ht 0x0439 0x0419 0x04af 0x04af C
+ 152 0x0449 0x0429 si si 0x043f 0x041f 0x04b8 0x04b8 C
+ 153 0x0437 0x0417 dle dle 0x0440 0x0420 0x0497 0x0497 C
+ 154 0x0445 0x0425 esc esc 0x042b 0x044b 0x04e3 0x04e3 C
+ 155 0x044a 0x042a gs gs 0x042d 0x044d 0x049b 0x049b C
+ 156 cr cr nl nl 0x049a 0x049a 0x04a0 0x04a0 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x0444 0x0424 soh soh 0x0431 0x0411 0x0492 0x0492 C
+ 159 0x044b 0x042b dc3 dc3 0x0443 0x0423 0x201c 0x201c C
+ 160 0x0432 0x0412 eot eot 0x0434 0x0414 0x201e 0x201e C
+ 161 0x0430 0x0410 ack ack 0x0436 0x0416 0x04b6 0x04b6 C
+ 162 0x043f 0x041f bel bel 0x0437 0x0417 0x04ae 0x04ae C
+ 163 0x0440 0x0420 bs bs 0x0438 0x0418 0x04b2 0x04b2 C
+ 164 0x043e 0x041e nl nl 0x043a 0x041a 0x04a0 0x04a0 C
+ 165 0x043b 0x041b vt vt 0x043b 0x041b 0x04e2 0x04e2 C
+ 166 0x0434 0x0414 ff ff 0x043c 0x041c 0x04a2 0x04a2 C
+ 167 0x0436 0x0416 nop nop 0xbb 0x04d9 nop nop C
+ 168 0x044d 0x042d nop nop 0xa7 0x045e nop nop C
+ 169 '(' ')' nop nop 0x0430 0x044e nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 0x0451 0x0401 fs fs 0x042c 0x044c 0x04a3 0x04a3 C
+ 172 0x044f 0x042f sub sub 0x044a 0x042a 0x04a1 0x04a1 C
+ 173 0x0447 0x0427 can can 0x0448 0x0428 0x04b3 0x04b3 C
+ 174 0x0441 0x0421 etx etx 0x0433 0x0413 0x0493 0x0493 C
+ 175 0x043c 0x041c syn syn 0x0446 0x0426 0x2013 0x2013 C
+ 176 0x0438 0x0418 stx stx 0x0432 0x0412 0x04ee 0x04ee C
+ 177 0x0442 0x0422 so so 0x043e 0x041e 0x04ba 0x04ba C
+ 178 0x044c 0x042c cr cr 0x043d 0x041d 0x049a 0x049a C
+ 179 0x0431 0x0411 nop nop 0xac 0x0458 nop nop C
+ 180 0x044e 0x042e nop nop 0xae 0x04ab nop nop C
+ 181 0x2116 '?' nop nop 0x049c 0x049d nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 0x04d8 0x04d8 0x04a0 0x04a0 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 0xa0 0xa0 0xa0 0xa0 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 0xb7 0xb7 0xb7 0xb7 N
+ 200 fkey50 '8' '8' '8' 0x0451 0x0451 0x0451 0x0451 N
+ 201 fkey51 '9' '9' '9' 0x2116 0x2116 0x2116 0x2116 N
+ 202 fkey52 '-' '-' '-' 0x04ef 0x04ef 0x04ef 0x04ef N
+ 203 fkey53 '4' '4' '4' 0x0499 0x0499 0x0499 0x0499 N
+ 204 fkey54 '5' '5' '5' 0x04e9 0x04e9 0x04e9 0x04e9 N
+ 205 fkey55 '6' '6' '6' 0xb6 0xb6 0xb6 0xb6 N
+ 206 fkey56 '+' '+' '+' 0xab 0xab 0xab 0xab N
+ 207 fkey57 '1' '1' '1' 0x04b1 0x04b1 0x04b1 0x04b1 N
+ 208 fkey58 '2' '2' '2' 0x0406 0x0406 0x0406 0x0406 N
+ 209 fkey59 '3' '3' '3' 0x0456 0x0456 0x0456 0x0456 N
+ 210 fkey60 '0' '0' '0' 0xb0 0xb0 0xb0 0xb0 N
+ 211 del '.' '.' '.' 0xae 0xae boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 0x049a 0x049a 0x04a0 0x04a0 O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 0x049c 0x049c nop nop O
+ 220 nscr nscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/kz.kst.kbd b/share/vt/keymaps/kz.kst.kbd
new file mode 100644
index 0000000..d9d1f27
--- /dev/null
+++ b/share/vt/keymaps/kz.kst.kbd
@@ -0,0 +1,245 @@
+# $FreeBSD$
+#
+# KST KazSSR 903-90 keyboard implementation
+# Birsh T <birsh@mail.kz>, 2003-12-02
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 0x04e3 0x04e3 debug nop O
+ 002 '1' '!' nop nop 0x04b1 0x040e nop nop O
+ 003 '2' '@' nul nul 0x0406 0x0410 0x0496 0x0496 O
+ 004 '3' '#' nop nop 0x0456 0x0408 nop nop O
+ 005 '4' '$' nop nop 0x0499 0x04e8 nop nop O
+ 006 '5' '%' nop nop 0x04e9 0x0498 nop nop O
+ 007 '6' '^' rs rs 0xb6 0x042e 0x04bb 0x04bb O
+ 008 '7' '&' nop nop 0xb7 0x04b0 nop nop O
+ 009 '8' '*' nop nop 0x0451 0x04d8 nop nop O
+ 010 '9' '(' nop nop 0x2116 0x0401 nop nop O
+ 011 '0' ')' nop nop 0xb0 0xa9 nop nop O
+ 012 '-' '_' us us 0x04ef 0x042f 0x04b9 0x04b9 O
+ 013 '=' '+' nop nop 0x04aa 0xab nop nop O
+ 014 bs bs del del 0x04b2 0x04b2 0x044f 0x044f O
+ 015 ht btab nop nop 0x04af btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0x0441 0x0421 0x2018 0x2018 C
+ 017 'w' 'W' etb etb 0x0447 0x0427 0x2014 0x2014 C
+ 018 'e' 'E' enq enq 0x0435 0x0415 0x2026 0x2026 C
+ 019 'r' 'R' dc2 dc2 0x0442 0x0422 0x2019 0x2019 C
+ 020 't' 'T' dc4 dc4 0x0444 0x0424 0x201d 0x201d C
+ 021 'y' 'Y' em em 0x0449 0x0429 0x04b7 0x04b7 C
+ 022 'u' 'U' nak nak 0x0445 0x0425 0x2022 0x2022 C
+ 023 'i' 'I' ht ht 0x0439 0x0419 0x04af 0x04af C
+ 024 'o' 'O' si si 0x043f 0x041f 0x04b8 0x04b8 C
+ 025 'p' 'P' dle dle 0x0440 0x0420 0x0497 0x0497 C
+ 026 '[' '{' esc esc 0x042b 0x044b 0x04e3 0x04e3 O
+ 027 ']' '}' gs gs 0x042d 0x044d 0x049b 0x049b O
+ 028 cr cr nl nl 0x049a 0x049a 0x04a0 0x04a0 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x0431 0x0411 0x0492 0x0492 C
+ 031 's' 'S' dc3 dc3 0x0443 0x0423 0x201c 0x201c C
+ 032 'd' 'D' eot eot 0x0434 0x0414 0x201e 0x201e C
+ 033 'f' 'F' ack ack 0x0436 0x0416 0x04b6 0x04b6 C
+ 034 'g' 'G' bel bel 0x0437 0x0417 0x04ae 0x04ae C
+ 035 'h' 'H' bs bs 0x0438 0x0418 0x04b2 0x04b2 C
+ 036 'j' 'J' nl nl 0x043a 0x041a 0x04a0 0x04a0 C
+ 037 'k' 'K' vt vt 0x043b 0x041b 0x04e2 0x04e2 C
+ 038 'l' 'L' ff ff 0x043c 0x041c 0x04a2 0x04a2 C
+ 039 ';' ':' nop nop 0xbb 0x04d9 nop nop O
+ 040 ''' '"' nop nop 0xa7 0x045e nop nop O
+ 041 '`' '~' nop nop 0x0430 0x044e nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 0x042c 0x044c 0x04a3 0x04a3 O
+ 044 'z' 'Z' sub sub 0x044a 0x042a 0x04a1 0x04a1 C
+ 045 'x' 'X' can can 0x0448 0x0428 0x04b3 0x04b3 C
+ 046 'c' 'C' etx etx 0x0433 0x0413 0x0493 0x0493 C
+ 047 'v' 'V' syn syn 0x0446 0x0426 0x2013 0x2013 C
+ 048 'b' 'B' stx stx 0x0432 0x0412 0x04ee 0x04ee C
+ 049 'n' 'N' so so 0x043e 0x041e 0x04ba 0x04ba C
+ 050 'm' 'M' cr cr 0x043d 0x041d 0x049a 0x049a C
+ 051 ',' '<' nop nop 0xac 0x0458 nop nop O
+ 052 '.' '>' nop nop 0xae 0x04ab nop nop O
+ 053 '/' '?' nop nop 0x049c 0x049d nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 0x04d8 0x04d8 0x04a0 0x04a0 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 0xa0 0xa0 susp 0xa0 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 0xb7 0xb7 0xb7 0xb7 N
+ 072 fkey50 '8' '8' '8' 0x0451 0x0451 0x0451 0x0451 N
+ 073 fkey51 '9' '9' '9' 0x2116 0x2116 0x2116 0x2116 N
+ 074 fkey52 '-' '-' '-' 0x04ef 0x04ef 0x04ef 0x04ef N
+ 075 fkey53 '4' '4' '4' 0x0499 0x0499 0x0499 0x0499 N
+ 076 fkey54 '5' '5' '5' 0x04e9 0x04e9 0x04e9 0x04e9 N
+ 077 fkey55 '6' '6' '6' 0xb6 0xb6 0xb6 0xb6 N
+ 078 fkey56 '+' '+' '+' 0xab 0xab 0xab 0xab N
+ 079 fkey57 '1' '1' '1' 0x04b1 0x04b1 0x04b1 0x04b1 N
+ 080 fkey58 '2' '2' '2' 0x0406 0x0406 0x0406 0x0406 N
+ 081 fkey59 '3' '3' '3' 0x0456 0x0456 0x0456 0x0456 N
+ 082 fkey60 '0' '0' '0' 0xb0 0xb0 0xb0 0xb0 N
+ 083 del '.' '.' '.' 0xae 0xae boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 0x049a 0x049a 0x04a0 0x04a0 O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 0x049c 0x049c nop nop O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 0x04e3 0x04e3 debug nop O
+ 130 '"' '!' nop nop 0x04b1 0x040e nop nop O
+ 131 0x04d9 0x04d8 nul nul 0x0406 0x0410 0x0496 0x0496 C
+ 132 0x0456 0x0406 nop nop 0x0456 0x0408 nop nop C
+ 133 0x04a3 0x04a2 nop nop 0x0499 0x04e8 nop nop C
+ 134 0x0493 0x0492 nop nop 0x04e9 0x0498 nop nop C
+ 135 ',' ';' rs rs 0xb6 0x042e 0x04bb 0x04bb O
+ 136 '.' ':' nop nop 0xb7 0x04b0 nop nop O
+ 137 0x04af 0x04ae nop nop 0x0451 0x04d8 nop nop C
+ 138 0x04b1 0x04b0 nop nop 0x2116 0x0401 nop nop C
+ 139 0x049b 0x049a nop nop 0xb0 0xa9 nop nop C
+ 140 0x04e9 0x04e8 us us 0x04ef 0x042f 0x04b9 0x04b9 C
+ 141 0x04bb 0x04ba nop nop 0x04aa 0xab nop nop C
+ 142 bs bs del del 0x04b2 0x04b2 0x044f 0x044f O
+ 143 ht btab nop nop 0x04af btab nop nop O
+ 144 0x0439 0x0419 dc1 dc1 0x0441 0x0421 0x2018 0x2018 C
+ 145 0x0446 0x0426 etb etb 0x0447 0x0427 0x2014 0x2014 C
+ 146 0x0443 0x0423 enq enq 0x0435 0x0415 0x2026 0x2026 C
+ 147 0x043a 0x041a dc2 dc2 0x0442 0x0422 0x2019 0x2019 C
+ 148 0x0435 0x0415 dc4 dc4 0x0444 0x0424 0x201d 0x201d C
+ 149 0x043d 0x041d em em 0x0449 0x0429 0x04b7 0x04b7 C
+ 150 0x0433 0x0413 nak nak 0x0445 0x0425 0x2022 0x2022 C
+ 151 0x0448 0x0428 ht ht 0x0439 0x0419 0x04af 0x04af C
+ 152 0x0449 0x0429 si si 0x043f 0x041f 0x04b8 0x04b8 C
+ 153 0x0437 0x0417 dle dle 0x0440 0x0420 0x0497 0x0497 C
+ 154 0x0445 0x0425 esc esc 0x042b 0x044b 0x04e3 0x04e3 C
+ 155 0x044a 0x042a gs gs 0x042d 0x044d 0x049b 0x049b C
+ 156 cr cr nl nl 0x049a 0x049a 0x04a0 0x04a0 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x0444 0x0424 soh soh 0x0431 0x0411 0x0492 0x0492 C
+ 159 0x044b 0x042b dc3 dc3 0x0443 0x0423 0x201c 0x201c C
+ 160 0x0432 0x0412 eot eot 0x0434 0x0414 0x201e 0x201e C
+ 161 0x0430 0x0410 ack ack 0x0436 0x0416 0x04b6 0x04b6 C
+ 162 0x043f 0x041f bel bel 0x0437 0x0417 0x04ae 0x04ae C
+ 163 0x0440 0x0420 bs bs 0x0438 0x0418 0x04b2 0x04b2 C
+ 164 0x043e 0x041e nl nl 0x043a 0x041a 0x04a0 0x04a0 C
+ 165 0x043b 0x041b vt vt 0x043b 0x041b 0x04e2 0x04e2 C
+ 166 0x0434 0x0414 ff ff 0x043c 0x041c 0x04a2 0x04a2 C
+ 167 0x0436 0x0416 nop nop 0xbb 0x04d9 nop nop C
+ 168 0x044d 0x042d nop nop 0xa7 0x045e nop nop C
+ 169 '(' ')' nop nop 0x0430 0x044e nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs 0x042c 0x044c 0x04a3 0x04a3 O
+ 172 0x044f 0x042f sub sub 0x044a 0x042a 0x04a1 0x04a1 C
+ 173 0x0447 0x0427 can can 0x0448 0x0428 0x04b3 0x04b3 C
+ 174 0x0441 0x0421 etx etx 0x0433 0x0413 0x0493 0x0493 C
+ 175 0x043c 0x041c syn syn 0x0446 0x0426 0x2013 0x2013 C
+ 176 0x0438 0x0418 stx stx 0x0432 0x0412 0x04ee 0x04ee C
+ 177 0x0442 0x0422 so so 0x043e 0x041e 0x04ba 0x04ba C
+ 178 0x044c 0x042c cr cr 0x043d 0x041d 0x049a 0x049a C
+ 179 0x0431 0x0411 nop nop 0xac 0x0458 nop nop C
+ 180 0x044e 0x042e nop nop 0xae 0x04ab nop nop C
+ 181 0x2116 '?' nop nop 0x049c 0x049d nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 0x04d8 0x04d8 0x04a0 0x04a0 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 0xa0 0xa0 0xa0 0xa0 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 0xb7 0xb7 0xb7 0xb7 N
+ 200 fkey50 '8' '8' '8' 0x0451 0x0451 0x0451 0x0451 N
+ 201 fkey51 '9' '9' '9' 0x2116 0x2116 0x2116 0x2116 N
+ 202 fkey52 '-' '-' '-' 0x04ef 0x04ef 0x04ef 0x04ef N
+ 203 fkey53 '4' '4' '4' 0x0499 0x0499 0x0499 0x0499 N
+ 204 fkey54 '5' '5' '5' 0x04e9 0x04e9 0x04e9 0x04e9 N
+ 205 fkey55 '6' '6' '6' 0xb6 0xb6 0xb6 0xb6 N
+ 206 fkey56 '+' '+' '+' 0xab 0xab 0xab 0xab N
+ 207 fkey57 '1' '1' '1' 0x04b1 0x04b1 0x04b1 0x04b1 N
+ 208 fkey58 '2' '2' '2' 0x0406 0x0406 0x0406 0x0406 N
+ 209 fkey59 '3' '3' '3' 0x0456 0x0456 0x0456 0x0456 N
+ 210 fkey60 '0' '0' '0' 0xb0 0xb0 0xb0 0xb0 N
+ 211 del '.' '.' '.' 0xae 0xae boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 0x049a 0x049a 0x04a0 0x04a0 O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 0x049c 0x049c nop nop O
+ 220 nscr nscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/latinamerican.acc.kbd b/share/vt/keymaps/latinamerican.acc.kbd
new file mode 100644
index 0000000..a25507b
--- /dev/null
+++ b/share/vt/keymaps/latinamerican.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '7' '/' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' nop nop '\' '\' nop nop O
+ 013 0xbf 0xa1 nop nop 0xbf 0xa1 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' sub sub C
+ 022 'u' 'U' nak nak 0x97 0x81 nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dacu duml esc esc ''' 0xa8 esc esc O
+ 027 '+' '*' gs gs '~' '~' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf1 0xd1 nop nop 0xf1 0xd1 nop nop C
+ 040 '{' '[' nop nop dcir '^' nop nop O
+ 041 '|' 0xba fs fs 0xac 0xac fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '}' ']' fs fs dgra '`' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/latinamerican.kbd b/share/vt/keymaps/latinamerican.kbd
new file mode 100644
index 0000000..7eb38a6
--- /dev/null
+++ b/share/vt/keymaps/latinamerican.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '6' '&' rs rs O
+ 008 '7' '/' esc esc '7' '/' esc esc O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' gs gs '8' '(' gs gs O
+ 011 '0' '=' nop nop '9' ')' nop nop O
+ 012 ''' '?' nop nop '\' '\' nop nop O
+ 013 0xa8 0xad nop nop 0xa8 0xad nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' sub sub C
+ 022 'u' 'U' nak nak 0x97 0x81 nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 ''' '|' esc esc ''' '|' esc esc C
+ 027 '+' '*' gs gs '~' '~' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xa4 0xa5 nop nop 0xa4 0xa5 nop nop C
+ 040 '{' '[' nop nop '^' '^' nop nop O
+ 041 '|' 0xf8 fs fs 0xbf 0xbf fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '}' ']' fs fs '`' '`' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/lt.kbd b/share/vt/keymaps/lt.kbd
new file mode 100644
index 0000000..0f7ac09
--- /dev/null
+++ b/share/vt/keymaps/lt.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc debug nop O
+ 002 '1' '!' nop nop 0x0105 0x0104 nop nop O
+ 003 '2' '@' nul nul 0x010d 0x010c nul nul O
+ 004 '3' '#' nop nop 0x0119 0x0118 nop nop O
+ 005 '4' '$' nop nop 0x0117 0x0116 nop nop O
+ 006 '5' '%' nop nop 0x012f 0x012e nop nop O
+ 007 '6' '^' rs rs 0x0161 0x0160 rs rs O
+ 008 '7' '&' nop nop 0x0173 0x0172 nop nop O
+ 009 '8' '*' nop nop 0x016b 0x0172 nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop 0x017e 0x017d nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr alock nl nl alock cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' ',' ',' del ',' boot boot N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock slock slock slock slock slock slock slock O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop esc esc debug nop O
+ 130 0x0105 0x0104 nop nop '1' '!' nop nop C
+ 131 0x010d 0x010c nul nul '2' '@' nul nul C
+ 132 0x0119 0x0118 nop nop '3' '#' nop nop C
+ 133 0x0117 0x0116 nop nop '4' '$' nop nop C
+ 134 0x012f 0x012e nop nop '5' '%' nop nop C
+ 135 0x0161 0x0160 rs rs '6' '^' rs rs C
+ 136 0x0173 0x0172 nop nop '7' '&' nop nop C
+ 137 0x016b 0x016a nop nop '8' '*' nop nop C
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 0x017e 0x017d nop nop '=' '+' nop nop C
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'w' 'W' etb etb 'w' 'W' etb etb C
+ 146 'e' 'E' enq enq 'e' 'E' enq enq C
+ 147 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 'y' 'Y' em em 'y' 'Y' em em C
+ 150 'u' 'U' nak nak 'u' 'U' nak nak C
+ 151 'i' 'I' ht ht 'i' 'I' ht ht C
+ 152 'o' 'O' si si 'o' 'O' si si C
+ 153 'p' 'P' dle dle 'p' 'P' dle dle C
+ 154 '[' '{' esc esc '[' '{' esc esc O
+ 155 ']' '}' gs gs ']' '}' gs gs O
+ 156 cr alock nl nl alock cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'a' 'A' soh soh 'a' 'A' soh soh C
+ 159 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 'd' 'D' eot eot 'd' 'D' eot eot C
+ 161 'f' 'F' ack ack 'f' 'F' ack ack C
+ 162 'g' 'G' bel bel 'g' 'G' bel bel C
+ 163 'h' 'H' bs bs 'h' 'H' bs bs C
+ 164 'j' 'J' nl nl 'j' 'J' nl nl C
+ 165 'k' 'K' vt vt 'k' 'K' vt vt C
+ 166 'l' 'L' ff ff 'l' 'L' ff ff C
+ 167 ';' ':' nop nop ';' ':' nop nop O
+ 168 ''' '"' nop nop ''' '"' nop nop O
+ 169 '`' '~' nop nop '`' '~' nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 173 'x' 'X' can can 'x' 'X' can can C
+ 174 'c' 'C' etx etx 'c' 'C' etx etx C
+ 175 'v' 'V' syn syn 'v' 'V' syn syn C
+ 176 'b' 'B' stx stx 'b' 'B' stx stx C
+ 177 'n' 'N' so so 'n' 'N' so so C
+ 178 'm' 'M' cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del ',' '.' '.' del '.' boot boot N
+ 212 ns ns ns ns ns ns ns ns O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock slock slock slock slock slock slock slock O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+
diff --git a/share/vt/keymaps/nl.kbd b/share/vt/keymaps/nl.kbd
new file mode 100644
index 0000000..a4112e9
--- /dev/null
+++ b/share/vt/keymaps/nl.kbd
@@ -0,0 +1,143 @@
+# $FreeBSD$
+# alt
+# Dutch keymap, accent keys
+# Created 29.03.2000 by Jeroen v. Yperen <j.vanijperen@student.utwente.nl>
+# Collected by Edwin Groothuis <mavetju@chello.nl>
+# Based on the US standard keymap
+# Accent coding by M. Blapp <mb@imp.ch>
+#
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop 0xbc '$' nop nop O
+ 006 '5' '%' nop nop 0xbd '%' nop nop O
+ 007 '6' '&' rs rs 0xbe '^' rs rs O
+ 008 '7' '_' nop nop 0xa3 '&' nop nop O
+ 009 '8' '(' nop nop '{' '*' nop nop O
+ 010 '9' ')' nop nop '}' '(' nop nop O
+ 011 '0' ''' nop nop 0xbf ')' nop nop O
+ 012 '/' '?' us us '\' '?' us us O
+ 013 drin dtil nop nop dced dtil nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 0xb6 0xb6 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 duml dcir esc esc '[' dcir esc esc O
+ 027 '*' '|' gs gs ']' 0xa6 gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 0xdf 0xdf dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 '+' 0xb1 nop nop '+' 0xb1 nop nop O
+ 040 dacu dgra nop nop ''' '"' nop nop O
+ 041 '@' '~' nop nop 0xac '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '<' '>' fs fs 0xa6 0xa6 fs fs O
+ 044 'z' 'Z' sub sub 0xab 0xab sub sub C
+ 045 'x' 'X' can can 0xbb 0xbb can can C
+ 046 'c' 'C' etx etx 0xa2 0xa2 etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 0xb5 0xb5 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop 0xb7 ':' nop nop O
+ 053 '-' '=' nop nop '-' '=' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nop nop ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 ']' '[' nop nop '|' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/no.dvorak.kbd b/share/vt/keymaps/no.dvorak.kbd
new file mode 100644
index 0000000..a2a392c
--- /dev/null
+++ b/share/vt/keymaps/no.dvorak.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 0x9e '#' nop nop O
+ 005 '4' 0xa4 nop nop '$' 0xa4 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' nop nop '[' '(' esc esc O
+ 010 '9' ')' nop nop ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' esc esc '[' '?' nop nop O
+ 013 '\' '`' nop nop ''' nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 0xe5 0xc5 nop nop '}' ']' nop nop C
+ 017 ',' ';' nop nop ',' '<' nop nop O
+ 018 '.' ':' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 ''' '*' nop nop ''' 0xd7 nop nop O
+ 027 0xa8 '^' rs rs 0xac '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 'o' 'O' si si C
+ 032 'e' 'E' enq enq 'e' 'E' enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '|' 0xa7 nop nop 0xa6 0xb6 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '<' '>' nop nop '|' '\' nop nop C
+ 044 0xe6 0xc6 nop nop '{' '[' nop nop C
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 0xf8 0xd8 nop nop '|' '\' nop nop C
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/no.kbd b/share/vt/keymaps/no.kbd
new file mode 100644
index 0000000..7105639
--- /dev/null
+++ b/share/vt/keymaps/no.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 0x9e '#' nop nop O
+ 005 '4' 0xa4 nop nop '$' 0xa4 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' esc esc '[' '(' esc esc O
+ 010 '9' ')' gs gs ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' nop nop '+' '?' nop nop O
+ 013 '\' '`' fs fs ''' nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0xe9 0xc9 enq enq C
+ 019 'r' 'R' dc2 dc2 0xae 0xae dc2 dc2 C
+ 020 't' 'T' dc4 dc4 0xfe 0xde dc4 dc4 C
+ 021 'y' 'Y' em em 0xff 0xa5 em em C
+ 022 'u' 'U' nak nak 0xfc 0xdc nak nak C
+ 023 'i' 'I' ht ht 0xef 0xcf ht ht C
+ 024 'o' 'O' si si 0xf2 0xd2 si si C
+ 025 'p' 'P' dle dle 0xb6 0xb6 dle dle C
+ 026 0xe5 0xc5 nop nop '}' ']' nop nop C
+ 027 0xa8 '^' rs rs '~' '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0xe1 0xc1 soh soh C
+ 031 's' 'S' dc3 dc3 0xdf 0xdf dc3 dc3 C
+ 032 'd' 'D' eot eot 0xf0 0xd0 eot eot C
+ 033 'f' 'F' ack ack 0xaa 0xaa ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf8 0xd8 nop nop '|' '\' nop nop C
+ 040 0xe6 0xc6 nop nop '{' '[' nop nop C
+ 041 '|' 0xa7 nop nop 0xa6 0xb6 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' 0xd7 nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 0xd7 0xd7 can can C
+ 046 'c' 'C' etx etx 0xe7 0xc7 etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 0xf1 0xd1 so so C
+ 050 'm' 'M' cr cr 0xb5 0xba cr cr C
+ 051 ',' ';' nop nop 0xb8 0xab nop nop O
+ 052 '.' ':' nop nop 0xb7 0xbb nop nop O
+ 053 '-' '_' us us 0xad 0xad us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs 0xab 0xbb fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/nordic.asus-eee.kbd b/share/vt/keymaps/nordic.asus-eee.kbd
new file mode 100644
index 0000000..d043b58
--- /dev/null
+++ b/share/vt/keymaps/nordic.asus-eee.kbd
@@ -0,0 +1,132 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 0xa3 nop nop nop O
+ 005 '4' 0xa4 nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+# Alt + Shift + 7 = ÷
+ 008 '7' '/' nop nop '{' 0xf7 nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+# For left of backspace key, gives with Alt=' and Alt+Shift+Key=|
+ 013 0x80 '`' nop nop ''' '|' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+# Alt + Ctrl + E = French e (as in café)
+ 018 'e' 'E' enq enq 0x20ac 'E' 0xe9 enq C
+# Alt + R = Registered sign
+ 019 'r' 'R' dc2 dc2 0xae 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+# Alt + U = Mikro, Alt + Shift + U = German U (???)
+ 022 'u' 'U' nak nak 0xb5 'U' 0xfc 0xdc C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+# Alt + O = Norwegian/Danish Ø
+ 024 'o' 'O' si si 0xf8 0xd8 si si C
+# Alt + P = Pi
+ 025 'p' 'P' dle dle 0xb6 'P' dle dle C
+ 026 0xe5 0xc5 nop nop '}' ']' nop nop C
+ 027 0x0161 '^' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+# Alt + A = At sign, Ctrl+Alt = æ, Ctrl+Alt+Shift = Æ
+ 030 'a' 'A' soh soh '@' 'A' 0xe6 0xc6 C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xd6 nop nop '|' '\' nop nop C
+ 040 0xe4 0xc4 nop nop '{' '[' nop nop C
+ 041 0xa7 0x0153 nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop nop nop nop nop O
+# Alt + Z = Pipe
+ 044 'z' 'Z' sub sub '|' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+# Alt + C = Copyright sign
+ 046 'c' 'C' etx etx 0xa9 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+# Ctrl + Shift + B = German ß
+ 048 'b' 'B' stx 0xdf 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+# Alt + M = µ
+ 050 'm' 'M' cr cr 0xb5 'M' cr cr C
+# Alt + [,/;] = <
+ 051 ',' ';' nop nop '<' '<' nop nop O
+# Alt + [./:] = >
+ 052 '.' ':' nop nop '>' '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+# Alt+Arrow up = Page up
+ 095 fkey50 fkey50 fkey50 fkey50 fkey51 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+# Alt+Arrow left = Home
+ 097 fkey53 fkey53 fkey53 fkey53 fkey49 fkey53 fkey53 fkey53 O
+# Alt+Arrow right = End
+ 098 fkey55 fkey55 fkey55 fkey55 fkey57 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+# Alt+Arrow down = Page down
+ 100 fkey58 fkey58 fkey58 fkey58 fkey59 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/pl.dvorak.kbd b/share/vt/keymaps/pl.dvorak.kbd
new file mode 100644
index 0000000..8175e70
--- /dev/null
+++ b/share/vt/keymaps/pl.dvorak.kbd
@@ -0,0 +1,117 @@
+# $FreeBSD$
+#
+# Polish dvorak keymap by Robert Sebastian Gerus (17:05 01-07-2006 CEST)
+# (arachnist@gmail.com)
+# Based on pl_PL.ISO-8859-2 and us.dvorak keymaps.
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '[' '{' esc esc '[' '{' esc esc O
+ 013 ']' '}' gs gs ']' '}' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ''' '"' nop nop ''' '"' nop nop O
+ 017 ',' '<' nop nop ',' '<' nop nop O
+ 018 '.' '>' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 0x0107 0x0106 etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 0x0142 0x0141 ff ff C
+ 026 '/' '?' nop nop '/' '?' nop nop O
+ 027 '=' '+' nop nop '=' '+' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x0105 0x0104 soh soh C
+ 031 'o' 'O' si si 0xf3 0xd3 si si C
+ 032 'e' 'E' enq enq 0x0119 0x0118 enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 0x0144 0x0143 so so C
+ 039 's' 'S' dc3 dc3 0x015b 0x015a dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 ';' ':' nop nop ';' ':' nop nop O
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 0x017a 0x0179 syn syn C
+ 053 'z' 'Z' sub sub 0x017c 0x017b sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/pl.kbd b/share/vt/keymaps/pl.kbd
index ebbf8e9..c6606ca 100644
--- a/share/vt/keymaps/pl.kbd
+++ b/share/vt/keymaps/pl.kbd
@@ -1,6 +1,7 @@
-# Polish ISO-8859-2 keymap by Krzysztof Mlynarski (17:46 27-04-1996 MET DST)
-# (krzysio@hydra.mimuw.edu.pl)
# $FreeBSD$
+#
+# Polish keymap by Krzysztof Mlynarski (17:46 27-04-1996 MET DST)
+# (krzysio@hydra.mimuw.edu.pl)
# alt
# scan cntrl alt alt cntrl lock
# code base shift cntrl shift alt shift cntrl shift state
@@ -23,38 +24,38 @@
015 ht btab nop nop ht btab nop nop O
016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
017 'w' 'W' etb etb 'w' 'W' etb etb C
- 018 'e' 'E' enq enq 281 280 enq enq C
+ 018 'e' 'E' enq enq 0x0119 0x0118 enq enq C
019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
021 'y' 'Y' em em 'y' 'Y' em em C
022 'u' 'U' nak nak 'u' 'U' nak nak C
023 'i' 'I' ht ht 'i' 'I' ht ht C
- 024 'o' 'O' si si 243 211 si si C
+ 024 'o' 'O' si si 0xf3 0xd3 si si C
025 'p' 'P' dle dle 'p' 'P' dle dle C
026 '[' '{' esc esc '[' '{' esc esc O
027 ']' '}' gs gs ']' '}' gs gs O
028 cr cr nl nl cr cr nl nl O
029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
- 030 'a' 'A' soh soh 261 260 soh soh C
- 031 's' 'S' dc3 dc3 347 346 dc3 dc3 C
+ 030 'a' 'A' soh soh 0x0105 0x0104 soh soh C
+ 031 's' 'S' dc3 dc3 0x015b 0x015a dc3 dc3 C
032 'd' 'D' eot eot 'd' 'D' eot eot C
033 'f' 'F' ack ack 'f' 'F' ack ack C
034 'g' 'G' bel bel 'g' 'G' bel bel C
035 'h' 'H' bs bs 'h' 'H' bs bs C
036 'j' 'J' nl nl 'j' 'J' nl nl C
037 'k' 'K' vt vt 'k' 'K' vt vt C
- 038 'l' 'L' ff ff 322 321 ff ff C
+ 038 'l' 'L' ff ff 0x0142 0x0141 ff ff C
039 ';' ':' nop nop ';' ':' nop nop O
040 ''' '"' nop nop ''' '"' nop nop O
041 '`' '~' nop nop '`' '~' nop nop O
042 lshift lshift lshift lshift lshift lshift lshift lshift O
043 '\' '|' fs fs '\' '|' fs fs O
- 044 'z' 'Z' sub sub 380 379 sub sub C
- 045 'x' 'X' can can 378 377 can can C
- 046 'c' 'C' etx etx 263 262 etx etx C
+ 044 'z' 'Z' sub sub 0x017c 0x017b sub sub C
+ 045 'x' 'X' can can 0x017a 0x0179 can can C
+ 046 'c' 'C' etx etx 0x0107 0x0106 etx etx C
047 'v' 'V' syn syn 'v' 'V' syn syn C
048 'b' 'B' stx stx 'b' 'B' stx stx C
- 049 'n' 'N' so so 324 323 so so C
+ 049 'n' 'N' so so 0x0144 0x0143 so so C
050 'm' 'M' cr cr 'm' 'M' cr cr C
051 ',' '<' nop nop ',' '<' nop nop O
052 '.' '>' nop nop '.' '>' nop nop O
diff --git a/share/vt/keymaps/pt.acc.kbd b/share/vt/keymaps/pt.acc.kbd
new file mode 100644
index 0000000..02ee9b5
--- /dev/null
+++ b/share/vt/keymaps/pt.acc.kbd
@@ -0,0 +1,139 @@
+#pt.iso.acc.kbd
+#by: pm@dee.uc.pt
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '6' '^' rs rs O
+ 008 '7' '/' nop nop '{' '&' nop nop O
+ 009 '8' '(' nop nop '[' '*' nop nop O
+ 010 '9' ')' nop nop ']' '(' nop nop O
+ 011 '0' '=' nop nop '}' ')' nop nop O
+ 012 ''' '?' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '+' '*' esc esc duml '{' esc esc O
+ 027 dacu dgra gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe7 0xc7 nop nop ';' ':' nop nop O
+ 040 nop nop nop nop ''' '"' nop nop O
+ 041 '\' '|' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 dtil dcir fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop nop nop nop C
+ 052 '.' ':' nop nop '.' '>' nop nop O
+ 053 '-' '_' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' 0x82 ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/pt.kbd b/share/vt/keymaps/pt.kbd
new file mode 100644
index 0000000..46f781e
--- /dev/null
+++ b/share/vt/keymaps/pt.kbd
@@ -0,0 +1,116 @@
+# $FreeBSD$
+# alt
+#by: pm@dee.uc.pt
+#
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '6' '^' rs rs O
+ 008 '7' '/' nop nop '{' '&' nop nop O
+ 009 '8' '(' nop nop '[' '*' nop nop O
+ 010 '9' ')' nop nop ']' '(' nop nop O
+ 011 '0' '=' nop nop '}' ')' nop nop O
+ 012 ''' '?' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '+' '*' esc esc 'h' '{' esc esc O
+ 027 ''' '`' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xe7 0xc7 nop nop ';' ':' nop nop O
+ 040 nop nop nop nop ''' '"' nop nop O
+ 041 '\' '|' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '~' '^' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop nop nop nop C
+ 052 '.' ':' nop nop '.' '>' nop nop O
+ 053 '-' '_' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' 0x82 ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/ru.kbd b/share/vt/keymaps/ru.kbd
new file mode 100644
index 0000000..a0309e6
--- /dev/null
+++ b/share/vt/keymaps/ru.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 0x2321 0x2321 debug nop O
+ 002 '1' '!' nop nop 0x2560 0x2551 nop nop O
+ 003 '2' '@' nul nul 0x2561 0x044e 0x2500 0x2500 O
+ 004 '3' '#' nop nop 0x0401 0x0451 nop nop O
+ 005 '4' '$' nop nop 0x2562 0x2553 nop nop O
+ 006 '5' '%' nop nop 0x2563 0x2554 nop nop O
+ 007 '6' '^' rs rs 0x2564 0x0447 0xb7 0xb7 O
+ 008 '7' '&' nop nop 0x2565 0x2555 nop nop O
+ 009 '8' '*' nop nop 0x2566 0x2559 nop nop O
+ 010 '9' '(' nop nop 0x2567 0x2557 nop nop O
+ 011 '0' ')' nop nop 0x255f 0x2558 nop nop O
+ 012 '-' '_' us us 0x255c 0x044a 0xf7 0xf7 O
+ 013 '=' '+' nop nop 0x256b 0x255a nop nop O
+ 014 bs bs del del 0x252c 0x252c 0x042a 0x042a O
+ 015 ht btab nop nop 0x2534 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0x042f 0x044f 0x2592 0x2592 C
+ 017 'w' 'W' etb etb 0x0412 0x0432 0x2248 0x2248 C
+ 018 'e' 'E' enq enq 0x0415 0x0435 0x2518 0x2518 C
+ 019 'r' 'R' dc2 dc2 0x0420 0x0440 0x2593 0x2593 C
+ 020 't' 'T' dc4 dc4 0x0422 0x0442 0x25a0 0x25a0 C
+ 021 'y' 'Y' em em 0x042b 0x044b 0x2265 0x2265 C
+ 022 'u' 'U' nak nak 0x0423 0x0443 0x2219 0x2219 C
+ 023 'i' 'I' ht ht 0x0418 0x0438 0x2534 0x2534 C
+ 024 'o' 'O' si si 0x041e 0x043e 0x2590 0x2590 C
+ 025 'p' 'P' dle dle 0x041f 0x043f 0x2591 0x2591 C
+ 026 '[' '{' esc esc 0x0448 0x0428 0x2321 0x2321 O
+ 027 ']' '}' gs gs 0x0449 0x0429 0xb2 0xb2 O
+ 028 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x0410 0x0430 0x2502 0x2502 C
+ 031 's' 'S' dc3 dc3 0x0421 0x0441 0x2320 0x2320 C
+ 032 'd' 'D' eot eot 0x0414 0x0434 0x2514 0x2514 C
+ 033 'f' 'F' ack ack 0x0424 0x0444 0x251c 0x251c C
+ 034 'g' 'G' bel bel 0x0413 0x0433 0x2524 0x2524 C
+ 035 'h' 'H' bs bs 0x0425 0x0445 0x252c 0x252c C
+ 036 'j' 'J' nl nl 0x0419 0x0439 0x253c 0x253c C
+ 037 'k' 'K' vt vt 0x041a 0x043a 0x2580 0x2580 C
+ 038 'l' 'L' ff ff 0x041b 0x043b 0x2584 0x2584 C
+ 039 ';' ':' nop nop 0x2569 0x2568 nop nop O
+ 040 ''' '"' nop nop 0x2556 0x2552 nop nop O
+ 041 '`' '~' nop nop 0x042e 0x0427 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 0x044d 0x042d 0xb0 0xb0 O
+ 044 'z' 'Z' sub sub 0x0417 0x0437 0xa0 0xa0 C
+ 045 'x' 'X' can can 0x042c 0x044c 0x2264 0x2264 C
+ 046 'c' 'C' etx etx 0x0426 0x0446 0x2510 0x2510 C
+ 047 'v' 'V' syn syn 0x0416 0x0436 0x221a 0x221a C
+ 048 'b' 'B' stx stx 0x0411 0x0431 0x250c 0x250c C
+ 049 'n' 'N' so so 0x041d 0x043d 0x258c 0x258c C
+ 050 'm' 'M' cr cr 0x041c 0x043c 0x2588 0x2588 C
+ 051 ',' '<' nop nop 0x255b 0x256a nop nop O
+ 052 '.' '>' nop nop 0x255d 0x256c nop nop O
+ 053 '/' '?' nop nop 0x255e 0xa9 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 0x2559 0x2559 0x253c 0x253c O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 0x2550 0x2550 susp 0x2550 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 0x2565 0x2565 0x2565 0x2565 N
+ 072 fkey50 '8' '8' '8' 0x2566 0x2566 0x2566 0x2566 N
+ 073 fkey51 '9' '9' '9' 0x2567 0x2567 0x2567 0x2567 N
+ 074 fkey52 '-' '-' '-' 0x255c 0x255c 0x255c 0x255c N
+ 075 fkey53 '4' '4' '4' 0x2562 0x2562 0x2562 0x2562 N
+ 076 fkey54 '5' '5' '5' 0x2563 0x2563 0x2563 0x2563 N
+ 077 fkey55 '6' '6' '6' 0x2564 0x2564 0x2564 0x2564 N
+ 078 fkey56 '+' '+' '+' 0x255a 0x255a 0x255a 0x255a N
+ 079 fkey57 '1' '1' '1' 0x2560 0x2560 0x2560 0x2560 N
+ 080 fkey58 '2' '2' '2' 0x2561 0x2561 0x2561 0x2561 N
+ 081 fkey59 '3' '3' '3' 0x0401 0x0401 0x0401 0x0401 N
+ 082 fkey60 '0' '0' '0' 0x255f 0x255f 0x255f 0x255f N
+ 083 del '.' '.' '.' 0x255d 0x255d boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 0x255e 0x255e nop nop O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 0x2321 0x2321 debug nop O
+ 130 '!' '1' nop nop 0x2560 0x2551 nop nop O
+ 131 '"' '2' nul nul 0x2561 0x044e 0x2500 0x2500 O
+ 132 ''' '3' nop nop 0x0401 0x0451 nop nop O
+ 133 '*' '4' nop nop 0x2562 0x2553 nop nop O
+ 134 ':' '5' nop nop 0x2563 0x2554 nop nop O
+ 135 ',' '6' rs rs 0x2564 0x0447 0xb7 0xb7 O
+ 136 '.' '7' nop nop 0x2565 0x2555 nop nop O
+ 137 ';' '8' nop nop 0x2566 0x2559 nop nop O
+ 138 '(' '9' nop nop 0x2567 0x2557 nop nop O
+ 139 ')' '0' nop nop 0x255f 0x2558 nop nop O
+ 140 '-' '_' us us 0x255c 0x044a 0xf7 0xf7 O
+ 141 '=' '+' nop nop 0x256b 0x255a nop nop O
+ 142 bs bs del del 0x252c 0x252c 0x042a 0x042a O
+ 143 ht btab nop nop 0x2534 btab nop nop O
+ 144 0x0439 0x0419 dc1 dc1 0x042f 0x044f 0x2592 0x2592 C
+ 145 0x0446 0x0426 etb etb 0x0412 0x0432 0x2248 0x2248 C
+ 146 0x0443 0x0423 enq enq 0x0415 0x0435 0x2518 0x2518 C
+ 147 0x043a 0x041a dc2 dc2 0x0420 0x0440 0x2593 0x2593 C
+ 148 0x0435 0x0415 dc4 dc4 0x0422 0x0442 0x25a0 0x25a0 C
+ 149 0x043d 0x041d em em 0x042b 0x044b 0x2265 0x2265 C
+ 150 0x0433 0x0413 nak nak 0x0423 0x0443 0x2219 0x2219 C
+ 151 0x0448 0x0428 ht ht 0x0418 0x0438 0x2534 0x2534 C
+ 152 0x0449 0x0429 si si 0x041e 0x043e 0x2590 0x2590 C
+ 153 0x0437 0x0417 dle dle 0x041f 0x043f 0x2591 0x2591 C
+ 154 0x0445 0x0425 esc esc 0x0448 0x0428 0x2321 0x2321 C
+ 155 0x044a 0x042a gs gs 0x0449 0x0429 0xb2 0xb2 C
+ 156 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x0444 0x0424 soh soh 0x0410 0x0430 0x2502 0x2502 C
+ 159 0x044b 0x042b dc3 dc3 0x0421 0x0441 0x2320 0x2320 C
+ 160 0x0432 0x0412 eot eot 0x0414 0x0434 0x2514 0x2514 C
+ 161 0x0430 0x0410 ack ack 0x0424 0x0444 0x251c 0x251c C
+ 162 0x043f 0x041f bel bel 0x0413 0x0433 0x2524 0x2524 C
+ 163 0x0440 0x0420 bs bs 0x0425 0x0445 0x252c 0x252c C
+ 164 0x043e 0x041e nl nl 0x0419 0x0439 0x253c 0x253c C
+ 165 0x043b 0x041b vt vt 0x041a 0x043a 0x2580 0x2580 C
+ 166 0x0434 0x0414 ff ff 0x041b 0x043b 0x2584 0x2584 C
+ 167 0x0436 0x0416 nop nop 0x2569 0x2568 nop nop C
+ 168 0x044d 0x042d nop nop 0x2556 0x2552 nop nop C
+ 169 0x0451 0x0401 nop nop 0x042e 0x0427 nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs 0x044d 0x042d 0xb0 0xb0 O
+ 172 0x044f 0x042f sub sub 0x0417 0x0437 0xa0 0xa0 C
+ 173 0x0447 0x0427 can can 0x042c 0x044c 0x2264 0x2264 C
+ 174 0x0441 0x0421 etx etx 0x0426 0x0446 0x2510 0x2510 C
+ 175 0x043c 0x041c syn syn 0x0416 0x0436 0x221a 0x221a C
+ 176 0x0438 0x0418 stx stx 0x0411 0x0431 0x250c 0x250c C
+ 177 0x0442 0x0422 so so 0x041d 0x043d 0x258c 0x258c C
+ 178 0x044c 0x042c cr cr 0x041c 0x043c 0x2588 0x2588 C
+ 179 0x0431 0x0411 nop nop 0x255b 0x256a nop nop C
+ 180 0x044e 0x042e nop nop 0x255d 0x256c nop nop C
+ 181 '/' '?' nop nop 0x255e 0xa9 nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 0x2559 0x2559 0x253c 0x253c O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 0x2550 0x2550 0x2550 0x2550 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 0x2565 0x2565 0x2565 0x2565 N
+ 200 fkey50 '8' '8' '8' 0x2566 0x2566 0x2566 0x2566 N
+ 201 fkey51 '9' '9' '9' 0x2567 0x2567 0x2567 0x2567 N
+ 202 fkey52 '-' '-' '-' 0x255c 0x255c 0x255c 0x255c N
+ 203 fkey53 '4' '4' '4' 0x2562 0x2562 0x2562 0x2562 N
+ 204 fkey54 '5' '5' '5' 0x2563 0x2563 0x2563 0x2563 N
+ 205 fkey55 '6' '6' '6' 0x2564 0x2564 0x2564 0x2564 N
+ 206 fkey56 '+' '+' '+' 0x255a 0x255a 0x255a 0x255a N
+ 207 fkey57 '1' '1' '1' 0x2560 0x2560 0x2560 0x2560 N
+ 208 fkey58 '2' '2' '2' 0x2561 0x2561 0x2561 0x2561 N
+ 209 fkey59 '3' '3' '3' 0x0401 0x0401 0x0401 0x0401 N
+ 210 fkey60 '0' '0' '0' 0x255f 0x255f 0x255f 0x255f N
+ 211 del '.' '.' '.' 0x255d 0x255d boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 0x255e 0x255e nop nop O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/ru.shift.kbd b/share/vt/keymaps/ru.shift.kbd
new file mode 100644
index 0000000..5e12b62
--- /dev/null
+++ b/share/vt/keymaps/ru.shift.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 0x2321 0x2321 debug nop O
+ 002 '1' '!' nop nop 0x2560 0x2551 nop nop O
+ 003 '2' '@' nul nul 0x2561 0x044e 0x2500 0x2500 O
+ 004 '3' '#' nop nop 0x0401 0x0451 nop nop O
+ 005 '4' '$' nop nop 0x2562 0x2553 nop nop O
+ 006 '5' '%' nop nop 0x2563 0x2554 nop nop O
+ 007 '6' '^' rs rs 0x2564 0x0447 0xb7 0xb7 O
+ 008 '7' '&' nop nop 0x2565 0x2555 nop nop O
+ 009 '8' '*' nop nop 0x2566 0x2559 nop nop O
+ 010 '9' '(' nop nop 0x2567 0x2557 nop nop O
+ 011 '0' ')' nop nop 0x255f 0x2558 nop nop O
+ 012 '-' '_' us us 0x255c 0x044a 0xf7 0xf7 O
+ 013 '=' '+' nop nop 0x256b 0x255a nop nop O
+ 014 bs bs del del 0x252c 0x252c 0x042a 0x042a O
+ 015 ht btab nop nop 0x2534 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0x042f 0x044f 0x2592 0x2592 C
+ 017 'w' 'W' etb etb 0x0412 0x0432 0x2248 0x2248 C
+ 018 'e' 'E' enq enq 0x0415 0x0435 0x2518 0x2518 C
+ 019 'r' 'R' dc2 dc2 0x0420 0x0440 0x2593 0x2593 C
+ 020 't' 'T' dc4 dc4 0x0422 0x0442 0x25a0 0x25a0 C
+ 021 'y' 'Y' em em 0x042b 0x044b 0x2265 0x2265 C
+ 022 'u' 'U' nak nak 0x0423 0x0443 0x2219 0x2219 C
+ 023 'i' 'I' ht ht 0x0418 0x0438 0x2534 0x2534 C
+ 024 'o' 'O' si si 0x041e 0x043e 0x2590 0x2590 C
+ 025 'p' 'P' dle dle 0x041f 0x043f 0x2591 0x2591 C
+ 026 '[' '{' esc esc 0x0448 0x0428 0x2321 0x2321 O
+ 027 ']' '}' gs gs 0x0449 0x0429 0xb2 0xb2 O
+ 028 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x0410 0x0430 0x2502 0x2502 C
+ 031 's' 'S' dc3 dc3 0x0421 0x0441 0x2320 0x2320 C
+ 032 'd' 'D' eot eot 0x0414 0x0434 0x2514 0x2514 C
+ 033 'f' 'F' ack ack 0x0424 0x0444 0x251c 0x251c C
+ 034 'g' 'G' bel bel 0x0413 0x0433 0x2524 0x2524 C
+ 035 'h' 'H' bs bs 0x0425 0x0445 0x252c 0x252c C
+ 036 'j' 'J' nl nl 0x0419 0x0439 0x253c 0x253c C
+ 037 'k' 'K' vt vt 0x041a 0x043a 0x2580 0x2580 C
+ 038 'l' 'L' ff ff 0x041b 0x043b 0x2584 0x2584 C
+ 039 ';' ':' nop nop 0x2569 0x2568 nop nop O
+ 040 ''' '"' nop nop 0x2556 0x2552 nop nop O
+ 041 '`' '~' nop nop 0x042e 0x0427 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 0x044d 0x042d 0xb0 0xb0 O
+ 044 'z' 'Z' sub sub 0x0417 0x0437 0xa0 0xa0 C
+ 045 'x' 'X' can can 0x042c 0x044c 0x2264 0x2264 C
+ 046 'c' 'C' etx etx 0x0426 0x0446 0x2510 0x2510 C
+ 047 'v' 'V' syn syn 0x0416 0x0436 0x221a 0x221a C
+ 048 'b' 'B' stx stx 0x0411 0x0431 0x250c 0x250c C
+ 049 'n' 'N' so so 0x041d 0x043d 0x258c 0x258c C
+ 050 'm' 'M' cr cr 0x041c 0x043c 0x2588 0x2588 C
+ 051 ',' '<' nop nop 0x255b 0x256a nop nop O
+ 052 '.' '>' nop nop 0x255d 0x256c nop nop O
+ 053 '/' '?' nop nop 0x255e 0xa9 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 0x2559 0x2559 0x253c 0x253c O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 0x2550 0x2550 susp 0x2550 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 0x2565 0x2565 0x2565 0x2565 N
+ 072 fkey50 '8' '8' '8' 0x2566 0x2566 0x2566 0x2566 N
+ 073 fkey51 '9' '9' '9' 0x2567 0x2567 0x2567 0x2567 N
+ 074 fkey52 '-' '-' '-' 0x255c 0x255c 0x255c 0x255c N
+ 075 fkey53 '4' '4' '4' 0x2562 0x2562 0x2562 0x2562 N
+ 076 fkey54 '5' '5' '5' 0x2563 0x2563 0x2563 0x2563 N
+ 077 fkey55 '6' '6' '6' 0x2564 0x2564 0x2564 0x2564 N
+ 078 fkey56 '+' '+' '+' 0x255a 0x255a 0x255a 0x255a N
+ 079 fkey57 '1' '1' '1' 0x2560 0x2560 0x2560 0x2560 N
+ 080 fkey58 '2' '2' '2' 0x2561 0x2561 0x2561 0x2561 N
+ 081 fkey59 '3' '3' '3' 0x0401 0x0401 0x0401 0x0401 N
+ 082 fkey60 '0' '0' '0' 0x255f 0x255f 0x255f 0x255f N
+ 083 del '.' '.' '.' 0x255d 0x255d boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 0x255e 0x255e nop nop O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 0x2321 0x2321 debug nop O
+ 130 '1' '!' nop nop 0x2560 0x2551 nop nop O
+ 131 '2' '"' nul nul 0x2561 0x044e 0x2500 0x2500 O
+ 132 '3' ''' nop nop 0x0401 0x0451 nop nop O
+ 133 '4' ';' nop nop 0x2562 0x2553 nop nop O
+ 134 '5' ':' nop nop 0x2563 0x2554 nop nop O
+ 135 '6' ',' rs rs 0x2564 0x0447 0xb7 0xb7 O
+ 136 '7' '.' nop nop 0x2565 0x2555 nop nop O
+ 137 '8' '*' nop nop 0x2566 0x2559 nop nop O
+ 138 '9' '(' nop nop 0x2567 0x2557 nop nop O
+ 139 '0' ')' nop nop 0x255f 0x2558 nop nop O
+ 140 '-' '_' us us 0x255c 0x044a 0xf7 0xf7 O
+ 141 '=' '+' nop nop 0x256b 0x255a nop nop O
+ 142 bs bs del del 0x252c 0x252c 0x042a 0x042a O
+ 143 ht btab nop nop 0x2534 btab nop nop O
+ 144 0x0439 0x0419 dc1 dc1 0x042f 0x044f 0x2592 0x2592 C
+ 145 0x0446 0x0426 etb etb 0x0412 0x0432 0x2248 0x2248 C
+ 146 0x0443 0x0423 enq enq 0x0415 0x0435 0x2518 0x2518 C
+ 147 0x043a 0x041a dc2 dc2 0x0420 0x0440 0x2593 0x2593 C
+ 148 0x0435 0x0415 dc4 dc4 0x0422 0x0442 0x25a0 0x25a0 C
+ 149 0x043d 0x041d em em 0x042b 0x044b 0x2265 0x2265 C
+ 150 0x0433 0x0413 nak nak 0x0423 0x0443 0x2219 0x2219 C
+ 151 0x0448 0x0428 ht ht 0x0418 0x0438 0x2534 0x2534 C
+ 152 0x0449 0x0429 si si 0x041e 0x043e 0x2590 0x2590 C
+ 153 0x0437 0x0417 dle dle 0x041f 0x043f 0x2591 0x2591 C
+ 154 0x0445 0x0425 esc esc 0x0448 0x0428 0x2321 0x2321 C
+ 155 0x044a 0x042a gs gs 0x0449 0x0429 0xb2 0xb2 C
+ 156 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x0444 0x0424 soh soh 0x0410 0x0430 0x2502 0x2502 C
+ 159 0x044b 0x042b dc3 dc3 0x0421 0x0441 0x2320 0x2320 C
+ 160 0x0432 0x0412 eot eot 0x0414 0x0434 0x2514 0x2514 C
+ 161 0x0430 0x0410 ack ack 0x0424 0x0444 0x251c 0x251c C
+ 162 0x043f 0x041f bel bel 0x0413 0x0433 0x2524 0x2524 C
+ 163 0x0440 0x0420 bs bs 0x0425 0x0445 0x252c 0x252c C
+ 164 0x043e 0x041e nl nl 0x0419 0x0439 0x253c 0x253c C
+ 165 0x043b 0x041b vt vt 0x041a 0x043a 0x2580 0x2580 C
+ 166 0x0434 0x0414 ff ff 0x041b 0x043b 0x2584 0x2584 C
+ 167 0x0436 0x0416 nop nop 0x2569 0x2568 nop nop C
+ 168 0x044d 0x042d nop nop 0x2556 0x2552 nop nop C
+ 169 0x0451 0x0401 nop nop 0x042e 0x0427 nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs 0x044d 0x042d 0xb0 0xb0 O
+ 172 0x044f 0x042f sub sub 0x0417 0x0437 0xa0 0xa0 C
+ 173 0x0447 0x0427 can can 0x042c 0x044c 0x2264 0x2264 C
+ 174 0x0441 0x0421 etx etx 0x0426 0x0446 0x2510 0x2510 C
+ 175 0x043c 0x041c syn syn 0x0416 0x0436 0x221a 0x221a C
+ 176 0x0438 0x0418 stx stx 0x0411 0x0431 0x250c 0x250c C
+ 177 0x0442 0x0422 so so 0x041d 0x043d 0x258c 0x258c C
+ 178 0x044c 0x042c cr cr 0x041c 0x043c 0x2588 0x2588 C
+ 179 0x0431 0x0411 nop nop 0x255b 0x256a nop nop C
+ 180 0x044e 0x042e nop nop 0x255d 0x256c nop nop C
+ 181 '/' '?' nop nop 0x255e 0xa9 nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 0x2559 0x2559 0x253c 0x253c O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 0x2550 0x2550 0x2550 0x2550 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 0x2565 0x2565 0x2565 0x2565 N
+ 200 fkey50 '8' '8' '8' 0x2566 0x2566 0x2566 0x2566 N
+ 201 fkey51 '9' '9' '9' 0x2567 0x2567 0x2567 0x2567 N
+ 202 fkey52 '-' '-' '-' 0x255c 0x255c 0x255c 0x255c N
+ 203 fkey53 '4' '4' '4' 0x2562 0x2562 0x2562 0x2562 N
+ 204 fkey54 '5' '5' '5' 0x2563 0x2563 0x2563 0x2563 N
+ 205 fkey55 '6' '6' '6' 0x2564 0x2564 0x2564 0x2564 N
+ 206 fkey56 '+' '+' '+' 0x255a 0x255a 0x255a 0x255a N
+ 207 fkey57 '1' '1' '1' 0x2560 0x2560 0x2560 0x2560 N
+ 208 fkey58 '2' '2' '2' 0x2561 0x2561 0x2561 0x2561 N
+ 209 fkey59 '3' '3' '3' 0x0401 0x0401 0x0401 0x0401 N
+ 210 fkey60 '0' '0' '0' 0x255f 0x255f 0x255f 0x255f N
+ 211 del '.' '.' '.' 0x255d 0x255d boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 0x255e 0x255e nop nop O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/ru.win.kbd b/share/vt/keymaps/ru.win.kbd
new file mode 100644
index 0000000..e3e50fc
--- /dev/null
+++ b/share/vt/keymaps/ru.win.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 0x2321 0x2321 debug nop O
+ 002 '1' '!' nop nop 0x2560 0x2551 nop nop O
+ 003 '2' '@' nul nul 0x2561 0x044e 0x2500 0x2500 O
+ 004 '3' '#' nop nop 0x0401 0x0451 nop nop O
+ 005 '4' '$' nop nop 0x2562 0x2553 nop nop O
+ 006 '5' '%' nop nop 0x2563 0x2554 nop nop O
+ 007 '6' '^' rs rs 0x2564 0x0447 0xb7 0xb7 O
+ 008 '7' '&' nop nop 0x2565 0x2555 nop nop O
+ 009 '8' '*' nop nop 0x2566 0x2559 nop nop O
+ 010 '9' '(' nop nop 0x2567 0x2557 nop nop O
+ 011 '0' ')' nop nop 0x255f 0x2558 nop nop O
+ 012 '-' '_' us us 0x255c 0x044a 0xf7 0xf7 O
+ 013 '=' '+' nop nop 0x256b 0x255a nop nop O
+ 014 bs bs del del 0x252c 0x252c 0x042a 0x042a O
+ 015 ht btab nop nop 0x2534 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0x042f 0x044f 0x2592 0x2592 C
+ 017 'w' 'W' etb etb 0x0412 0x0432 0x2248 0x2248 C
+ 018 'e' 'E' enq enq 0x0415 0x0435 0x2518 0x2518 C
+ 019 'r' 'R' dc2 dc2 0x0420 0x0440 0x2593 0x2593 C
+ 020 't' 'T' dc4 dc4 0x0422 0x0442 0x25a0 0x25a0 C
+ 021 'y' 'Y' em em 0x042b 0x044b 0x2265 0x2265 C
+ 022 'u' 'U' nak nak 0x0423 0x0443 0x2219 0x2219 C
+ 023 'i' 'I' ht ht 0x0418 0x0438 0x2534 0x2534 C
+ 024 'o' 'O' si si 0x041e 0x043e 0x2590 0x2590 C
+ 025 'p' 'P' dle dle 0x041f 0x043f 0x2591 0x2591 C
+ 026 '[' '{' esc esc 0x0448 0x0428 0x2321 0x2321 O
+ 027 ']' '}' gs gs 0x0449 0x0429 0xb2 0xb2 O
+ 028 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 029 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0x0410 0x0430 0x2502 0x2502 C
+ 031 's' 'S' dc3 dc3 0x0421 0x0441 0x2320 0x2320 C
+ 032 'd' 'D' eot eot 0x0414 0x0434 0x2514 0x2514 C
+ 033 'f' 'F' ack ack 0x0424 0x0444 0x251c 0x251c C
+ 034 'g' 'G' bel bel 0x0413 0x0433 0x2524 0x2524 C
+ 035 'h' 'H' bs bs 0x0425 0x0445 0x252c 0x252c C
+ 036 'j' 'J' nl nl 0x0419 0x0439 0x253c 0x253c C
+ 037 'k' 'K' vt vt 0x041a 0x043a 0x2580 0x2580 C
+ 038 'l' 'L' ff ff 0x041b 0x043b 0x2584 0x2584 C
+ 039 ';' ':' nop nop 0x2569 0x2568 nop nop O
+ 040 ''' '"' nop nop 0x2556 0x2552 nop nop O
+ 041 '`' '~' nop nop 0x042e 0x0427 nop nop O
+ 042 lshift lshift alock lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 0x044d 0x042d 0xb0 0xb0 O
+ 044 'z' 'Z' sub sub 0x0417 0x0437 0xa0 0xa0 C
+ 045 'x' 'X' can can 0x042c 0x044c 0x2264 0x2264 C
+ 046 'c' 'C' etx etx 0x0426 0x0446 0x2510 0x2510 C
+ 047 'v' 'V' syn syn 0x0416 0x0436 0x221a 0x221a C
+ 048 'b' 'B' stx stx 0x0411 0x0431 0x250c 0x250c C
+ 049 'n' 'N' so so 0x041d 0x043d 0x258c 0x258c C
+ 050 'm' 'M' cr cr 0x041c 0x043c 0x2588 0x2588 C
+ 051 ',' '<' nop nop 0x255b 0x256a nop nop O
+ 052 '.' '>' nop nop 0x255d 0x256c nop nop O
+ 053 '/' '?' nop nop 0x255e 0xa9 nop nop O
+ 054 rshift rshift alock rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 0x2559 0x2559 0x253c 0x253c O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 0x2550 0x2550 susp 0x2550 O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 0x2565 0x2565 0x2565 0x2565 N
+ 072 fkey50 '8' '8' '8' 0x2566 0x2566 0x2566 0x2566 N
+ 073 fkey51 '9' '9' '9' 0x2567 0x2567 0x2567 0x2567 N
+ 074 fkey52 '-' '-' '-' 0x255c 0x255c 0x255c 0x255c N
+ 075 fkey53 '4' '4' '4' 0x2562 0x2562 0x2562 0x2562 N
+ 076 fkey54 '5' '5' '5' 0x2563 0x2563 0x2563 0x2563 N
+ 077 fkey55 '6' '6' '6' 0x2564 0x2564 0x2564 0x2564 N
+ 078 fkey56 '+' '+' '+' 0x255a 0x255a 0x255a 0x255a N
+ 079 fkey57 '1' '1' '1' 0x2560 0x2560 0x2560 0x2560 N
+ 080 fkey58 '2' '2' '2' 0x2561 0x2561 0x2561 0x2561 N
+ 081 fkey59 '3' '3' '3' 0x0401 0x0401 0x0401 0x0401 N
+ 082 fkey60 '0' '0' '0' 0x255f 0x255f 0x255f 0x255f N
+ 083 del '.' '.' '.' 0x255d 0x255d boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 090 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 0x255e 0x255e nop nop O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 saver fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 0x2321 0x2321 debug nop O
+ 130 '1' '!' nop nop 0x2560 0x2551 nop nop O
+ 131 '2' '"' nul nul 0x2561 0x044e 0x2500 0x2500 O
+ 132 '3' '#' nop nop 0x0401 0x0451 nop nop O
+ 133 '4' ';' nop nop 0x2562 0x2553 nop nop O
+ 134 '5' '%' nop nop 0x2563 0x2554 nop nop O
+ 135 '6' ':' rs rs 0x2564 0x0447 0xb7 0xb7 O
+ 136 '7' '?' nop nop 0x2565 0x2555 nop nop O
+ 137 '8' '*' nop nop 0x2566 0x2559 nop nop O
+ 138 '9' '(' nop nop 0x2567 0x2557 nop nop O
+ 139 '0' ')' nop nop 0x255f 0x2558 nop nop O
+ 140 '-' '_' us us 0x255c 0x044a 0xf7 0xf7 O
+ 141 '=' '+' nop nop 0x256b 0x255a nop nop O
+ 142 bs bs del del 0x252c 0x252c 0x042a 0x042a O
+ 143 ht btab nop nop 0x2534 btab nop nop O
+ 144 0x0439 0x0419 dc1 dc1 0x042f 0x044f 0x2592 0x2592 C
+ 145 0x0446 0x0426 etb etb 0x0412 0x0432 0x2248 0x2248 C
+ 146 0x0443 0x0423 enq enq 0x0415 0x0435 0x2518 0x2518 C
+ 147 0x043a 0x041a dc2 dc2 0x0420 0x0440 0x2593 0x2593 C
+ 148 0x0435 0x0415 dc4 dc4 0x0422 0x0442 0x25a0 0x25a0 C
+ 149 0x043d 0x041d em em 0x042b 0x044b 0x2265 0x2265 C
+ 150 0x0433 0x0413 nak nak 0x0423 0x0443 0x2219 0x2219 C
+ 151 0x0448 0x0428 ht ht 0x0418 0x0438 0x2534 0x2534 C
+ 152 0x0449 0x0429 si si 0x041e 0x043e 0x2590 0x2590 C
+ 153 0x0437 0x0417 dle dle 0x041f 0x043f 0x2591 0x2591 C
+ 154 0x0445 0x0425 esc esc 0x0448 0x0428 0x2321 0x2321 C
+ 155 0x044a 0x042a gs gs 0x0449 0x0429 0xb2 0xb2 C
+ 156 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 157 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 0x0444 0x0424 soh soh 0x0410 0x0430 0x2502 0x2502 C
+ 159 0x044b 0x042b dc3 dc3 0x0421 0x0441 0x2320 0x2320 C
+ 160 0x0432 0x0412 eot eot 0x0414 0x0434 0x2514 0x2514 C
+ 161 0x0430 0x0410 ack ack 0x0424 0x0444 0x251c 0x251c C
+ 162 0x043f 0x041f bel bel 0x0413 0x0433 0x2524 0x2524 C
+ 163 0x0440 0x0420 bs bs 0x0425 0x0445 0x252c 0x252c C
+ 164 0x043e 0x041e nl nl 0x0419 0x0439 0x253c 0x253c C
+ 165 0x043b 0x041b vt vt 0x041a 0x043a 0x2580 0x2580 C
+ 166 0x0434 0x0414 ff ff 0x041b 0x043b 0x2584 0x2584 C
+ 167 0x0436 0x0416 nop nop 0x2569 0x2568 nop nop C
+ 168 0x044d 0x042d nop nop 0x2556 0x2552 nop nop C
+ 169 0x0451 0x0401 nop nop 0x042e 0x0427 nop nop C
+ 170 lshift lshift alock lshift lshift lshift lshift lshift O
+ 171 '\' '/' fs fs 0x044d 0x042d 0xb0 0xb0 O
+ 172 0x044f 0x042f sub sub 0x0417 0x0437 0xa0 0xa0 C
+ 173 0x0447 0x0427 can can 0x042c 0x044c 0x2264 0x2264 C
+ 174 0x0441 0x0421 etx etx 0x0426 0x0446 0x2510 0x2510 C
+ 175 0x043c 0x041c syn syn 0x0416 0x0436 0x221a 0x221a C
+ 176 0x0438 0x0418 stx stx 0x0411 0x0431 0x250c 0x250c C
+ 177 0x0442 0x0422 so so 0x041d 0x043d 0x258c 0x258c C
+ 178 0x044c 0x042c cr cr 0x041c 0x043c 0x2588 0x2588 C
+ 179 0x0431 0x0411 nop nop 0x255b 0x256a nop nop C
+ 180 0x044e 0x042e nop nop 0x255d 0x256c nop nop C
+ 181 '.' ',' nop nop 0x255e 0xa9 nop nop O
+ 182 rshift rshift alock rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 0x2559 0x2559 0x253c 0x253c O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 0x2550 0x2550 0x2550 0x2550 O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 0x2565 0x2565 0x2565 0x2565 N
+ 200 fkey50 '8' '8' '8' 0x2566 0x2566 0x2566 0x2566 N
+ 201 fkey51 '9' '9' '9' 0x2567 0x2567 0x2567 0x2567 N
+ 202 fkey52 '-' '-' '-' 0x255c 0x255c 0x255c 0x255c N
+ 203 fkey53 '4' '4' '4' 0x2562 0x2562 0x2562 0x2562 N
+ 204 fkey54 '5' '5' '5' 0x2563 0x2563 0x2563 0x2563 N
+ 205 fkey55 '6' '6' '6' 0x2564 0x2564 0x2564 0x2564 N
+ 206 fkey56 '+' '+' '+' 0x255a 0x255a 0x255a 0x255a N
+ 207 fkey57 '1' '1' '1' 0x2560 0x2560 0x2560 0x2560 N
+ 208 fkey58 '2' '2' '2' 0x2561 0x2561 0x2561 0x2561 N
+ 209 fkey59 '3' '3' '3' 0x0401 0x0401 0x0401 0x0401 N
+ 210 fkey60 '0' '0' '0' 0x255f 0x255f 0x255f 0x255f N
+ 211 del '.' '.' '.' 0x255d 0x255d boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
+ 218 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 0x255e 0x255e nop nop O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 saver fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/se.kbd b/share/vt/keymaps/se.kbd
new file mode 100644
index 0000000..bea4cf1
--- /dev/null
+++ b/share/vt/keymaps/se.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 0xa3 nop nop nop O
+ 005 '4' 0xa4 nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+ 013 0x80 '`' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0xe5 0xc5 nop nop '}' ']' nop nop C
+ 027 0xa8 '^' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0xf6 0xd6 nop nop '|' '\' nop nop C
+ 040 0xe4 0xc4 nop nop '{' '[' nop nop C
+ 041 0xa7 0xbd nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop nop nop nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/si.kbd b/share/vt/keymaps/si.kbd
new file mode 100644
index 0000000..f20ba2c
--- /dev/null
+++ b/share/vt/keymaps/si.kbd
@@ -0,0 +1,117 @@
+# $FreeBSD$
+#
+# Slovenian keyboard
+# Blaz Zupan <blaz@amis.net>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '~' '~' nop nop O
+ 003 '2' '"' nul nul 0x02c7 0x02c7 nul nul O
+ 004 '3' '#' nop nop '^' '^' nop nop O
+ 005 '4' '$' nop nop 0x02d8 0x02d8 nop nop O
+ 006 '5' '%' nop nop 0xb0 0xb0 nop nop O
+ 007 '6' '&' rs rs 0x02db 0x02db rs rs O
+ 008 '7' '/' nop nop '`' '`' nop nop O
+ 009 '8' '(' nop nop 0x02d9 0x02d9 nop nop O
+ 010 '9' ')' nop nop ''' ''' nop nop O
+ 011 '0' '=' nop nop 0x02dd 0x02dd nop nop O
+ 012 ''' '?' us us 0xa8 0xa8 us us O
+ 013 '+' '*' nop nop 0xb8 0xb8 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '\' '\' dc1 dc1 C
+ 017 'w' 'W' etb etb '|' '|' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0x0161 0x0160 esc esc 0xf7 0xf7 esc esc C
+ 027 0x0111 0x0110 gs gs 0xd7 0xd7 gs gs C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack '[' '[' ack ack C
+ 034 'g' 'G' bel bel ']' ']' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 0x0142 0x0142 vt vt C
+ 038 'l' 'L' ff ff 0x0141 0x0141 ff ff C
+ 039 0x010d 0x010c nop nop 0x010d 0x010c nop nop C
+ 040 0x0107 0x0106 nop nop 0xdf 0xdf nop nop C
+ 041 0xb8 0xa8 nop nop 0xb8 0xa8 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 0x017e 0x017d fs fs 0xa4 0xa4 fs fs C
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn '@' '@' syn syn C
+ 048 'b' 'B' stx stx '{' '{' stx stx C
+ 049 'n' 'N' so so '}' '}' so so C
+ 050 'm' 'M' cr cr 0xa7 0xa7 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' nop nop '-' '_' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/sk.kbd b/share/vt/keymaps/sk.kbd
new file mode 100644
index 0000000..7a23c8d
--- /dev/null
+++ b/share/vt/keymaps/sk.kbd
@@ -0,0 +1,364 @@
+# Keyboard map for Slovak language under FreeBSD.
+# Created by G. Adam Stanislav <adam@whizkidtech.net>
+#
+# Version 1.1 - 1999-03-21
+#
+# $FreeBSD$
+#
+# This map is derived from my Central European map
+# (ce.iso2.kbd). The description of the CE map is next.
+# After that is a description of what was added
+# specifically to the Slovak map:
+#
+########### CE map described: #################################
+#
+# This map uses the US QWERTY keyboard for its basic layout.
+# It adds a "third row" to the top of the PC keyboard. To
+# access the third row, press and hold the Alt key, then
+# strike a key in the top row.
+#
+# Note that some of the third-row keys produce characters.
+# Others must be followed by another keystroke resulting
+# in accented characters. To print the accent mark alone,
+# press the space bar after pressing and releasing the
+# alt-accent mark key.
+#
+# In most cases I have mapped a key to a character or an
+# accent mark because the key on the US QWERTY keyboard
+# somewhat resembles the result.
+#
+# In addition to the top row, three keys on the numeric keypad
+# are mapped for the use with UTF-8 when combined with the
+# Alt key: The dot (del) key combined with alt will print a
+# comma instead of a dot; alt-/ will show the division mark,
+# and alt-* the multpilication sign.
+#
+# If you have an Unicode font loaded, you can see the layout here:
+#
+# alt-` ˛ (ogonek) and alt-~ ¸ (cedilla)
+# Examples: ęąţçş
+# alt-! ß (German double s)
+# alt-@ ° (degree)
+# alt-# ¤ (currency)
+# alt-$ § (section, called paragraf in most CE languages)
+# alt-% ¨ (umlaut, dve bodky)
+# Examples: äüöë
+# alt-^ ^ (circumflex, vokáň)
+# Examples: ôâî
+# alt-& ­ (hyphen, pomlÄka, rozdeľovacie znamienko)
+# alt-* ° (ring)
+# Examples: ůŮ
+# alt-( Ë (Hungarian long umlaut)
+# Examples: őű
+# alt-) Ë™ (dot accent)
+# Examples: żŻ
+# alt-- ´ (acute, dĺžeň, Äárka)
+# Examples: áśéíúńźŕĺ
+# alt-= ˇ (caron, mäkÄeň, háÄek) and alt-+ ˘ (breve)
+# Examples: ăÄřľÄťňž
+# alt-\ / (slash)
+# Examples: Ä‘Å‚
+# alt-/ [on numeric keypad] ÷
+# alt-* [on numeric keypad] ×
+# alt-. [on numeric keypad] ,
+#
+# This layout offers access to the entire character set of
+# ISO 8859-2, used by Slovak, Czech, German, Polish, Croatian,
+# Slovenian, Rumanian, Hungarian, and probably other languages,
+# while remaining fully compatible with the default US QWERTY
+# keyboard.
+#
+######### Slovak map described: ###############################
+#
+# In addition to everything described above, pressing
+# Alt-character is a "shortcut" to the most commonly used
+# accented character. For example, Alt-a produces "dlhe a".
+#
+# In most cases, a character is used with only one possible
+# accent mark in Slovak (dlzen alebo makcen). These are the
+# characters that work unambiguously with the Alt key:
+#
+# e r t y u i s d z c n
+#
+# Three characters are used with two different accent marks:
+#
+# o a l
+#
+# Using the Alt-character combination produces the most commonly
+# used result, which is:
+#
+# Alt-o - dlhe o
+# Alt-a - dlhe a
+# Alt-l - makke l
+#
+# To produce the other possible result, press Alt and the closest
+# key on the keyboard that is not used with any accent in Slovak.
+# That is:
+#
+# Alt-p - o s vokanom
+# Alt-q - a s dvoma bodkami
+# Alt-k - dlhe l
+#
+# If you have any comments, send me email, in English or Slovak,
+# to "G. Adam Stanislav" <adam@whizkidtech.net>.
+#
+# If you are sending email from aol.com, hotmail.com, or
+# some other free provider often abused by spammers, I will not
+# receive it. In that case, try <zen@buddhist.com>.
+#
+# Note: This keymap uses the QWERTY model which is used by
+# most of the world. Slovak typewriters use the QWERTZ
+# model. If you get a Z when you press the key marked Y,
+# and Y when pressing Z, you have two options:
+#
+# 1. Change the markings on your keyboard to the QWERTY
+# standard; or
+# 2. Edit this file. All you have to do is change 021
+# to 044, and 044 to 021 at the beginning of the
+# respective lines. This will turn your keyboard
+# to the QWERTZ model.
+#
+# The current version of this file is kept at
+# http://www.whizkidtech.net/ISO-8859-2/
+#
+# New in version 1.0: You can keep holding the alt key after pressing
+# an accent key. For example, pressing the acute accent followed by
+# alt-s will produce acute s - in version 1.0 it just beeped.
+#
+# This is more compatible with the universal ISO-8859-2 key map.
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 0xdf 0xdf nop nop O
+ 003 '2' '@' nul nul 0xb0 0xb0 nul nul O
+ 004 '3' '#' nop nop 0xa4 0xa4 nop nop O
+ 005 '4' '$' nop nop 0xa7 0xa7 nop nop O
+ 006 '5' '%' nop nop duml duml nop nop O
+ 007 '6' '^' rs rs dcir dcir rs rs O
+ 008 '7' '&' nop nop 0xad 0xad nop nop O
+ 009 '8' '*' nop nop drin drin nop nop O
+ 010 '9' '(' nop nop ddac ddac nop nop O
+ 011 '0' ')' nop nop ddot ddot nop nop O
+ 012 '-' '_' us us dacu dacu us us O
+ 013 '=' '+' nop nop dcar dbre nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0xe4 0xc4 dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0xe9 0xc9 enq enq C
+ 019 'r' 'R' dc2 dc2 0x0155 0x0154 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 0x0165 0x0164 dc4 dc4 C
+ 021 'y' 'Y' em em 0xfd 0xdd em em C
+ 022 'u' 'U' nak nak 0xfa 0xda nak nak C
+ 023 'i' 'I' ht ht 0xed 0xcd ht ht C
+ 024 'o' 'O' si si 0xf3 0xd3 si si C
+ 025 'p' 'P' dle dle 0xf4 0xd4 dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0xe1 0xc1 soh soh C
+ 031 's' 'S' dc3 dc3 0x0161 0x0160 dc3 dc3 C
+ 032 'd' 'D' eot eot 0x010f 0x010e eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 0x013a 0x0139 vt vt C
+ 038 'l' 'L' ff ff 0x013e 0x013d ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop dogo dced nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs dsla dsla fs fs O
+ 044 'z' 'Z' sub sub 0x017e 0x017d sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 0x010d 0x010c etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 0x0148 0x0147 so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' 0xd7 0xd7 0xd7 0xd7 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' 0xf7 0xf7 0xf7 0xf7 N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 )
+ ( 0xe1 0xe1 ) ( 0xc1 0xc1 )
+ ( 'c' 0x0107 ) ( 'C' 0x0106 )
+ ( 0x010d 0x0107 ) ( 0x010c 0x0106 )
+ ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 0xe9 0xe9 ) ( 0xc9 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd )
+ ( 0xed 0xed ) ( 0xcd 0xcd )
+ ( 'l' 0x013a ) ( 'L' 0x0139 )
+ ( 0x013e 0x013a ) ( 0x013d 0x0139 )
+ ( 'n' 0x0144 ) ( 'N' 0x0143 )
+ ( 0x0148 0x0144 ) ( 0x0147 0x0143 )
+ ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 0xf3 0xf3 ) ( 0xd3 0xd3 )
+ ( 'r' 0x0155 ) ( 'R' 0x0154 )
+ ( 0x0155 0x0155 ) ( 0x0154 0x0154 )
+ ( 's' 0x015b ) ( 'S' 0x015a )
+ ( 0x0161 0x015b ) ( 0x0160 0x015a )
+ ( 'u' 0xfa ) ( 'U' 0xda )
+ ( 0xfa 0xfa ) ( 0xda 0xda )
+ ( 'y' 0xfd ) ( 'Y' 0xdd )
+ ( 0xfd 0xfd ) ( 0xdd 0xdd )
+ ( 'z' 0x017a ) ( 'Z' 0x0179 )
+ ( 0x017e 0x017a ) ( 0x017d 0x0179 )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 )
+ ( 0xe1 0xe2 ) ( 0xc1 0xc2 )
+ ( 'i' 0xee ) ( 'I' 0xce )
+ ( 0xed 0xee ) ( 0xcd 0xce )
+ ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 0xf3 0xf4 ) ( 0xd3 0xd4 )
+
+ dbre 0x02d8 ( 'a' 0x0103 ) ( 'A' 0x0102 )
+ ( 0xe1 0x0103 ) ( 0xc1 0x0102 )
+ ( 'c' 0x010d ) ( 'C' 0x010c )
+ ( 0x010d 0x010d ) ( 0x010c 0x010c )
+ ( 'd' 0x010f ) ( 'D' 0x010e )
+ ( 0x010f 0x010f ) ( 0x010e 0x010e )
+ ( 'e' 0x011b ) ( 'E' 0x011a )
+ ( 0xe9 0x011b ) ( 0xc9 0x011a )
+ ( 'l' 0x013e ) ( 'L' 0x013d )
+ ( 0x013e 0x013e ) ( 0x013d 0x013d )
+ ( 'n' 0x0148 ) ( 'N' 0x0147 )
+ ( 0x0148 0x0148 ) ( 0x0147 0x0147 )
+ ( 'r' 0x0159 ) ( 'R' 0x0158 )
+ ( 0x0155 0x0159 ) ( 0x0154 0x0158 )
+ ( 's' 0x0161 ) ( 'S' 0x0160 )
+ ( 0x0161 0x0161 ) ( 0x0160 0x0160 )
+ ( 't' 0x0165 ) ( 'T' 0x0164 )
+ ( 0x0165 0x0165 ) ( 0x0164 0x0164 )
+ ( 'z' 0x017e ) ( 'Z' 0x017d )
+ ( 0x017e 0x017e ) ( 0x017d 0x017d )
+
+ ddot 0x02d9 ( 'z' 0x017c ) ( 'Z' 0x017b )
+ ( 0x017e 0x017c ) ( 0x017d 0x017b )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 )
+ ( 0xe1 0xe4 ) ( 0xc1 0xc4 )
+ ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 0xe9 0xeb ) ( 0xc9 0xcb )
+ ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 0xf3 0xf6 ) ( 0xd3 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc )
+ ( 0xfa 0xfc ) ( 0xda 0xdc )
+
+ dsla '/' ( 'd' 0x0111 ) ( 'D' 0x0110 )
+ ( 0x010f 0x0111 ) ( 0x010e 0x0110 )
+ ( 'l' 0x0142 ) ( 'L' 0x0141 )
+ ( 0x013e 0x0142 ) ( 0x013d 0x0141 )
+
+ drin 0xb0 ( 'u' 0x016f ) ( 'U' 0x016e )
+ ( 0xfa 0x016f ) ( 0xda 0x016e )
+
+ dced 0xb8 ( 'a' 0x0105 ) ( 'A' 0x0104 )
+ ( 0xe1 0x0105 ) ( 0xc1 0x0104 )
+ ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 0x010d 0xe7 ) ( 0x010c 0xc7 )
+ ( 'e' 0x0119 ) ( 'E' 0x0118 )
+ ( 0xe9 0x0119 ) ( 0xc9 0x0118 )
+ ( 's' 0x015f ) ( 'S' 0x015e )
+ ( 0x0161 0x015f ) ( 0x0160 0x015e )
+ ( 't' 0x0163 ) ( 'T' 0x0162 )
+ ( 0x0165 0x0163 ) ( 0x0164 0x0162 )
+
+ ddac 0x02dd ( 'o' 0x0151 ) ( 'O' 0x0150 )
+ ( 0xf3 0x0151 ) ( 0xd3 0x0150 )
+ ( 'u' 0x0171 ) ( 'U' 0x0170 )
+ ( 0xfa 0x0171 ) ( 0xda 0x0170 )
+
+ dogo 0x02db ( 'a' 0x0105 ) ( 'A' 0x0104 )
+ ( 0xe1 0x0105 ) ( 0xc1 0x0104 )
+ ( 'c' 0xe7 ) ( 'C' 0xc7 )
+ ( 0x010d 0xe7 ) ( 0x010c 0xc7 )
+ ( 'e' 0x0119 ) ( 'E' 0x0118 )
+ ( 0xe9 0x0119 ) ( 0xc9 0x0118 )
+ ( 's' 0x015f ) ( 'S' 0x015e )
+ ( 0x0161 0x015f ) ( 0x0160 0x015e )
+ ( 't' 0x0163 ) ( 'T' 0x0162 )
+ ( 0x0165 0x0163 ) ( 0x0164 0x0162 )
+
+ dcar 0x02c7 ( 'a' 0x0103 ) ( 'A' 0x0102 )
+ ( 0xe1 0x0103 ) ( 0xc1 0x0102 )
+ ( 'c' 0x010d ) ( 'C' 0x010c )
+ ( 0x010d 0x010d ) ( 0x010c 0x010c )
+ ( 'd' 0x010f ) ( 'D' 0x010e )
+ ( 0x010f 0x010f ) ( 0x010e 0x010e )
+ ( 'e' 0x011b ) ( 'E' 0x011a )
+ ( 0xe9 0x011b ) ( 0xc9 0x011a )
+ ( 'l' 0x013e ) ( 'L' 0x013d )
+ ( 0x013e 0x013e ) ( 0x013d 0x013d )
+ ( 'n' 0x0148 ) ( 'N' 0x0147 )
+ ( 0x0148 0x0148 ) ( 0x0147 0x0147 )
+ ( 'r' 0x0159 ) ( 'R' 0x0158 )
+ ( 0x0155 0x0159 ) ( 0x0154 0x0158 )
+ ( 's' 0x0161 ) ( 'S' 0x0160 )
+ ( 0x0161 0x0161 ) ( 0x0160 0x0160 )
+ ( 't' 0x0165 ) ( 'T' 0x0164 )
+ ( 0x0165 0x0165 ) ( 0x0164 0x0164 )
+ ( 'z' 0x017e ) ( 'Z' 0x017d )
+ ( 0x017e 0x017e ) ( 0x017d 0x017d )
+
diff --git a/share/vt/keymaps/tr.kbd b/share/vt/keymaps/tr.kbd
new file mode 100644
index 0000000..b9cf886
--- /dev/null
+++ b/share/vt/keymaps/tr.kbd
@@ -0,0 +1,129 @@
+# Turkish keymap by Evren Yurtesen (09-12-1999)
+#
+# $FreeBSD$
+#
+# For suggestions and corrections please contact with me.
+#
+# Evren Yurtesen
+# yurtesen@ispro.net.tr
+#
+# Mobile : +358 40 5185215
+#
+# Work Address : ISPRO Internet Servisleri
+# 18 Sokak No:12
+# PK. 35290 Guzelyali/Izmir/TURKEY
+#
+# Work Tel : +90 232 2463992
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '>' nop nop nop O
+ 003 '2' ''' nul nul 0xa3 nop nul nul O
+ 004 '3' '^' nop nop '#' nop nop nop O
+ 005 '4' '+' nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop 0xbd nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '*' '?' nop nop '\' nop fs nop O
+ 013 '-' '_' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 0x0131 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 0x011f 0x011e nop nop 0xa8 0x011e nop nop C
+ 027 0xfc 0xdc nop nop '~' nop nop nop C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0xe6 0xc6 soh soh C
+ 031 's' 'S' dc3 dc3 0xdf 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 0x015f 0x015e nop nop 0xb4 0x015e nop nop C
+ 040 'i' 0x0130 nop nop 'i' 0x0130 nop nop C
+ 041 '"' 0xe9 nop nop '<' nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ',' ';' nop nop '`' nop nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 0xf6 0xd6 nop nop 0xf6 0xd6 nop nop C
+ 052 0xe7 0xc7 nop nop 0xe7 0xc7 nop nop C
+ 053 '.' ':' us nop nop nop nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/ua.kbd b/share/vt/keymaps/ua.kbd
index a93800f..d031f1d 100644
--- a/share/vt/keymaps/ua.kbd
+++ b/share/vt/keymaps/ua.kbd
@@ -19,43 +19,43 @@
013 '=' '+' nop nop '=' '+' nop nop O
014 bs bs del del bs bs del del O
015 ht btab nop nop btab btab nop nop O
- 016 'q' 'Q' dc1 dc1 1081 1049 dc1 dc1 C
- 017 'w' 'W' etb etb 1094 1062 etb etb C
- 018 'e' 'E' enq enq 1091 1059 enq enq C
- 019 'r' 'R' dc2 dc2 1082 1050 dc2 dc2 C
- 020 't' 'T' dc4 dc4 1077 1045 dc4 dc4 C
- 021 'y' 'Y' em em 1085 1053 em em C
- 022 'u' 'U' nak nak 1075 1043 nak nak C
- 023 'i' 'I' ht ht 1096 1064 ht ht C
- 024 'o' 'O' si si 1097 1065 si si C
- 025 'p' 'P' dle dle 1079 1047 dle dle C
- 026 '[' '{' esc esc 1093 1061 esc esc O
- 027 ']' '}' gs gs 1111 1031 1098 1066 O
+ 016 'q' 'Q' dc1 dc1 0x0439 0x0419 dc1 dc1 C
+ 017 'w' 'W' etb etb 0x0446 0x0426 etb etb C
+ 018 'e' 'E' enq enq 0x0443 0x0423 enq enq C
+ 019 'r' 'R' dc2 dc2 0x043a 0x041a dc2 dc2 C
+ 020 't' 'T' dc4 dc4 0x0435 0x0415 dc4 dc4 C
+ 021 'y' 'Y' em em 0x043d 0x041d em em C
+ 022 'u' 'U' nak nak 0x0433 0x0413 nak nak C
+ 023 'i' 'I' ht ht 0x0448 0x0428 ht ht C
+ 024 'o' 'O' si si 0x0449 0x0429 si si C
+ 025 'p' 'P' dle dle 0x0437 0x0417 dle dle C
+ 026 '[' '{' esc esc 0x0445 0x0425 esc esc O
+ 027 ']' '}' gs gs 0x0457 0x0407 0x044a 0x042a O
028 cr cr nl nl cr cr nl nl O
029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
- 030 'a' 'A' soh soh 1092 1060 soh soh C
- 031 's' 'S' dc3 dc3 1110 1030 1099 1067 C
- 032 'd' 'D' eot eot 1074 1042 eot eot C
- 033 'f' 'F' ack ack 1072 1040 ack ack C
- 034 'g' 'G' bel bel 1087 1055 bel bel C
- 035 'h' 'H' bs bs 1088 1056 bs bs C
- 036 'j' 'J' nl nl 1086 1054 nl nl C
- 037 'k' 'K' vt vt 1083 1051 vt vt C
- 038 'l' 'L' ff ff 1076 1044 ff ff C
- 039 ';' ':' nop nop 1078 1046 nop nop O
- 040 ''' '"' nop nop 1108 1028 1101 1069 O
- 041 '`' '~' nop nop 1169 1168 1105 1025 O
+ 030 'a' 'A' soh soh 0x0444 0x0424 soh soh C
+ 031 's' 'S' dc3 dc3 0x0456 0x0406 0x044b 0x042b C
+ 032 'd' 'D' eot eot 0x0432 0x0412 eot eot C
+ 033 'f' 'F' ack ack 0x0430 0x0410 ack ack C
+ 034 'g' 'G' bel bel 0x043f 0x041f bel bel C
+ 035 'h' 'H' bs bs 0x0440 0x0420 bs bs C
+ 036 'j' 'J' nl nl 0x043e 0x041e nl nl C
+ 037 'k' 'K' vt vt 0x043b 0x041b vt vt C
+ 038 'l' 'L' ff ff 0x0434 0x0414 ff ff C
+ 039 ';' ':' nop nop 0x0436 0x0416 nop nop O
+ 040 ''' '"' nop nop 0x0454 0x0404 0x044d 0x042d O
+ 041 '`' '~' nop nop 0x0491 0x0490 0x0451 0x0401 O
042 lshift lshift lshift lshift lshift lshift lshift lshift O
043 '\' '|' fs fs '\' '|' fs fs O
- 044 'z' 'Z' sub sub 1103 1071 sub sub C
- 045 'x' 'X' can can 1095 1063 can can C
- 046 'c' 'C' etx etx 1089 1057 etx etx C
- 047 'v' 'V' syn syn 1084 1052 syn syn C
- 048 'b' 'B' stx stx 1080 1048 stx stx C
- 049 'n' 'N' so so 1090 1058 so so C
- 050 'm' 'M' cr cr 1100 1068 cr cr C
- 051 ',' '<' nop nop 1073 1041 nop nop O
- 052 '.' '>' nop nop 1102 1070 nop nop O
+ 044 'z' 'Z' sub sub 0x044f 0x042f sub sub C
+ 045 'x' 'X' can can 0x0447 0x0427 can can C
+ 046 'c' 'C' etx etx 0x0441 0x0421 etx etx C
+ 047 'v' 'V' syn syn 0x043c 0x041c syn syn C
+ 048 'b' 'B' stx stx 0x0438 0x0418 stx stx C
+ 049 'n' 'N' so so 0x0442 0x0422 so so C
+ 050 'm' 'M' cr cr 0x044c 0x042c cr cr C
+ 051 ',' '<' nop nop 0x0431 0x0411 nop nop O
+ 052 '.' '>' nop nop 0x044e 0x042e nop nop O
053 '/' '?' nop nop '/' '?' nop nop O
054 rshift rshift rshift rshift rshift rshift rshift rshift O
055 '*' '*' nl nl '*' '*' nl nl O
@@ -148,43 +148,43 @@
141 '=' '+' nop nop '=' '+' nop nop O
142 bs bs del del bs bs del del O
143 ht btab nop nop btab btab nop nop O
- 144 1081 1049 dc1 dc1 'q' 'Q' dc1 dc1 C
- 145 1094 1062 etb etb 'w' 'W' etb etb C
- 146 1091 1059 enq enq 'e' 'E' enq enq C
- 147 1082 1050 dc2 dc2 'r' 'R' dc2 dc2 C
- 148 1077 1045 dc4 dc4 't' 'T' dc4 dc4 C
- 149 1085 1053 em em 'y' 'Y' em em C
- 150 1075 1043 nak nak 'u' 'U' nak nak C
- 151 1096 1064 ht ht 'i' 'I' ht ht C
- 152 1097 1065 si si 'o' 'O' si si C
- 153 1079 1047 dle dle 'p' 'P' dle dle C
- 154 1093 1061 esc esc '[' '{' esc esc C
- 155 1111 1031 gs gs ']' '}' 1098 1066 C
+ 144 0x0439 0x0419 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 0x0446 0x0426 etb etb 'w' 'W' etb etb C
+ 146 0x0443 0x0423 enq enq 'e' 'E' enq enq C
+ 147 0x043a 0x041a dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 0x0435 0x0415 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 0x043d 0x041d em em 'y' 'Y' em em C
+ 150 0x0433 0x0413 nak nak 'u' 'U' nak nak C
+ 151 0x0448 0x0428 ht ht 'i' 'I' ht ht C
+ 152 0x0449 0x0429 si si 'o' 'O' si si C
+ 153 0x0437 0x0417 dle dle 'p' 'P' dle dle C
+ 154 0x0445 0x0425 esc esc '[' '{' esc esc C
+ 155 0x0457 0x0407 gs gs ']' '}' 0x044a 0x042a C
156 cr cr nl nl cr cr nl nl O
157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
- 158 1092 1060 soh soh 'a' 'A' soh soh C
- 159 1110 1030 dc3 dc3 's' 'S' 1099 1067 C
- 160 1074 1042 eot eot 'd' 'D' eot eot C
- 161 1072 1040 ack ack 'f' 'F' ack ack C
- 162 1087 1055 bel bel 'g' 'G' bel bel C
- 163 1088 1056 bs bs 'h' 'H' bs bs C
- 164 1086 1054 nl nl 'j' 'J' nl nl C
- 165 1083 1051 vt vt 'k' 'K' vt vt C
- 166 1076 1044 ff ff 'l' 'L' ff ff C
- 167 1078 1046 nop nop ';' ':' nop nop C
- 168 1108 1028 nop nop ''' '"' 1101 1069 C
- 169 1169 1168 nop nop '`' '~' 1105 1025 C
+ 158 0x0444 0x0424 soh soh 'a' 'A' soh soh C
+ 159 0x0456 0x0406 dc3 dc3 's' 'S' 0x044b 0x042b C
+ 160 0x0432 0x0412 eot eot 'd' 'D' eot eot C
+ 161 0x0430 0x0410 ack ack 'f' 'F' ack ack C
+ 162 0x043f 0x041f bel bel 'g' 'G' bel bel C
+ 163 0x0440 0x0420 bs bs 'h' 'H' bs bs C
+ 164 0x043e 0x041e nl nl 'j' 'J' nl nl C
+ 165 0x043b 0x041b vt vt 'k' 'K' vt vt C
+ 166 0x0434 0x0414 ff ff 'l' 'L' ff ff C
+ 167 0x0436 0x0416 nop nop ';' ':' nop nop C
+ 168 0x0454 0x0404 nop nop ''' '"' 0x044d 0x042d C
+ 169 0x0491 0x0490 nop nop '`' '~' 0x0451 0x0401 C
170 lshift lshift lshift lshift lshift lshift lshift lshift O
171 '\' '|' fs fs '\' '|' fs fs O
- 172 1103 1071 sub sub 'z' 'Z' sub sub C
- 173 1095 1063 can can 'x' 'X' can can C
- 174 1089 1057 etx etx 'c' 'C' etx etx C
- 175 1084 1052 syn syn 'v' 'V' syn syn C
- 176 1080 1048 stx stx 'b' 'B' stx stx C
- 177 1090 1058 so so 'n' 'N' so so C
- 178 1100 1068 cr cr 'm' 'M' cr cr C
- 179 1073 1041 nop nop ',' '<' nop nop C
- 180 1102 1070 nop nop '.' '>' nop nop C
+ 172 0x044f 0x042f sub sub 'z' 'Z' sub sub C
+ 173 0x0447 0x0427 can can 'x' 'X' can can C
+ 174 0x0441 0x0421 etx etx 'c' 'C' etx etx C
+ 175 0x043c 0x041c syn syn 'v' 'V' syn syn C
+ 176 0x0438 0x0418 stx stx 'b' 'B' stx stx C
+ 177 0x0442 0x0422 so so 'n' 'N' so so C
+ 178 0x044c 0x042c cr cr 'm' 'M' cr cr C
+ 179 0x0431 0x0411 nop nop ',' '<' nop nop C
+ 180 0x044e 0x042e nop nop '.' '>' nop nop C
181 '/' '?' nop nop '/' '?' nop nop O
182 rshift rshift rshift rshift rshift rshift rshift rshift O
183 '*' '*' nl nl '*' '*' nl nl O
diff --git a/share/vt/keymaps/ua.shift.alt.kbd b/share/vt/keymaps/ua.shift.alt.kbd
index edf1f25..cef2c27 100644
--- a/share/vt/keymaps/ua.shift.alt.kbd
+++ b/share/vt/keymaps/ua.shift.alt.kbd
@@ -1,13 +1,13 @@
# $FreeBSD$
#
-# keyboard mapping for both Ukrainian and Russian languages, koi8-u charset.
+# keyboard mapping for both Ukrainian and Russian languages
# by sia@lot.cs.kiev.ua
# based on ru.koi8-r.kbd by ache@FreeBSD.org
# some additions by petr@i.am and kunia@i.am
#
# it has 'i', 'ye','yi',"g'" at positions of '-','=','\','`';
# ->`1234567890-=\<-
-# ->­1234567890¦¤§<-
+# ->ґ1234567890ієї<-
# Lwin,Rwin=Meta, Menu=Screensaver
# PrScr=NextScreen, Shift+PrScr=PrevScreen
# Shift+Insert=paste
@@ -18,61 +18,61 @@
000 nop nop nop nop nop nop nop nop O
001 esc esc nop nop esc esc debug nop O
002 '1' '!' nop nop '1' '!' nop nop O
- 003 '2' '@' nul nul '2' '"' 9472 9472 O
+ 003 '2' '@' nul nul '2' '"' 0x2500 0x2500 O
004 '3' '#' nop nop '3' ''' nop nop O
005 '4' '$' nop nop '4' ';' nop nop O
006 '5' '%' nop nop '5' ':' nop nop O
- 007 '6' '^' rs rs '6' ',' 183 183 O
+ 007 '6' '^' rs rs '6' ',' 0xb7 0xb7 O
008 '7' '&' nop nop '7' '.' nop nop O
009 '8' '*' nop nop '8' '*' nop nop O
010 '9' '(' nop nop '9' '(' nop nop O
011 '0' ')' nop nop '0' ')' nop nop O
- 012 '-' '_' ns ns 1110 1030 247 247 O
- 013 '=' '+' nop nop 1108 1028 nop nop O
- 014 bs bs del del bs bs 1066 1066 O
+ 012 '-' '_' ns ns 0x0456 0x0406 0xf7 0xf7 O
+ 013 '=' '+' nop nop 0x0454 0x0404 nop nop O
+ 014 bs bs del del bs bs 0x042a 0x042a O
015 ht btab nop nop ht btab nop nop O
- 016 'q' 'Q' dc1 dc1 1081 1049 9618 9618 C
- 017 'w' 'W' etb etb 1094 1062 8776 8776 C
- 018 'e' 'E' enq enq 1091 1059 9496 9496 C
- 019 'r' 'R' dc2 dc2 1082 1050 9619 9619 C
- 020 't' 'T' dc4 dc4 1077 1045 9632 9632 C
- 021 'y' 'Y' em em 1085 1053 8805 8805 C
- 022 'u' 'U' nak nak 1075 1043 8729 8729 C
- 023 'i' 'I' ht ht 1096 1064 9524 9524 C
- 024 'o' 'O' si si 1097 1065 9616 9616 C
- 025 'p' 'P' dle dle 1079 1047 9617 9617 C
- 026 '[' '{' esc esc 1093 1061 8993 8993 O
- 027 ']' '}' gs gs 1098 1066 178 178 O
- 028 cr cr nl nl cr cr 9532 9532 O
+ 016 'q' 'Q' dc1 dc1 0x0439 0x0419 0x2592 0x2592 C
+ 017 'w' 'W' etb etb 0x0446 0x0426 0x2248 0x2248 C
+ 018 'e' 'E' enq enq 0x0443 0x0423 0x2518 0x2518 C
+ 019 'r' 'R' dc2 dc2 0x043a 0x041a 0x2593 0x2593 C
+ 020 't' 'T' dc4 dc4 0x0435 0x0415 0x25a0 0x25a0 C
+ 021 'y' 'Y' em em 0x043d 0x041d 0x2265 0x2265 C
+ 022 'u' 'U' nak nak 0x0433 0x0413 0x2219 0x2219 C
+ 023 'i' 'I' ht ht 0x0448 0x0428 0x2534 0x2534 C
+ 024 'o' 'O' si si 0x0449 0x0429 0x2590 0x2590 C
+ 025 'p' 'P' dle dle 0x0437 0x0417 0x2591 0x2591 C
+ 026 '[' '{' esc esc 0x0445 0x0425 0x2321 0x2321 O
+ 027 ']' '}' gs gs 0x044a 0x042a 0xb2 0xb2 O
+ 028 cr cr nl nl cr cr 0x253c 0x253c O
029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
- 030 'a' 'A' soh soh 1092 1060 9474 9474 C
- 031 's' 'S' dc3 dc3 1099 1067 8992 8992 C
- 032 'd' 'D' eot eot 1074 1042 9492 9492 C
- 033 'f' 'F' ack ack 1072 1040 9500 9500 C
- 034 'g' 'G' bel bel 1087 1055 9508 9508 C
- 035 'h' 'H' bs bs 1088 1056 9516 9516 C
- 036 'j' 'J' nl nl 1086 1054 9532 9532 C
- 037 'k' 'K' vt vt 1083 1051 9600 9600 C
- 038 'l' 'L' ff ff 1076 1044 9604 9604 C
- 039 ';' ':' nop nop 1078 1046 nop nop O
- 040 ''' '"' nop nop 1101 1069 nop nop O
- 041 '`' '~' nop nop 1169 1168 nop nop O
+ 030 'a' 'A' soh soh 0x0444 0x0424 0x2502 0x2502 C
+ 031 's' 'S' dc3 dc3 0x044b 0x042b 0x2320 0x2320 C
+ 032 'd' 'D' eot eot 0x0432 0x0412 0x2514 0x2514 C
+ 033 'f' 'F' ack ack 0x0430 0x0410 0x251c 0x251c C
+ 034 'g' 'G' bel bel 0x043f 0x041f 0x2524 0x2524 C
+ 035 'h' 'H' bs bs 0x0440 0x0420 0x252c 0x252c C
+ 036 'j' 'J' nl nl 0x043e 0x041e 0x253c 0x253c C
+ 037 'k' 'K' vt vt 0x043b 0x041b 0x2580 0x2580 C
+ 038 'l' 'L' ff ff 0x0434 0x0414 0x2584 0x2584 C
+ 039 ';' ':' nop nop 0x0436 0x0416 nop nop O
+ 040 ''' '"' nop nop 0x044d 0x042d nop nop O
+ 041 '`' '~' nop nop 0x0491 0x0490 nop nop O
042 lshift lshift lshift lshift lshift lshift lshift lshift O
- 043 '\' '|' fs fs 1111 1031 176 176 O
- 044 'z' 'Z' sub sub 1103 1071 160 160 C
- 045 'x' 'X' can can 1095 1063 8804 8804 C
- 046 'c' 'C' etx etx 1089 1057 9488 9488 C
- 047 'v' 'V' syn syn 1084 1052 8730 8730 C
- 048 'b' 'B' stx stx 1080 1048 9484 9484 C
- 049 'n' 'N' so so 1090 1058 9612 9612 C
- 050 'm' 'M' cr cr 1100 1068 9608 9608 C
- 051 ',' '<' nop nop 1073 1041 nop nop O
- 052 '.' '>' nop nop 1102 1070 nop nop O
- 053 '/' '?' nop nop 1105 1025 nop nop O
+ 043 '\' '|' fs fs 0x0457 0x0407 0xb0 0xb0 O
+ 044 'z' 'Z' sub sub 0x044f 0x042f 0xa0 0xa0 C
+ 045 'x' 'X' can can 0x0447 0x0427 0x2264 0x2264 C
+ 046 'c' 'C' etx etx 0x0441 0x0421 0x2510 0x2510 C
+ 047 'v' 'V' syn syn 0x043c 0x041c 0x221a 0x221a C
+ 048 'b' 'B' stx stx 0x0438 0x0418 0x250c 0x250c C
+ 049 'n' 'N' so so 0x0442 0x0422 0x258c 0x258c C
+ 050 'm' 'M' cr cr 0x044c 0x042c 0x2588 0x2588 C
+ 051 ',' '<' nop nop 0x0431 0x0411 nop nop O
+ 052 '.' '>' nop nop 0x044e 0x042e nop nop O
+ 053 '/' '?' nop nop 0x0451 0x0401 nop nop O
054 rshift rshift rshift rshift rshift rshift rshift rshift O
- 055 '*' '*' nl nl '*' '*' 9532 9532 O
+ 055 '*' '*' nl nl '*' '*' 0x253c 0x253c O
056 lalt lalt lalt lalt lalt lalt lalt lalt O
- 057 ' ' ' ' ' ' ' ' ' ' ' ' 9552 9552 O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' 0x2550 0x2550 O
058 alock clock clock clock clock clock clock clock O
059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
@@ -86,27 +86,27 @@
068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
069 nlock nlock nlock nlock nlock nlock nlock nlock O
070 slock slock slock slock slock slock slock slock O
- 071 fkey49 '7' '7' '7' 1031 1031 1031 1031 N
- 072 fkey50 '8' '8' '8' 9574 9574 9574 9574 N
- 073 fkey51 '9' '9' '9' 9575 9575 9575 9575 N
- 074 fkey52 '-' '-' '-' 1169 1169 1169 1169 N
- 075 fkey53 '4' '4' '4' 1028 1028 1028 1028 N
- 076 fkey48 '5' '5' '5' 9571 9571 9571 9571 N
- 077 fkey55 '6' '6' '6' 1030 1030 1030 1030 N
- 078 fkey56 '+' '+' '+' 9562 9562 9562 9562 N
- 079 fkey57 '1' '1' '1' 9568 9568 9568 9568 N
- 080 fkey58 '2' '2' '2' 9569 9569 9569 9569 N
- 081 fkey59 '3' '3' '3' 1025 1025 1025 1025 N
- 082 fkey60 '0' '0' '0' 9567 9567 9567 9567 N
- 083 fkey54 '.' del del 1066 1066 boot halt N
+ 071 fkey49 '7' '7' '7' 0x0407 0x0407 0x0407 0x0407 N
+ 072 fkey50 '8' '8' '8' 0x2566 0x2566 0x2566 0x2566 N
+ 073 fkey51 '9' '9' '9' 0x2567 0x2567 0x2567 0x2567 N
+ 074 fkey52 '-' '-' '-' 0x0491 0x0491 0x0491 0x0491 N
+ 075 fkey53 '4' '4' '4' 0x0404 0x0404 0x0404 0x0404 N
+ 076 fkey48 '5' '5' '5' 0x2563 0x2563 0x2563 0x2563 N
+ 077 fkey55 '6' '6' '6' 0x0406 0x0406 0x0406 0x0406 N
+ 078 fkey56 '+' '+' '+' 0x255a 0x255a 0x255a 0x255a N
+ 079 fkey57 '1' '1' '1' 0x2560 0x2560 0x2560 0x2560 N
+ 080 fkey58 '2' '2' '2' 0x2561 0x2561 0x2561 0x2561 N
+ 081 fkey59 '3' '3' '3' 0x0401 0x0401 0x0401 0x0401 N
+ 082 fkey60 '0' '0' '0' 0x255f 0x255f 0x255f 0x255f N
+ 083 fkey54 '.' del del 0x042a 0x042a boot halt N
084 alock alock alock alock alock alock alock alock O
085 nop nop nop nop nop nop nop nop O
086 nop nop nop nop nop nop nop nop O
087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
- 089 cr cr nl nl 9608 9608 9532 9532 O
+ 089 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
090 alock rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
- 091 '/' '/' nop nop 9566 9566 nop nop O
+ 091 '/' '/' nop nop 0x255e 0x255e nop nop O
092 nscr pscr debug nop nop nop nop nop O
093 ralt ralt ralt ralt ralt ralt ralt ralt O
094 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
@@ -146,61 +146,61 @@
128 nop nop nop nop nop nop nop nop O
129 esc esc nop nop esc esc debug nop O
130 '1' '!' nop nop '1' '!' nop nop O
- 131 '2' '"' nul nul '2' '@' 9472 9472 O
+ 131 '2' '"' nul nul '2' '@' 0x2500 0x2500 O
132 '3' ''' nop nop '3' '#' nop nop O
133 '4' ';' nop nop '4' '$' nop nop O
134 '5' ':' nop nop '5' '%' nop nop O
- 135 '6' ',' rs rs '6' '^' 183 183 O
+ 135 '6' ',' rs rs '6' '^' 0xb7 0xb7 O
136 '7' '.' nop nop '7' '&' nop nop O
137 '8' '*' nop nop '8' '*' nop nop O
138 '9' '(' nop nop '9' '(' nop nop O
139 '0' ')' nop nop '0' ')' nop nop O
- 140 1110 1030 ns ns '-' '_' 247 247 O
- 141 1108 1028 nop nop '=' '+' nop nop O
- 142 bs bs del del bs bs 1066 1066 O
+ 140 0x0456 0x0406 ns ns '-' '_' 0xf7 0xf7 O
+ 141 0x0454 0x0404 nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs 0x042a 0x042a O
143 ht btab nop nop ht btab nop nop O
- 144 1081 1049 dc1 dc1 'q' 'Q' 9618 9618 C
- 145 1094 1062 etb etb 'w' 'W' 8776 8776 C
- 146 1091 1059 enq enq 'e' 'E' 9496 9496 C
- 147 1082 1050 dc2 dc2 'r' 'R' 9619 9619 C
- 148 1077 1045 dc4 dc4 't' 'T' 9632 9632 C
- 149 1085 1053 em em 'y' 'Y' 8805 8805 C
- 150 1075 1043 nak nak 'u' 'U' 8729 8729 C
- 151 1096 1064 ht ht 'i' 'I' 9524 9524 C
- 152 1097 1065 si si 'o' 'O' 9616 9616 C
- 153 1079 1047 dle dle 'p' 'P' 9617 9617 C
- 154 1093 1061 esc esc '[' '{' 8993 8993 C
- 155 1098 1066 gs gs ']' '}' 178 178 C
- 156 cr cr nl nl cr cr 9532 9532 O
+ 144 0x0439 0x0419 dc1 dc1 'q' 'Q' 0x2592 0x2592 C
+ 145 0x0446 0x0426 etb etb 'w' 'W' 0x2248 0x2248 C
+ 146 0x0443 0x0423 enq enq 'e' 'E' 0x2518 0x2518 C
+ 147 0x043a 0x041a dc2 dc2 'r' 'R' 0x2593 0x2593 C
+ 148 0x0435 0x0415 dc4 dc4 't' 'T' 0x25a0 0x25a0 C
+ 149 0x043d 0x041d em em 'y' 'Y' 0x2265 0x2265 C
+ 150 0x0433 0x0413 nak nak 'u' 'U' 0x2219 0x2219 C
+ 151 0x0448 0x0428 ht ht 'i' 'I' 0x2534 0x2534 C
+ 152 0x0449 0x0429 si si 'o' 'O' 0x2590 0x2590 C
+ 153 0x0437 0x0417 dle dle 'p' 'P' 0x2591 0x2591 C
+ 154 0x0445 0x0425 esc esc '[' '{' 0x2321 0x2321 C
+ 155 0x044a 0x042a gs gs ']' '}' 0xb2 0xb2 C
+ 156 cr cr nl nl cr cr 0x253c 0x253c O
157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
- 158 1092 1060 soh soh 'a' 'A' 9474 9474 C
- 159 1099 1067 dc3 dc3 's' 'S' 8992 8992 C
- 160 1074 1042 eot eot 'd' 'D' 9492 9492 C
- 161 1072 1040 ack ack 'f' 'F' 9500 9500 C
- 162 1087 1055 bel bel 'g' 'G' 9508 9508 C
- 163 1088 1056 bs bs 'h' 'H' 9516 9516 C
- 164 1086 1054 nl nl 'j' 'J' 9532 9532 C
- 165 1083 1051 vt vt 'k' 'K' 9600 9600 C
- 166 1076 1044 ff ff 'l' 'L' 9604 9604 C
- 167 1078 1046 nop nop ';' ':' nop nop C
- 168 1101 1069 nop nop ''' '"' nop nop C
- 169 1169 1168 nop nop '`' '~' nop nop C
+ 158 0x0444 0x0424 soh soh 'a' 'A' 0x2502 0x2502 C
+ 159 0x044b 0x042b dc3 dc3 's' 'S' 0x2320 0x2320 C
+ 160 0x0432 0x0412 eot eot 'd' 'D' 0x2514 0x2514 C
+ 161 0x0430 0x0410 ack ack 'f' 'F' 0x251c 0x251c C
+ 162 0x043f 0x041f bel bel 'g' 'G' 0x2524 0x2524 C
+ 163 0x0440 0x0420 bs bs 'h' 'H' 0x252c 0x252c C
+ 164 0x043e 0x041e nl nl 'j' 'J' 0x253c 0x253c C
+ 165 0x043b 0x041b vt vt 'k' 'K' 0x2580 0x2580 C
+ 166 0x0434 0x0414 ff ff 'l' 'L' 0x2584 0x2584 C
+ 167 0x0436 0x0416 nop nop ';' ':' nop nop C
+ 168 0x044d 0x042d nop nop ''' '"' nop nop C
+ 169 0x0491 0x0490 nop nop '`' '~' nop nop C
170 lshift lshift lshift lshift lshift lshift lshift lshift O
- 171 1111 1031 fs fs '\' '|' 176 176 O
- 172 1103 1071 sub sub 'z' 'Z' 160 160 C
- 173 1095 1063 can can 'x' 'X' 8804 8804 C
- 174 1089 1057 etx etx 'c' 'C' 9488 9488 C
- 175 1084 1052 syn syn 'v' 'V' 8730 8730 C
- 176 1080 1048 stx stx 'b' 'B' 9484 9484 C
- 177 1090 1058 so so 'n' 'N' 9612 9612 C
- 178 1100 1068 cr cr 'm' 'M' 9608 9608 C
- 179 1073 1041 nop nop ',' '<' nop nop C
- 180 1102 1070 nop nop '.' '>' nop nop C
- 181 1105 1025 nop nop '/' '?' nop nop O
+ 171 0x0457 0x0407 fs fs '\' '|' 0xb0 0xb0 O
+ 172 0x044f 0x042f sub sub 'z' 'Z' 0xa0 0xa0 C
+ 173 0x0447 0x0427 can can 'x' 'X' 0x2264 0x2264 C
+ 174 0x0441 0x0421 etx etx 'c' 'C' 0x2510 0x2510 C
+ 175 0x043c 0x041c syn syn 'v' 'V' 0x221a 0x221a C
+ 176 0x0438 0x0418 stx stx 'b' 'B' 0x250c 0x250c C
+ 177 0x0442 0x0422 so so 'n' 'N' 0x258c 0x258c C
+ 178 0x044c 0x042c cr cr 'm' 'M' 0x2588 0x2588 C
+ 179 0x0431 0x0411 nop nop ',' '<' nop nop C
+ 180 0x044e 0x042e nop nop '.' '>' nop nop C
+ 181 0x0451 0x0401 nop nop '/' '?' nop nop O
182 rshift rshift rshift rshift rshift rshift rshift rshift O
- 183 '*' '*' nl nl '*' '*' 9532 9532 O
+ 183 '*' '*' nl nl '*' '*' 0x253c 0x253c O
184 lalt lalt lalt lalt lalt lalt lalt lalt O
- 185 ' ' ' ' ' ' ' ' ' ' ' ' 9552 9552 O
+ 185 ' ' ' ' ' ' ' ' ' ' ' ' 0x2550 0x2550 O
186 alock clock clock clock clock clock clock clock O
187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
@@ -214,27 +214,27 @@
196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
197 nlock nlock nlock nlock nlock nlock nlock nlock O
198 slock slock slock slock slock slock slock slock O
- 199 fkey49 '7' '7' '7' 1031 1031 1031 1031 N
- 200 fkey50 '8' '8' '8' 9574 9574 9574 9574 N
- 201 fkey51 '9' '9' '9' 9575 9575 9575 9575 N
- 202 fkey52 '-' '-' '-' 1169 1169 1169 1169 N
- 203 fkey53 '4' '4' '4' 1028 1028 1028 1028 N
- 204 fkey48 '5' '5' '5' 9571 9571 9571 9571 N
- 205 fkey55 '6' '6' '6' 1030 1030 1030 1030 N
- 206 fkey56 '+' '+' '+' 9562 9562 9562 9562 N
- 207 fkey57 '1' '1' '1' 9568 9568 9568 9568 N
- 208 fkey58 '2' '2' '2' 9569 9569 9569 9569 N
- 209 fkey59 '3' '3' '3' 1025 1025 1025 1025 N
- 210 fkey60 '0' '0' '0' 9567 9567 9567 9567 N
- 211 del '.' del del 1066 1066 boot halt N
+ 199 fkey49 '7' '7' '7' 0x0407 0x0407 0x0407 0x0407 N
+ 200 fkey50 '8' '8' '8' 0x2566 0x2566 0x2566 0x2566 N
+ 201 fkey51 '9' '9' '9' 0x2567 0x2567 0x2567 0x2567 N
+ 202 fkey52 '-' '-' '-' 0x0491 0x0491 0x0491 0x0491 N
+ 203 fkey53 '4' '4' '4' 0x0404 0x0404 0x0404 0x0404 N
+ 204 fkey48 '5' '5' '5' 0x2563 0x2563 0x2563 0x2563 N
+ 205 fkey55 '6' '6' '6' 0x0406 0x0406 0x0406 0x0406 N
+ 206 fkey56 '+' '+' '+' 0x255a 0x255a 0x255a 0x255a N
+ 207 fkey57 '1' '1' '1' 0x2560 0x2560 0x2560 0x2560 N
+ 208 fkey58 '2' '2' '2' 0x2561 0x2561 0x2561 0x2561 N
+ 209 fkey59 '3' '3' '3' 0x0401 0x0401 0x0401 0x0401 N
+ 210 fkey60 '0' '0' '0' 0x255f 0x255f 0x255f 0x255f N
+ 211 del '.' del del 0x042a 0x042a boot halt N
212 alock alock alock alock alock alock alock alock O
213 nop nop nop nop nop nop nop nop O
214 nop nop nop nop nop nop nop nop O
215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
- 217 cr cr nl nl 9608 9608 9532 9532 O
+ 217 cr cr nl nl 0x2588 0x2588 0x253c 0x253c O
218 alock rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
- 219 '/' '/' nop nop 9566 9566 nop nop O
+ 219 '/' '/' nop nop 0x255e 0x255e nop nop O
220 nscr pscr debug nop nop nop nop nop O
221 ralt ralt ralt ralt ralt ralt ralt ralt O
222 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
diff --git a/share/vt/keymaps/uk.capsctrl.kbd b/share/vt/keymaps/uk.capsctrl.kbd
new file mode 100644
index 0000000..65d606b
--- /dev/null
+++ b/share/vt/keymaps/uk.capsctrl.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '`' '`' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 0xa3 nop nop '#' '#' nop nop O
+ 005 '4' '$' 0xa4 0xa4 '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '^' '^' rs rs O
+ 008 '7' '&' nop nop '[' '[' esc esc O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop ']' ']' gs gs O
+ 011 '0' ')' nop nop '{' '{' nop nop O
+ 012 '-' '_' us us '|' '|' us us O
+ 013 '=' '+' nop nop '}' '}' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '@' nul nul ''' '@' nul nul O
+ 041 '`' 0xac nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' nop nop '#' '~' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/uk.dvorak.kbd b/share/vt/keymaps/uk.dvorak.kbd
new file mode 100644
index 0000000..ec547d0
--- /dev/null
+++ b/share/vt/keymaps/uk.dvorak.kbd
@@ -0,0 +1,121 @@
+# $FreeBSD$
+#
+# A Dvorak keyboard for UK English
+#
+# Based on us.dvorak.kbd and uk.iso.kbd, and on the X.org GB layout, Dvorak
+# variant.
+#
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' 0xa3 nop nop '3' 0xa3 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '[' '{' esc esc '[' '{' esc esc O
+ 013 ']' '}' gs gs ']' '}' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ''' '@' nop nop ''' '@' nop nop O
+ 017 ',' '<' nop nop ',' '<' nop nop O
+ 018 '.' '>' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 '/' '?' nop nop '/' '?' nop nop O
+ 027 '=' '+' nop nop '=' '+' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 'o' 'O' si si C
+ 032 'e' 'E' enq enq 'e' 'E' enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '`' '~' nop nop '`' 0xac nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' fs fs '#' '~' fs fs O
+ 044 ';' ':' nop nop ';' ':' nop nop O
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+
diff --git a/share/vt/keymaps/uk.kbd b/share/vt/keymaps/uk.kbd
new file mode 100644
index 0000000..f2a8a40
--- /dev/null
+++ b/share/vt/keymaps/uk.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '`' '`' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 0xa3 nop nop '#' '#' nop nop O
+ 005 '4' '$' 0xa4 0xa4 '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '^' '^' rs rs O
+ 008 '7' '&' nop nop '[' '[' esc esc O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop ']' ']' gs gs O
+ 011 '0' ')' nop nop '{' '{' nop nop O
+ 012 '-' '_' us us '|' '|' us us O
+ 013 '=' '+' nop nop '}' '}' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 0x20ac 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '@' nul nul ''' '@' nul nul O
+ 041 '`' 0xac nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' nop nop '#' '~' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.acc.kbd b/share/vt/keymaps/us.acc.kbd
new file mode 100644
index 0000000..edf9d90
--- /dev/null
+++ b/share/vt/keymaps/us.acc.kbd
@@ -0,0 +1,137 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug debug O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' dcir rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' drin nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nscr nscr ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop dacu duml nop nop O
+ 041 '`' '~' nop nop dgra dtil nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop dced '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul nul ' ' ' ' susp susp O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr nop nop debug debug debug debug O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 saver saver susp susp nop nop susp susp O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 0xe0 ) ( 'A' 0xc0 ) ( 'e' 0xe8 ) ( 'E' 0xc8 )
+ ( 'i' 0xec ) ( 'I' 0xcc ) ( 'o' 0xf2 ) ( 'O' 0xd2 )
+ ( 'u' 0xf9 ) ( 'U' 0xd9 )
+
+ dacu 0xb4 ( 'a' 0xe1 ) ( 'A' 0xc1 ) ( 'e' 0xe9 ) ( 'E' 0xc9 )
+ ( 'i' 0xed ) ( 'I' 0xcd ) ( 'o' 0xf3 ) ( 'O' 0xd3 )
+ ( 'u' 0xfa ) ( 'U' 0xda ) ( 'y' 0xfd ) ( 'Y' 0xdd )
+
+ dcir '^' ( 'a' 0xe2 ) ( 'A' 0xc2 ) ( 'e' 0xea ) ( 'E' 0xca )
+ ( 'i' 0xee ) ( 'I' 0xce ) ( 'o' 0xf4 ) ( 'O' 0xd4 )
+ ( 'u' 0xfb ) ( 'U' 0xdb )
+
+ dtil '~' ( 'a' 0xe3 ) ( 'A' 0xc3 ) ( 'n' 0xf1 ) ( 'N' 0xd1 )
+ ( 'o' 0xf5 ) ( 'O' 0xd5 )
+
+ duml 0xa8 ( 'a' 0xe4 ) ( 'A' 0xc4 ) ( 'e' 0xeb ) ( 'E' 0xcb )
+ ( 'i' 0xef ) ( 'I' 0xcf ) ( 'o' 0xf6 ) ( 'O' 0xd6 )
+ ( 'u' 0xfc ) ( 'U' 0xdc ) ( 'y' 0xff )
+
+ drin 0xb0 ( 'a' 0xe5 ) ( 'A' 0xc5 )
+
+ dced 0xb8 ( 'c' 0xe7 ) ( 'C' 0xc7 )
diff --git a/share/vt/keymaps/us.ctrl.kbd b/share/vt/keymaps/us.ctrl.kbd
new file mode 100644
index 0000000..58b66f3
--- /dev/null
+++ b/share/vt/keymaps/us.ctrl.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.dvorak.kbd b/share/vt/keymaps/us.dvorak.kbd
new file mode 100644
index 0000000..ae7a57d
--- /dev/null
+++ b/share/vt/keymaps/us.dvorak.kbd
@@ -0,0 +1,123 @@
+# A Dvorak keyboard for US English
+#
+# There are some minor variations, but this seems like the most
+# common layout. I personally use one with three more pairs swapped:
+# esc <-> `~, clock <-> lctrl, and =+ <-> \| (supplied as
+# "us.dvorakx.kbd").
+#
+# -Satoshi
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '[' '{' esc esc '[' '{' esc esc O
+ 013 ']' '}' gs gs ']' '}' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ''' '"' nop nop ''' '"' nop nop O
+ 017 ',' '<' nop nop ',' '<' nop nop O
+ 018 '.' '>' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 '/' '?' nop nop '/' '?' nop nop O
+ 027 '=' '+' nop nop '=' '+' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 'o' 'O' si si C
+ 032 'e' 'E' enq enq 'e' 'E' enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 ';' ':' nop nop ';' ':' nop nop O
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.dvorakl.kbd b/share/vt/keymaps/us.dvorakl.kbd
new file mode 100644
index 0000000..50334c2
--- /dev/null
+++ b/share/vt/keymaps/us.dvorakl.kbd
@@ -0,0 +1,116 @@
+# A left handed Dvorak keyboard for US English
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '[' '{' esc esc '[' '{' esc esc O
+ 003 ']' '}' gs gs ']' '}' gs gs O
+ 004 '/' '?' nop nop '/' '?' nop nop O
+ 005 'p' 'P' dle dle 'p' 'P' dle dle C
+ 006 'f' 'F' ack ack 'f' 'F' ack ack C
+ 007 'm' 'M' cr cr 'm' 'M' cr cr C
+ 008 'l' 'L' ff ff 'l' 'L' ff ff C
+ 009 'j' 'J' nl nl 'j' 'J' nl nl C
+ 010 '4' '$' nop nop '4' '$' nop nop O
+ 011 '3' '#' nop nop '3' '#' nop nop O
+ 012 '2' '@' nul nul '2' '@' nul nul O
+ 013 '1' '!' nop nop '1' '!' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ';' ':' nop nop ';' ':' nop nop O
+ 017 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 018 'b' 'B' stx stx 'b' 'B' stx stx C
+ 019 'y' 'Y' em em 'y' 'Y' em em C
+ 020 'u' 'U' nak nak 'u' 'U' nak nak C
+ 021 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 022 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 023 'o' 'O' si si 'o' 'O' si si C
+ 024 '.' '>' nop nop '.' '>' nop nop O
+ 025 '6' '^' rs rs '6' '^' rs rs O
+ 026 '5' '%' nop nop '5' '%' nop nop O
+ 027 '=' '+' nop nop '=' '+' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 '-' '_' us us '-' '_' us us O
+ 031 'k' 'K' vt vt 'k' 'K' vt vt C
+ 032 'c' 'C' etx etx 'c' 'C' etx etx C
+ 033 'd' 'D' eot eot 'd' 'D' eot eot C
+ 034 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'e' 'E' enq enq 'e' 'E' enq enq C
+ 037 'a' 'A' soh soh 'a' 'A' soh soh C
+ 038 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 039 '8' '*' nop nop '8' '*' nop nop O
+ 040 '7' '&' nop nop '7' '&' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 ''' '"' nop nop ''' '"' nop nop O
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'g' 'G' bel bel 'g' 'G' bel bel C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'w' 'W' etb etb 'w' 'W' etb etb C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'i' 'I' ht ht 'i' 'I' ht ht C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '0' ')' nop nop '0' ')' nop nop O
+ 053 '9' '(' nop nop '9' '(' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.dvorakp.kbd b/share/vt/keymaps/us.dvorakp.kbd
new file mode 100644
index 0000000..ff504c2
--- /dev/null
+++ b/share/vt/keymaps/us.dvorakp.kbd
@@ -0,0 +1,116 @@
+# A Programmer Dvorak keyboard for US English
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '%' nop nop '&' '%' nop nop O
+ 003 '[' '7' nul nul '[' '7' nul nul O
+ 004 '{' '5' nop nop '{' '5' nop nop O
+ 005 '}' '3' nop nop '}' '3' nop nop O
+ 006 '(' '1' nop nop '(' '1' nop nop O
+ 007 '=' '9' rs rs '=' '9' rs rs O
+ 008 '*' '0' nop nop '*' '0' nop nop O
+ 009 ')' '2' nop nop ')' '2' nop nop O
+ 010 '+' '4' nop nop '+' '4' nop nop O
+ 011 ']' '6' nop nop ']' ')' nop nop O
+ 012 '!' '8' esc esc '!' '8' esc esc O
+ 013 '#' '`' gs gs '#' '`' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ';' ':' nop nop ';' ':' nop nop O
+ 017 ',' '<' nop nop ',' '<' nop nop O
+ 018 '.' '>' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 '/' '?' nop nop '/' '?' nop nop O
+ 027 '@' '^' nop nop '@' '^' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 'o' 'O' si si C
+ 032 'e' 'E' enq enq 'e' 'E' enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '$' '~' nop nop '$' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 ''' '"' nop nop ''' '"' nop nop O
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.dvorakr.kbd b/share/vt/keymaps/us.dvorakr.kbd
new file mode 100644
index 0000000..54ce39b
--- /dev/null
+++ b/share/vt/keymaps/us.dvorakr.kbd
@@ -0,0 +1,116 @@
+# A right handed Dvorak keyboard for US English
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 'j' 'J' nl nl 'j' 'J' nl nl C
+ 007 'l' 'L' ff ff 'l' 'L' ff ff C
+ 008 'm' 'M' cr cr 'm' 'M' cr cr C
+ 009 'f' 'F' ack ack 'f' 'F' ack ack C
+ 010 'p' 'P' dle dle 'p' 'P' dle dle C
+ 011 '/' '?' nop nop '/' '?' nop nop O
+ 012 '[' '{' esc esc '[' '{' esc esc O
+ 013 ']' '}' gs gs ']' '}' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 '5' '%' nop nop '5' '%' nop nop O
+ 017 '6' '^' rs rs '6' '^' rs rs O
+ 018 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 019 '.' '>' nop nop '.' '>' nop nop O
+ 020 'o' 'O' si si 'o' 'O' si si C
+ 021 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 022 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 023 'u' 'U' nak nak 'u' 'U' nak nak C
+ 024 'y' 'Y' em em 'y' 'Y' em em C
+ 025 'b' 'B' stx stx 'b' 'B' stx stx C
+ 026 ';' ':' nop nop ';' ':' nop nop O
+ 027 '=' '+' nop nop '=' '+' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 '7' '&' nop nop '7' '&' nop nop O
+ 031 '8' '*' nop nop '8' '*' nop nop O
+ 032 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 033 'a' 'A' soh soh 'a' 'A' soh soh C
+ 034 'e' 'E' enq enq 'e' 'E' enq enq C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 037 'd' 'D' eot eot 'd' 'D' eot eot C
+ 038 'c' 'C' etx etx 'c' 'C' etx etx C
+ 039 'k' 'K' vt vt 'k' 'K' vt vt C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 '9' '(' nop nop '9' '(' nop nop O
+ 045 '0' ')' nop nop '0' ')' nop nop O
+ 046 'x' 'X' can can 'x' 'X' can can C
+ 047 ',' '<' nop nop ',' '<' nop nop O
+ 048 'i' 'I' ht ht 'i' 'I' ht ht C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'w' 'W' etb etb 'w' 'W' etb etb C
+ 051 'v' 'V' syn syn 'v' 'V' syn syn C
+ 052 'g' 'G' bel bel 'g' 'G' bel bel C
+ 053 ''' '"' nop nop ''' '"' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.dvorakx.kbd b/share/vt/keymaps/us.dvorakx.kbd
new file mode 100644
index 0000000..75ef795
--- /dev/null
+++ b/share/vt/keymaps/us.dvorakx.kbd
@@ -0,0 +1,121 @@
+# A Dvorak keyboard for US English
+#
+# This is the version that I use. For a more "common" (or so I
+# think) layout, try "us.dvorak.kbd".
+#
+# -Satoshi
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 '`' '~' nop nop '`' '~' nop nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '[' '{' esc esc '[' '{' esc esc O
+ 013 ']' '}' gs gs ']' '}' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ''' '"' nop nop ''' '"' nop nop O
+ 017 ',' '<' nop nop ',' '<' nop nop O
+ 018 '.' '>' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 '/' '?' nop nop '/' '?' nop nop O
+ 027 '\' '|' fs fs '\' '|' fs fs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 clock clock clock clock clock clock clock clock O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 'o' 'O' si si C
+ 032 'e' 'E' enq enq 'e' 'E' enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 esc esc nop nop esc esc debug nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '=' '+' nop nop '=' '+' nop nop O
+ 044 ';' ':' nop nop ';' ':' nop nop O
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.emacs.kbd b/share/vt/keymaps/us.emacs.kbd
new file mode 100644
index 0000000..e5852d9
--- /dev/null
+++ b/share/vt/keymaps/us.emacs.kbd
@@ -0,0 +1,111 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc esc esc O
+ 002 '1' '!' nop nop 0xb1 0xa1 nop nop O
+ 003 '2' '@' nul nul 0xb2 0xc0 0x80 0x80 O
+ 004 '3' '#' nop nop 0xb3 0xa3 nop nop O
+ 005 '4' '$' nop nop 0xb4 0xa4 nop nop O
+ 006 '5' '%' nop nop 0xb5 0xa5 nop nop O
+ 007 '6' '^' rs rs 0xb6 0xde 0x9e 0x9e O
+ 008 '7' '&' nop nop 0xb7 0xa6 nop nop O
+ 009 '8' '*' nop nop 0xb8 0xaa nop nop O
+ 010 '9' '(' nop nop 0xb9 0xa8 nop nop O
+ 011 '0' ')' nop nop 0xb0 0xa9 nop nop O
+ 012 '-' '_' us us 0xad 0xdf 0x9f 0x9f O
+ 013 '=' '+' nop nop 0xbd 0xab nop nop O
+ 014 del del bs bs 0xff 0xff 0x88 0x88 O
+ 015 ht ht ht ht 0x89 0x89 0x89 0x89 O
+ 016 'q' 'Q' dc1 dc1 0xf1 0xd1 0x91 0x91 C
+ 017 'w' 'W' etb etb 0xf7 0xd7 0x97 0x97 C
+ 018 'e' 'E' enq enq 0xe5 0xc5 0x85 0x85 C
+ 019 'r' 'R' dc2 dc2 0xf2 0xd2 0x92 0x92 C
+ 020 't' 'T' dc4 dc4 0xf4 0xd4 0x94 0x94 C
+ 021 'y' 'Y' em em 0xf9 0xd9 0x99 0x99 C
+ 022 'u' 'U' nak nak 0xf5 0xd5 0x95 0x95 C
+ 023 'i' 'I' ht ht 0xe9 0xc9 0x89 0x89 C
+ 024 'o' 'O' si si 0xef 0xcf 0x8f 0x8f C
+ 025 'p' 'P' dle dle 0xf0 0xd0 0x90 0x90 C
+ 026 '[' '{' esc esc 0xdb 0xfb 0x9b 0x9b O
+ 027 ']' '}' gs gs 0xdd 0xfd 0x9d 0x9d O
+ 028 cr cr nl nl 0x8d 0x8d 0x8a 0x8a O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 0xe1 0xc1 0x81 0x81 C
+ 031 's' 'S' dc3 dc3 0xf3 0xd3 0x93 0x93 C
+ 032 'd' 'D' eot eot 0xe4 0xc4 0x84 0x84 C
+ 033 'f' 'F' ack ack 0xe6 0xc6 0x86 0x86 C
+ 034 'g' 'G' bel bel 0xe7 0xc7 0x87 0x87 C
+ 035 'h' 'H' bs bs 0xe8 0xc8 0x88 0x88 C
+ 036 'j' 'J' nl nl 0xea 0xca 0x8a 0x8a C
+ 037 'k' 'K' vt vt 0xeb 0xcb 0x8b 0x8b C
+ 038 'l' 'L' ff ff 0xec 0xcc 0x8c 0x8c C
+ 039 ';' ':' nop nop 0xbb 0xba nop nop O
+ 040 ''' '"' nop nop 0xa7 0xa2 nop nop O
+ 041 '`' '~' nop nop 0xe0 0xfe nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 0xdc 0xfc 0x9c 0x9c O
+ 044 'z' 'Z' sub sub 0xfa 0xda 0x9a 0x9a C
+ 045 'x' 'X' can can 0xf8 0xd8 0x98 0x98 C
+ 046 'c' 'C' etx etx 0xe3 0xc3 0x83 0x83 C
+ 047 'v' 'V' syn syn 0xf6 0xd6 0x96 0x96 C
+ 048 'b' 'B' stx stx 0xe2 0xc2 0x82 0x82 C
+ 049 'n' 'N' so so 0xee 0xce 0x8e 0x8e C
+ 050 'm' 'M' cr cr 0xed 0xcd 0x8d 0x8d C
+ 051 ',' '<' nop nop 0xac 0xbc nop nop O
+ 052 '.' '>' nop nop 0xae 0xbe nop nop O
+ 053 '/' '?' nop nop 0xaf 0xbf nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 0xaa 0xaa 0x8a 0x8a O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul nul 0xa0 0xa0 0x80 0x80 O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 0xb7 0xb7 0xb7 0xb7 N
+ 072 fkey50 '8' '8' '8' 0xb8 0xb8 0xb8 0xb8 N
+ 073 fkey51 '9' '9' '9' 0xb9 0xb9 0xb9 0xb9 N
+ 074 fkey52 '-' '-' '-' 0xad 0xad 0xad 0xad N
+ 075 fkey53 '4' '4' '4' 0xb4 0xb4 0xb4 0xb4 N
+ 076 fkey54 '5' '5' '5' 0xb5 0xb5 0xb5 0xb5 N
+ 077 fkey55 '6' '6' '6' 0xb6 0xb6 0xb6 0xb6 N
+ 078 fkey56 '+' '+' '+' 0xab 0xab 0xab 0xab N
+ 079 fkey57 '1' '1' '1' 0xb1 0xb1 0xb1 0xb1 N
+ 080 fkey58 '2' '2' '2' 0xb2 0xb2 0xb2 0xb2 N
+ 081 fkey59 '3' '3' '3' 0xb3 0xb3 0xb3 0xb3 N
+ 082 fkey60 '0' '0' '0' 0xb0 0xb0 0xb0 0xb0 N
+ 083 nop '.' '.' '.' 0xae 0xae 0xae 0xae N
+ 084 us us us us us us us us O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 nop cr cr cr 0x8d 0x8d 0x8d 0x8d N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 nop '/' '/' '/' 0xaf 0xaf 0xaf 0xaf N
+ 092 nop '*' '*' '*' 0xaa 0xaa 0xaa 0xaa N
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 '7' '7' '7' 0xb7 0xb7 0xb7 0xb7 N
+ 095 fkey50 '8' '8' '8' 0xb8 0xb8 0xb8 0xb8 N
+ 096 fkey51 '9' '9' '9' 0xb9 0xb9 0xb9 0xb9 N
+ 097 fkey53 '4' '4' '4' 0xb4 0xb4 0xb4 0xb4 N
+ 098 fkey55 '6' '6' '6' 0xb6 0xb6 0xb6 0xb6 N
+ 099 fkey57 '1' '1' '1' 0xb1 0xb1 0xb1 0xb1 N
+ 100 fkey58 '2' '2' '2' 0xb2 0xb2 0xb2 0xb2 N
+ 101 fkey59 '3' '3' '3' 0xb3 0xb3 0xb3 0xb3 N
+ 102 fkey60 '0' '0' '0' 0xb0 0xb0 0xb0 0xb0 N
+ 103 fkey54 '5' '5' '5' 0xb5 0xb5 0xb5 0xb5 N
+ 104 slock slock slock slock slock slock slock slock O
+ 105 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.kbd b/share/vt/keymaps/us.kbd
new file mode 100644
index 0000000..e213392
--- /dev/null
+++ b/share/vt/keymaps/us.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/vt/keymaps/us.unix.kbd b/share/vt/keymaps/us.unix.kbd
new file mode 100644
index 0000000..b883eab
--- /dev/null
+++ b/share/vt/keymaps/us.unix.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 '`' '~' nop nop '`' '~' debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 del del bs bs del del bs bs O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 clock clock clock clock clock clock clock clock O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 esc esc esc esc esc esc debug esc O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 bs '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 bs bs fkey61 fkey61 bs bs boot boot O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/zoneinfo/Makefile b/share/zoneinfo/Makefile
index bccea5e..95c61e5 100644
--- a/share/zoneinfo/Makefile
+++ b/share/zoneinfo/Makefile
@@ -17,15 +17,15 @@
# $ cd ~/svn/vendor/tzdata
# $ svn cp svn+ssh://svn.freebsd.org/base/vendor/tzdata/dist \
# svn+ssh://svn.freebsd.org/base/vendor/tzdata/tzdata2008X
-# $ svn update # Commit message: "Tag of tzdata2008X"
+# $ svn commit # Commit message: "Tag of tzdata2008X"
#
# Merge-from-vendor
#
-# $ cd ~/svn/head/share/zoneinfo
+# $ cd ~/svn/head/contrib/tzdata
# $ svn update
# $ svn merge -c X --accept=postpone \
# svn+ssh://svn.freebsd.org/base/vendor/tzdata/dist .
-# $ svn update # Commit message: "MFV of tzdata2008X"
+# $ svn commit # Commit message: "MFV of tzdata2008X"
#
CLEANFILES+= yearistype
@@ -79,7 +79,7 @@ zoneinfo: yearistype ${TDATA}
beforeinstall:
cd ${TZBUILDDIR} && \
- find . -type f -print -exec ${INSTALL} \
+ find * -type f -print -exec ${INSTALL} \
-o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
\{} ${DESTDIR}/usr/share/zoneinfo/\{} \;
${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
OpenPOWER on IntegriCloud