From 1e42a9f149fe2e27bdee4619bfb06c0c1b93c376 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Thu, 27 Feb 2014 12:09:02 +0100
Subject: uhm
---
remote/modules/nvidia_libs/nvidia_libs.build | 111 +++++----------------------
1 file changed, 20 insertions(+), 91 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/nvidia_libs/nvidia_libs.build b/remote/modules/nvidia_libs/nvidia_libs.build
index 49f78d5b..1a7e9a5b 100644
--- a/remote/modules/nvidia_libs/nvidia_libs.build
+++ b/remote/modules/nvidia_libs/nvidia_libs.build
@@ -6,92 +6,14 @@ fetch_source() {
build() {
local KERNELSRCDIR="$MODULE_DIR/../kernel/ksrc" # kernel sources
- local TEMPDIR="$MODULE_DIR/temp"
- local ROOTLOWERDIR="/"
- local ROOTUPPERDIR="$MODULE_BUILD_DIR"
- local ROOTBINDDIR="$TEMPDIR/rootbind"
- local ROOTMOUNTDIR="$TEMPDIR/rootmount"
- local BINDMOUNTS="/dev /proc /run /sys"
local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
- local NVIDIAEXTRACTDIR="$ROOTMOUNTDIR/NVIDIA"
- local NVEXTRACTDIR="/NVIDIA" # This is relative to the chroot.
-
- make_dirs () {
- [ -d "$TEMPDIR" ] && rm -rf "$TEMPDIR"
- mkdir -p "$TEMPDIR" || perror "Could not create base directory for mount directories $TEMPDIR."
- for DIR in "$ROOTBINDDIR" "$ROOTMOUNTDIR"; do
- mkdir -p "$DIR" || perror "Could not create directory for mount directory $DIR."
- done
- }
-
- mount_dirs () {
- mount -o bind "$ROOTLOWERDIR" "$ROOTBINDDIR" || perror "Could not mount (bind) $ROOTLOWERDIR to $ROOTBINDDIR."
- mount -o remount,ro "$ROOTBINDDIR" || perror "Could not remount $ROOTBINDDIR ro read-only."
- mount -t overlayfs overlayfs -o lowerdir="$ROOTBINDDIR",upperdir="$ROOTUPPERDIR" "$ROOTMOUNTDIR" \
- || perror "Could not mount (overlayfs) $ROOTLOWERDIR, $ROOTUPPERDIR to $BINDDIR."
- for MOUNT in $BINDMOUNTS; do
- mount -o bind "$MOUNT" "$ROOTMOUNTDIR/$MOUNT" || perror "Could not mount (bind) $MOUNTS into chroot root dir."
- done
- }
-
- # We inject a bashrc to be executed later within the chroot.
- gen_bashrc () {
- local COMMON_OPTIONS=' --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent '
-
- cat >"$ROOTMOUNTDIR/$HOME/.bashrc"<<-EOF
- echo "chroot successful."
- alias ll='ls -alF' # A little convenience for debugging purposes.
- PS1='\[\e[1;33m\]chroot@\h:\w\$ \[\e[1;32m\]' # To recognize the chroot instantly when debugging (yellow on black).
- cd "$NVEXTRACTDIR"
- ./nvidia-installer $COMMON_OPTIONS --no-kernel-module # Do the work!
- exit # Out-comment this for debugging: Then script stays in chroot.
- EOF
- }
-
- unpack_nvidia () {
- [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
- sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
- }
-
- umount_dirs () {
- # Let's tidy the place, or at least the mounts: Otherwise these would stack up, and we do not like that, don't we.
- for MOUNT in $BINDMOUNTS; do
- umount "$ROOTMOUNTDIR/$MOUNT" || pwarning "Could not unmount $ROOTMOUNTDIR/$MOUNT!"
- done
- umount "$ROOTMOUNTDIR" || pwarning "Could not unmount $ROOTMOUNTDIR!"
- umount "$ROOTBINDDIR" || pwarning "Could not unmount $ROOTBINDDIR!"
- }
-
- handle_whiteouts () {
- local WHITEOUT_LIST="${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
- rm -f -- "$WHOUTEOUT_LIST"
- mkdir -p "$(dirname "$WHITEOUT_LIST")" || perror "Could not create $(dirname "$WHITEOUT_LIST")"
- pdebug "Searching for overlayfs-whiteouts ..."
- for WHITEOUT in $(find "$MODULE_BUILD_DIR" -lname "(overlay-whiteout)"); do
- pdebug "Whiteout found: $WHITEOUT"
- echo "/./${WHITEOUT#$MODULE_BUILD_DIR}" >> "$WHITEOUT_LIST"
- rm -f -- "$WHITEOUT" || perror "Could not delete whiteout $WHITEOUT!"
- done
- }
-
- clean_temp () {
- rm -rf "$TEMPDIR" || perror "Could not clean/delete temp directory $TEMPDIR."
- rm -rf "$ROOTUPPERDIR/NVIDIA"
- }
-
- # Main stuff
- pdebug "Generating temporary directories ..."
- make_dirs
- pdebug "Mounting directories ..."
- mount_dirs
-
- pdebug "Injecting .bashrc into later chroot ..."
- gen_bashrc
-
+ local NVIDIAEXTRACTDIR="$MODULE_BUILD_DIR/NVIDIA"
+
pdebug "Unpacking NVidia-Installer ..."
- unpack_nvidia
+ [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
+ sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
- pinfo "Ready to chroot - compiling may take some time."
+ pinfo "Ready to chroot - may take some time."
pdebug "--- chroot ---------------------------------------------------------------------"
pdebug "- -"
pdebug "- Notice: This may take a while! -"
@@ -102,17 +24,24 @@ build() {
pdebug "- This does _not_ mean the library module compilation was unsuccessful! -"
pdebug "- -"
pdebug "--------------------------------------------------------------------------------"
- chroot "$ROOTMOUNTDIR"
+
+ chroot_run "${MODULE_BUILD_DIR}" <<-EOF
+ /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --no-kernel-module
+ EOF
pinfo "chroot terminated, cleaning up"
- pdebug "Unmount directories ..."
- umount_dirs
-
pdebug "Handling whiteouts ..."
- handle_whiteouts
-
- pdebug "Cleaning / deleting temp directories."
- clean_temp
+ local WHITEOUT_LIST="${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
+ rm -f -- "$WHOUTEOUT_LIST"
+ mkdir -p "$(dirname "$WHITEOUT_LIST")" || perror "Could not create $(dirname "$WHITEOUT_LIST")"
+ pdebug "Searching for overlayfs-whiteouts ..."
+ for WHITEOUT in $(find "$MODULE_BUILD_DIR" -lname "(overlay-whiteout)"); do
+ pdebug "Whiteout found: $WHITEOUT"
+ echo "/./${WHITEOUT#$MODULE_BUILD_DIR}" >> "$WHITEOUT_LIST"
+ rm -f -- "$WHITEOUT" || perror "Could not delete whiteout $WHITEOUT!"
+ done
+
+ rm -rf "$MODULE_BUILD_DIR/NVIDIA"
}
post_copy() {
--
cgit v1.2.3-55-g7522
From e6b0fddd0157a8ddcabc9fa29e933b1885b7d7cb Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Fri, 28 Feb 2014 17:36:29 +0100
Subject: [dhcpc-busybox] Fix domain not appearing in resolv.conf due to broken
printf call
---
.../dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx b/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
index 4edce5fc..17932f48 100755
--- a/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
+++ b/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
@@ -76,16 +76,16 @@ case "$1" in
# Update resolver configuration file
CONF=""
if [ -n "$domain" ]; then
- printf -v CONF "domain $domain\n"
+ printf -v CONF "${CONF}domain $domain\n"
elif [ -n "$SLX_NET_DOMAIN" ]; then
- printf -v CONF "domain $SLX_NET_DOMAIN\n"
+ printf -v CONF "${CONF}domain $SLX_NET_DOMAIN\n"
fi
if [ -n "$search" ]; then
- printf -v CONF "search $search\n"
+ printf -v CONF "${CONF}search $search\n"
elif [ -n "$SLX_SEARCH_DOMAIN" ]; then
- printf -v CONF "search $SLX_SEARCH_DOMAIN\n"
+ printf -v CONF "${CONF}search $SLX_SEARCH_DOMAIN\n"
elif [ -n "$SLX_NET_DOMAIN" ]; then
- printf -v CONF "search $SLX_NET_DOMAIN\n"
+ printf -v CONF "${CONF}search $SLX_NET_DOMAIN\n"
fi
for i in $dns; do
echo "$0: Adding DNS $i"
--
cgit v1.2.3-55-g7522
From 6da149b4f3c3bc3c9ace7f76a012f9442048ee43 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Thu, 6 Mar 2014 14:39:54 +0100
Subject: [xorg] add iptable rule for X11 port
---
remote/modules/xorg/data/opt/openslx/iptables/rules.d/70-xorg | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 remote/modules/xorg/data/opt/openslx/iptables/rules.d/70-xorg
(limited to 'remote/modules')
diff --git a/remote/modules/xorg/data/opt/openslx/iptables/rules.d/70-xorg b/remote/modules/xorg/data/opt/openslx/iptables/rules.d/70-xorg
new file mode 100644
index 00000000..023f5087
--- /dev/null
+++ b/remote/modules/xorg/data/opt/openslx/iptables/rules.d/70-xorg
@@ -0,0 +1,4 @@
+#!/bin/ash
+
+# X11 port
+iptables -I ipt-helper-INPUT 1 -i br0 -p tcp --dport 6000 -j REJECT
--
cgit v1.2.3-55-g7522
From 82d786ed7830ccd9c656e8d29bbd48f7655aa05a Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Mon, 10 Mar 2014 15:20:53 +0100
Subject: [iptables-helper] Use -w everywhere to prevent race conditions
---
.../opt/openslx/iptables/iptables-reloader-worker | 51 +++++++++++++---------
1 file changed, 30 insertions(+), 21 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/iptables-helper/data/opt/openslx/iptables/iptables-reloader-worker b/remote/modules/iptables-helper/data/opt/openslx/iptables/iptables-reloader-worker
index 3ca0a014..43e35eca 100755
--- a/remote/modules/iptables-helper/data/opt/openslx/iptables/iptables-reloader-worker
+++ b/remote/modules/iptables-helper/data/opt/openslx/iptables/iptables-reloader-worker
@@ -24,6 +24,7 @@ reload_rules () {
rm -f -- "${ALL_RULES}.new"
for file in /opt/openslx/iptables/rules.d/*; do
+ [ -f "$file" ] || continue
cat "$file" >> "${ALL_RULES}.new"
done
@@ -33,42 +34,42 @@ reload_rules () {
# Reset
# Filter
for chain in INPUT FORWARD OUTPUT; do
- iptables -t filter -P "$chain" ACCEPT
- iptables -t filter -N "ipt-helper-$chain" 2>/dev/null
- iptables -t filter -F "ipt-helper-$chain"
- iptables -t filter -D "$chain" -j "ipt-helper-$chain" 2>/dev/null # make sure it's number one
- iptables -t filter -I "$chain" 1 -j "ipt-helper-$chain"
+ iptables -w -t filter -P "$chain" ACCEPT
+ iptables -w -t filter -N "ipt-helper-$chain" 2>/dev/null
+ iptables -w -t filter -F "ipt-helper-$chain"
+ iptables -w -t filter -D "$chain" -j "ipt-helper-$chain" 2>/dev/null # make sure it's number one
+ iptables -w -t filter -I "$chain" 1 -j "ipt-helper-$chain"
done
# NAT
for chain in INPUT OUTPUT PREROUTING POSTROUTING; do
- iptables -t nat -P "$chain" ACCEPT
- iptables -t nat -N "ipt-helper-$chain" 2>/dev/null
- iptables -t nat -F "ipt-helper-$chain"
- iptables -t nat -D "$chain" -j "ipt-helper-$chain" 2>/dev/null # make sure it's number one
- iptables -t nat -I "$chain" 1 -j "ipt-helper-$chain"
+ iptables -w -t nat -P "$chain" ACCEPT
+ iptables -w -t nat -N "ipt-helper-$chain" 2>/dev/null
+ iptables -w -t nat -F "ipt-helper-$chain"
+ iptables -w -t nat -D "$chain" -j "ipt-helper-$chain" 2>/dev/null # make sure it's number one
+ iptables -w -t nat -I "$chain" 1 -j "ipt-helper-$chain"
done
# Mangle
for chain in INPUT FORWARD OUTPUT PREROUTING POSTROUTING; do
- iptables -t mangle -P "$chain" ACCEPT
- iptables -t mangle -N "ipt-helper-$chain" 2>/dev/null
- iptables -t mangle -F "ipt-helper-$chain"
- iptables -t mangle -D "$chain" -j "ipt-helper-$chain" 2>/dev/null # make sure it's number one
- iptables -t mangle -I "$chain" 1 -j "ipt-helper-$chain"
+ iptables -w -t mangle -P "$chain" ACCEPT
+ iptables -w -t mangle -N "ipt-helper-$chain" 2>/dev/null
+ iptables -w -t mangle -F "ipt-helper-$chain"
+ iptables -w -t mangle -D "$chain" -j "ipt-helper-$chain" 2>/dev/null # make sure it's number one
+ iptables -w -t mangle -I "$chain" 1 -j "ipt-helper-$chain"
done
# Apply
local LOGFILE=$(mktemp)
local DISABLED="/opt/openslx/iptables/rules.d/disabled/"
for file in /opt/openslx/iptables/rules.d/*; do
- [ ! -f "$file" ] && continue
+ [ -f "$file" ] || continue
if [ ! -x "$file" ]; then
slxlog "firewall-script-exec" "The firewall script '$file' is not executable (+x), moving to disabled/"
mkdir -p "$DISABLED"
mv "$file" "$DISABLED"
continue
fi
- # patch chain names
- sed -i -r 's/ (-A|--append|-I|--insert|-D|--delete) +(PREROUTING|INPUT|FORWARD|OUTPUT|POSTROUTING) / \1 ipt-helper-\2 /g' "$file"
+ # patch chain names, add "-w"
+ sed -i -r 's/ (-A|--append|-I|--insert|-D|--delete) +(PREROUTING|INPUT|FORWARD|OUTPUT|POSTROUTING) / \1 ipt-helper-\2 /g;s/iptables +-/iptables -w -/g' "$file"
if ! "$file" > "$LOGFILE" 2>&1; then
slxlog "firewall-script-apply" "The firewall script '$file' had nonzero exit code. Moving to disabled/" "$LOGFILE"
mkdir -p "$DISABLED"
@@ -78,19 +79,27 @@ reload_rules () {
# Add default rule
for chain in INPUT FORWARD OUTPUT; do
- iptables -t filter -A "ipt-helper-$chain" -j RETURN
+ iptables -w -t filter -A "ipt-helper-$chain" -j RETURN
done
# NAT
for chain in INPUT OUTPUT PREROUTING POSTROUTING; do
- iptables -t nat -A "ipt-helper-$chain" -j RETURN
+ iptables -w -t nat -A "ipt-helper-$chain" -j RETURN
done
# Mangle
for chain in INPUT FORWARD OUTPUT PREROUTING POSTROUTING; do
- iptables -t mangle -A "ipt-helper-$chain" -j RETURN
+ iptables -w -t mangle -A "ipt-helper-$chain" -j RETURN
done
+ # Do not just move file from above, as we sed'ed above and contents might have changed
+ rm -f -- "${ALL_RULES}.new"
+ for file in /opt/openslx/iptables/rules.d/*; do
+ [ -f "$file" ] || continue
+ cat "$file" >> "${ALL_RULES}.new"
+ done
mv -f -- "${ALL_RULES}.new" "${ALL_RULES}"
+
echo "iptables rules successfully updated."
+ rm -f -- "$LOCK"
exit 0
}
--
cgit v1.2.3-55-g7522
From 4967f965fd5b9e9160f7cc0f45d2be250b21063c Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Tue, 11 Mar 2014 16:44:15 +0100
Subject: [udhcpcdcdcdcd] fix wrong hostname name being set
TODO: rewrite this ugly piece of code
---
.../modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx b/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
index 17932f48..2675afc2 100755
--- a/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
+++ b/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
@@ -106,6 +106,7 @@ case "$1" in
# Things that should only happen for the main interface that was used for booting
if [ "$interface" == "br0" ]; then
dns_host=$(rdns "$ip")
+ short="${dns_host%%.*}"
# Update IP
sed -i "s/^\(SLX_PXE_CLIENT_IP=\).*$/\1'$ip'/" /opt/openslx/config
@@ -122,8 +123,8 @@ case "$1" in
fi
# finally, if dns_host was set to anything, apply it
if [ -n "$dns_host" ]; then
- echo "$dns_host" > "/proc/sys/kernel/hostname"
- echo "$dns_host" > "/etc/hostname"
+ echo "$short" > "/proc/sys/kernel/hostname"
+ echo "$short" > "/etc/hostname"
if grep '^SLX_HOSTNAME=' /opt/openslx/config 2>/dev/null; then
sed -i "s/^\(SLX_HOSTNAME=\).*$/\1'$dns_host'/" /opt/openslx/config
else
@@ -134,7 +135,7 @@ case "$1" in
# if domain is given from dhcp, save it to openslx config for later use in VMs
if [ -n "$domain" ]; then
- # check if SLX_NET_DOMAIN is in the config at all
+ # check if SLX_NET_DOMAIN is in the config at all
if grep '^SLX_NET_DOMAIN=' /opt/openslx/config 2>/dev/null; then
sed -i "s/^\(SLX_NET_DOMAIN=\).*$/\1'$domain'/" /opt/openslx/config
else
--
cgit v1.2.3-55-g7522
From 99786db23b68a57013694516a467d10d82eee5ea Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Tue, 11 Mar 2014 17:06:42 +0100
Subject: [nvidia_kernel] port to new chroot-run functionality
---
remote/modules/nvidia_kernel/nvidia_kernel.build | 122 +++++------------------
1 file changed, 25 insertions(+), 97 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.build b/remote/modules/nvidia_kernel/nvidia_kernel.build
index bf9c6ee6..bde06c60 100644
--- a/remote/modules/nvidia_kernel/nvidia_kernel.build
+++ b/remote/modules/nvidia_kernel/nvidia_kernel.build
@@ -5,95 +5,15 @@ fetch_source() {
}
build() {
- local KERNELSRCDIR="$MODULE_DIR/../kernel/ksrc" # kernel sources
- local TEMPDIR="$MODULE_DIR/temp"
- local ROOTLOWERDIR="/"
- local ROOTUPPERDIR="$TEMPDIR/rootupper"
- local ROOTBINDDIR="$TEMPDIR/rootbind"
- local ROOTMOUNTDIR="$TEMPDIR/rootmount"
- local BINDMOUNTS="/dev /proc /run /sys"
- local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
- local NVIDIAEXTRACTDIR="$ROOTMOUNTDIR/NVIDIA"
- local NVEXTRACTDIR="/NVIDIA" # This is relative to the chroot.
-
- make_dirs () {
- [ -d "$TEMPDIR" ] && rm -rf $TEMPDIR/*
- mkdir -p "$TEMPDIR" || perror "Could not create base directory for mount directories $TEMPDIR."
- for DIR in "$ROOTUPPERDIR" "$ROOTBINDDIR" "$ROOTMOUNTDIR"; do
- mkdir -p "$DIR" || perror "Could not create directory for mount directory $DIR."
- done
- }
-
- mount_dirs () {
- pinfo "Executing bind- and overlay mounts ..."
- mount -o bind "$ROOTLOWERDIR" "$ROOTBINDDIR" || perror "Could not mount (bind) $ROOTLOWERDIR to $ROOTBINDDIR."
- mount -o remount,ro "$ROOTBINDDIR" || perror "Could not remount $ROOTBINDDIR ro read-only."
- mount -t overlayfs overlayfs -o lowerdir="$ROOTBINDDIR",upperdir="$ROOTUPPERDIR" "$ROOTMOUNTDIR" \
- || perror "Could not mount (overlayfs) $ROOTLOWERDIR, $ROOTUPPERDIR to $BINDDIR."
- pinfo "Executing bind mounts ($BINDMOUNTS) for chroot root dir ..."
- for MOUNT in $BINDMOUNTS; do
- mount -o bind "$MOUNT" "$ROOTMOUNTDIR/$MOUNT" || perror "Could not mount (bind) $MOUNTS into chroot root dir."
- done
- }
-
- # We inject a bashrc to be executed later within the chroot.
- gen_bashrc () {
- local COMMON_OPTIONS=' --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent '
-
- cat >"$ROOTMOUNTDIR/$HOME/.bashrc"<<-EOF
- echo "chroot successful."
- alias ll='ls -alF' # A little convenience for debugging purposes.
- PS1='\[\e[1;33m\]chroot@\h:\w\$ \[\e[1;32m\]' # To recognize the chroot instantly when debugging (yellow on black).
- cd "$NVEXTRACTDIR"
- ./nvidia-installer $COMMON_OPTIONS --kernel-source-path /"$KERNELSRCDIR" # Do the work!
- exit # Out-comment this for debugging: Then script stays in chroot.
-EOF
- }
-
- unpack_nvidia () {
- [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
- pinfo "Unpacking NVidia archive ($NVIDIA) ..."
- sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
- }
-
- umount_dirs () {
- # Let's tidy the place, or at least the mounts: Otherwise these would stack up, and we do not like that, don't we.
- for MOUNT in $BINDMOUNTS; do
- umount "$ROOTMOUNTDIR/$MOUNT" || pwarning "Could not unmount $ROOTMOUNTDIR/$MOUNT!"
- done
- umount "$ROOTMOUNTDIR" || pwarning "Could not unmount $ROOTMOUNTDIR!"
- umount "$ROOTBINDDIR" || pwarning "Could not unmount $ROOTBINDDIR!"
- }
+ local ROOTUPPERDIR="$MODULE_DIR/rootupper"
- strip_modules () {
- strip -g "$ROOTUPPERDIR/$NVEXTRACTDIR/kernel/nvidia.ko" || \
- pwarning "Could not strip kernel module $ROOTUPPERDIR/$NVEXTRACTDIR/kernel/nvidia.ko."
- strip -g "$ROOTUPPERDIR/$NVEXTRACTDIR/kernel/uvm/nvidia-uvm.ko" || \
- pwarning "Could not strip kernel module $ROOTUPPERDIR/$NVEXTRACTDIR/kernel/uvm/nvidia-uvm.ko."
- }
-
- copy_modules () {
- local NVIDIA_MODULES="$MODULE_DIR/build/lib/modules/nvidia/"
- mkdir -p "$NVIDIA_MODULES"
- cp "$ROOTUPPERDIR/$NVEXTRACTDIR/kernel/nvidia.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia.ko!"
- cp "$ROOTUPPERDIR/$NVEXTRACTDIR/kernel/uvm/nvidia-uvm.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia-uvm.ko!"
- }
-
- clean_temp () {
- rm -rf "$TEMPDIR" || perror "Could not clean/delete temp directory $TEMPDIR."
- }
-
- # Main stuff
- pinfo "Generating temporary directories ..."
- make_dirs
- pinfo "Mounting directories ..."
- mount_dirs
-
- pinfo "Injecting .bashrc into later chroot ..."
- gen_bashrc
+ local KERNELSRCDIR="$MODULES_DIR/kernel/ksrc" # kernel sources
+ local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
+ local NVIDIAEXTRACTDIR="$ROOTUPPERDIR/NVIDIA"
- pinfo "Unpacking NVidia-Installer ..."
- unpack_nvidia
+ [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
+ pinfo "Unpacking NVidia archive ($NVIDIA) ..."
+ sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
pinfo "Ready to chroot - compiling may take some time."
pdebug "--- chroot ---------------------------------------------------------------------"
@@ -106,20 +26,28 @@ EOF
pdebug "- This does _not_ mean the kernel module compilation was unsuccessful! -"
pdebug "- -"
pdebug "--------------------------------------------------------------------------------"
- chroot "$ROOTMOUNTDIR"
- pinfo "chroot terminated."
- pinfo "Unmount directories."
- umount_dirs
+
+ chroot_run "$ROOTUPPERDIR" <<-EOF
+ /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --kernel-source-path /"$KERNELSRCDIR" # Do the work!
+ # fake success since the installer will exit with an error due to the module not loading properly.
+ exit 0
+ EOF
+ pinfo "chroot terminated."
- pinfo "Stripping kernel modules."
- strip_modules
+ pinfo "Stripping kernel modules..."
+ strip -g "$ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko" || \
+ pwarning "Could not strip kernel module $ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko."
+ strip -g "$ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko" || \
+ pwarning "Could not strip kernel module $ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko."
- pinfo "Copying kernel modules."
- copy_modules
+ pinfo "Copying kernel modules..."
+ local NVIDIA_MODULES="$MODULE_BUILD_DIR/lib/modules/nvidia/"
+ mkdir -p "$NVIDIA_MODULES"
+ cp "$ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia.ko!"
+ cp "$ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia-uvm.ko!"
- pinfo "Cleaning / deleting temp directories."
- clean_temp
+ rm -rf "$MODULE_BUILD_DIR/NVIDIA"
}
post_copy() {
--
cgit v1.2.3-55-g7522
From 1354b6921c7661af32c2dbeda54a183e22145e15 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Tue, 11 Mar 2014 17:07:24 +0100
Subject: [nvidia_libs] port to new chroot-run functionality
---
remote/modules/nvidia_libs/nvidia_libs.build | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/nvidia_libs/nvidia_libs.build b/remote/modules/nvidia_libs/nvidia_libs.build
index 1a7e9a5b..38f60d09 100644
--- a/remote/modules/nvidia_libs/nvidia_libs.build
+++ b/remote/modules/nvidia_libs/nvidia_libs.build
@@ -29,17 +29,23 @@ build() {
/NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --no-kernel-module
EOF
pinfo "chroot terminated, cleaning up"
+
+ # move whiteout list to its /opt/openslx/etc/nvidia.whiteout
+ if [ -e "${MODULE_BUILD_DIR}/overlay.whiteout.list" ]; then
+ mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/etc"
+ mv "${MODULE_BUILD_DIR}/overlay.whiteout.list" "${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
+ fi
- pdebug "Handling whiteouts ..."
- local WHITEOUT_LIST="${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
- rm -f -- "$WHOUTEOUT_LIST"
- mkdir -p "$(dirname "$WHITEOUT_LIST")" || perror "Could not create $(dirname "$WHITEOUT_LIST")"
- pdebug "Searching for overlayfs-whiteouts ..."
- for WHITEOUT in $(find "$MODULE_BUILD_DIR" -lname "(overlay-whiteout)"); do
- pdebug "Whiteout found: $WHITEOUT"
- echo "/./${WHITEOUT#$MODULE_BUILD_DIR}" >> "$WHITEOUT_LIST"
- rm -f -- "$WHITEOUT" || perror "Could not delete whiteout $WHITEOUT!"
- done
+ #pdebug "Handling whiteouts ..."
+ #local WHITEOUT_LIST="${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
+ #rm -f -- "$WHOUTEOUT_LIST"
+ #mkdir -p "$(dirname "$WHITEOUT_LIST")" || perror "Could not create $(dirname "$WHITEOUT_LIST")"
+ #pdebug "Searching for overlayfs-whiteouts ..."
+ #for WHITEOUT in $(find "$MODULE_BUILD_DIR" -lname "(overlay-whiteout)"); do
+# pdebug "Whiteout found: $WHITEOUT"
+# echo "/./${WHITEOUT#$MODULE_BUILD_DIR}" >> "$WHITEOUT_LIST"
+# rm -f -- "$WHITEOUT" || perror "Could not delete whiteout $WHITEOUT!"
+# done
rm -rf "$MODULE_BUILD_DIR/NVIDIA"
}
--
cgit v1.2.3-55-g7522
From a2054903d7fa6d93549f9c5921e73ba1d0ebffbf Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Tue, 11 Mar 2014 17:07:43 +0100
Subject: [vmware] port to new chroot-run functionality
---
remote/modules/vmware/vmware.build | 218 ++++++-------------------------------
remote/modules/vmware/vmware.conf | 23 +++-
2 files changed, 57 insertions(+), 184 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/vmware/vmware.build b/remote/modules/vmware/vmware.build
index 16ee4c77..8636f335 100644
--- a/remote/modules/vmware/vmware.build
+++ b/remote/modules/vmware/vmware.build
@@ -1,203 +1,57 @@
fetch_source() {
- [ -e "./src" ] && { rm -r ./src || perror "Could not delete old src dir."; }
- mkdir -p "./src" || perror "Could not mkdir src"
- cd "./src" || perror "cd fail."
+ [ -e "${MODULE_DIR}/src" -a -d "${MODULE_DIR}/src" ] && \
+ { rm -r "${MODULE_DIR}/src" || perror "Could not delete old src dir."; }
+ mkdir -p "${MODULE_DIR}/src" || perror "Could not mkdir src"
+ cd "${MODULE_DIR}/src" || perror "cd fail."
+
# Get directory listing
wget -O "index.html" "$REQUIRED_DOWNLOAD_BASE" || perror "Could not download vmware dir index"
- # # Try to treat it as version listing
- # local LATEST=$(grep -o -E '"[0-9]+\.[0-9]+\.[0-9]+/' "index.html" | cut -c 2- | sort --version-sort | tail -n 1)
- # if [ -n "$LATEST" ]; then
- # REQUIRED_DOWNLOAD_BASE+="$LATEST"
- # # Determine latest build
- # fi
- local FILE=$(grep -E -o -i "href=\"VMware-$REQUIRED_TYPE-[^\"]+[\._\-]$ARCHREGEX[\._\-][^\"]+\"" "index.html" | head -n 1 | awk -F '"' '{printf $2}')
- [ -z "$FILE" ] && perror "Could not determine vmware $REQUIRED_TYPE bundle file for current arch from $MODULE_DIR/src/index.html"
+
+ VMWARE_BUNDLE_FILE=$(grep -E -o -i "href=\"VMware-$REQUIRED_TYPE-[^\"]+[\._\-]$ARCHREGEX[\._\-][^\"]+\"" "index.html" | head -n 1 | awk -F '"' '{printf $2}')
+ [ -z "$VMWARE_BUNDLE_FILE" ] && perror "Could not determine vmware $REQUIRED_TYPE bundle file for current arch from $MODULE_DIR/src/index.html"
# Download file
- wget -O "$FILE" "$REQUIRED_DOWNLOAD_BASE/$FILE" || perror "Could not download $FILE from $REQUIRED_DOWNLOAD_BASE"
- if [[ "$FILE" == *.tar ]]; then
- tar -x "${FILE%.tar}" -f "$FILE" || perror "Could not untar downloaded $FILE"
- unlink "$FILE"
- FILE="${FILE%.tar}"
+ wget -O "$VMWARE_BUNDLE_FILE" "$REQUIRED_DOWNLOAD_BASE/$VMWARE_BUNDLE_FILE" || perror "Could not download $VMWARE_BUNDLE_FILE from $REQUIRED_DOWNLOAD_BASE"
+ if [[ "$VMWARE_BUNDLE_FILE" == *.tar ]]; then
+ tar -x "${VMWARE_BUNDLE_FILE%.tar}" -f "$VMWARE_BUNDLE_FILE" || perror "Could not untar downloaded $VMWARE_BUNDLE_FILE"
+ unlink "$VMWARE_BUNDLE_FILE"
+ VMWARE_BUNDLE_FILE="${VMWARE_BUNDLE_FILE%.tar}"
fi
- pinfo "Extracting bundle of VMware $(echo "$FILE" | grep -o -E '[0-9]+\.[0-9]+\.[0-9]+') build $(echo "$FILE" | grep -o -E '[0-9]{7,9}') for $(echo "$FILE" | grep -o -E "$ARCHREGEX")"
- ./$FILE -x "./bundle/" || perror "Extracting the vmware bundle failed."
- pinfo "done"
+
+ cd - >/dev/null
}
build() {
- local SRCDIR="./src/bundle"
- [ ! -d "$SRCDIR" ] && perror "Extracted vmplayer bundle not found in $SRCDIR - please clean vmplayer module."
- local PLAYER_MANIFEST="$MODULE_DIR/$SRCDIR/vmware-player-app/manifest.xml"
- local WORKSTATION_MANIFEST="$MODULE_DIR/$SRCDIR/vmware-workstation/manifest.xml"
- local BUILD_NUMBER=$(grep -o -E '[0-9]*' "$PLAYER_MANIFEST" | grep -o -E '[0-9]*')
- local PLAYER_VERSION=$(grep -o -E '[0-9\.]*' "$PLAYER_MANIFEST" | grep -o -E '[0-9\.]*')
- local WORKSTATION_VERSION=$(grep -o -E '[0-9\.]*' "$WORKSTATION_MANIFEST" 2>/dev/null | grep -o -E '[0-9\.]*')
- local CORE_VERSION=$(grep -o -E '[0-9\.]*' "$PLAYER_MANIFEST" | grep -o -E '[0-9\.]*')
- local TARGET="$MODULE_BUILD_DIR/usr/lib/vmware/"
- mkdir -p "$TARGET"{lib,share,bin}
- pinfo "Copying data to build dir"
- cp -r ./$SRCDIR/vmware-installer/lib/lib* "$TARGET" || perror "Could not copy libs from vmware-installer"
- cp -r ./$SRCDIR/vmware-network-editor/lib "$MODULE_BUILD_DIR/usr/" || perror "Could not copy libs from vmware-network-config"
- cp -r ./$SRCDIR/vmware-$REQUIRED_TYPE/lib/share "$TARGET" || perror "Could not copy lib/share from vmware-player"
- cp -r ./$SRCDIR/vmware-$REQUIRED_TYPE/share "$MODULE_BUILD_DIR/usr/" || perror "C0oudld not copy share from vmware-player"
- cp -r ./$SRCDIR/vmware-player-app/etc "$MODULE_BUILD_DIR/" || perror "Could not copy bin and etc from vmware-player-app."
- cp -r ./$SRCDIR/vmware-player-app/lib/* "$TARGET" || perror "Could not copy lib subtree from vmware-player-app."
- cp -r ./$SRCDIR/vmware-player-app/{bin,share} "$MODULE_BUILD_DIR/usr/" || perror "could not copy share from vmware-player-app."
- cp -r ./$SRCDIR/vmware-usbarbitrator/bin "$MODULE_BUILD_DIR/usr/" || perror "Could not copy bin from vmware-usbarbitrator."
- cp -r ./$SRCDIR/vmware-vmx/{bin,etc,sbin} "$MODULE_BUILD_DIR/usr/" || perror "could not copy bin,etc,sbin to usr for vmare-vmx."
- cp -r ./$SRCDIR/vmware-vmx/lib/{bin,icu,lib,libconf,scripts} "$TARGET" || perror "Could not copy many things from vmware-vmx."
- if [ -d "./$SRCDIR/vmware-workstation-server" ]; then
- cp -r ./$SRCDIR/vmware-workstation-server/{bin,lib} "$TARGET" || perror "Could not copy many things from vmware-workstation-server."
- fi
- [ ! -L "$TARGET/bin/vmplayer" ] && { ln -s /usr/lib/vmware/bin/appLoader "$TARGET/bin/vmplayer" || perror "Could not link vmplayer to appLoader."; }
- chmod +x "$TARGET"/bin/*
- chmod u+s "$TARGET"/bin/vmware-vmx* || perror "Error setting suid-bit on vmware-vmx*"
- chmod +x "$MODULE_BUILD_DIR"/usr/{bin,sbin}/*
- chmod u+s "$MODULE_BUILD_DIR"/usr/bin/vmware-mount || perror "Error setting suid-bit on vmware-mount"
- chmod u+s "$MODULE_BUILD_DIR"/usr/sbin/vmware-authd || perror "Error setting suid-bit on vmware-authd"
- chmod +x "$TARGET"/lib/*.sh
- find "$MODULE_BUILD_DIR" -name '*.sh' -exec chmod +x {} \;
- for file in $(grep -rl -E "^#!/" "$MODULE_BUILD_DIR"); do
- chmod +x "$file"
- done
- pinfo "Patching LIBCONF_DIR"
- local file=""
- for file in $(grep -rl "@@LIBCONF_DIR@@" "$MODULE_BUILD_DIR"); do
- sed -i 's#@@LIBCONF_DIR@@#/usr/lib/vmware/libconf#g' "$file"
- done
-
- # Copy vmware config template
- mkdir -p "$MODULE_BUILD_DIR/etc/vmware"
- sed "s#%PLAYER_VERSION%#$PLAYER_VERSION#g;s#%BUILD_NUMBER%#$BUILD_NUMBER#g" "$MODULE_DIR/templates/vmware/config" > "$MODULE_BUILD_DIR/etc/vmware/config"
- # Compile kernel modules
- pinfo "Compiling required kernel modules."
- # build modules
- build_modules
+ # prepare the build directory with the files needed during the chroot
+ cp "${MODULE_DIR}/src/$VMWARE_BUNDLE_FILE" "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
+ cp -r "${MODULE_DIR}/patches" "${MODULE_BUILD_DIR}"
+
+ pinfo "Installing vmware per chroot..."
+ chroot_run "${MODULE_BUILD_DIR}" <<-EOF
+ yes | sh /"${VMWARE_BUNDLE_FILE}" --eulas-agreed --console --required
+ vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmnet
+ vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmmon
+ EOF
+
+ # cleanup unneeded files
+ rm -rf -- "${MODULE_BUILD_DIR}/etc/vmware-installer"
+ rm -rf -- "${MODULE_BUILD_DIR}/usr/lib/vmware-installer"
+ rm -rf -- "${MODULE_BUILD_DIR}/usr/lib/vmware-ovftool"
+ unlink "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
}
post_copy() {
# FIXME: gconftool is copied without dependencies
tarcopy "$(find /usr/lib/ /usr/lib64 -name gconv -type d)" "$TARGET_BUILD_DIR"
- #Update Icon cache for vmplayer
- gtk-update-icon-cache-3.0 "${TARGET_BUILD_DIR}/usr/share/icons/hicolor/" || pwarning "update-icon-cache-3.0 failed."
- #fix vmware-usbarbitrator bug
- date +'%Y.%m.%d' >"${TARGET_BUILD_DIR}/etc/arch-release"
- copy_modules
-}
-build_modules() {
- # need to be in src
- cd "$MODULE_DIR/src" || perror "Could not cd to '$MODULE_DIR/src'"
- local VMWARE_MODCONFIG="$MODULE_DIR/$SRCDIR/vmware-vmx/bin/vmware-modconfig"
- [ -e "$VMWARE_MODCONFIG" ] && chmod +x "$VMWARE_MODCONFIG" || perror "Could not find $VMWARE_MODCONFIG"
- # link vmware-modconfig-console in the build dir
- # /etc/vmware/config gen
-
- sed -i '/^ETCDIR/d;/^VMISETCDIR/d;/bootstrap/d' "$VMWARE_MODCONFIG"
- sed -i "s/libdir=.*/libdir=$(echo $MODULE_BUILD_DIR | escape_replace)\/usr\/lib\/vmware/g" "$VMWARE_MODCONFIG"
- sed -i "s#set -e#set -e\nPREFIX=\"/usr\"\nBINDIR=\"/usr/bin\"\nSBINDIR=\"/usr/sbin\"\nLIBDIR=\"/usr/lib\"\nDATADIR=\"/usr/share\"\nSYSCONFDIR=\"/etc\"\nDOCDIR=\"/usr/share/doc\"\nMANDIR=\"/usr/share/man\"\nINCLUDEDIR=\"/usr/include\"\nINITDIR=\"/etc\"\nINITSCRIPTDIR=\"/etc/init.d\"\nVMWARE_INSTALLER=\"/usr/lib/vmware-installer/$CORE_VERSION\"\nVERSION=\"$CORE_VERSION\"\nVMISVERSION=\"$CORE_VERSION\"\nVMISPYVERSION=\"25\"#g" "$VMWARE_MODCONFIG"
-
-
- [ -e "/etc/vmware/config" ] && cp "/etc/vmware/config" "/etc/vmware/config.mltk.bak"
- mkdir -p "/etc/vmware" || perror "Could not create /etc/vmware"
- cat > "/etc/vmware/config" << EOF
-.encoding = "UTF-8"
-installerDefaults.componentDownloadEnabled = "yes"
-installerDefaults.dataCollectionEnabled = "no"
-installerDefaults.transferVersion = "1"
-installerDefaults.autoSoftwareUpdateEnabled = "yes"
-NETWORKING = "yes"
-VMBLOCK_CONFED = "yes"
-gksu.rootMethod = "sudo"
-libdir = "$MODULE_BUILD_DIR/usr/lib/vmware"
-VMCI_CONFED = "yes"
-VSOCK_CONFED = "yes"
-initscriptdir = "/etc/init.d"
-authd.fullpath = "/usr/sbin/vmware-authd"
-bindir = "/usr/bin"
-vmware.fullpath = "/usr/bin/vmware"
-vix.libdir = "/usr/lib/vmware-vix"
-vix.config.version = "1"
-player.product.version = "$PLAYER_VERSION"
-product.buildNumber = "$BUILD_NUMBER"
-authd.client.port = "902"
-authd.proxy.nfc = "vmware-hostd:ha-nfc"
-authd.soapserver = "TRUE"
-product.version = "$PLAYER_VERSION"
-workstation.product.version = "$WORKSTATION_VERSION"
-product.name = "VMware Player"
-EOF
- mkdir -p "$MODULE_BUILD_DIR/usr/lib/vmware/modules"
- ln -sf "$MODULE_DIR/$SRCDIR/vmware-vmx/extra/modules.xml" "$MODULE_BUILD_DIR/usr/lib/vmware/modules/"
- ln -sf "$MODULE_DIR/$SRCDIR/vmware-vmx/lib/modules/source" "$MODULE_BUILD_DIR/usr/lib/vmware/modules/"
-
- ln -sf "appLoader" "$MODULE_BUILD_DIR/usr/lib/vmware/bin/vmware-modconfig"
- ln -sf "appLoader" "$MODULE_BUILD_DIR/usr/lib/vmware/bin/vmware-modconfig-console"
-
- # See what we need to patch
- cd "$MODULE_BUILD_DIR/usr/lib/vmware/modules/source" || perror "cd failed."
- local KMOD SHORT PATCH MIN_KERN MAX_KERN
- for KMOD in *.tar; do
- SHORT="${KMOD%%.tar}"
- [ -e ".${SHORT}.patched" ] && continue
- for PATCH in $(find "${MODULE_DIR}/patches/" -name "${SHORT}__*__*.patch"); do
- parse_patch_name "$PATCH"
- [ -z "${MIN_KERN}" -o -z "${MAX_KERN}" ] && perror "Could not parse patch filename"
- if version_lt "$SYS_KERNEL" "$MIN_KERN" || version_gt "$SYS_KERNEL" "$MAX_KERN"; then
- pinfo "*NOT* applying $PATCH (min=$MIN_KERN max=$MAX_KERN cmp=$SYS_KERNEL)"
- continue # Not suitable for our kernel
- fi
- pinfo "Applying $PATCH (min=$MIN_KERN max=$MAX_KERN cmp=$SYS_KERNEL)"
- [ ! -d "${SHORT}-only" ] && tar xf "$KMOD"
- [ ! -d "${SHORT}-only" ] && perror "untar of $KMOD failed."
- cd "${SHORT}-only" || perror "Where is ${SHORT}-only?"
- if ! patch -p1 < "$PATCH"; then
- cd ..
- rm -rf -- "${SHORT}-only"
- perror "Applying $PATCH failed."
- fi
- cd ..
- done
- if [ -d "${SHORT}-only" ]; then
- tar cf "$KMOD" "${SHORT}-only/" || perror "repacking of $KMOD failed."
- rm -rf -- "${SHORT}-only"
- touch ".${SHORT}.patched"
- fi
- done
- cd "$MODULE_DIR" || perror "wat."
- #
- # Then, compile
- pinfo "KOMPILIERE VMWARE KERNEL MODULE"
- for MOD in vsock vmblock vmmon vmnet vmci; do
- pinfo "Kompiliere $MOD"
- [ -s "/lib/modules/$SYS_UTS_RELEASE/vmplayer/$MOD.ko" ] && unlink "/lib/modules/$SYS_UTS_RELEASE/vmplayer/$MOD.ko"
- "$VMWARE_MODCONFIG" --console --build-mod -k "$SYS_UTS_RELEASE" "$MOD" "$(which gcc)" "$MODULES_DIR/kernel/ksrc/include" "vmplayer" "$MOD"
- [ ! -s "/lib/modules/$SYS_UTS_RELEASE/vmplayer/$MOD.ko" ] && perror "Error compiling via $VMWARE_MODCONFIG"
- done
-
- cd -
-
- [ -e /etc/vmware/config ] && rm -f /etc/vmware/config
- cp /etc/vmware/config.mltk.bak /etc/vmware/config
+ # Update Icon cache for vmplayer
+ gtk-update-icon-cache-3.0 "${TARGET_BUILD_DIR}/usr/share/icons/hicolor/" || pwarning "update-icon-cache-3.0 failed."
-}
+ # fix vmware-usbarbitrator bug
+ date +'%Y.%m.%d' >"${TARGET_BUILD_DIR}/etc/arch-release"
-function copy_modules() {
mkdir -p "$TARGET_BUILD_DIR/lib/modules/vmware/"
- cp "/lib/modules/$SYS_UTS_RELEASE/vmplayer/"* "$TARGET_BUILD_DIR/lib/modules/vmware/" || perror "Could not cp vmware modules to target!"
-}
-
-function parse_patch_name() {
- [ $# -ne 1 ] && perror "parse_patch_name: Wrong parameter count."
- local PATCH="$1"
- MIN_KERN=$(echo "$PATCH" | sed -r 's/^[^_]+__([0-9\.]+)-[0-9\.]+__[^_]+\.patch$/\1/g')
- [[ "$MIN_KERN" == /* ]] && MIN_KERN=$(echo "$PATCH" | sed -r 's/^[^_]+__([0-9\.]+)__[^_]+\.patch$/\1/g')
- MAX_KERN=$(echo "$PATCH" | sed -r 's/^[^_]+__[0-9\.]+-([0-9\.]+)__[^_]+\.patch$/\1/g')
- [[ "$MAX_KERN" == /* ]] && MAX_KERN=$(echo "$PATCH" | sed -r 's/^[^_]+__([0-9\.]+)__[^_]+\.patch$/\1/g')
- [[ "$MIN_KERN" == /* ]] && MIN_KERN=
- [[ "$MAX_KERN" == /* ]] && MAX_KERN=
- # TODO: Parse min and max vmplayer/workstation version
+ cp "${MODULE_BUILD_DIR}/lib/modules/$SYS_UTS_RELEASE/vmplayer/"* "$TARGET_BUILD_DIR/lib/modules/vmware/" || perror "Could not cp vmware modules to target!"
}
diff --git a/remote/modules/vmware/vmware.conf b/remote/modules/vmware/vmware.conf
index b040152e..51e73b85 100644
--- a/remote/modules/vmware/vmware.conf
+++ b/remote/modules/vmware/vmware.conf
@@ -1,4 +1,23 @@
-REQUIRED_DIRECTORIES="/etc /usr"
REQUIRED_DOWNLOAD_BASE="http://softwareupdate.vmware.com/cds/vmw-desktop/ws/10.0.1/1379776/linux/core/"
REQUIRED_TYPE="workstation"
-
+REQUIRED_DIRECTORIES="
+ /etc/vmware
+ /usr/sbin
+ /usr/lib/vmware/bin
+ /usr/lib/vmware/hostd
+ /usr/lib/vmware/icu
+ /usr/lib/vmware/lib
+ /usr/lib/vmware/libconf
+ /usr/lib/vmware/licenses
+ /usr/lib/vmware/resources
+ /usr/lib/vmware/scripts
+ /usr/lib/vmware/share
+ /usr/lib/vmware/xkeymap
+"
+REQUIRED_FILES="
+ /usr/lib/vmware/config
+ /usr/bin/vmware-usbarbitrator
+"
+REQUIRED_BINARIES="
+ vmnet-netifup
+"
--
cgit v1.2.3-55-g7522
From b4d0b7023ee5b9c71e3f881c3137f5fbdd2d33b4 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 17 Mar 2014 17:08:19 +0100
Subject: [sshd] added TODO:
gui/mltk needs to install sshd packages if not present
---
remote/modules/sshd/TODO | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 remote/modules/sshd/TODO
(limited to 'remote/modules')
diff --git a/remote/modules/sshd/TODO b/remote/modules/sshd/TODO
new file mode 100644
index 00000000..b4e0a9c1
--- /dev/null
+++ b/remote/modules/sshd/TODO
@@ -0,0 +1,3 @@
+make mltk install sshd if its not installed
+
+Distros: Ubuntu, Suse, soon Arch!
--
cgit v1.2.3-55-g7522
From 2e835432ba4b688eef7a9798db07a9b59c62ecfc Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Tue, 18 Mar 2014 15:51:51 +0100
Subject: [pam] fix wrong permissions of temporary home dir
---
remote/modules/pam/data/opt/openslx/scripts/pam_script_auth | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'remote/modules')
diff --git a/remote/modules/pam/data/opt/openslx/scripts/pam_script_auth b/remote/modules/pam/data/opt/openslx/scripts/pam_script_auth
index c50e94d5..ee4ff094 100755
--- a/remote/modules/pam/data/opt/openslx/scripts/pam_script_auth
+++ b/remote/modules/pam/data/opt/openslx/scripts/pam_script_auth
@@ -31,7 +31,7 @@ mkdir -p "${TEMP_HOME_DIR}" || \
{ slxlog "pam-global-mktemphome" "Could not create '${TEMP_HOME_DIR}'."; exit 1; }
# now make it a tmpfs
-mount -t tmpfs -o size=100m tmpfs "${TEMP_HOME_DIR}" || \
+mount -t tmpfs -o mode=700,size=100m tmpfs "${TEMP_HOME_DIR}" || \
{ slxlog "pam-global-tmpfstemphome" "Could not make a tmpfs on ${TEMP_HOME_DIR}"; exit 1; }
# create a WARNING.txt for the user
--
cgit v1.2.3-55-g7522
From 52c75b7e40c9655495418c0c776bafefd75bc458 Mon Sep 17 00:00:00 2001
From: Christian Rößler
Date: Fri, 21 Mar 2014 15:01:32 +0100
Subject: [logging.inc, chroot.inc] Some redirections for debugging within a
chroot
---
helper/logging.inc | 2 ++
remote/includes/chroot.inc | 3 ++-
remote/modules/vmware/vmware.build | 3 ++-
3 files changed, 6 insertions(+), 2 deletions(-)
(limited to 'remote/modules')
diff --git a/helper/logging.inc b/helper/logging.inc
index eb20775c..8b102d4c 100644
--- a/helper/logging.inc
+++ b/helper/logging.inc
@@ -10,6 +10,8 @@ LOG_DIR=${ROOT_DIR}/logs
mkdir -p "$LOG_DIR"
+exec 8>&0 # This redirection is used for chroot debugging
+
set_quiet () {
if [ "x$MLTK_QUIET" != "x1" ]; then
exec 6>&1 > "$LOG_DIR/stdout.log"
diff --git a/remote/includes/chroot.inc b/remote/includes/chroot.inc
index f6581680..fc9738ec 100644
--- a/remote/includes/chroot.inc
+++ b/remote/includes/chroot.inc
@@ -72,7 +72,7 @@ chroot_gen_autoexec() {
# create the script to be automatically executed.
cat >"${CHROOT_MOUNTDIR}/autoexec.bat"<<-EOF
#!/bin/bash
- echo "chroot success."
+ echo "chroot started successfully."
EOF
# dump the piped input to it
@@ -128,6 +128,7 @@ chroot_run() {
chroot_gen_autoexec || perror "'chroot_gen_autoexec' failed with $?."
# do the chroot
+ exec 0>&8
chroot --userspec root:root "${CHROOT_MOUNTDIR}" /autoexec.bat
local RET=$?
if [ "$RET" -eq 0 ]; then
diff --git a/remote/modules/vmware/vmware.build b/remote/modules/vmware/vmware.build
index 8636f335..8dba3c11 100644
--- a/remote/modules/vmware/vmware.build
+++ b/remote/modules/vmware/vmware.build
@@ -21,16 +21,17 @@ fetch_source() {
}
build() {
-
# prepare the build directory with the files needed during the chroot
cp "${MODULE_DIR}/src/$VMWARE_BUNDLE_FILE" "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
cp -r "${MODULE_DIR}/patches" "${MODULE_BUILD_DIR}"
pinfo "Installing vmware per chroot..."
chroot_run "${MODULE_BUILD_DIR}" <<-EOF
+ # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
yes | sh /"${VMWARE_BUNDLE_FILE}" --eulas-agreed --console --required
vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmnet
vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmmon
+ PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
EOF
# cleanup unneeded files
--
cgit v1.2.3-55-g7522
From 04cffa5b0912f201d80b433fe1de52aac636f46f Mon Sep 17 00:00:00 2001
From: Christian Rößler
Date: Fri, 21 Mar 2014 15:19:23 +0100
Subject: [vmware.build] Ahem, forgot to re-comment debugging bash
---
remote/modules/vmware/vmware.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'remote/modules')
diff --git a/remote/modules/vmware/vmware.build b/remote/modules/vmware/vmware.build
index 8dba3c11..c1dd77ce 100644
--- a/remote/modules/vmware/vmware.build
+++ b/remote/modules/vmware/vmware.build
@@ -31,7 +31,7 @@ build() {
yes | sh /"${VMWARE_BUNDLE_FILE}" --eulas-agreed --console --required
vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmnet
vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmmon
- PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
+ # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
EOF
# cleanup unneeded files
--
cgit v1.2.3-55-g7522
From e1f710a498b0da764deb046f0acba51307c476a0 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 24 Mar 2014 13:45:36 +0100
Subject: [vmware] adapted .build to new kernel stuff
---
remote/modules/vmware/vmware.build | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/vmware/vmware.build b/remote/modules/vmware/vmware.build
index c1dd77ce..5d91b02d 100644
--- a/remote/modules/vmware/vmware.build
+++ b/remote/modules/vmware/vmware.build
@@ -21,17 +21,19 @@ fetch_source() {
}
build() {
+
# prepare the build directory with the files needed during the chroot
cp "${MODULE_DIR}/src/$VMWARE_BUNDLE_FILE" "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
cp -r "${MODULE_DIR}/patches" "${MODULE_BUILD_DIR}"
+
+ # sanity check to see if KERNEL_HEADERS_PATH is set and exists
+ [ -z "${KERNEL_HEADERS_PATH}" -o ! -e "${KERNEL_HEADERS_PATH}" ] && perror "KERNEL_HEADERS_PATH ('"${KERNEL_HEADERS_PATH}"') not found. Was the kernel module built?"
pinfo "Installing vmware per chroot..."
chroot_run "${MODULE_BUILD_DIR}" <<-EOF
- # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
yes | sh /"${VMWARE_BUNDLE_FILE}" --eulas-agreed --console --required
- vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmnet
- vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmmon
- # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
+ vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmnet
+ vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmmon
EOF
# cleanup unneeded files
--
cgit v1.2.3-55-g7522
From 7cd3eb5224e61fd7bf150594aac4200b347d45b4 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 24 Mar 2014 13:45:53 +0100
Subject: [dnbd3] adapted .build to new kernel functions
---
remote/modules/dnbd3/dnbd3.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'remote/modules')
diff --git a/remote/modules/dnbd3/dnbd3.build b/remote/modules/dnbd3/dnbd3.build
index e285788b..2651daac 100644
--- a/remote/modules/dnbd3/dnbd3.build
+++ b/remote/modules/dnbd3/dnbd3.build
@@ -25,7 +25,7 @@ HEREEND
build() {
cd "$MODULE_DIR/src/kmod" || perror "Could not CD to standalone dnbd3 kmod dir"
- make MODULE_NAME=dnbd3 KDIR="$MODULES_DIR/kernel/ksrc" || perror "Could not compile kernel module"
+ make MODULE_NAME=dnbd3 KDIR="$KERNEL_HEADERS_PATH" || perror "Could not compile kernel module"
mkdir -p "$MODULE_BUILD_DIR/lib/modules/dnbd3" || perror "Could not create lib/modules/dnbd3"
mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin" || perror "Coould not create opt/openslx/bin"
cp "$MODULE_DIR/src/kmod/dnbd3.ko" "$MODULE_BUILD_DIR/lib/modules/dnbd3/" || perror "could not cp dnbd3.ko"
--
cgit v1.2.3-55-g7522
From 9fef57bae0dfb22157beaea39efe437959c91a35 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 24 Mar 2014 13:46:13 +0100
Subject: [kernel] adapted .build to new kernel functions
---
remote/modules/kernel/kernel.build | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
(limited to 'remote/modules')
diff --git a/remote/modules/kernel/kernel.build b/remote/modules/kernel/kernel.build
index 78832905..f74403f1 100644
--- a/remote/modules/kernel/kernel.build
+++ b/remote/modules/kernel/kernel.build
@@ -1,3 +1,29 @@
+get_kernel_version() {
+ # determine kernel version that will be running in the generated system
+ if [ -e "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" ]; then
+ # declare kernel version stuff
+ declare -rg SYS_UTS_RELEASE=$(grep 'UTS_RELEASE' "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" | awk -F '"' '{print $2}')
+ declare -rg SYS_KERNEL=$(echo "$SYS_UTS_RELEASE" | grep -o -E '^[0-9\.]+')
+ declare -rg KERNEL_NEW_VERSION="$SYS_UTS_RELEASE"
+
+ # declare path to kernel headers and modules/firmware
+ declare -rg KERNEL_HEADERS_PATH="$MODULES_DIR/kernel/ksrc"
+ declare -rg KERNEL_BASE_DIR="$MODULES_DIR/kernel/build"
+
+ else
+ # TODO handle
+ perror "'$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h' does not exist yes."
+ fi
+
+ # print debug info
+ pdebug "SYS_UTS_RELEASE: '$SYS_UTS_RELEASE'"
+ pdebug "SYS_KERNEL: '$SYS_KERNEL'"
+ pdebug "KERNEL_NEW_VERSION: '$KERNEL_NEW_VERSION'"
+ pdebug "KERNEL_BASE_DIR: '$KERNEL_BASE_DIR'"
+
+ # check the headers/src path
+}
+
fetch_source() {
pdebug "getting kernel sources via git ...."
[ -d ./ksrc ] && rm -rf ./ksrc # slightly brutal ...
--
cgit v1.2.3-55-g7522
From 9a89fc12fc005a5cf1eba86f4ae302950266f078 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 24 Mar 2014 13:46:48 +0100
Subject: [nvidia_kernel] adapted .build to new kernel functions
---
remote/modules/nvidia_kernel/nvidia_kernel.build | 3 +--
remote/modules/nvidia_kernel/nvidia_kernel.conf | 3 +++
2 files changed, 4 insertions(+), 2 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.build b/remote/modules/nvidia_kernel/nvidia_kernel.build
index bde06c60..a1275c70 100644
--- a/remote/modules/nvidia_kernel/nvidia_kernel.build
+++ b/remote/modules/nvidia_kernel/nvidia_kernel.build
@@ -7,7 +7,6 @@ fetch_source() {
build() {
local ROOTUPPERDIR="$MODULE_DIR/rootupper"
- local KERNELSRCDIR="$MODULES_DIR/kernel/ksrc" # kernel sources
local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
local NVIDIAEXTRACTDIR="$ROOTUPPERDIR/NVIDIA"
@@ -29,7 +28,7 @@ build() {
chroot_run "$ROOTUPPERDIR" <<-EOF
- /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --kernel-source-path /"$KERNELSRCDIR" # Do the work!
+ /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --kernel-source-path /"$KERNEL_HEADERS_PATH" # Do the work!
# fake success since the installer will exit with an error due to the module not loading properly.
exit 0
EOF
diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.conf b/remote/modules/nvidia_kernel/nvidia_kernel.conf
index 34e66b99..9880100d 100644
--- a/remote/modules/nvidia_kernel/nvidia_kernel.conf
+++ b/remote/modules/nvidia_kernel/nvidia_kernel.conf
@@ -5,3 +5,6 @@ REQUIRED_URL="http://download.nvidia.com/XFree86/Linux-x86_64/$REQUIRED_VERSION/
REQUIRED_DIRECTORIES="
/lib/modules/nvidia
"
+REQUIRED_MODULES="
+ kernel
+"
--
cgit v1.2.3-55-g7522
From bfba9c692d8e18008d2035ffaf07f1e789a1122f Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 24 Mar 2014 13:47:37 +0100
Subject: [vmware] added 'kernel' to REQUIRED_MODULES
---
remote/modules/vmware/vmware.conf | 1 +
1 file changed, 1 insertion(+)
(limited to 'remote/modules')
diff --git a/remote/modules/vmware/vmware.conf b/remote/modules/vmware/vmware.conf
index 51e73b85..017d1d5b 100644
--- a/remote/modules/vmware/vmware.conf
+++ b/remote/modules/vmware/vmware.conf
@@ -1,5 +1,6 @@
REQUIRED_DOWNLOAD_BASE="http://softwareupdate.vmware.com/cds/vmw-desktop/ws/10.0.1/1379776/linux/core/"
REQUIRED_TYPE="workstation"
+REQUIRED_MODULES="kernel"
REQUIRED_DIRECTORIES="
/etc/vmware
/usr/sbin
--
cgit v1.2.3-55-g7522
From 06bf4e941bc938a4ed3ad987b6fdef0a3e9d6ff0 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 24 Mar 2014 13:57:01 +0100
Subject: [kernel-system] new module
kernel-system provides the kernel from the running system without the need of compiling our own.
also installs kernel headers through the package manager to be able to build kernel modules as required
by other modules like vmware, dndb3...
---
remote/modules/kernel-system/kernel-system.build | 114 +++++++++++++++++++++
remote/modules/kernel-system/kernel-system.conf | 3 +
.../kernel-system/kernel-system.conf.opensuse | 6 ++
.../kernel-system/kernel-system.conf.ubuntu | 6 ++
remote/modules/kernel-system/patch-speaker | 6 ++
5 files changed, 135 insertions(+)
create mode 100644 remote/modules/kernel-system/kernel-system.build
create mode 100644 remote/modules/kernel-system/kernel-system.conf
create mode 100644 remote/modules/kernel-system/kernel-system.conf.opensuse
create mode 100644 remote/modules/kernel-system/kernel-system.conf.ubuntu
create mode 100755 remote/modules/kernel-system/patch-speaker
(limited to 'remote/modules')
diff --git a/remote/modules/kernel-system/kernel-system.build b/remote/modules/kernel-system/kernel-system.build
new file mode 100644
index 00000000..d542a80d
--- /dev/null
+++ b/remote/modules/kernel-system/kernel-system.build
@@ -0,0 +1,114 @@
+# overloaded get_kernel_version function
+get_kernel_version(){
+ pinfo "KERNEL_CURRENT_VERSION: ${KERNEL_CURRENT_VERSION}"
+ [ -z "${KERNEL_CURRENT_VERSION}" ] && perror "KERNEL_CURRENT_VERSION is not set, 'uname -r' output: '$(uname -r)'. Aborting..."
+
+ # set SYS_UTS_RELEASE and SYS_KERNEL correctly
+ declare -rg SYS_UTS_RELEASE="${KERNEL_CURRENT_VERSION}" 2>/dev/null
+ declare -rg SYS_KERNEL="$(echo ${KERNEL_CURRENT_VERSION} | grep -o -E '^[0-9\.]+')" 2>/dev/null
+
+ # KERNEL_NEW_VERSION is the same as KERNEL_CURRENT_VERSION
+ declare -rg KERNEL_NEW_VERSION="$KERNEL_CURRENT_VERSION" 2>/dev/null
+
+ # check linux headers directory
+ if [ -d "/usr/src/linux-headers-$(uname -r)" ]; then
+ declare -rg KERNEL_HEADERS_PATH="/usr/src/linux-headers-$(uname -r)" 2>/dev/null
+ else
+ # fetch source did not install the headers correctly.
+ perror "kernel headers for $KERNEL_CURRENT_VERSION not found! Re-build the kernel-system module"
+ fi
+
+ # check kernel modules/firmware directory
+ if [ -d "/lib/modules/${KERNEL_CURRENT_VERSION}" -a \
+ -d "/lib/firmware/${KERNEL_CURRENT_VERSION}" ]; then
+ # The expected paths exists, set KERNEL_BASE_DIR to /
+ declare -rg KERNEL_BASE_DIR="/" 2>/dev/null
+ else
+ perror "Could not find kernel modules / firmware for kernel version '$KERNEL_CURRENT_VERSION'. \
+ Does '/lib/modules/$KERNEL_CURRENT_VERSION' exist?"
+ fi
+
+ # print debug info
+ pdebug "SYS_UTS_RELEASE: '$SYS_UTS_RELEASE'"
+ pdebug "SYS_KERNEL: '$SYS_KERNEL'"
+ pdebug "KERNEL_NEW_VERSION: '$KERNEL_NEW_VERSION'"
+ pdebug "KERNEL_BASE_DIR: '$KERNEL_BASE_DIR'"
+
+ # set KERNEL_HEADERS_PATH
+ #get_kernel_headers_path
+}
+
+get_kernel_headers_path(){
+ # determine the path to the kernel headers we just installed
+ for DIR in $(list_content_package --dirs linux-headers-$(uname -r) ); do
+ if [[ "$DIR" =~ .*linux-headers-$(uname -r)$ ]]; then
+ # validate candidate
+ [ -e "$DIR/./include/generated/utsrelease.h" ] \
+ || perror "Could not find utsrelease.h at '$DIR/./include/generated/utsrelease.h'"
+ # TODO: maybe check if SYS_UTS_RELEASE is the same as in the header.
+
+ # all good, we found it
+ pinfo "Kernel headers found at '$DIR'."
+ declare -rg KERNEL_HEADERS_PATH="$DIR"
+ break
+ fi
+ done
+
+ [ -z "$KERNEL_HEADERS_PATH" ] && perror "KERNEL_HEADERS_PATH was not set correctly."
+
+}
+
+fetch_source() {
+
+ # get the source from repos, use meta-package for now
+ pinfo "Installing kernel headers from the repositories for version '${KERNEL_CURRENT_VERSION}'"
+
+ # the actual install routine is done via config file
+ # through the REQUIRED_INSTALLED_PACKAGES variable
+
+}
+
+build() {
+
+ # simply copy the kernel from the running system
+ # to the build directory as it is.
+ local KERNEL_SYSTEM_PATH=""
+
+ # 1st "parse" /proc/cmdline for the kernel name
+ for i in $(cat /proc/cmdline); do
+ [[ "$i" =~ ^BOOT_IMAGE=.* ]] && local BOOT_IMAGE="$(basename $(echo $i|cut -c 12-))"
+ done
+
+ # exit if KERNEL_SYSTEM_FILENAME is empty, should not happen
+ [ -z "${BOOT_IMAGE}" ] && perror "Could not determine the full path to the running kernel..."
+
+ # now find it in KERNEL_SYSTEM_SEARCH_PATH
+ # NOTE: this variable should be expanded in the future if new locations are to be searched
+ local KERNEL_SYSTEM_SEARCH_PATH="/boot"
+ local KERNEL_SYSTEM_SEARCH_RESULTS="$(find "${KERNEL_SYSTEM_SEARCH_PATH}" -type f -iname "*${BOOT_IMAGE}*")"
+
+ if [ "$(echo $KERNEL_SYSTEM_SEARCH_RESULTS|wc -w)" -eq 1 ]; then
+ # we found the running kernel path
+ KERNEL_SYSTEM_PATH="${KERNEL_SYSTEM_SEARCH_RESULTS}"
+ else
+ # we found more than one, shouldn't happen...
+ perror "Found more than one kernel named '${BOOT_IMAGE}' inside '${KERNEL_SYSTEM_SEARCH_PATH}'."
+ fi
+
+ # at this point, we should definitly have KERNEL_SYSTEM_PATH, check just in case :)
+ [ -z "${KERNEL_SYSTEM_PATH}" ] && perror "KERNEL_SYSTEM_PATH isn't set, kernel not found. This shouldn't happen!"
+ pinfo "Live kernel path: $KERNEL_SYSTEM_PATH"
+
+ # copy kernel to build directory
+ [ -z "${KERNEL_TARGET_NAME}" ] && perror "KERNEL_TARGET_NAME not set, this mean something is wrong with remote/include/kernel.inc"
+ cp "${KERNEL_SYSTEM_PATH}" "${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}" && \
+ pinfo "Copied kernel from '${KERNEL_SYSTEM_PATH}' to '${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}'"
+ #[ -z "${KERNEL_BUILD_DIR}" ] && KERNEL_BUILD_DIR="${MODULE_BUILD_DIR}"
+}
+
+post_copy() {
+ :
+ #mkdir -p "$TARGET_BUILD_DIR/../kernel"
+ #cp -a "$MODULE_BUILD_DIR/kernel" "$TARGET_BUILD_DIR/../kernel/kernel" || perror "could not copy kernel to remote build dir."
+}
+
diff --git a/remote/modules/kernel-system/kernel-system.conf b/remote/modules/kernel-system/kernel-system.conf
new file mode 100644
index 00000000..0cd03752
--- /dev/null
+++ b/remote/modules/kernel-system/kernel-system.conf
@@ -0,0 +1,3 @@
+REQUIRED_BINARIES=""
+REQUIRED_LIBRARIES=""
+REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/kernel-system/kernel-system.conf.opensuse b/remote/modules/kernel-system/kernel-system.conf.opensuse
new file mode 100644
index 00000000..6bfc2078
--- /dev/null
+++ b/remote/modules/kernel-system/kernel-system.conf.opensuse
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ kernel-desktop-devel
+"
+REQUIRED_CONTENT_PACKAGES="
+ kernel-desktop-devel
+"
diff --git a/remote/modules/kernel-system/kernel-system.conf.ubuntu b/remote/modules/kernel-system/kernel-system.conf.ubuntu
new file mode 100644
index 00000000..4d47b243
--- /dev/null
+++ b/remote/modules/kernel-system/kernel-system.conf.ubuntu
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ linux-headers-$(uname -r)
+"
+REQUIRED_CONTENT_PACKAGES="
+ linux-headers-$(uname -r)
+"
diff --git a/remote/modules/kernel-system/patch-speaker b/remote/modules/kernel-system/patch-speaker
new file mode 100755
index 00000000..5d5a9f9a
--- /dev/null
+++ b/remote/modules/kernel-system/patch-speaker
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+if ! grep notes "ksrc/drivers/input/misc/pcspkr.c" > /dev/null; then
+ echo "Patching pc speaker :-)"
+ sed -i.nomusic -r 's#^static.*int.*pcspkr_event#static const int notes[] = { /*tetris*/ 1319, 988, 1047, 1175, 1047, 988, 880, 880, 1047, 1319, 1175, 1047, 988, 1047, 1175, 1319, 1047, 880, 880, 1175, 1397, 1760, 1568, 1397, 1319, 1047, 1319, 1175, 1047, 988, 988, 1047, 1175, 1319, 1047, 880, 880, /*mario*/ 660, 660, 660, 510, 660, 770, 380, 510, 380, 320, 440, 480, 450, 430, 380, 660, 760, 860, 700, 760, 660, 520, 580, 480, 510, 380, 320, 440, 480, 450, 430, 380, 660, 760, 860, 700, 760, 660, 520, 580, 480, 500, 760, 720, 680, 620, 650, 380, 430, 500, 430, 500, 570, 500, 760, 720, 680, 620, 650, 1020, 1020, 1020, 380, 500, 760, 720, 680, 620, 650, 380, 430, 500, 430, 500, 570, 500, 760, 720, 680, 620, 650, 1020, 1020, 1020, 380, 500, 760, 720, 680, 620, 650, 380, 430, 500, 430, 500, 570, 585, 550, 500, 380, 500, 500, 500, 500, 500, 500, 500, 580, 660, 500, 430, 380, 500, 500, 500, 500, 580, 660, 870, 760, 500, 500, 500, 500, 580, 660, 500, 430, 380, 660, 660, 660, 510, 660, 770, 380, /* elise */ 420, 400, 420, 400, 420, 315, 370, 335, 282, 180, 215, 282, 315, 213, 262, 315, 335, 213, 420, 400, 420, 400, 420, 315, 370, 335, 282, 180, 215, 282, 315, 213, 330, 315, 282 };\nstatic int notePos = 0;\n\ng;s#\s*if \(value > 20 && value < 32767\)#\n if (value) value = notes[notePos++ % (sizeof(notes) / sizeof(notes[0]))];\n\ng' "ksrc/drivers/input/misc/pcspkr.c"
+fi
--
cgit v1.2.3-55-g7522
From 62f0ad492ba49fc5ecec2f4e30edec7d33e50537 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 24 Mar 2014 13:59:26 +0100
Subject: [kernel-system] added TODO. DO NOT USE YET, WIP!
You have been warned.
---
remote/modules/kernel-system/TODO | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 remote/modules/kernel-system/TODO
(limited to 'remote/modules')
diff --git a/remote/modules/kernel-system/TODO b/remote/modules/kernel-system/TODO
new file mode 100644
index 00000000..7665abac
--- /dev/null
+++ b/remote/modules/kernel-system/TODO
@@ -0,0 +1,3 @@
+make the modules load in stage31/init since we dont know which ones are compiled within kernel and which need to be loaded explicitly
+
+Idea: do it like DRM stuff, with pci-ids.
--
cgit v1.2.3-55-g7522
From 18149cac0b4b9523ca0a71a982a2bfa1ed2fa018 Mon Sep 17 00:00:00 2001
From: Christian Rößler
Date: Mon, 24 Mar 2014 15:54:51 +0100
Subject: [vmware, chroot] vmware pseudo-deletions in case workstation is
installed in the base system. An explicit warning for chroot.inc's
autoexec.bat.
---
remote/includes/chroot.inc | 14 +++++++++++++-
remote/modules/vmware/vmware.build | 9 +++++++--
2 files changed, 20 insertions(+), 3 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/includes/chroot.inc b/remote/includes/chroot.inc
index fc9738ec..48ad39d3 100644
--- a/remote/includes/chroot.inc
+++ b/remote/includes/chroot.inc
@@ -72,6 +72,18 @@ chroot_gen_autoexec() {
# create the script to be automatically executed.
cat >"${CHROOT_MOUNTDIR}/autoexec.bat"<<-EOF
#!/bin/bash
+ #######################################################
+ # #
+ # Warning! #
+ # #
+ # This file is only meant to be executed within #
+ # the specially chrooted mltk building environment. #
+ # #
+ # Do NOT execute it if you are not sure what you do, #
+ # it may be very harmful if being run in a normal #
+ # system environment! #
+ # #
+ #######################################################
echo "chroot started successfully."
EOF
@@ -128,7 +140,7 @@ chroot_run() {
chroot_gen_autoexec || perror "'chroot_gen_autoexec' failed with $?."
# do the chroot
- exec 0>&8
+ exec 0>&8 # This redirection is used for debugging within a chroot
chroot --userspec root:root "${CHROOT_MOUNTDIR}" /autoexec.bat
local RET=$?
if [ "$RET" -eq 0 ]; then
diff --git a/remote/modules/vmware/vmware.build b/remote/modules/vmware/vmware.build
index c1dd77ce..b4baf9c2 100644
--- a/remote/modules/vmware/vmware.build
+++ b/remote/modules/vmware/vmware.build
@@ -21,6 +21,10 @@ fetch_source() {
}
build() {
+ local DELETE_FILES
+ local OLDIFS="$IFS"
+ DELETE_FILES=$(for LINE in $REQUIRED_VMWARE_DELETIONS;do echo rm -rf $LINE; done)
+
# prepare the build directory with the files needed during the chroot
cp "${MODULE_DIR}/src/$VMWARE_BUNDLE_FILE" "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
cp -r "${MODULE_DIR}/patches" "${MODULE_BUILD_DIR}"
@@ -28,9 +32,10 @@ build() {
pinfo "Installing vmware per chroot..."
chroot_run "${MODULE_BUILD_DIR}" <<-EOF
# PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
+ $DELETE_FILES
yes | sh /"${VMWARE_BUNDLE_FILE}" --eulas-agreed --console --required
- vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmnet
- vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmmon
+ vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmnet
+ vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmmon
# PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
EOF
--
cgit v1.2.3-55-g7522
From 1d9cad707f1a50dd07f1c4d9d4fc292561cecaa2 Mon Sep 17 00:00:00 2001
From: Christian Rößler
Date: Mon, 24 Mar 2014 16:03:16 +0100
Subject: [vmware] vmware.conf.ubuntu added, var REQUIRED_VMWARE_DELETIONS as
file/dir list of pseudo-deletions within chroot in case vmware-Workstation is
installed in base system.
---
remote/modules/vmware/vmware.conf.ubuntu | 136 +++++++++++++++++++++++++++++++
1 file changed, 136 insertions(+)
create mode 100644 remote/modules/vmware/vmware.conf.ubuntu
(limited to 'remote/modules')
diff --git a/remote/modules/vmware/vmware.conf.ubuntu b/remote/modules/vmware/vmware.conf.ubuntu
new file mode 100644
index 00000000..c75ee906
--- /dev/null
+++ b/remote/modules/vmware/vmware.conf.ubuntu
@@ -0,0 +1,136 @@
+REQUIRED_VMWARE_DELETIONS="
+ /var/lib/vmware
+ /etc/vmware-vix
+ /etc/rc0.d/K08vmware
+ /etc/rc0.d/K06vmware-workstation-server
+ /etc/rc0.d/K06vmamqpd
+ /etc/pam.d/vmware-authd
+ /etc/rc3.d/S19vmware
+ /etc/rc3.d/S55vmware-workstation-server
+ /etc/rc3.d/S25vmamqpd
+ /etc/rc3.d/K08vmware-USBArbitrator
+ /etc/rc3.d/S50vmware-USBArbitrator
+ /etc/rc5.d/K08vmware-USBArbitrator
+ /etc/rc5.d/S50vmware-USBArbitrator
+ /etc/rc2.d/S19vmware
+ /etc/rc2.d/S55vmware-workstation-server
+ /etc/rc2.d/S25vmamqpd
+ /etc/rc2.d/K08vmware-USBArbitrator
+ /etc/rc2.d/S50vmware-USBArbitrator
+ /etc/xdg/menus/applications-merged
+ /etc/rc6.d/K08vmware
+ /etc/rc6.d/K06vmware-workstation-server
+ /etc/rc6.d/K06vmamqpd
+ /etc/rc4.d/S19vmware
+ /etc/rc4.d/S55vmware-workstation-server
+ /etc/rc4.d/S25vmamqpd
+ /etc/init.d/vmamqpd
+ /etc/init.d/vmware-USBArbitrator
+ /etc/init.d/vmware-workstation-server
+ /etc/init.d/vmware
+ /etc/thnuclnt
+ /etc/vmware-installer
+ /etc/cups/thnuclnt.convs
+ /etc/cups/thnuclnt.types
+ /etc/vmware/netmap.conf
+ /etc/vmware/icu
+ /etc/vmware/hostd
+ /etc/vmware/installer.sh
+ /etc/vmware/bootstrap
+ /etc/vmware/ssl
+ /etc/vmware/config
+ /etc/vmware/locations
+ /etc/modprobe.d/vmware-fuse.conf
+ /lib/modules/3.11.0-13-generic/misc/vmnet.ko
+ /lib/modules/3.11.0-13-generic/misc/vmmon.ko
+ /usr/share/mime/packages/vmware-player.xml
+ /usr/share/applications/vmware-workstation.desktop
+ /usr/share/applications/vmware-player.desktop
+ /usr/share/applications/vmware-netcfg.desktop
+ /usr/share/desktop-directories/vmware-ace-vms.directory
+ /usr/share/man/man1/vmware.1.gz
+ /usr/share/doc/vmware-vix
+ /usr/share/doc/vmware-workstation
+ /usr/share/doc/vmware-player
+ /usr/share/icons/hicolor/32x32/mimetypes/application-certificate.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-easter-egg.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-team.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm-legacy.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm-clone.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm.png
+ /usr/share/icons/hicolor/32x32/apps/vmware-player.png
+ /usr/share/icons/hicolor/32x32/apps/vmware-workstation.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vmfoundry.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vmdisk.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-easter-egg.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-team.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm-legacy.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm-clone.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-snapshot.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm.png
+ /usr/share/icons/hicolor/48x48/apps/vmware-player.png
+ /usr/share/icons/hicolor/48x48/apps/vmware-workstation.png
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-easter-egg.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-team.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm-clone.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-snapshot.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm-legacy.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vmfoundry.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-certificate.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm.svg
+ /usr/share/icons/hicolor/scalable/apps/vmware-workstation.svg
+ /usr/share/icons/hicolor/16x16/mimetypes/application-certificate.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-easter-egg.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-team.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm-legacy.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm-clone.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm.png
+ /usr/share/icons/hicolor/16x16/apps/vmware-player.png
+ /usr/share/icons/hicolor/16x16/apps/vmware-netcfg.png
+ /usr/share/icons/hicolor/16x16/apps/vmware-workstation.png
+ /usr/share/icons/hicolor/24x24/mimetypes
+ /usr/share/icons/hicolor/24x24/apps/vmware-player.png
+ /usr/share/icons/hicolor/24x24/apps/vmware-netcfg.png
+ /usr/share/icons/hicolor/24x24/apps/vmware-workstation.png
+ /usr/bin/vmnet-dhcpd
+ /usr/bin/vmware-unity-helper
+ /usr/bin/ovftool
+ /usr/bin/vmrun
+ /usr/bin/vmware-vim-cmd
+ /usr/bin/vmware-wssc-adminTool
+ /usr/bin/vmnet-bridge
+ /usr/bin/vmplayer
+ /usr/bin/vmnet-sniffer
+ /usr/bin/vmss2core
+ /usr/bin/vmware-usbarbitrator
+ /usr/bin/vmware-netcfg
+ /usr/bin/vmware-modconfig
+ /usr/bin/vmware-tray
+ /usr/bin/vmware-mount
+ /usr/bin/vm-support
+ /usr/bin/vmware-vdiskmanager
+ /usr/bin/vmware-license-enter.sh
+ /usr/bin/vmware-license-check.sh
+ /usr/bin/vmnet-natd
+ /usr/bin/vmware-uninstall
+ /usr/bin/vmware-vprobe
+ /usr/bin/vmware-fuseUI
+ /usr/bin/vmware-installer
+ /usr/bin/vmware-ping
+ /usr/bin/vmware-gksu
+ /usr/bin/vmnet-netifup
+ /usr/bin/vmware-networks
+ /usr/bin/vmware
+ /usr/bin/vmware-hostd
+ /usr/include/vmware-vix
+ /usr/lib/vmware-vix
+ /usr/lib/vmware-ovftool
+ /usr/lib/vmware-installer
+ /usr/lib/libvixAllProducts.so
+ /usr/lib/cups/filter/thnucups
+ /usr/lib/diskLibWrapper.so
+ /usr/lib/vmware
+ /usr/local/share/applications
+ /usr/sbin/vmware-authdlauncher
+ /usr/sbin/vmware-authd
+"
--
cgit v1.2.3-55-g7522
From b971eea3b1c467b5620993b5a40c90e0cac7d6b6 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Mon, 24 Mar 2014 18:35:09 +0100
Subject: [dhcpc-busybox] fix bad hostname setting logic
fixed multiple interfaces support.
---
.../data/opt/openslx/scripts/udhcpc-openslx | 55 +++++++++++++---------
1 file changed, 34 insertions(+), 21 deletions(-)
(limited to 'remote/modules')
diff --git a/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx b/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
index 2675afc2..cf140246 100755
--- a/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
+++ b/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
@@ -73,12 +73,25 @@ case "$1" in
ip route add default via "$router"
fi
+ # get domain, hostname and thus fqdn from DNS
+ dns_fqdn=$(rdns "$ip")
+ dns_short="${dns_fqdn%%.*}"
+ # check if it is fqdn
+ if [ "$dns_fqdn" == "$dns_short" ]; then
+ unset dns_fqdn dns_short
+ fi
+
# Update resolver configuration file
CONF=""
if [ -n "$domain" ]; then
printf -v CONF "${CONF}domain $domain\n"
+ elif [ -n "$dns_fqdn" ]; then
+ domain="${dns_fqdn#*.}"
+ printf -v CONF "${CONF}domain $domain\n"
+
elif [ -n "$SLX_NET_DOMAIN" ]; then
- printf -v CONF "${CONF}domain $SLX_NET_DOMAIN\n"
+ domain="$SLX_NET_DOMAIN"
+ printf -v CONF "${CONF}domain $domain\n"
fi
if [ -n "$search" ]; then
printf -v CONF "${CONF}search $search\n"
@@ -102,34 +115,34 @@ case "$1" in
echo -n "$CONF" > "$THIS_RESOLV"
rebuild_resolv_conf
fi
+
# Things that should only happen for the main interface that was used for booting
if [ "$interface" == "br0" ]; then
- dns_host=$(rdns "$ip")
- short="${dns_host%%.*}"
# Update IP
sed -i "s/^\(SLX_PXE_CLIENT_IP=\).*$/\1'$ip'/" /opt/openslx/config
# Only if network is not ready yet
if [ ! -e "/run/network/network-ready" ]; then
# Update hostname
- if [ -z "$dns_host" ]; then
+ if [ -z "$dns_fqdn" -a -n "$domain" -a -n "$hostname" ]; then
# fallback to what the dhcp told us
- dns_host="$hostname"
+ dns_fqdn="${hostname}.${domain}"
fi
- if [ -z "$dns_host" ]; then
+ if [ -z "$dns_fqdn" ]; then
# only if there is no /etc/hostname, we fall back (far back, that is)
- [ ! -s "/etc/hostname" ] && dns_host="slx-client"
+ [ ! -s "/etc/hostname" ] && dns_fqdn="slx-client"
fi
- # finally, if dns_host was set to anything, apply it
- if [ -n "$dns_host" ]; then
- echo "$short" > "/proc/sys/kernel/hostname"
- echo "$short" > "/etc/hostname"
+ # finally, if dns_fqdn was set to anything, apply it
+ if [ -n "$dns_fqdn" ]; then
+ dns_short="${dns_fqdn%%.*}"
+ echo "$dns_short" > "/proc/sys/kernel/hostname"
+ echo "$dns_short" > "/etc/hostname"
if grep '^SLX_HOSTNAME=' /opt/openslx/config 2>/dev/null; then
- sed -i "s/^\(SLX_HOSTNAME=\).*$/\1'$dns_host'/" /opt/openslx/config
+ sed -i "s/^\(SLX_HOSTNAME=\).*$/\1'$dns_short'/" /opt/openslx/config
else
echo "# Config written by openslx-dhcp-script (1)" >> /opt/openslx/config
- echo "SLX_HOSTNAME='$dns_host'" >> /opt/openslx/config
+ echo "SLX_HOSTNAME='$dns_short'" >> /opt/openslx/config
fi
fi
@@ -154,18 +167,18 @@ case "$1" in
# Hostname in /etc/hosts
touch "/etc/hosts"
hostlist=""
- [ -n "$dns_host" ] && hostlist="$dns_host"
- [ -n "$hostname" -a "x$hostname" != "x$dns_host" ] && hostlist="$hostlist $hostname"
+ [ -n "$dns_fqdn" ] && hostlist="$dns_fqdn"
+ [ -n "$hostname" -a -n "$domain" -a "x${hostname}.${domain}" != "x$dns_fqdn" ] && hostlist="$hostlist ${hostname}.${domain}"
if [ -n "$hostlist" ]; then
for host in $hostlist; do
- short="${host%%.*}"
- [ "x$short" = "x$host" ] && short=""
+ host_short="${host%%.*}"
+ [ "x$host_short" = "x$host" ] && host_short=""
sed -i -r "s/\s$(escape_search "$host")(\s|$)/ /g" /etc/hosts
- [ -n "$short" ] && sed -i -r "s/\s$(escape_search "$short")(\s|$)/ /g" /etc/hosts
+ [ -n "$host_short" ] && sed -i -r "s/\s$(escape_search "$host_short")(\s|$)/ /g" /etc/hosts
if grep -q -E "^$ip\s" /etc/hosts; then
- sed -i "s/^$(escape_search "$ip")\s/$(escape_replace "$ip $host $short ")/g" /etc/hosts
+ sed -i "s/^$(escape_search "$ip")\s.*/$(escape_replace "$ip $host $host_short")/g" /etc/hosts
else
- echo "$ip $host $short" >> /etc/hosts
+ echo "$ip $host $host_short" >> /etc/hosts
fi
done
fi
@@ -201,6 +214,7 @@ case "$1" in
echo 1 > "/proc/sys/net/ipv4/conf/$interface/promote_secondaries"
clientip=${ip%%:*}
ip addr del "$clientip/$(ipcalc -s -p $clientip $subnet|sed s/.*=//)" dev "$interface"
+ sed -i "/^$(escape_search "$ip")(\s|$)/d" /etc/hosts
else
echo "NFS is active, not removing old ip adress. warning: lease may expire after a while."
fi
@@ -213,7 +227,6 @@ case "$1" in
rm -f -- "$THIS_RESOLV"
rebuild_resolv_conf
fi
-
;;
leasefail)
--
cgit v1.2.3-55-g7522
From 487acf88f9087780acfcc0341e897b035f47a2ad Mon Sep 17 00:00:00 2001
From: Michael Pereira Neves
Date: Mon, 24 Mar 2014 15:05:26 -0300
Subject: [brazilian] add brazilian locale and keymaps
---
remote/modules/brazilian/brazilian.build | 40 +
remote/modules/brazilian/brazilian.conf | 5 +
remote/modules/brazilian/brazilian.conf.debian | 10 +
remote/modules/brazilian/brazilian.conf.opensuse | 13 +
remote/modules/brazilian/brazilian.conf.scientific | 8 +
remote/modules/brazilian/brazilian.conf.ubuntu | 12 +
.../data/etc/X11/xorg.conf.d/90-keytable.conf | 5 +
remote/modules/brazilian/data/etc/default/locale | 1 +
.../load-brazilian-keymap.service | 10 +
.../systemd/system/load-brazilian-keymap.service | 10 +
...azilian_qwerty_compose_keyboard_translation.map | 8568 ++++++++++++++++++++
.../brazilian_qwerty_keyboard_translation.map | 8500 +++++++++++++++++++
.../openslx/scripts/systemd-load_brazilian_keymaps | 22 +
13 files changed, 17204 insertions(+)
create mode 100644 remote/modules/brazilian/brazilian.build
create mode 100644 remote/modules/brazilian/brazilian.conf
create mode 100644 remote/modules/brazilian/brazilian.conf.debian
create mode 100644 remote/modules/brazilian/brazilian.conf.opensuse
create mode 100644 remote/modules/brazilian/brazilian.conf.scientific
create mode 100644 remote/modules/brazilian/brazilian.conf.ubuntu
create mode 100644 remote/modules/brazilian/data/etc/X11/xorg.conf.d/90-keytable.conf
create mode 100644 remote/modules/brazilian/data/etc/default/locale
create mode 100644 remote/modules/brazilian/data/etc/systemd/system/basic.target.wants/load-brazilian-keymap.service
create mode 100644 remote/modules/brazilian/data/etc/systemd/system/load-brazilian-keymap.service
create mode 100644 remote/modules/brazilian/data/opt/openslx/keymaps/brazilian_qwerty_compose_keyboard_translation.map
create mode 100644 remote/modules/brazilian/data/opt/openslx/keymaps/brazilian_qwerty_keyboard_translation.map
create mode 100644 remote/modules/brazilian/data/opt/openslx/scripts/systemd-load_brazilian_keymaps
(limited to 'remote/modules')
diff --git a/remote/modules/brazilian/brazilian.build b/remote/modules/brazilian/brazilian.build
new file mode 100644
index 00000000..78e1b1b2
--- /dev/null
+++ b/remote/modules/brazilian/brazilian.build
@@ -0,0 +1,40 @@
+fetch_source() {
+ :
+}
+
+build() {
+ # Debian-like
+ if [ -e "/etc/locale.gen" ] && ! grep -q -E '^\s*pt_BR\.UTF-8' "/etc/locale.gen"; then
+ pinfo "Generating locales..."
+ echo 'pt_BR.UTF-8 UTF-8' >> "/etc/locale.gen"
+ locale-gen || perror "Could not generate locales (debian style)"
+ fi
+
+ # Ubuntu's version
+ if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/pt_BR.utf8 ]; then
+ pinfo "Generating locales..."
+ grep -q -E -r '^\s*pt_BR\.UTF-8' "/var/lib/locales/supported.d" || echo 'pt_BR.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
+ locale-gen --no-archive --purge "pt_BR.UTF-8" || perror "Could not generate locales (ubuntu style)"
+ fi
+
+ # Put everything we build or get from the system in build dir
+ local FILELIST="$MODULE_DIR/list_copy_build"
+ rm -f "$FILELIST"
+
+ # Copy required directories from source system to build dir
+ for FILE in ${REQUIRED_DIRECTORIES}; do
+ [ ! -d "${FILE}" ] && perror "Missing required directory $FILE"
+ echo ${FILE} >> "${FILELIST}"
+ done
+
+ # Done collecting file and directory names, copy everything
+ tarcopy "$(sort -u "$FILELIST")" "$MODULE_BUILD_DIR"
+
+}
+
+post_copy() {
+ for i in LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION; do
+ add_env $i pt_BR.UTF-8 || perror "$i: add_env function failed."
+ done
+}
+
diff --git a/remote/modules/brazilian/brazilian.conf b/remote/modules/brazilian/brazilian.conf
new file mode 100644
index 00000000..e2f82123
--- /dev/null
+++ b/remote/modules/brazilian/brazilian.conf
@@ -0,0 +1,5 @@
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+REQUIRED_DIRECTORIES="
+ /usr/share/X11
+"
diff --git a/remote/modules/brazilian/brazilian.conf.debian b/remote/modules/brazilian/brazilian.conf.debian
new file mode 100644
index 00000000..a43faea2
--- /dev/null
+++ b/remote/modules/brazilian/brazilian.conf.debian
@@ -0,0 +1,10 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale
+"
+
diff --git a/remote/modules/brazilian/brazilian.conf.opensuse b/remote/modules/brazilian/brazilian.conf.opensuse
new file mode 100644
index 00000000..43cce6e6
--- /dev/null
+++ b/remote/modules/brazilian/brazilian.conf.opensuse
@@ -0,0 +1,13 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+ glibc-locale
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale/pt_BR.utf8
+"
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+
diff --git a/remote/modules/brazilian/brazilian.conf.scientific b/remote/modules/brazilian/brazilian.conf.scientific
new file mode 100644
index 00000000..88ac0d27
--- /dev/null
+++ b/remote/modules/brazilian/brazilian.conf.scientific
@@ -0,0 +1,8 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+ glibc-common
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data"
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
diff --git a/remote/modules/brazilian/brazilian.conf.ubuntu b/remote/modules/brazilian/brazilian.conf.ubuntu
new file mode 100644
index 00000000..2558791f
--- /dev/null
+++ b/remote/modules/brazilian/brazilian.conf.ubuntu
@@ -0,0 +1,12 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libx11-data
+ language-pack-pt
+"
+REQUIRED_CONTENT_PACKAGES="
+ libx11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale/C.UTF-8
+ /usr/lib/locale/pt_BR.utf8
+"
+
diff --git a/remote/modules/brazilian/data/etc/X11/xorg.conf.d/90-keytable.conf b/remote/modules/brazilian/data/etc/X11/xorg.conf.d/90-keytable.conf
new file mode 100644
index 00000000..ffbb1915
--- /dev/null
+++ b/remote/modules/brazilian/data/etc/X11/xorg.conf.d/90-keytable.conf
@@ -0,0 +1,5 @@
+Section "InputClass"
+ Identifier "LocalKeyboard"
+ MatchIsKeyboard "on"
+ Option "XkbLayout" "br"
+EndSection
diff --git a/remote/modules/brazilian/data/etc/default/locale b/remote/modules/brazilian/data/etc/default/locale
new file mode 100644
index 00000000..9842e25d
--- /dev/null
+++ b/remote/modules/brazilian/data/etc/default/locale
@@ -0,0 +1 @@
+LANG="pt_BR.UTF-8"
diff --git a/remote/modules/brazilian/data/etc/systemd/system/basic.target.wants/load-brazilian-keymap.service b/remote/modules/brazilian/data/etc/systemd/system/basic.target.wants/load-brazilian-keymap.service
new file mode 100644
index 00000000..5047122a
--- /dev/null
+++ b/remote/modules/brazilian/data/etc/systemd/system/basic.target.wants/load-brazilian-keymap.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Setup brazilian keyboard layout
+DefaultDependencies=no
+After=sysinit.target
+Before=shutdown.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/opt/openslx/scripts/systemd-load_brazilian_keymaps
diff --git a/remote/modules/brazilian/data/etc/systemd/system/load-brazilian-keymap.service b/remote/modules/brazilian/data/etc/systemd/system/load-brazilian-keymap.service
new file mode 100644
index 00000000..5047122a
--- /dev/null
+++ b/remote/modules/brazilian/data/etc/systemd/system/load-brazilian-keymap.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Setup brazilian keyboard layout
+DefaultDependencies=no
+After=sysinit.target
+Before=shutdown.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/opt/openslx/scripts/systemd-load_brazilian_keymaps
diff --git a/remote/modules/brazilian/data/opt/openslx/keymaps/brazilian_qwerty_compose_keyboard_translation.map b/remote/modules/brazilian/data/opt/openslx/keymaps/brazilian_qwerty_compose_keyboard_translation.map
new file mode 100644
index 00000000..293449f7
--- /dev/null
+++ b/remote/modules/brazilian/data/opt/openslx/keymaps/brazilian_qwerty_compose_keyboard_translation.map
@@ -0,0 +1,8568 @@
+keymaps 0-127
+keycode 1 = Escape
+ alt keycode 1 = Meta_Escape
+ shift alt keycode 1 = Meta_Escape
+ altgr alt keycode 1 = Meta_Escape
+ shift altgr alt keycode 1 = Meta_Escape
+ control alt keycode 1 = Meta_Escape
+ shift control alt keycode 1 = Meta_Escape
+ altgr control alt keycode 1 = Meta_Escape
+ shift altgr control alt keycode 1 = Meta_Escape
+ alt shiftl keycode 1 = Meta_Escape
+ shift alt shiftl keycode 1 = Meta_Escape
+ altgr alt shiftl keycode 1 = Meta_Escape
+ shift altgr alt shiftl keycode 1 = Meta_Escape
+ control alt shiftl keycode 1 = Meta_Escape
+ shift control alt shiftl keycode 1 = Meta_Escape
+ altgr control alt shiftl keycode 1 = Meta_Escape
+ shift altgr control alt shiftl keycode 1 = Meta_Escape
+ alt shiftr keycode 1 = Meta_Escape
+ shift alt shiftr keycode 1 = Meta_Escape
+ altgr alt shiftr keycode 1 = Meta_Escape
+ shift altgr alt shiftr keycode 1 = Meta_Escape
+ control alt shiftr keycode 1 = Meta_Escape
+ shift control alt shiftr keycode 1 = Meta_Escape
+ altgr control alt shiftr keycode 1 = Meta_Escape
+ shift altgr control alt shiftr keycode 1 = Meta_Escape
+ alt shiftl shiftr keycode 1 = Meta_Escape
+ shift alt shiftl shiftr keycode 1 = Meta_Escape
+ altgr alt shiftl shiftr keycode 1 = Meta_Escape
+ shift altgr alt shiftl shiftr keycode 1 = Meta_Escape
+ control alt shiftl shiftr keycode 1 = Meta_Escape
+ shift control alt shiftl shiftr keycode 1 = Meta_Escape
+ altgr control alt shiftl shiftr keycode 1 = Meta_Escape
+ shift altgr control alt shiftl shiftr keycode 1 = Meta_Escape
+ alt ctrll keycode 1 = Meta_Escape
+ shift alt ctrll keycode 1 = Meta_Escape
+ altgr alt ctrll keycode 1 = Meta_Escape
+ shift altgr alt ctrll keycode 1 = Meta_Escape
+ control alt ctrll keycode 1 = Meta_Escape
+ shift control alt ctrll keycode 1 = Meta_Escape
+ altgr control alt ctrll keycode 1 = Meta_Escape
+ shift altgr control alt ctrll keycode 1 = Meta_Escape
+ alt shiftl ctrll keycode 1 = Meta_Escape
+ shift alt shiftl ctrll keycode 1 = Meta_Escape
+ altgr alt shiftl ctrll keycode 1 = Meta_Escape
+ shift altgr alt shiftl ctrll keycode 1 = Meta_Escape
+ control alt shiftl ctrll keycode 1 = Meta_Escape
+ shift control alt shiftl ctrll keycode 1 = Meta_Escape
+ altgr control alt shiftl ctrll keycode 1 = Meta_Escape
+ shift altgr control alt shiftl ctrll keycode 1 = Meta_Escape
+ alt shiftr ctrll keycode 1 = Meta_Escape
+ shift alt shiftr ctrll keycode 1 = Meta_Escape
+ altgr alt shiftr ctrll keycode 1 = Meta_Escape
+ shift altgr alt shiftr ctrll keycode 1 = Meta_Escape
+ control alt shiftr ctrll keycode 1 = Meta_Escape
+ shift control alt shiftr ctrll keycode 1 = Meta_Escape
+ altgr control alt shiftr ctrll keycode 1 = Meta_Escape
+ shift altgr control alt shiftr ctrll keycode 1 = Meta_Escape
+ alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ shift alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ altgr alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ shift altgr alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ control alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ shift control alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ altgr control alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ shift altgr control alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+keycode 2 = one exclam onesuperior exclamdown
+ alt keycode 2 = Meta_one
+ shift alt keycode 2 = Meta_exclam
+ altgr alt keycode 2 = Meta_one
+ shift altgr alt keycode 2 = Meta_exclam
+ shiftl keycode 2 = one
+ shift shiftl keycode 2 = exclam
+ altgr shiftl keycode 2 = onesuperior
+ shift altgr shiftl keycode 2 = exclamdown
+ alt shiftl keycode 2 = Meta_one
+ shift alt shiftl keycode 2 = Meta_exclam
+ altgr alt shiftl keycode 2 = Meta_one
+ shift altgr alt shiftl keycode 2 = Meta_exclam
+ shiftr keycode 2 = one
+ shift shiftr keycode 2 = exclam
+ altgr shiftr keycode 2 = onesuperior
+ shift altgr shiftr keycode 2 = exclamdown
+ alt shiftr keycode 2 = Meta_one
+ shift alt shiftr keycode 2 = Meta_exclam
+ altgr alt shiftr keycode 2 = Meta_one
+ shift altgr alt shiftr keycode 2 = Meta_exclam
+ shiftl shiftr keycode 2 = one
+ shift shiftl shiftr keycode 2 = exclam
+ altgr shiftl shiftr keycode 2 = onesuperior
+ shift altgr shiftl shiftr keycode 2 = exclamdown
+ alt shiftl shiftr keycode 2 = Meta_one
+ shift alt shiftl shiftr keycode 2 = Meta_exclam
+ altgr alt shiftl shiftr keycode 2 = Meta_one
+ shift altgr alt shiftl shiftr keycode 2 = Meta_exclam
+ ctrll keycode 2 = one
+ shift ctrll keycode 2 = exclam
+ altgr ctrll keycode 2 = onesuperior
+ shift altgr ctrll keycode 2 = exclamdown
+ alt ctrll keycode 2 = Meta_one
+ shift alt ctrll keycode 2 = Meta_exclam
+ altgr alt ctrll keycode 2 = Meta_one
+ shift altgr alt ctrll keycode 2 = Meta_exclam
+ shiftl ctrll keycode 2 = one
+ shift shiftl ctrll keycode 2 = exclam
+ altgr shiftl ctrll keycode 2 = onesuperior
+ shift altgr shiftl ctrll keycode 2 = exclamdown
+ alt shiftl ctrll keycode 2 = Meta_one
+ shift alt shiftl ctrll keycode 2 = Meta_exclam
+ altgr alt shiftl ctrll keycode 2 = Meta_one
+ shift altgr alt shiftl ctrll keycode 2 = Meta_exclam
+ shiftr ctrll keycode 2 = one
+ shift shiftr ctrll keycode 2 = exclam
+ altgr shiftr ctrll keycode 2 = onesuperior
+ shift altgr shiftr ctrll keycode 2 = exclamdown
+ alt shiftr ctrll keycode 2 = Meta_one
+ shift alt shiftr ctrll keycode 2 = Meta_exclam
+ altgr alt shiftr ctrll keycode 2 = Meta_one
+ shift altgr alt shiftr ctrll keycode 2 = Meta_exclam
+ shiftl shiftr ctrll keycode 2 = one
+ shift shiftl shiftr ctrll keycode 2 = exclam
+ altgr shiftl shiftr ctrll keycode 2 = onesuperior
+ shift altgr shiftl shiftr ctrll keycode 2 = exclamdown
+ alt shiftl shiftr ctrll keycode 2 = Meta_one
+ shift alt shiftl shiftr ctrll keycode 2 = Meta_exclam
+ altgr alt shiftl shiftr ctrll keycode 2 = Meta_one
+ shift altgr alt shiftl shiftr ctrll keycode 2 = Meta_exclam
+keycode 3 = two
+ shift keycode 3 = at
+ altgr keycode 3 = twosuperior
+ shift altgr keycode 3 = onehalf
+ control keycode 3 = nul
+ shift control keycode 3 = nul
+ altgr control keycode 3 = nul
+ shift altgr control keycode 3 = nul
+ alt keycode 3 = Meta_two
+ shift alt keycode 3 = Meta_at
+ altgr alt keycode 3 = Meta_two
+ shift altgr alt keycode 3 = Meta_at
+ control alt keycode 3 = Meta_nul
+ shift control alt keycode 3 = Meta_nul
+ altgr control alt keycode 3 = Meta_nul
+ shift altgr control alt keycode 3 = Meta_nul
+ shift shiftl keycode 3 = at
+ altgr shiftl keycode 3 = twosuperior
+ shift altgr shiftl keycode 3 = onehalf
+ control shiftl keycode 3 = nul
+ shift control shiftl keycode 3 = nul
+ altgr control shiftl keycode 3 = nul
+ shift altgr control shiftl keycode 3 = nul
+ alt shiftl keycode 3 = Meta_two
+ shift alt shiftl keycode 3 = Meta_at
+ altgr alt shiftl keycode 3 = Meta_two
+ shift altgr alt shiftl keycode 3 = Meta_at
+ control alt shiftl keycode 3 = Meta_nul
+ shift control alt shiftl keycode 3 = Meta_nul
+ altgr control alt shiftl keycode 3 = Meta_nul
+ shift altgr control alt shiftl keycode 3 = Meta_nul
+ shift shiftr keycode 3 = at
+ altgr shiftr keycode 3 = twosuperior
+ shift altgr shiftr keycode 3 = onehalf
+ control shiftr keycode 3 = nul
+ shift control shiftr keycode 3 = nul
+ altgr control shiftr keycode 3 = nul
+ shift altgr control shiftr keycode 3 = nul
+ alt shiftr keycode 3 = Meta_two
+ shift alt shiftr keycode 3 = Meta_at
+ altgr alt shiftr keycode 3 = Meta_two
+ shift altgr alt shiftr keycode 3 = Meta_at
+ control alt shiftr keycode 3 = Meta_nul
+ shift control alt shiftr keycode 3 = Meta_nul
+ altgr control alt shiftr keycode 3 = Meta_nul
+ shift altgr control alt shiftr keycode 3 = Meta_nul
+ shift shiftl shiftr keycode 3 = at
+ altgr shiftl shiftr keycode 3 = twosuperior
+ shift altgr shiftl shiftr keycode 3 = onehalf
+ control shiftl shiftr keycode 3 = nul
+ shift control shiftl shiftr keycode 3 = nul
+ altgr control shiftl shiftr keycode 3 = nul
+ shift altgr control shiftl shiftr keycode 3 = nul
+ alt shiftl shiftr keycode 3 = Meta_two
+ shift alt shiftl shiftr keycode 3 = Meta_at
+ altgr alt shiftl shiftr keycode 3 = Meta_two
+ shift altgr alt shiftl shiftr keycode 3 = Meta_at
+ control alt shiftl shiftr keycode 3 = Meta_nul
+ shift control alt shiftl shiftr keycode 3 = Meta_nul
+ altgr control alt shiftl shiftr keycode 3 = Meta_nul
+ shift altgr control alt shiftl shiftr keycode 3 = Meta_nul
+ shift ctrll keycode 3 = at
+ altgr ctrll keycode 3 = twosuperior
+ shift altgr ctrll keycode 3 = onehalf
+ control ctrll keycode 3 = nul
+ shift control ctrll keycode 3 = nul
+ altgr control ctrll keycode 3 = nul
+ shift altgr control ctrll keycode 3 = nul
+ alt ctrll keycode 3 = Meta_two
+ shift alt ctrll keycode 3 = Meta_at
+ altgr alt ctrll keycode 3 = Meta_two
+ shift altgr alt ctrll keycode 3 = Meta_at
+ control alt ctrll keycode 3 = Meta_nul
+ shift control alt ctrll keycode 3 = Meta_nul
+ altgr control alt ctrll keycode 3 = Meta_nul
+ shift altgr control alt ctrll keycode 3 = Meta_nul
+ shift shiftl ctrll keycode 3 = at
+ altgr shiftl ctrll keycode 3 = twosuperior
+ shift altgr shiftl ctrll keycode 3 = onehalf
+ control shiftl ctrll keycode 3 = nul
+ shift control shiftl ctrll keycode 3 = nul
+ altgr control shiftl ctrll keycode 3 = nul
+ shift altgr control shiftl ctrll keycode 3 = nul
+ alt shiftl ctrll keycode 3 = Meta_two
+ shift alt shiftl ctrll keycode 3 = Meta_at
+ altgr alt shiftl ctrll keycode 3 = Meta_two
+ shift altgr alt shiftl ctrll keycode 3 = Meta_at
+ control alt shiftl ctrll keycode 3 = Meta_nul
+ shift control alt shiftl ctrll keycode 3 = Meta_nul
+ altgr control alt shiftl ctrll keycode 3 = Meta_nul
+ shift altgr control alt shiftl ctrll keycode 3 = Meta_nul
+ shift shiftr ctrll keycode 3 = at
+ altgr shiftr ctrll keycode 3 = twosuperior
+ shift altgr shiftr ctrll keycode 3 = onehalf
+ control shiftr ctrll keycode 3 = nul
+ shift control shiftr ctrll keycode 3 = nul
+ altgr control shiftr ctrll keycode 3 = nul
+ shift altgr control shiftr ctrll keycode 3 = nul
+ alt shiftr ctrll keycode 3 = Meta_two
+ shift alt shiftr ctrll keycode 3 = Meta_at
+ altgr alt shiftr ctrll keycode 3 = Meta_two
+ shift altgr alt shiftr ctrll keycode 3 = Meta_at
+ control alt shiftr ctrll keycode 3 = Meta_nul
+ shift control alt shiftr ctrll keycode 3 = Meta_nul
+ altgr control alt shiftr ctrll keycode 3 = Meta_nul
+ shift altgr control alt shiftr ctrll keycode 3 = Meta_nul
+ shift shiftl shiftr ctrll keycode 3 = at
+ altgr shiftl shiftr ctrll keycode 3 = twosuperior
+ shift altgr shiftl shiftr ctrll keycode 3 = onehalf
+ control shiftl shiftr ctrll keycode 3 = nul
+ shift control shiftl shiftr ctrll keycode 3 = nul
+ altgr control shiftl shiftr ctrll keycode 3 = nul
+ shift altgr control shiftl shiftr ctrll keycode 3 = nul
+ alt shiftl shiftr ctrll keycode 3 = Meta_two
+ shift alt shiftl shiftr ctrll keycode 3 = Meta_at
+ altgr alt shiftl shiftr ctrll keycode 3 = Meta_two
+ shift altgr alt shiftl shiftr ctrll keycode 3 = Meta_at
+ control alt shiftl shiftr ctrll keycode 3 = Meta_nul
+ shift control alt shiftl shiftr ctrll keycode 3 = Meta_nul
+ altgr control alt shiftl shiftr ctrll keycode 3 = Meta_nul
+ shift altgr control alt shiftl shiftr ctrll keycode 3 = Meta_nul
+keycode 4 = three
+ shift keycode 4 = numbersign
+ altgr keycode 4 = threesuperior
+ shift altgr keycode 4 = threequarters
+ control keycode 4 = Escape
+ shift control keycode 4 = Escape
+ altgr control keycode 4 = Escape
+ shift altgr control keycode 4 = Escape
+ alt keycode 4 = Meta_three
+ shift alt keycode 4 = Meta_numbersign
+ altgr alt keycode 4 = Meta_three
+ shift altgr alt keycode 4 = Meta_numbersign
+ control alt keycode 4 = Meta_Escape
+ shift control alt keycode 4 = Meta_Escape
+ altgr control alt keycode 4 = Meta_Escape
+ shift altgr control alt keycode 4 = Meta_Escape
+ shift shiftl keycode 4 = numbersign
+ altgr shiftl keycode 4 = threesuperior
+ shift altgr shiftl keycode 4 = threequarters
+ control shiftl keycode 4 = Escape
+ shift control shiftl keycode 4 = Escape
+ altgr control shiftl keycode 4 = Escape
+ shift altgr control shiftl keycode 4 = Escape
+ alt shiftl keycode 4 = Meta_three
+ shift alt shiftl keycode 4 = Meta_numbersign
+ altgr alt shiftl keycode 4 = Meta_three
+ shift altgr alt shiftl keycode 4 = Meta_numbersign
+ control alt shiftl keycode 4 = Meta_Escape
+ shift control alt shiftl keycode 4 = Meta_Escape
+ altgr control alt shiftl keycode 4 = Meta_Escape
+ shift altgr control alt shiftl keycode 4 = Meta_Escape
+ shift shiftr keycode 4 = numbersign
+ altgr shiftr keycode 4 = threesuperior
+ shift altgr shiftr keycode 4 = threequarters
+ control shiftr keycode 4 = Escape
+ shift control shiftr keycode 4 = Escape
+ altgr control shiftr keycode 4 = Escape
+ shift altgr control shiftr keycode 4 = Escape
+ alt shiftr keycode 4 = Meta_three
+ shift alt shiftr keycode 4 = Meta_numbersign
+ altgr alt shiftr keycode 4 = Meta_three
+ shift altgr alt shiftr keycode 4 = Meta_numbersign
+ control alt shiftr keycode 4 = Meta_Escape
+ shift control alt shiftr keycode 4 = Meta_Escape
+ altgr control alt shiftr keycode 4 = Meta_Escape
+ shift altgr control alt shiftr keycode 4 = Meta_Escape
+ shift shiftl shiftr keycode 4 = numbersign
+ altgr shiftl shiftr keycode 4 = threesuperior
+ shift altgr shiftl shiftr keycode 4 = threequarters
+ control shiftl shiftr keycode 4 = Escape
+ shift control shiftl shiftr keycode 4 = Escape
+ altgr control shiftl shiftr keycode 4 = Escape
+ shift altgr control shiftl shiftr keycode 4 = Escape
+ alt shiftl shiftr keycode 4 = Meta_three
+ shift alt shiftl shiftr keycode 4 = Meta_numbersign
+ altgr alt shiftl shiftr keycode 4 = Meta_three
+ shift altgr alt shiftl shiftr keycode 4 = Meta_numbersign
+ control alt shiftl shiftr keycode 4 = Meta_Escape
+ shift control alt shiftl shiftr keycode 4 = Meta_Escape
+ altgr control alt shiftl shiftr keycode 4 = Meta_Escape
+ shift altgr control alt shiftl shiftr keycode 4 = Meta_Escape
+ shift ctrll keycode 4 = numbersign
+ altgr ctrll keycode 4 = threesuperior
+ shift altgr ctrll keycode 4 = threequarters
+ control ctrll keycode 4 = Escape
+ shift control ctrll keycode 4 = Escape
+ altgr control ctrll keycode 4 = Escape
+ shift altgr control ctrll keycode 4 = Escape
+ alt ctrll keycode 4 = Meta_three
+ shift alt ctrll keycode 4 = Meta_numbersign
+ altgr alt ctrll keycode 4 = Meta_three
+ shift altgr alt ctrll keycode 4 = Meta_numbersign
+ control alt ctrll keycode 4 = Meta_Escape
+ shift control alt ctrll keycode 4 = Meta_Escape
+ altgr control alt ctrll keycode 4 = Meta_Escape
+ shift altgr control alt ctrll keycode 4 = Meta_Escape
+ shift shiftl ctrll keycode 4 = numbersign
+ altgr shiftl ctrll keycode 4 = threesuperior
+ shift altgr shiftl ctrll keycode 4 = threequarters
+ control shiftl ctrll keycode 4 = Escape
+ shift control shiftl ctrll keycode 4 = Escape
+ altgr control shiftl ctrll keycode 4 = Escape
+ shift altgr control shiftl ctrll keycode 4 = Escape
+ alt shiftl ctrll keycode 4 = Meta_three
+ shift alt shiftl ctrll keycode 4 = Meta_numbersign
+ altgr alt shiftl ctrll keycode 4 = Meta_three
+ shift altgr alt shiftl ctrll keycode 4 = Meta_numbersign
+ control alt shiftl ctrll keycode 4 = Meta_Escape
+ shift control alt shiftl ctrll keycode 4 = Meta_Escape
+ altgr control alt shiftl ctrll keycode 4 = Meta_Escape
+ shift altgr control alt shiftl ctrll keycode 4 = Meta_Escape
+ shift shiftr ctrll keycode 4 = numbersign
+ altgr shiftr ctrll keycode 4 = threesuperior
+ shift altgr shiftr ctrll keycode 4 = threequarters
+ control shiftr ctrll keycode 4 = Escape
+ shift control shiftr ctrll keycode 4 = Escape
+ altgr control shiftr ctrll keycode 4 = Escape
+ shift altgr control shiftr ctrll keycode 4 = Escape
+ alt shiftr ctrll keycode 4 = Meta_three
+ shift alt shiftr ctrll keycode 4 = Meta_numbersign
+ altgr alt shiftr ctrll keycode 4 = Meta_three
+ shift altgr alt shiftr ctrll keycode 4 = Meta_numbersign
+ control alt shiftr ctrll keycode 4 = Meta_Escape
+ shift control alt shiftr ctrll keycode 4 = Meta_Escape
+ altgr control alt shiftr ctrll keycode 4 = Meta_Escape
+ shift altgr control alt shiftr ctrll keycode 4 = Meta_Escape
+ shift shiftl shiftr ctrll keycode 4 = numbersign
+ altgr shiftl shiftr ctrll keycode 4 = threesuperior
+ shift altgr shiftl shiftr ctrll keycode 4 = threequarters
+ control shiftl shiftr ctrll keycode 4 = Escape
+ shift control shiftl shiftr ctrll keycode 4 = Escape
+ altgr control shiftl shiftr ctrll keycode 4 = Escape
+ shift altgr control shiftl shiftr ctrll keycode 4 = Escape
+ alt shiftl shiftr ctrll keycode 4 = Meta_three
+ shift alt shiftl shiftr ctrll keycode 4 = Meta_numbersign
+ altgr alt shiftl shiftr ctrll keycode 4 = Meta_three
+ shift altgr alt shiftl shiftr ctrll keycode 4 = Meta_numbersign
+ control alt shiftl shiftr ctrll keycode 4 = Meta_Escape
+ shift control alt shiftl shiftr ctrll keycode 4 = Meta_Escape
+ altgr control alt shiftl shiftr ctrll keycode 4 = Meta_Escape
+ shift altgr control alt shiftl shiftr ctrll keycode 4 = Meta_Escape
+keycode 5 = four
+ shift keycode 5 = dollar
+ altgr keycode 5 = sterling
+ shift altgr keycode 5 = onequarter
+ control keycode 5 = Control_backslash
+ shift control keycode 5 = Control_backslash
+ altgr control keycode 5 = Control_backslash
+ shift altgr control keycode 5 = Control_backslash
+ alt keycode 5 = Meta_four
+ shift alt keycode 5 = Meta_dollar
+ altgr alt keycode 5 = Meta_four
+ shift altgr alt keycode 5 = Meta_dollar
+ control alt keycode 5 = Meta_Control_backslash
+ shift control alt keycode 5 = Meta_Control_backslash
+ altgr control alt keycode 5 = Meta_Control_backslash
+ shift altgr control alt keycode 5 = Meta_Control_backslash
+ shift shiftl keycode 5 = dollar
+ altgr shiftl keycode 5 = sterling
+ shift altgr shiftl keycode 5 = onequarter
+ control shiftl keycode 5 = Control_backslash
+ shift control shiftl keycode 5 = Control_backslash
+ altgr control shiftl keycode 5 = Control_backslash
+ shift altgr control shiftl keycode 5 = Control_backslash
+ alt shiftl keycode 5 = Meta_four
+ shift alt shiftl keycode 5 = Meta_dollar
+ altgr alt shiftl keycode 5 = Meta_four
+ shift altgr alt shiftl keycode 5 = Meta_dollar
+ control alt shiftl keycode 5 = Meta_Control_backslash
+ shift control alt shiftl keycode 5 = Meta_Control_backslash
+ altgr control alt shiftl keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftl keycode 5 = Meta_Control_backslash
+ shift shiftr keycode 5 = dollar
+ altgr shiftr keycode 5 = sterling
+ shift altgr shiftr keycode 5 = onequarter
+ control shiftr keycode 5 = Control_backslash
+ shift control shiftr keycode 5 = Control_backslash
+ altgr control shiftr keycode 5 = Control_backslash
+ shift altgr control shiftr keycode 5 = Control_backslash
+ alt shiftr keycode 5 = Meta_four
+ shift alt shiftr keycode 5 = Meta_dollar
+ altgr alt shiftr keycode 5 = Meta_four
+ shift altgr alt shiftr keycode 5 = Meta_dollar
+ control alt shiftr keycode 5 = Meta_Control_backslash
+ shift control alt shiftr keycode 5 = Meta_Control_backslash
+ altgr control alt shiftr keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftr keycode 5 = Meta_Control_backslash
+ shift shiftl shiftr keycode 5 = dollar
+ altgr shiftl shiftr keycode 5 = sterling
+ shift altgr shiftl shiftr keycode 5 = onequarter
+ control shiftl shiftr keycode 5 = Control_backslash
+ shift control shiftl shiftr keycode 5 = Control_backslash
+ altgr control shiftl shiftr keycode 5 = Control_backslash
+ shift altgr control shiftl shiftr keycode 5 = Control_backslash
+ alt shiftl shiftr keycode 5 = Meta_four
+ shift alt shiftl shiftr keycode 5 = Meta_dollar
+ altgr alt shiftl shiftr keycode 5 = Meta_four
+ shift altgr alt shiftl shiftr keycode 5 = Meta_dollar
+ control alt shiftl shiftr keycode 5 = Meta_Control_backslash
+ shift control alt shiftl shiftr keycode 5 = Meta_Control_backslash
+ altgr control alt shiftl shiftr keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr keycode 5 = Meta_Control_backslash
+ shift ctrll keycode 5 = dollar
+ altgr ctrll keycode 5 = sterling
+ shift altgr ctrll keycode 5 = onequarter
+ control ctrll keycode 5 = Control_backslash
+ shift control ctrll keycode 5 = Control_backslash
+ altgr control ctrll keycode 5 = Control_backslash
+ shift altgr control ctrll keycode 5 = Control_backslash
+ alt ctrll keycode 5 = Meta_four
+ shift alt ctrll keycode 5 = Meta_dollar
+ altgr alt ctrll keycode 5 = Meta_four
+ shift altgr alt ctrll keycode 5 = Meta_dollar
+ control alt ctrll keycode 5 = Meta_Control_backslash
+ shift control alt ctrll keycode 5 = Meta_Control_backslash
+ altgr control alt ctrll keycode 5 = Meta_Control_backslash
+ shift altgr control alt ctrll keycode 5 = Meta_Control_backslash
+ shift shiftl ctrll keycode 5 = dollar
+ altgr shiftl ctrll keycode 5 = sterling
+ shift altgr shiftl ctrll keycode 5 = onequarter
+ control shiftl ctrll keycode 5 = Control_backslash
+ shift control shiftl ctrll keycode 5 = Control_backslash
+ altgr control shiftl ctrll keycode 5 = Control_backslash
+ shift altgr control shiftl ctrll keycode 5 = Control_backslash
+ alt shiftl ctrll keycode 5 = Meta_four
+ shift alt shiftl ctrll keycode 5 = Meta_dollar
+ altgr alt shiftl ctrll keycode 5 = Meta_four
+ shift altgr alt shiftl ctrll keycode 5 = Meta_dollar
+ control alt shiftl ctrll keycode 5 = Meta_Control_backslash
+ shift control alt shiftl ctrll keycode 5 = Meta_Control_backslash
+ altgr control alt shiftl ctrll keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftl ctrll keycode 5 = Meta_Control_backslash
+ shift shiftr ctrll keycode 5 = dollar
+ altgr shiftr ctrll keycode 5 = sterling
+ shift altgr shiftr ctrll keycode 5 = onequarter
+ control shiftr ctrll keycode 5 = Control_backslash
+ shift control shiftr ctrll keycode 5 = Control_backslash
+ altgr control shiftr ctrll keycode 5 = Control_backslash
+ shift altgr control shiftr ctrll keycode 5 = Control_backslash
+ alt shiftr ctrll keycode 5 = Meta_four
+ shift alt shiftr ctrll keycode 5 = Meta_dollar
+ altgr alt shiftr ctrll keycode 5 = Meta_four
+ shift altgr alt shiftr ctrll keycode 5 = Meta_dollar
+ control alt shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift control alt shiftr ctrll keycode 5 = Meta_Control_backslash
+ altgr control alt shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift shiftl shiftr ctrll keycode 5 = dollar
+ altgr shiftl shiftr ctrll keycode 5 = sterling
+ shift altgr shiftl shiftr ctrll keycode 5 = onequarter
+ control shiftl shiftr ctrll keycode 5 = Control_backslash
+ shift control shiftl shiftr ctrll keycode 5 = Control_backslash
+ altgr control shiftl shiftr ctrll keycode 5 = Control_backslash
+ shift altgr control shiftl shiftr ctrll keycode 5 = Control_backslash
+ alt shiftl shiftr ctrll keycode 5 = Meta_four
+ shift alt shiftl shiftr ctrll keycode 5 = Meta_dollar
+ altgr alt shiftl shiftr ctrll keycode 5 = Meta_four
+ shift altgr alt shiftl shiftr ctrll keycode 5 = Meta_dollar
+ control alt shiftl shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift control alt shiftl shiftr ctrll keycode 5 = Meta_Control_backslash
+ altgr control alt shiftl shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr ctrll keycode 5 = Meta_Control_backslash
+keycode 6 = five
+ shift keycode 6 = percent
+ altgr keycode 6 = cent
+ shift altgr keycode 6 = U+215c
+ control keycode 6 = Control_bracketright
+ shift control keycode 6 = Control_bracketright
+ altgr control keycode 6 = Control_bracketright
+ shift altgr control keycode 6 = Control_bracketright
+ alt keycode 6 = Meta_five
+ shift alt keycode 6 = Meta_percent
+ altgr alt keycode 6 = Meta_five
+ shift altgr alt keycode 6 = Meta_percent
+ control alt keycode 6 = Meta_Control_bracketright
+ shift control alt keycode 6 = Meta_Control_bracketright
+ altgr control alt keycode 6 = Meta_Control_bracketright
+ shift altgr control alt keycode 6 = Meta_Control_bracketright
+ shift shiftl keycode 6 = percent
+ altgr shiftl keycode 6 = cent
+ shift altgr shiftl keycode 6 = U+215c
+ control shiftl keycode 6 = Control_bracketright
+ shift control shiftl keycode 6 = Control_bracketright
+ altgr control shiftl keycode 6 = Control_bracketright
+ shift altgr control shiftl keycode 6 = Control_bracketright
+ alt shiftl keycode 6 = Meta_five
+ shift alt shiftl keycode 6 = Meta_percent
+ altgr alt shiftl keycode 6 = Meta_five
+ shift altgr alt shiftl keycode 6 = Meta_percent
+ control alt shiftl keycode 6 = Meta_Control_bracketright
+ shift control alt shiftl keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftl keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftl keycode 6 = Meta_Control_bracketright
+ shift shiftr keycode 6 = percent
+ altgr shiftr keycode 6 = cent
+ shift altgr shiftr keycode 6 = U+215c
+ control shiftr keycode 6 = Control_bracketright
+ shift control shiftr keycode 6 = Control_bracketright
+ altgr control shiftr keycode 6 = Control_bracketright
+ shift altgr control shiftr keycode 6 = Control_bracketright
+ alt shiftr keycode 6 = Meta_five
+ shift alt shiftr keycode 6 = Meta_percent
+ altgr alt shiftr keycode 6 = Meta_five
+ shift altgr alt shiftr keycode 6 = Meta_percent
+ control alt shiftr keycode 6 = Meta_Control_bracketright
+ shift control alt shiftr keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftr keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftr keycode 6 = Meta_Control_bracketright
+ shift shiftl shiftr keycode 6 = percent
+ altgr shiftl shiftr keycode 6 = cent
+ shift altgr shiftl shiftr keycode 6 = U+215c
+ control shiftl shiftr keycode 6 = Control_bracketright
+ shift control shiftl shiftr keycode 6 = Control_bracketright
+ altgr control shiftl shiftr keycode 6 = Control_bracketright
+ shift altgr control shiftl shiftr keycode 6 = Control_bracketright
+ alt shiftl shiftr keycode 6 = Meta_five
+ shift alt shiftl shiftr keycode 6 = Meta_percent
+ altgr alt shiftl shiftr keycode 6 = Meta_five
+ shift altgr alt shiftl shiftr keycode 6 = Meta_percent
+ control alt shiftl shiftr keycode 6 = Meta_Control_bracketright
+ shift control alt shiftl shiftr keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr keycode 6 = Meta_Control_bracketright
+ shift ctrll keycode 6 = percent
+ altgr ctrll keycode 6 = cent
+ shift altgr ctrll keycode 6 = U+215c
+ control ctrll keycode 6 = Control_bracketright
+ shift control ctrll keycode 6 = Control_bracketright
+ altgr control ctrll keycode 6 = Control_bracketright
+ shift altgr control ctrll keycode 6 = Control_bracketright
+ alt ctrll keycode 6 = Meta_five
+ shift alt ctrll keycode 6 = Meta_percent
+ altgr alt ctrll keycode 6 = Meta_five
+ shift altgr alt ctrll keycode 6 = Meta_percent
+ control alt ctrll keycode 6 = Meta_Control_bracketright
+ shift control alt ctrll keycode 6 = Meta_Control_bracketright
+ altgr control alt ctrll keycode 6 = Meta_Control_bracketright
+ shift altgr control alt ctrll keycode 6 = Meta_Control_bracketright
+ shift shiftl ctrll keycode 6 = percent
+ altgr shiftl ctrll keycode 6 = cent
+ shift altgr shiftl ctrll keycode 6 = U+215c
+ control shiftl ctrll keycode 6 = Control_bracketright
+ shift control shiftl ctrll keycode 6 = Control_bracketright
+ altgr control shiftl ctrll keycode 6 = Control_bracketright
+ shift altgr control shiftl ctrll keycode 6 = Control_bracketright
+ alt shiftl ctrll keycode 6 = Meta_five
+ shift alt shiftl ctrll keycode 6 = Meta_percent
+ altgr alt shiftl ctrll keycode 6 = Meta_five
+ shift altgr alt shiftl ctrll keycode 6 = Meta_percent
+ control alt shiftl ctrll keycode 6 = Meta_Control_bracketright
+ shift control alt shiftl ctrll keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftl ctrll keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftl ctrll keycode 6 = Meta_Control_bracketright
+ shift shiftr ctrll keycode 6 = percent
+ altgr shiftr ctrll keycode 6 = cent
+ shift altgr shiftr ctrll keycode 6 = U+215c
+ control shiftr ctrll keycode 6 = Control_bracketright
+ shift control shiftr ctrll keycode 6 = Control_bracketright
+ altgr control shiftr ctrll keycode 6 = Control_bracketright
+ shift altgr control shiftr ctrll keycode 6 = Control_bracketright
+ alt shiftr ctrll keycode 6 = Meta_five
+ shift alt shiftr ctrll keycode 6 = Meta_percent
+ altgr alt shiftr ctrll keycode 6 = Meta_five
+ shift altgr alt shiftr ctrll keycode 6 = Meta_percent
+ control alt shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift control alt shiftr ctrll keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift shiftl shiftr ctrll keycode 6 = percent
+ altgr shiftl shiftr ctrll keycode 6 = cent
+ shift altgr shiftl shiftr ctrll keycode 6 = U+215c
+ control shiftl shiftr ctrll keycode 6 = Control_bracketright
+ shift control shiftl shiftr ctrll keycode 6 = Control_bracketright
+ altgr control shiftl shiftr ctrll keycode 6 = Control_bracketright
+ shift altgr control shiftl shiftr ctrll keycode 6 = Control_bracketright
+ alt shiftl shiftr ctrll keycode 6 = Meta_five
+ shift alt shiftl shiftr ctrll keycode 6 = Meta_percent
+ altgr alt shiftl shiftr ctrll keycode 6 = Meta_five
+ shift altgr alt shiftl shiftr ctrll keycode 6 = Meta_percent
+ control alt shiftl shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift control alt shiftl shiftr ctrll keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr ctrll keycode 6 = Meta_Control_bracketright
+keycode 7 = six
+ shift keycode 7 = dead_diaeresis
+ altgr keycode 7 = notsign
+ shift altgr keycode 7 = diaeresis
+ control keycode 7 = Control_asciicircum
+ shift control keycode 7 = dead_diaeresis
+ altgr control keycode 7 = Control_asciicircum
+ shift altgr control keycode 7 = dead_diaeresis
+ alt keycode 7 = Meta_six
+ shift alt keycode 7 = dead_diaeresis
+ altgr alt keycode 7 = Meta_six
+ shift altgr alt keycode 7 = dead_diaeresis
+ control alt keycode 7 = Meta_Control_asciicircum
+ shift control alt keycode 7 = dead_diaeresis
+ altgr control alt keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt keycode 7 = dead_diaeresis
+ shift shiftl keycode 7 = dead_diaeresis
+ altgr shiftl keycode 7 = notsign
+ shift altgr shiftl keycode 7 = diaeresis
+ control shiftl keycode 7 = Control_asciicircum
+ shift control shiftl keycode 7 = dead_diaeresis
+ altgr control shiftl keycode 7 = Control_asciicircum
+ shift altgr control shiftl keycode 7 = dead_diaeresis
+ alt shiftl keycode 7 = Meta_six
+ shift alt shiftl keycode 7 = dead_diaeresis
+ altgr alt shiftl keycode 7 = Meta_six
+ shift altgr alt shiftl keycode 7 = dead_diaeresis
+ control alt shiftl keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftl keycode 7 = dead_diaeresis
+ altgr control alt shiftl keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftl keycode 7 = dead_diaeresis
+ shift shiftr keycode 7 = dead_diaeresis
+ altgr shiftr keycode 7 = notsign
+ shift altgr shiftr keycode 7 = diaeresis
+ control shiftr keycode 7 = Control_asciicircum
+ shift control shiftr keycode 7 = dead_diaeresis
+ altgr control shiftr keycode 7 = Control_asciicircum
+ shift altgr control shiftr keycode 7 = dead_diaeresis
+ alt shiftr keycode 7 = Meta_six
+ shift alt shiftr keycode 7 = dead_diaeresis
+ altgr alt shiftr keycode 7 = Meta_six
+ shift altgr alt shiftr keycode 7 = dead_diaeresis
+ control alt shiftr keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftr keycode 7 = dead_diaeresis
+ altgr control alt shiftr keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftr keycode 7 = dead_diaeresis
+ shift shiftl shiftr keycode 7 = dead_diaeresis
+ altgr shiftl shiftr keycode 7 = notsign
+ shift altgr shiftl shiftr keycode 7 = diaeresis
+ control shiftl shiftr keycode 7 = Control_asciicircum
+ shift control shiftl shiftr keycode 7 = dead_diaeresis
+ altgr control shiftl shiftr keycode 7 = Control_asciicircum
+ shift altgr control shiftl shiftr keycode 7 = dead_diaeresis
+ alt shiftl shiftr keycode 7 = Meta_six
+ shift alt shiftl shiftr keycode 7 = dead_diaeresis
+ altgr alt shiftl shiftr keycode 7 = Meta_six
+ shift altgr alt shiftl shiftr keycode 7 = dead_diaeresis
+ control alt shiftl shiftr keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftl shiftr keycode 7 = dead_diaeresis
+ altgr control alt shiftl shiftr keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftl shiftr keycode 7 = dead_diaeresis
+ shift ctrll keycode 7 = dead_diaeresis
+ altgr ctrll keycode 7 = notsign
+ shift altgr ctrll keycode 7 = diaeresis
+ control ctrll keycode 7 = Control_asciicircum
+ shift control ctrll keycode 7 = dead_diaeresis
+ altgr control ctrll keycode 7 = Control_asciicircum
+ shift altgr control ctrll keycode 7 = dead_diaeresis
+ alt ctrll keycode 7 = Meta_six
+ shift alt ctrll keycode 7 = dead_diaeresis
+ altgr alt ctrll keycode 7 = Meta_six
+ shift altgr alt ctrll keycode 7 = dead_diaeresis
+ control alt ctrll keycode 7 = Meta_Control_asciicircum
+ shift control alt ctrll keycode 7 = dead_diaeresis
+ altgr control alt ctrll keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt ctrll keycode 7 = dead_diaeresis
+ shift shiftl ctrll keycode 7 = dead_diaeresis
+ altgr shiftl ctrll keycode 7 = notsign
+ shift altgr shiftl ctrll keycode 7 = diaeresis
+ control shiftl ctrll keycode 7 = Control_asciicircum
+ shift control shiftl ctrll keycode 7 = dead_diaeresis
+ altgr control shiftl ctrll keycode 7 = Control_asciicircum
+ shift altgr control shiftl ctrll keycode 7 = dead_diaeresis
+ alt shiftl ctrll keycode 7 = Meta_six
+ shift alt shiftl ctrll keycode 7 = dead_diaeresis
+ altgr alt shiftl ctrll keycode 7 = Meta_six
+ shift altgr alt shiftl ctrll keycode 7 = dead_diaeresis
+ control alt shiftl ctrll keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftl ctrll keycode 7 = dead_diaeresis
+ altgr control alt shiftl ctrll keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftl ctrll keycode 7 = dead_diaeresis
+ shift shiftr ctrll keycode 7 = dead_diaeresis
+ altgr shiftr ctrll keycode 7 = notsign
+ shift altgr shiftr ctrll keycode 7 = diaeresis
+ control shiftr ctrll keycode 7 = Control_asciicircum
+ shift control shiftr ctrll keycode 7 = dead_diaeresis
+ altgr control shiftr ctrll keycode 7 = Control_asciicircum
+ shift altgr control shiftr ctrll keycode 7 = dead_diaeresis
+ alt shiftr ctrll keycode 7 = Meta_six
+ shift alt shiftr ctrll keycode 7 = dead_diaeresis
+ altgr alt shiftr ctrll keycode 7 = Meta_six
+ shift altgr alt shiftr ctrll keycode 7 = dead_diaeresis
+ control alt shiftr ctrll keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftr ctrll keycode 7 = dead_diaeresis
+ altgr control alt shiftr ctrll keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftr ctrll keycode 7 = dead_diaeresis
+ shift shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ altgr shiftl shiftr ctrll keycode 7 = notsign
+ shift altgr shiftl shiftr ctrll keycode 7 = diaeresis
+ control shiftl shiftr ctrll keycode 7 = Control_asciicircum
+ shift control shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ altgr control shiftl shiftr ctrll keycode 7 = Control_asciicircum
+ shift altgr control shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ alt shiftl shiftr ctrll keycode 7 = Meta_six
+ shift alt shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ altgr alt shiftl shiftr ctrll keycode 7 = Meta_six
+ shift altgr alt shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ control alt shiftl shiftr ctrll keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ altgr control alt shiftl shiftr ctrll keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftl shiftr ctrll keycode 7 = dead_diaeresis
+keycode 8 = seven
+ shift keycode 8 = ampersand
+ altgr keycode 8 = braceleft
+ shift altgr keycode 8 = U+215e
+ control keycode 8 = Control_underscore
+ shift control keycode 8 = Control_underscore
+ altgr control keycode 8 = Control_underscore
+ shift altgr control keycode 8 = Control_underscore
+ alt keycode 8 = Meta_seven
+ shift alt keycode 8 = Meta_ampersand
+ altgr alt keycode 8 = Meta_braceleft
+ shift altgr alt keycode 8 = Meta_braceleft
+ control alt keycode 8 = Meta_Control_underscore
+ shift control alt keycode 8 = Meta_Control_underscore
+ altgr control alt keycode 8 = Meta_Control_underscore
+ shift altgr control alt keycode 8 = Meta_Control_underscore
+ shift shiftl keycode 8 = ampersand
+ altgr shiftl keycode 8 = braceleft
+ shift altgr shiftl keycode 8 = U+215e
+ control shiftl keycode 8 = Control_underscore
+ shift control shiftl keycode 8 = Control_underscore
+ altgr control shiftl keycode 8 = Control_underscore
+ shift altgr control shiftl keycode 8 = Control_underscore
+ alt shiftl keycode 8 = Meta_seven
+ shift alt shiftl keycode 8 = Meta_ampersand
+ altgr alt shiftl keycode 8 = Meta_braceleft
+ shift altgr alt shiftl keycode 8 = Meta_braceleft
+ control alt shiftl keycode 8 = Meta_Control_underscore
+ shift control alt shiftl keycode 8 = Meta_Control_underscore
+ altgr control alt shiftl keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftl keycode 8 = Meta_Control_underscore
+ shift shiftr keycode 8 = ampersand
+ altgr shiftr keycode 8 = braceleft
+ shift altgr shiftr keycode 8 = U+215e
+ control shiftr keycode 8 = Control_underscore
+ shift control shiftr keycode 8 = Control_underscore
+ altgr control shiftr keycode 8 = Control_underscore
+ shift altgr control shiftr keycode 8 = Control_underscore
+ alt shiftr keycode 8 = Meta_seven
+ shift alt shiftr keycode 8 = Meta_ampersand
+ altgr alt shiftr keycode 8 = Meta_braceleft
+ shift altgr alt shiftr keycode 8 = Meta_braceleft
+ control alt shiftr keycode 8 = Meta_Control_underscore
+ shift control alt shiftr keycode 8 = Meta_Control_underscore
+ altgr control alt shiftr keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftr keycode 8 = Meta_Control_underscore
+ shift shiftl shiftr keycode 8 = ampersand
+ altgr shiftl shiftr keycode 8 = braceleft
+ shift altgr shiftl shiftr keycode 8 = U+215e
+ control shiftl shiftr keycode 8 = Control_underscore
+ shift control shiftl shiftr keycode 8 = Control_underscore
+ altgr control shiftl shiftr keycode 8 = Control_underscore
+ shift altgr control shiftl shiftr keycode 8 = Control_underscore
+ alt shiftl shiftr keycode 8 = Meta_seven
+ shift alt shiftl shiftr keycode 8 = Meta_ampersand
+ altgr alt shiftl shiftr keycode 8 = Meta_braceleft
+ shift altgr alt shiftl shiftr keycode 8 = Meta_braceleft
+ control alt shiftl shiftr keycode 8 = Meta_Control_underscore
+ shift control alt shiftl shiftr keycode 8 = Meta_Control_underscore
+ altgr control alt shiftl shiftr keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftl shiftr keycode 8 = Meta_Control_underscore
+ shift ctrll keycode 8 = ampersand
+ altgr ctrll keycode 8 = braceleft
+ shift altgr ctrll keycode 8 = U+215e
+ control ctrll keycode 8 = Control_underscore
+ shift control ctrll keycode 8 = Control_underscore
+ altgr control ctrll keycode 8 = Control_underscore
+ shift altgr control ctrll keycode 8 = Control_underscore
+ alt ctrll keycode 8 = Meta_seven
+ shift alt ctrll keycode 8 = Meta_ampersand
+ altgr alt ctrll keycode 8 = Meta_braceleft
+ shift altgr alt ctrll keycode 8 = Meta_braceleft
+ control alt ctrll keycode 8 = Meta_Control_underscore
+ shift control alt ctrll keycode 8 = Meta_Control_underscore
+ altgr control alt ctrll keycode 8 = Meta_Control_underscore
+ shift altgr control alt ctrll keycode 8 = Meta_Control_underscore
+ shift shiftl ctrll keycode 8 = ampersand
+ altgr shiftl ctrll keycode 8 = braceleft
+ shift altgr shiftl ctrll keycode 8 = U+215e
+ control shiftl ctrll keycode 8 = Control_underscore
+ shift control shiftl ctrll keycode 8 = Control_underscore
+ altgr control shiftl ctrll keycode 8 = Control_underscore
+ shift altgr control shiftl ctrll keycode 8 = Control_underscore
+ alt shiftl ctrll keycode 8 = Meta_seven
+ shift alt shiftl ctrll keycode 8 = Meta_ampersand
+ altgr alt shiftl ctrll keycode 8 = Meta_braceleft
+ shift altgr alt shiftl ctrll keycode 8 = Meta_braceleft
+ control alt shiftl ctrll keycode 8 = Meta_Control_underscore
+ shift control alt shiftl ctrll keycode 8 = Meta_Control_underscore
+ altgr control alt shiftl ctrll keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftl ctrll keycode 8 = Meta_Control_underscore
+ shift shiftr ctrll keycode 8 = ampersand
+ altgr shiftr ctrll keycode 8 = braceleft
+ shift altgr shiftr ctrll keycode 8 = U+215e
+ control shiftr ctrll keycode 8 = Control_underscore
+ shift control shiftr ctrll keycode 8 = Control_underscore
+ altgr control shiftr ctrll keycode 8 = Control_underscore
+ shift altgr control shiftr ctrll keycode 8 = Control_underscore
+ alt shiftr ctrll keycode 8 = Meta_seven
+ shift alt shiftr ctrll keycode 8 = Meta_ampersand
+ altgr alt shiftr ctrll keycode 8 = Meta_braceleft
+ shift altgr alt shiftr ctrll keycode 8 = Meta_braceleft
+ control alt shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift control alt shiftr ctrll keycode 8 = Meta_Control_underscore
+ altgr control alt shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift shiftl shiftr ctrll keycode 8 = ampersand
+ altgr shiftl shiftr ctrll keycode 8 = braceleft
+ shift altgr shiftl shiftr ctrll keycode 8 = U+215e
+ control shiftl shiftr ctrll keycode 8 = Control_underscore
+ shift control shiftl shiftr ctrll keycode 8 = Control_underscore
+ altgr control shiftl shiftr ctrll keycode 8 = Control_underscore
+ shift altgr control shiftl shiftr ctrll keycode 8 = Control_underscore
+ alt shiftl shiftr ctrll keycode 8 = Meta_seven
+ shift alt shiftl shiftr ctrll keycode 8 = Meta_ampersand
+ altgr alt shiftl shiftr ctrll keycode 8 = Meta_braceleft
+ shift altgr alt shiftl shiftr ctrll keycode 8 = Meta_braceleft
+ control alt shiftl shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift control alt shiftl shiftr ctrll keycode 8 = Meta_Control_underscore
+ altgr control alt shiftl shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftl shiftr ctrll keycode 8 = Meta_Control_underscore
+keycode 9 = eight
+ shift keycode 9 = asterisk
+ altgr keycode 9 = bracketleft
+ shift altgr keycode 9 = trademark
+ control keycode 9 = Delete
+ shift control keycode 9 = Delete
+ altgr control keycode 9 = Escape
+ shift altgr control keycode 9 = Escape
+ alt keycode 9 = Meta_eight
+ shift alt keycode 9 = Meta_asterisk
+ altgr alt keycode 9 = Meta_bracketleft
+ shift altgr alt keycode 9 = Meta_bracketleft
+ control alt keycode 9 = Meta_Delete
+ shift control alt keycode 9 = Meta_Delete
+ altgr control alt keycode 9 = Meta_Escape
+ shift altgr control alt keycode 9 = Meta_Escape
+ shift shiftl keycode 9 = asterisk
+ altgr shiftl keycode 9 = bracketleft
+ shift altgr shiftl keycode 9 = trademark
+ control shiftl keycode 9 = Delete
+ shift control shiftl keycode 9 = Delete
+ altgr control shiftl keycode 9 = Escape
+ shift altgr control shiftl keycode 9 = Escape
+ alt shiftl keycode 9 = Meta_eight
+ shift alt shiftl keycode 9 = Meta_asterisk
+ altgr alt shiftl keycode 9 = Meta_bracketleft
+ shift altgr alt shiftl keycode 9 = Meta_bracketleft
+ control alt shiftl keycode 9 = Meta_Delete
+ shift control alt shiftl keycode 9 = Meta_Delete
+ altgr control alt shiftl keycode 9 = Meta_Escape
+ shift altgr control alt shiftl keycode 9 = Meta_Escape
+ shift shiftr keycode 9 = asterisk
+ altgr shiftr keycode 9 = bracketleft
+ shift altgr shiftr keycode 9 = trademark
+ control shiftr keycode 9 = Delete
+ shift control shiftr keycode 9 = Delete
+ altgr control shiftr keycode 9 = Escape
+ shift altgr control shiftr keycode 9 = Escape
+ alt shiftr keycode 9 = Meta_eight
+ shift alt shiftr keycode 9 = Meta_asterisk
+ altgr alt shiftr keycode 9 = Meta_bracketleft
+ shift altgr alt shiftr keycode 9 = Meta_bracketleft
+ control alt shiftr keycode 9 = Meta_Delete
+ shift control alt shiftr keycode 9 = Meta_Delete
+ altgr control alt shiftr keycode 9 = Meta_Escape
+ shift altgr control alt shiftr keycode 9 = Meta_Escape
+ shift shiftl shiftr keycode 9 = asterisk
+ altgr shiftl shiftr keycode 9 = bracketleft
+ shift altgr shiftl shiftr keycode 9 = trademark
+ control shiftl shiftr keycode 9 = Delete
+ shift control shiftl shiftr keycode 9 = Delete
+ altgr control shiftl shiftr keycode 9 = Escape
+ shift altgr control shiftl shiftr keycode 9 = Escape
+ alt shiftl shiftr keycode 9 = Meta_eight
+ shift alt shiftl shiftr keycode 9 = Meta_asterisk
+ altgr alt shiftl shiftr keycode 9 = Meta_bracketleft
+ shift altgr alt shiftl shiftr keycode 9 = Meta_bracketleft
+ control alt shiftl shiftr keycode 9 = Meta_Delete
+ shift control alt shiftl shiftr keycode 9 = Meta_Delete
+ altgr control alt shiftl shiftr keycode 9 = Meta_Escape
+ shift altgr control alt shiftl shiftr keycode 9 = Meta_Escape
+ shift ctrll keycode 9 = asterisk
+ altgr ctrll keycode 9 = bracketleft
+ shift altgr ctrll keycode 9 = trademark
+ control ctrll keycode 9 = Delete
+ shift control ctrll keycode 9 = Delete
+ altgr control ctrll keycode 9 = Escape
+ shift altgr control ctrll keycode 9 = Escape
+ alt ctrll keycode 9 = Meta_eight
+ shift alt ctrll keycode 9 = Meta_asterisk
+ altgr alt ctrll keycode 9 = Meta_bracketleft
+ shift altgr alt ctrll keycode 9 = Meta_bracketleft
+ control alt ctrll keycode 9 = Meta_Delete
+ shift control alt ctrll keycode 9 = Meta_Delete
+ altgr control alt ctrll keycode 9 = Meta_Escape
+ shift altgr control alt ctrll keycode 9 = Meta_Escape
+ shift shiftl ctrll keycode 9 = asterisk
+ altgr shiftl ctrll keycode 9 = bracketleft
+ shift altgr shiftl ctrll keycode 9 = trademark
+ control shiftl ctrll keycode 9 = Delete
+ shift control shiftl ctrll keycode 9 = Delete
+ altgr control shiftl ctrll keycode 9 = Escape
+ shift altgr control shiftl ctrll keycode 9 = Escape
+ alt shiftl ctrll keycode 9 = Meta_eight
+ shift alt shiftl ctrll keycode 9 = Meta_asterisk
+ altgr alt shiftl ctrll keycode 9 = Meta_bracketleft
+ shift altgr alt shiftl ctrll keycode 9 = Meta_bracketleft
+ control alt shiftl ctrll keycode 9 = Meta_Delete
+ shift control alt shiftl ctrll keycode 9 = Meta_Delete
+ altgr control alt shiftl ctrll keycode 9 = Meta_Escape
+ shift altgr control alt shiftl ctrll keycode 9 = Meta_Escape
+ shift shiftr ctrll keycode 9 = asterisk
+ altgr shiftr ctrll keycode 9 = bracketleft
+ shift altgr shiftr ctrll keycode 9 = trademark
+ control shiftr ctrll keycode 9 = Delete
+ shift control shiftr ctrll keycode 9 = Delete
+ altgr control shiftr ctrll keycode 9 = Escape
+ shift altgr control shiftr ctrll keycode 9 = Escape
+ alt shiftr ctrll keycode 9 = Meta_eight
+ shift alt shiftr ctrll keycode 9 = Meta_asterisk
+ altgr alt shiftr ctrll keycode 9 = Meta_bracketleft
+ shift altgr alt shiftr ctrll keycode 9 = Meta_bracketleft
+ control alt shiftr ctrll keycode 9 = Meta_Delete
+ shift control alt shiftr ctrll keycode 9 = Meta_Delete
+ altgr control alt shiftr ctrll keycode 9 = Meta_Escape
+ shift altgr control alt shiftr ctrll keycode 9 = Meta_Escape
+ shift shiftl shiftr ctrll keycode 9 = asterisk
+ altgr shiftl shiftr ctrll keycode 9 = bracketleft
+ shift altgr shiftl shiftr ctrll keycode 9 = trademark
+ control shiftl shiftr ctrll keycode 9 = Delete
+ shift control shiftl shiftr ctrll keycode 9 = Delete
+ altgr control shiftl shiftr ctrll keycode 9 = Escape
+ shift altgr control shiftl shiftr ctrll keycode 9 = Escape
+ alt shiftl shiftr ctrll keycode 9 = Meta_eight
+ shift alt shiftl shiftr ctrll keycode 9 = Meta_asterisk
+ altgr alt shiftl shiftr ctrll keycode 9 = Meta_bracketleft
+ shift altgr alt shiftl shiftr ctrll keycode 9 = Meta_bracketleft
+ control alt shiftl shiftr ctrll keycode 9 = Meta_Delete
+ shift control alt shiftl shiftr ctrll keycode 9 = Meta_Delete
+ altgr control alt shiftl shiftr ctrll keycode 9 = Meta_Escape
+ shift altgr control alt shiftl shiftr ctrll keycode 9 = Meta_Escape
+keycode 10 = nine
+ shift keycode 10 = parenleft
+ altgr keycode 10 = bracketright
+ shift altgr keycode 10 = plusminus
+ control keycode 10 = Control_bracketright
+ shift control keycode 10 = Control_bracketright
+ altgr control keycode 10 = Control_bracketright
+ shift altgr control keycode 10 = Control_bracketright
+ alt keycode 10 = Meta_nine
+ shift alt keycode 10 = Meta_parenleft
+ altgr alt keycode 10 = Meta_bracketright
+ shift altgr alt keycode 10 = Meta_bracketright
+ control alt keycode 10 = Meta_Control_bracketright
+ shift control alt keycode 10 = Meta_Control_bracketright
+ altgr control alt keycode 10 = Meta_Control_bracketright
+ shift altgr control alt keycode 10 = Meta_Control_bracketright
+ shift shiftl keycode 10 = parenleft
+ altgr shiftl keycode 10 = bracketright
+ shift altgr shiftl keycode 10 = plusminus
+ control shiftl keycode 10 = Control_bracketright
+ shift control shiftl keycode 10 = Control_bracketright
+ altgr control shiftl keycode 10 = Control_bracketright
+ shift altgr control shiftl keycode 10 = Control_bracketright
+ alt shiftl keycode 10 = Meta_nine
+ shift alt shiftl keycode 10 = Meta_parenleft
+ altgr alt shiftl keycode 10 = Meta_bracketright
+ shift altgr alt shiftl keycode 10 = Meta_bracketright
+ control alt shiftl keycode 10 = Meta_Control_bracketright
+ shift control alt shiftl keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftl keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftl keycode 10 = Meta_Control_bracketright
+ shift shiftr keycode 10 = parenleft
+ altgr shiftr keycode 10 = bracketright
+ shift altgr shiftr keycode 10 = plusminus
+ control shiftr keycode 10 = Control_bracketright
+ shift control shiftr keycode 10 = Control_bracketright
+ altgr control shiftr keycode 10 = Control_bracketright
+ shift altgr control shiftr keycode 10 = Control_bracketright
+ alt shiftr keycode 10 = Meta_nine
+ shift alt shiftr keycode 10 = Meta_parenleft
+ altgr alt shiftr keycode 10 = Meta_bracketright
+ shift altgr alt shiftr keycode 10 = Meta_bracketright
+ control alt shiftr keycode 10 = Meta_Control_bracketright
+ shift control alt shiftr keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftr keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftr keycode 10 = Meta_Control_bracketright
+ shift shiftl shiftr keycode 10 = parenleft
+ altgr shiftl shiftr keycode 10 = bracketright
+ shift altgr shiftl shiftr keycode 10 = plusminus
+ control shiftl shiftr keycode 10 = Control_bracketright
+ shift control shiftl shiftr keycode 10 = Control_bracketright
+ altgr control shiftl shiftr keycode 10 = Control_bracketright
+ shift altgr control shiftl shiftr keycode 10 = Control_bracketright
+ alt shiftl shiftr keycode 10 = Meta_nine
+ shift alt shiftl shiftr keycode 10 = Meta_parenleft
+ altgr alt shiftl shiftr keycode 10 = Meta_bracketright
+ shift altgr alt shiftl shiftr keycode 10 = Meta_bracketright
+ control alt shiftl shiftr keycode 10 = Meta_Control_bracketright
+ shift control alt shiftl shiftr keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr keycode 10 = Meta_Control_bracketright
+ shift ctrll keycode 10 = parenleft
+ altgr ctrll keycode 10 = bracketright
+ shift altgr ctrll keycode 10 = plusminus
+ control ctrll keycode 10 = Control_bracketright
+ shift control ctrll keycode 10 = Control_bracketright
+ altgr control ctrll keycode 10 = Control_bracketright
+ shift altgr control ctrll keycode 10 = Control_bracketright
+ alt ctrll keycode 10 = Meta_nine
+ shift alt ctrll keycode 10 = Meta_parenleft
+ altgr alt ctrll keycode 10 = Meta_bracketright
+ shift altgr alt ctrll keycode 10 = Meta_bracketright
+ control alt ctrll keycode 10 = Meta_Control_bracketright
+ shift control alt ctrll keycode 10 = Meta_Control_bracketright
+ altgr control alt ctrll keycode 10 = Meta_Control_bracketright
+ shift altgr control alt ctrll keycode 10 = Meta_Control_bracketright
+ shift shiftl ctrll keycode 10 = parenleft
+ altgr shiftl ctrll keycode 10 = bracketright
+ shift altgr shiftl ctrll keycode 10 = plusminus
+ control shiftl ctrll keycode 10 = Control_bracketright
+ shift control shiftl ctrll keycode 10 = Control_bracketright
+ altgr control shiftl ctrll keycode 10 = Control_bracketright
+ shift altgr control shiftl ctrll keycode 10 = Control_bracketright
+ alt shiftl ctrll keycode 10 = Meta_nine
+ shift alt shiftl ctrll keycode 10 = Meta_parenleft
+ altgr alt shiftl ctrll keycode 10 = Meta_bracketright
+ shift altgr alt shiftl ctrll keycode 10 = Meta_bracketright
+ control alt shiftl ctrll keycode 10 = Meta_Control_bracketright
+ shift control alt shiftl ctrll keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftl ctrll keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftl ctrll keycode 10 = Meta_Control_bracketright
+ shift shiftr ctrll keycode 10 = parenleft
+ altgr shiftr ctrll keycode 10 = bracketright
+ shift altgr shiftr ctrll keycode 10 = plusminus
+ control shiftr ctrll keycode 10 = Control_bracketright
+ shift control shiftr ctrll keycode 10 = Control_bracketright
+ altgr control shiftr ctrll keycode 10 = Control_bracketright
+ shift altgr control shiftr ctrll keycode 10 = Control_bracketright
+ alt shiftr ctrll keycode 10 = Meta_nine
+ shift alt shiftr ctrll keycode 10 = Meta_parenleft
+ altgr alt shiftr ctrll keycode 10 = Meta_bracketright
+ shift altgr alt shiftr ctrll keycode 10 = Meta_bracketright
+ control alt shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift control alt shiftr ctrll keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift shiftl shiftr ctrll keycode 10 = parenleft
+ altgr shiftl shiftr ctrll keycode 10 = bracketright
+ shift altgr shiftl shiftr ctrll keycode 10 = plusminus
+ control shiftl shiftr ctrll keycode 10 = Control_bracketright
+ shift control shiftl shiftr ctrll keycode 10 = Control_bracketright
+ altgr control shiftl shiftr ctrll keycode 10 = Control_bracketright
+ shift altgr control shiftl shiftr ctrll keycode 10 = Control_bracketright
+ alt shiftl shiftr ctrll keycode 10 = Meta_nine
+ shift alt shiftl shiftr ctrll keycode 10 = Meta_parenleft
+ altgr alt shiftl shiftr ctrll keycode 10 = Meta_bracketright
+ shift altgr alt shiftl shiftr ctrll keycode 10 = Meta_bracketright
+ control alt shiftl shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift control alt shiftl shiftr ctrll keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr ctrll keycode 10 = Meta_Control_bracketright
+keycode 11 = zero parenright braceright degree
+ alt keycode 11 = Meta_zero
+ shift alt keycode 11 = Meta_parenright
+ altgr alt keycode 11 = Meta_braceright
+ shift altgr alt keycode 11 = Meta_braceright
+ shiftl keycode 11 = zero
+ shift shiftl keycode 11 = parenright
+ altgr shiftl keycode 11 = braceright
+ shift altgr shiftl keycode 11 = degree
+ alt shiftl keycode 11 = Meta_zero
+ shift alt shiftl keycode 11 = Meta_parenright
+ altgr alt shiftl keycode 11 = Meta_braceright
+ shift altgr alt shiftl keycode 11 = Meta_braceright
+ shiftr keycode 11 = zero
+ shift shiftr keycode 11 = parenright
+ altgr shiftr keycode 11 = braceright
+ shift altgr shiftr keycode 11 = degree
+ alt shiftr keycode 11 = Meta_zero
+ shift alt shiftr keycode 11 = Meta_parenright
+ altgr alt shiftr keycode 11 = Meta_braceright
+ shift altgr alt shiftr keycode 11 = Meta_braceright
+ shiftl shiftr keycode 11 = zero
+ shift shiftl shiftr keycode 11 = parenright
+ altgr shiftl shiftr keycode 11 = braceright
+ shift altgr shiftl shiftr keycode 11 = degree
+ alt shiftl shiftr keycode 11 = Meta_zero
+ shift alt shiftl shiftr keycode 11 = Meta_parenright
+ altgr alt shiftl shiftr keycode 11 = Meta_braceright
+ shift altgr alt shiftl shiftr keycode 11 = Meta_braceright
+ ctrll keycode 11 = zero
+ shift ctrll keycode 11 = parenright
+ altgr ctrll keycode 11 = braceright
+ shift altgr ctrll keycode 11 = degree
+ alt ctrll keycode 11 = Meta_zero
+ shift alt ctrll keycode 11 = Meta_parenright
+ altgr alt ctrll keycode 11 = Meta_braceright
+ shift altgr alt ctrll keycode 11 = Meta_braceright
+ shiftl ctrll keycode 11 = zero
+ shift shiftl ctrll keycode 11 = parenright
+ altgr shiftl ctrll keycode 11 = braceright
+ shift altgr shiftl ctrll keycode 11 = degree
+ alt shiftl ctrll keycode 11 = Meta_zero
+ shift alt shiftl ctrll keycode 11 = Meta_parenright
+ altgr alt shiftl ctrll keycode 11 = Meta_braceright
+ shift altgr alt shiftl ctrll keycode 11 = Meta_braceright
+ shiftr ctrll keycode 11 = zero
+ shift shiftr ctrll keycode 11 = parenright
+ altgr shiftr ctrll keycode 11 = braceright
+ shift altgr shiftr ctrll keycode 11 = degree
+ alt shiftr ctrll keycode 11 = Meta_zero
+ shift alt shiftr ctrll keycode 11 = Meta_parenright
+ altgr alt shiftr ctrll keycode 11 = Meta_braceright
+ shift altgr alt shiftr ctrll keycode 11 = Meta_braceright
+ shiftl shiftr ctrll keycode 11 = zero
+ shift shiftl shiftr ctrll keycode 11 = parenright
+ altgr shiftl shiftr ctrll keycode 11 = braceright
+ shift altgr shiftl shiftr ctrll keycode 11 = degree
+ alt shiftl shiftr ctrll keycode 11 = Meta_zero
+ shift alt shiftl shiftr ctrll keycode 11 = Meta_parenright
+ altgr alt shiftl shiftr ctrll keycode 11 = Meta_braceright
+ shift altgr alt shiftl shiftr ctrll keycode 11 = Meta_braceright
+keycode 12 = minus
+ shift keycode 12 = underscore
+ altgr keycode 12 = backslash
+ shift altgr keycode 12 = questiondown
+ control keycode 12 = Control_underscore
+ shift control keycode 12 = Control_underscore
+ altgr control keycode 12 = Control_backslash
+ shift altgr control keycode 12 = Control_backslash
+ alt keycode 12 = Meta_minus
+ shift alt keycode 12 = Meta_underscore
+ altgr alt keycode 12 = Meta_backslash
+ shift altgr alt keycode 12 = Meta_backslash
+ control alt keycode 12 = Meta_Control_underscore
+ shift control alt keycode 12 = Meta_Control_underscore
+ altgr control alt keycode 12 = Meta_Control_backslash
+ shift altgr control alt keycode 12 = Meta_Control_backslash
+ shift shiftl keycode 12 = underscore
+ altgr shiftl keycode 12 = backslash
+ shift altgr shiftl keycode 12 = questiondown
+ control shiftl keycode 12 = Control_underscore
+ shift control shiftl keycode 12 = Control_underscore
+ altgr control shiftl keycode 12 = Control_backslash
+ shift altgr control shiftl keycode 12 = Control_backslash
+ alt shiftl keycode 12 = Meta_minus
+ shift alt shiftl keycode 12 = Meta_underscore
+ altgr alt shiftl keycode 12 = Meta_backslash
+ shift altgr alt shiftl keycode 12 = Meta_backslash
+ control alt shiftl keycode 12 = Meta_Control_underscore
+ shift control alt shiftl keycode 12 = Meta_Control_underscore
+ altgr control alt shiftl keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftl keycode 12 = Meta_Control_backslash
+ shift shiftr keycode 12 = underscore
+ altgr shiftr keycode 12 = backslash
+ shift altgr shiftr keycode 12 = questiondown
+ control shiftr keycode 12 = Control_underscore
+ shift control shiftr keycode 12 = Control_underscore
+ altgr control shiftr keycode 12 = Control_backslash
+ shift altgr control shiftr keycode 12 = Control_backslash
+ alt shiftr keycode 12 = Meta_minus
+ shift alt shiftr keycode 12 = Meta_underscore
+ altgr alt shiftr keycode 12 = Meta_backslash
+ shift altgr alt shiftr keycode 12 = Meta_backslash
+ control alt shiftr keycode 12 = Meta_Control_underscore
+ shift control alt shiftr keycode 12 = Meta_Control_underscore
+ altgr control alt shiftr keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftr keycode 12 = Meta_Control_backslash
+ shift shiftl shiftr keycode 12 = underscore
+ altgr shiftl shiftr keycode 12 = backslash
+ shift altgr shiftl shiftr keycode 12 = questiondown
+ control shiftl shiftr keycode 12 = Control_underscore
+ shift control shiftl shiftr keycode 12 = Control_underscore
+ altgr control shiftl shiftr keycode 12 = Control_backslash
+ shift altgr control shiftl shiftr keycode 12 = Control_backslash
+ alt shiftl shiftr keycode 12 = Meta_minus
+ shift alt shiftl shiftr keycode 12 = Meta_underscore
+ altgr alt shiftl shiftr keycode 12 = Meta_backslash
+ shift altgr alt shiftl shiftr keycode 12 = Meta_backslash
+ control alt shiftl shiftr keycode 12 = Meta_Control_underscore
+ shift control alt shiftl shiftr keycode 12 = Meta_Control_underscore
+ altgr control alt shiftl shiftr keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr keycode 12 = Meta_Control_backslash
+ shift ctrll keycode 12 = underscore
+ altgr ctrll keycode 12 = backslash
+ shift altgr ctrll keycode 12 = questiondown
+ control ctrll keycode 12 = Control_underscore
+ shift control ctrll keycode 12 = Control_underscore
+ altgr control ctrll keycode 12 = Control_backslash
+ shift altgr control ctrll keycode 12 = Control_backslash
+ alt ctrll keycode 12 = Meta_minus
+ shift alt ctrll keycode 12 = Meta_underscore
+ altgr alt ctrll keycode 12 = Meta_backslash
+ shift altgr alt ctrll keycode 12 = Meta_backslash
+ control alt ctrll keycode 12 = Meta_Control_underscore
+ shift control alt ctrll keycode 12 = Meta_Control_underscore
+ altgr control alt ctrll keycode 12 = Meta_Control_backslash
+ shift altgr control alt ctrll keycode 12 = Meta_Control_backslash
+ shift shiftl ctrll keycode 12 = underscore
+ altgr shiftl ctrll keycode 12 = backslash
+ shift altgr shiftl ctrll keycode 12 = questiondown
+ control shiftl ctrll keycode 12 = Control_underscore
+ shift control shiftl ctrll keycode 12 = Control_underscore
+ altgr control shiftl ctrll keycode 12 = Control_backslash
+ shift altgr control shiftl ctrll keycode 12 = Control_backslash
+ alt shiftl ctrll keycode 12 = Meta_minus
+ shift alt shiftl ctrll keycode 12 = Meta_underscore
+ altgr alt shiftl ctrll keycode 12 = Meta_backslash
+ shift altgr alt shiftl ctrll keycode 12 = Meta_backslash
+ control alt shiftl ctrll keycode 12 = Meta_Control_underscore
+ shift control alt shiftl ctrll keycode 12 = Meta_Control_underscore
+ altgr control alt shiftl ctrll keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftl ctrll keycode 12 = Meta_Control_backslash
+ shift shiftr ctrll keycode 12 = underscore
+ altgr shiftr ctrll keycode 12 = backslash
+ shift altgr shiftr ctrll keycode 12 = questiondown
+ control shiftr ctrll keycode 12 = Control_underscore
+ shift control shiftr ctrll keycode 12 = Control_underscore
+ altgr control shiftr ctrll keycode 12 = Control_backslash
+ shift altgr control shiftr ctrll keycode 12 = Control_backslash
+ alt shiftr ctrll keycode 12 = Meta_minus
+ shift alt shiftr ctrll keycode 12 = Meta_underscore
+ altgr alt shiftr ctrll keycode 12 = Meta_backslash
+ shift altgr alt shiftr ctrll keycode 12 = Meta_backslash
+ control alt shiftr ctrll keycode 12 = Meta_Control_underscore
+ shift control alt shiftr ctrll keycode 12 = Meta_Control_underscore
+ altgr control alt shiftr ctrll keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftr ctrll keycode 12 = Meta_Control_backslash
+ shift shiftl shiftr ctrll keycode 12 = underscore
+ altgr shiftl shiftr ctrll keycode 12 = backslash
+ shift altgr shiftl shiftr ctrll keycode 12 = questiondown
+ control shiftl shiftr ctrll keycode 12 = Control_underscore
+ shift control shiftl shiftr ctrll keycode 12 = Control_underscore
+ altgr control shiftl shiftr ctrll keycode 12 = Control_backslash
+ shift altgr control shiftl shiftr ctrll keycode 12 = Control_backslash
+ alt shiftl shiftr ctrll keycode 12 = Meta_minus
+ shift alt shiftl shiftr ctrll keycode 12 = Meta_underscore
+ altgr alt shiftl shiftr ctrll keycode 12 = Meta_backslash
+ shift altgr alt shiftl shiftr ctrll keycode 12 = Meta_backslash
+ control alt shiftl shiftr ctrll keycode 12 = Meta_Control_underscore
+ shift control alt shiftl shiftr ctrll keycode 12 = Meta_Control_underscore
+ altgr control alt shiftl shiftr ctrll keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr ctrll keycode 12 = Meta_Control_backslash
+keycode 13 = equal
+ shift keycode 13 = plus
+ altgr keycode 13 = section
+ shift altgr keycode 13 = dead_cedilla
+ control keycode 13 = dead_cedilla
+ shift control keycode 13 = dead_cedilla
+ altgr control keycode 13 = dead_cedilla
+ shift altgr control keycode 13 = dead_cedilla
+ alt keycode 13 = Meta_equal
+ shift alt keycode 13 = Meta_plus
+ altgr alt keycode 13 = Meta_equal
+ shift altgr alt keycode 13 = dead_cedilla
+ control alt keycode 13 = dead_cedilla
+ shift control alt keycode 13 = dead_cedilla
+ altgr control alt keycode 13 = dead_cedilla
+ shift altgr control alt keycode 13 = dead_cedilla
+ shift shiftl keycode 13 = plus
+ altgr shiftl keycode 13 = section
+ shift altgr shiftl keycode 13 = dead_cedilla
+ control shiftl keycode 13 = dead_cedilla
+ shift control shiftl keycode 13 = dead_cedilla
+ altgr control shiftl keycode 13 = dead_cedilla
+ shift altgr control shiftl keycode 13 = dead_cedilla
+ alt shiftl keycode 13 = Meta_equal
+ shift alt shiftl keycode 13 = Meta_plus
+ altgr alt shiftl keycode 13 = Meta_equal
+ shift altgr alt shiftl keycode 13 = dead_cedilla
+ control alt shiftl keycode 13 = dead_cedilla
+ shift control alt shiftl keycode 13 = dead_cedilla
+ altgr control alt shiftl keycode 13 = dead_cedilla
+ shift altgr control alt shiftl keycode 13 = dead_cedilla
+ shift shiftr keycode 13 = plus
+ altgr shiftr keycode 13 = section
+ shift altgr shiftr keycode 13 = dead_cedilla
+ control shiftr keycode 13 = dead_cedilla
+ shift control shiftr keycode 13 = dead_cedilla
+ altgr control shiftr keycode 13 = dead_cedilla
+ shift altgr control shiftr keycode 13 = dead_cedilla
+ alt shiftr keycode 13 = Meta_equal
+ shift alt shiftr keycode 13 = Meta_plus
+ altgr alt shiftr keycode 13 = Meta_equal
+ shift altgr alt shiftr keycode 13 = dead_cedilla
+ control alt shiftr keycode 13 = dead_cedilla
+ shift control alt shiftr keycode 13 = dead_cedilla
+ altgr control alt shiftr keycode 13 = dead_cedilla
+ shift altgr control alt shiftr keycode 13 = dead_cedilla
+ shift shiftl shiftr keycode 13 = plus
+ altgr shiftl shiftr keycode 13 = section
+ shift altgr shiftl shiftr keycode 13 = dead_cedilla
+ control shiftl shiftr keycode 13 = dead_cedilla
+ shift control shiftl shiftr keycode 13 = dead_cedilla
+ altgr control shiftl shiftr keycode 13 = dead_cedilla
+ shift altgr control shiftl shiftr keycode 13 = dead_cedilla
+ alt shiftl shiftr keycode 13 = Meta_equal
+ shift alt shiftl shiftr keycode 13 = Meta_plus
+ altgr alt shiftl shiftr keycode 13 = Meta_equal
+ shift altgr alt shiftl shiftr keycode 13 = dead_cedilla
+ control alt shiftl shiftr keycode 13 = dead_cedilla
+ shift control alt shiftl shiftr keycode 13 = dead_cedilla
+ altgr control alt shiftl shiftr keycode 13 = dead_cedilla
+ shift altgr control alt shiftl shiftr keycode 13 = dead_cedilla
+ shift ctrll keycode 13 = plus
+ altgr ctrll keycode 13 = section
+ shift altgr ctrll keycode 13 = dead_cedilla
+ control ctrll keycode 13 = dead_cedilla
+ shift control ctrll keycode 13 = dead_cedilla
+ altgr control ctrll keycode 13 = dead_cedilla
+ shift altgr control ctrll keycode 13 = dead_cedilla
+ alt ctrll keycode 13 = Meta_equal
+ shift alt ctrll keycode 13 = Meta_plus
+ altgr alt ctrll keycode 13 = Meta_equal
+ shift altgr alt ctrll keycode 13 = dead_cedilla
+ control alt ctrll keycode 13 = dead_cedilla
+ shift control alt ctrll keycode 13 = dead_cedilla
+ altgr control alt ctrll keycode 13 = dead_cedilla
+ shift altgr control alt ctrll keycode 13 = dead_cedilla
+ shift shiftl ctrll keycode 13 = plus
+ altgr shiftl ctrll keycode 13 = section
+ shift altgr shiftl ctrll keycode 13 = dead_cedilla
+ control shiftl ctrll keycode 13 = dead_cedilla
+ shift control shiftl ctrll keycode 13 = dead_cedilla
+ altgr control shiftl ctrll keycode 13 = dead_cedilla
+ shift altgr control shiftl ctrll keycode 13 = dead_cedilla
+ alt shiftl ctrll keycode 13 = Meta_equal
+ shift alt shiftl ctrll keycode 13 = Meta_plus
+ altgr alt shiftl ctrll keycode 13 = Meta_equal
+ shift altgr alt shiftl ctrll keycode 13 = dead_cedilla
+ control alt shiftl ctrll keycode 13 = dead_cedilla
+ shift control alt shiftl ctrll keycode 13 = dead_cedilla
+ altgr control alt shiftl ctrll keycode 13 = dead_cedilla
+ shift altgr control alt shiftl ctrll keycode 13 = dead_cedilla
+ shift shiftr ctrll keycode 13 = plus
+ altgr shiftr ctrll keycode 13 = section
+ shift altgr shiftr ctrll keycode 13 = dead_cedilla
+ control shiftr ctrll keycode 13 = dead_cedilla
+ shift control shiftr ctrll keycode 13 = dead_cedilla
+ altgr control shiftr ctrll keycode 13 = dead_cedilla
+ shift altgr control shiftr ctrll keycode 13 = dead_cedilla
+ alt shiftr ctrll keycode 13 = Meta_equal
+ shift alt shiftr ctrll keycode 13 = Meta_plus
+ altgr alt shiftr ctrll keycode 13 = Meta_equal
+ shift altgr alt shiftr ctrll keycode 13 = dead_cedilla
+ control alt shiftr ctrll keycode 13 = dead_cedilla
+ shift control alt shiftr ctrll keycode 13 = dead_cedilla
+ altgr control alt shiftr ctrll keycode 13 = dead_cedilla
+ shift altgr control alt shiftr ctrll keycode 13 = dead_cedilla
+ shift shiftl shiftr ctrll keycode 13 = plus
+ altgr shiftl shiftr ctrll keycode 13 = section
+ shift altgr shiftl shiftr ctrll keycode 13 = dead_cedilla
+ control shiftl shiftr ctrll keycode 13 = dead_cedilla
+ shift control shiftl shiftr ctrll keycode 13 = dead_cedilla
+ altgr control shiftl shiftr ctrll keycode 13 = dead_cedilla
+ shift altgr control shiftl shiftr ctrll keycode 13 = dead_cedilla
+ alt shiftl shiftr ctrll keycode 13 = Meta_equal
+ shift alt shiftl shiftr ctrll keycode 13 = Meta_plus
+ altgr alt shiftl shiftr ctrll keycode 13 = Meta_equal
+ shift altgr alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+ control alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+ shift control alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+ altgr control alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+ shift altgr control alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+keycode 14 = Delete
+ control keycode 14 = BackSpace
+ shift control keycode 14 = BackSpace
+ altgr control keycode 14 = BackSpace
+ shift altgr control keycode 14 = BackSpace
+ alt keycode 14 = Meta_Delete
+ shift alt keycode 14 = Meta_Delete
+ altgr alt keycode 14 = Meta_Delete
+ shift altgr alt keycode 14 = Meta_Delete
+ control alt keycode 14 = Meta_BackSpace
+ shift control alt keycode 14 = Meta_BackSpace
+ altgr control alt keycode 14 = Meta_BackSpace
+ shift altgr control alt keycode 14 = Meta_BackSpace
+ control shiftl keycode 14 = BackSpace
+ shift control shiftl keycode 14 = BackSpace
+ altgr control shiftl keycode 14 = BackSpace
+ shift altgr control shiftl keycode 14 = BackSpace
+ alt shiftl keycode 14 = Meta_Delete
+ shift alt shiftl keycode 14 = Meta_Delete
+ altgr alt shiftl keycode 14 = Meta_Delete
+ shift altgr alt shiftl keycode 14 = Meta_Delete
+ control alt shiftl keycode 14 = Meta_BackSpace
+ shift control alt shiftl keycode 14 = Meta_BackSpace
+ altgr control alt shiftl keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftl keycode 14 = Meta_BackSpace
+ control shiftr keycode 14 = BackSpace
+ shift control shiftr keycode 14 = BackSpace
+ altgr control shiftr keycode 14 = BackSpace
+ shift altgr control shiftr keycode 14 = BackSpace
+ alt shiftr keycode 14 = Meta_Delete
+ shift alt shiftr keycode 14 = Meta_Delete
+ altgr alt shiftr keycode 14 = Meta_Delete
+ shift altgr alt shiftr keycode 14 = Meta_Delete
+ control alt shiftr keycode 14 = Meta_BackSpace
+ shift control alt shiftr keycode 14 = Meta_BackSpace
+ altgr control alt shiftr keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftr keycode 14 = Meta_BackSpace
+ control shiftl shiftr keycode 14 = BackSpace
+ shift control shiftl shiftr keycode 14 = BackSpace
+ altgr control shiftl shiftr keycode 14 = BackSpace
+ shift altgr control shiftl shiftr keycode 14 = BackSpace
+ alt shiftl shiftr keycode 14 = Meta_Delete
+ shift alt shiftl shiftr keycode 14 = Meta_Delete
+ altgr alt shiftl shiftr keycode 14 = Meta_Delete
+ shift altgr alt shiftl shiftr keycode 14 = Meta_Delete
+ control alt shiftl shiftr keycode 14 = Meta_BackSpace
+ shift control alt shiftl shiftr keycode 14 = Meta_BackSpace
+ altgr control alt shiftl shiftr keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftl shiftr keycode 14 = Meta_BackSpace
+ control ctrll keycode 14 = BackSpace
+ shift control ctrll keycode 14 = BackSpace
+ altgr control ctrll keycode 14 = BackSpace
+ shift altgr control ctrll keycode 14 = BackSpace
+ alt ctrll keycode 14 = Meta_Delete
+ shift alt ctrll keycode 14 = Meta_Delete
+ altgr alt ctrll keycode 14 = Meta_Delete
+ shift altgr alt ctrll keycode 14 = Meta_Delete
+ control alt ctrll keycode 14 = Meta_BackSpace
+ shift control alt ctrll keycode 14 = Meta_BackSpace
+ altgr control alt ctrll keycode 14 = Meta_BackSpace
+ shift altgr control alt ctrll keycode 14 = Meta_BackSpace
+ control shiftl ctrll keycode 14 = BackSpace
+ shift control shiftl ctrll keycode 14 = BackSpace
+ altgr control shiftl ctrll keycode 14 = BackSpace
+ shift altgr control shiftl ctrll keycode 14 = BackSpace
+ alt shiftl ctrll keycode 14 = Meta_Delete
+ shift alt shiftl ctrll keycode 14 = Meta_Delete
+ altgr alt shiftl ctrll keycode 14 = Meta_Delete
+ shift altgr alt shiftl ctrll keycode 14 = Meta_Delete
+ control alt shiftl ctrll keycode 14 = Meta_BackSpace
+ shift control alt shiftl ctrll keycode 14 = Meta_BackSpace
+ altgr control alt shiftl ctrll keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftl ctrll keycode 14 = Meta_BackSpace
+ control shiftr ctrll keycode 14 = BackSpace
+ shift control shiftr ctrll keycode 14 = BackSpace
+ altgr control shiftr ctrll keycode 14 = BackSpace
+ shift altgr control shiftr ctrll keycode 14 = BackSpace
+ alt shiftr ctrll keycode 14 = Meta_Delete
+ shift alt shiftr ctrll keycode 14 = Meta_Delete
+ altgr alt shiftr ctrll keycode 14 = Meta_Delete
+ shift altgr alt shiftr ctrll keycode 14 = Meta_Delete
+ control alt shiftr ctrll keycode 14 = Meta_BackSpace
+ shift control alt shiftr ctrll keycode 14 = Meta_BackSpace
+ altgr control alt shiftr ctrll keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftr ctrll keycode 14 = Meta_BackSpace
+ control shiftl shiftr ctrll keycode 14 = BackSpace
+ shift control shiftl shiftr ctrll keycode 14 = BackSpace
+ altgr control shiftl shiftr ctrll keycode 14 = BackSpace
+ shift altgr control shiftl shiftr ctrll keycode 14 = BackSpace
+ alt shiftl shiftr ctrll keycode 14 = Meta_Delete
+ shift alt shiftl shiftr ctrll keycode 14 = Meta_Delete
+ altgr alt shiftl shiftr ctrll keycode 14 = Meta_Delete
+ shift altgr alt shiftl shiftr ctrll keycode 14 = Meta_Delete
+ control alt shiftl shiftr ctrll keycode 14 = Meta_BackSpace
+ shift control alt shiftl shiftr ctrll keycode 14 = Meta_BackSpace
+ altgr control alt shiftl shiftr ctrll keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftl shiftr ctrll keycode 14 = Meta_BackSpace
+keycode 15 = Tab
+ alt keycode 15 = Meta_Tab
+ shift alt keycode 15 = Meta_Tab
+ altgr alt keycode 15 = Meta_Tab
+ shift altgr alt keycode 15 = Meta_Tab
+ control alt keycode 15 = Meta_Tab
+ shift control alt keycode 15 = Meta_Tab
+ altgr control alt keycode 15 = Meta_Tab
+ shift altgr control alt keycode 15 = Meta_Tab
+ alt shiftl keycode 15 = Meta_Tab
+ shift alt shiftl keycode 15 = Meta_Tab
+ altgr alt shiftl keycode 15 = Meta_Tab
+ shift altgr alt shiftl keycode 15 = Meta_Tab
+ control alt shiftl keycode 15 = Meta_Tab
+ shift control alt shiftl keycode 15 = Meta_Tab
+ altgr control alt shiftl keycode 15 = Meta_Tab
+ shift altgr control alt shiftl keycode 15 = Meta_Tab
+ alt shiftr keycode 15 = Meta_Tab
+ shift alt shiftr keycode 15 = Meta_Tab
+ altgr alt shiftr keycode 15 = Meta_Tab
+ shift altgr alt shiftr keycode 15 = Meta_Tab
+ control alt shiftr keycode 15 = Meta_Tab
+ shift control alt shiftr keycode 15 = Meta_Tab
+ altgr control alt shiftr keycode 15 = Meta_Tab
+ shift altgr control alt shiftr keycode 15 = Meta_Tab
+ alt shiftl shiftr keycode 15 = Meta_Tab
+ shift alt shiftl shiftr keycode 15 = Meta_Tab
+ altgr alt shiftl shiftr keycode 15 = Meta_Tab
+ shift altgr alt shiftl shiftr keycode 15 = Meta_Tab
+ control alt shiftl shiftr keycode 15 = Meta_Tab
+ shift control alt shiftl shiftr keycode 15 = Meta_Tab
+ altgr control alt shiftl shiftr keycode 15 = Meta_Tab
+ shift altgr control alt shiftl shiftr keycode 15 = Meta_Tab
+ alt ctrll keycode 15 = Meta_Tab
+ shift alt ctrll keycode 15 = Meta_Tab
+ altgr alt ctrll keycode 15 = Meta_Tab
+ shift altgr alt ctrll keycode 15 = Meta_Tab
+ control alt ctrll keycode 15 = Meta_Tab
+ shift control alt ctrll keycode 15 = Meta_Tab
+ altgr control alt ctrll keycode 15 = Meta_Tab
+ shift altgr control alt ctrll keycode 15 = Meta_Tab
+ alt shiftl ctrll keycode 15 = Meta_Tab
+ shift alt shiftl ctrll keycode 15 = Meta_Tab
+ altgr alt shiftl ctrll keycode 15 = Meta_Tab
+ shift altgr alt shiftl ctrll keycode 15 = Meta_Tab
+ control alt shiftl ctrll keycode 15 = Meta_Tab
+ shift control alt shiftl ctrll keycode 15 = Meta_Tab
+ altgr control alt shiftl ctrll keycode 15 = Meta_Tab
+ shift altgr control alt shiftl ctrll keycode 15 = Meta_Tab
+ alt shiftr ctrll keycode 15 = Meta_Tab
+ shift alt shiftr ctrll keycode 15 = Meta_Tab
+ altgr alt shiftr ctrll keycode 15 = Meta_Tab
+ shift altgr alt shiftr ctrll keycode 15 = Meta_Tab
+ control alt shiftr ctrll keycode 15 = Meta_Tab
+ shift control alt shiftr ctrll keycode 15 = Meta_Tab
+ altgr control alt shiftr ctrll keycode 15 = Meta_Tab
+ shift altgr control alt shiftr ctrll keycode 15 = Meta_Tab
+ alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ shift alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ altgr alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ shift altgr alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ control alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ shift control alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ altgr control alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ shift altgr control alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+keycode 16 = +q
+ shift keycode 16 = +Q
+ altgr keycode 16 = slash
+ shift altgr keycode 16 = slash
+ control keycode 16 = Control_q
+ shift control keycode 16 = Control_q
+ altgr control keycode 16 = Control_q
+ shift altgr control keycode 16 = Control_q
+ alt keycode 16 = Meta_q
+ shift alt keycode 16 = Meta_Q
+ altgr alt keycode 16 = Meta_slash
+ shift altgr alt keycode 16 = Meta_slash
+ control alt keycode 16 = Meta_Control_q
+ shift control alt keycode 16 = Meta_Control_q
+ altgr control alt keycode 16 = Meta_Control_q
+ shift altgr control alt keycode 16 = Meta_Control_q
+ shift shiftl keycode 16 = +Q
+ altgr shiftl keycode 16 = slash
+ shift altgr shiftl keycode 16 = slash
+ control shiftl keycode 16 = Control_q
+ shift control shiftl keycode 16 = Control_q
+ altgr control shiftl keycode 16 = Control_q
+ shift altgr control shiftl keycode 16 = Control_q
+ alt shiftl keycode 16 = Meta_q
+ shift alt shiftl keycode 16 = Meta_Q
+ altgr alt shiftl keycode 16 = Meta_slash
+ shift altgr alt shiftl keycode 16 = Meta_slash
+ control alt shiftl keycode 16 = Meta_Control_q
+ shift control alt shiftl keycode 16 = Meta_Control_q
+ altgr control alt shiftl keycode 16 = Meta_Control_q
+ shift altgr control alt shiftl keycode 16 = Meta_Control_q
+ shift shiftr keycode 16 = +Q
+ altgr shiftr keycode 16 = slash
+ shift altgr shiftr keycode 16 = slash
+ control shiftr keycode 16 = Control_q
+ shift control shiftr keycode 16 = Control_q
+ altgr control shiftr keycode 16 = Control_q
+ shift altgr control shiftr keycode 16 = Control_q
+ alt shiftr keycode 16 = Meta_q
+ shift alt shiftr keycode 16 = Meta_Q
+ altgr alt shiftr keycode 16 = Meta_slash
+ shift altgr alt shiftr keycode 16 = Meta_slash
+ control alt shiftr keycode 16 = Meta_Control_q
+ shift control alt shiftr keycode 16 = Meta_Control_q
+ altgr control alt shiftr keycode 16 = Meta_Control_q
+ shift altgr control alt shiftr keycode 16 = Meta_Control_q
+ shift shiftl shiftr keycode 16 = +Q
+ altgr shiftl shiftr keycode 16 = slash
+ shift altgr shiftl shiftr keycode 16 = slash
+ control shiftl shiftr keycode 16 = Control_q
+ shift control shiftl shiftr keycode 16 = Control_q
+ altgr control shiftl shiftr keycode 16 = Control_q
+ shift altgr control shiftl shiftr keycode 16 = Control_q
+ alt shiftl shiftr keycode 16 = Meta_q
+ shift alt shiftl shiftr keycode 16 = Meta_Q
+ altgr alt shiftl shiftr keycode 16 = Meta_slash
+ shift altgr alt shiftl shiftr keycode 16 = Meta_slash
+ control alt shiftl shiftr keycode 16 = Meta_Control_q
+ shift control alt shiftl shiftr keycode 16 = Meta_Control_q
+ altgr control alt shiftl shiftr keycode 16 = Meta_Control_q
+ shift altgr control alt shiftl shiftr keycode 16 = Meta_Control_q
+ ctrll keycode 16 = +Q
+ altgr ctrll keycode 16 = slash
+ shift altgr ctrll keycode 16 = slash
+ control ctrll keycode 16 = Control_q
+ shift control ctrll keycode 16 = Control_q
+ altgr control ctrll keycode 16 = Control_q
+ shift altgr control ctrll keycode 16 = Control_q
+ alt ctrll keycode 16 = Meta_q
+ shift alt ctrll keycode 16 = Meta_Q
+ altgr alt ctrll keycode 16 = Meta_slash
+ shift altgr alt ctrll keycode 16 = Meta_slash
+ control alt ctrll keycode 16 = Meta_Control_q
+ shift control alt ctrll keycode 16 = Meta_Control_q
+ altgr control alt ctrll keycode 16 = Meta_Control_q
+ shift altgr control alt ctrll keycode 16 = Meta_Control_q
+ shiftl ctrll keycode 16 = +Q
+ altgr shiftl ctrll keycode 16 = slash
+ shift altgr shiftl ctrll keycode 16 = slash
+ control shiftl ctrll keycode 16 = Control_q
+ shift control shiftl ctrll keycode 16 = Control_q
+ altgr control shiftl ctrll keycode 16 = Control_q
+ shift altgr control shiftl ctrll keycode 16 = Control_q
+ alt shiftl ctrll keycode 16 = Meta_q
+ shift alt shiftl ctrll keycode 16 = Meta_Q
+ altgr alt shiftl ctrll keycode 16 = Meta_slash
+ shift altgr alt shiftl ctrll keycode 16 = Meta_slash
+ control alt shiftl ctrll keycode 16 = Meta_Control_q
+ shift control alt shiftl ctrll keycode 16 = Meta_Control_q
+ altgr control alt shiftl ctrll keycode 16 = Meta_Control_q
+ shift altgr control alt shiftl ctrll keycode 16 = Meta_Control_q
+ shiftr ctrll keycode 16 = +Q
+ altgr shiftr ctrll keycode 16 = slash
+ shift altgr shiftr ctrll keycode 16 = slash
+ control shiftr ctrll keycode 16 = Control_q
+ shift control shiftr ctrll keycode 16 = Control_q
+ altgr control shiftr ctrll keycode 16 = Control_q
+ shift altgr control shiftr ctrll keycode 16 = Control_q
+ alt shiftr ctrll keycode 16 = Meta_q
+ shift alt shiftr ctrll keycode 16 = Meta_Q
+ altgr alt shiftr ctrll keycode 16 = Meta_slash
+ shift altgr alt shiftr ctrll keycode 16 = Meta_slash
+ control alt shiftr ctrll keycode 16 = Meta_Control_q
+ shift control alt shiftr ctrll keycode 16 = Meta_Control_q
+ altgr control alt shiftr ctrll keycode 16 = Meta_Control_q
+ shift altgr control alt shiftr ctrll keycode 16 = Meta_Control_q
+ shiftl shiftr ctrll keycode 16 = +Q
+ altgr shiftl shiftr ctrll keycode 16 = slash
+ shift altgr shiftl shiftr ctrll keycode 16 = slash
+ control shiftl shiftr ctrll keycode 16 = Control_q
+ shift control shiftl shiftr ctrll keycode 16 = Control_q
+ altgr control shiftl shiftr ctrll keycode 16 = Control_q
+ shift altgr control shiftl shiftr ctrll keycode 16 = Control_q
+ alt shiftl shiftr ctrll keycode 16 = Meta_q
+ shift alt shiftl shiftr ctrll keycode 16 = Meta_Q
+ altgr alt shiftl shiftr ctrll keycode 16 = Meta_slash
+ shift altgr alt shiftl shiftr ctrll keycode 16 = Meta_slash
+ control alt shiftl shiftr ctrll keycode 16 = Meta_Control_q
+ shift control alt shiftl shiftr ctrll keycode 16 = Meta_Control_q
+ altgr control alt shiftl shiftr ctrll keycode 16 = Meta_Control_q
+ shift altgr control alt shiftl shiftr ctrll keycode 16 = Meta_Control_q
+keycode 17 = +w
+ shift keycode 17 = +W
+ altgr keycode 17 = question
+ shift altgr keycode 17 = question
+ control keycode 17 = Control_w
+ shift control keycode 17 = Control_w
+ altgr control keycode 17 = Delete
+ shift altgr control keycode 17 = Delete
+ alt keycode 17 = Meta_w
+ shift alt keycode 17 = Meta_W
+ altgr alt keycode 17 = Meta_question
+ shift altgr alt keycode 17 = Meta_question
+ control alt keycode 17 = Meta_Control_w
+ shift control alt keycode 17 = Meta_Control_w
+ altgr control alt keycode 17 = Meta_Delete
+ shift altgr control alt keycode 17 = Meta_Delete
+ shift shiftl keycode 17 = +W
+ altgr shiftl keycode 17 = question
+ shift altgr shiftl keycode 17 = question
+ control shiftl keycode 17 = Control_w
+ shift control shiftl keycode 17 = Control_w
+ altgr control shiftl keycode 17 = Delete
+ shift altgr control shiftl keycode 17 = Delete
+ alt shiftl keycode 17 = Meta_w
+ shift alt shiftl keycode 17 = Meta_W
+ altgr alt shiftl keycode 17 = Meta_question
+ shift altgr alt shiftl keycode 17 = Meta_question
+ control alt shiftl keycode 17 = Meta_Control_w
+ shift control alt shiftl keycode 17 = Meta_Control_w
+ altgr control alt shiftl keycode 17 = Meta_Delete
+ shift altgr control alt shiftl keycode 17 = Meta_Delete
+ shift shiftr keycode 17 = +W
+ altgr shiftr keycode 17 = question
+ shift altgr shiftr keycode 17 = question
+ control shiftr keycode 17 = Control_w
+ shift control shiftr keycode 17 = Control_w
+ altgr control shiftr keycode 17 = Delete
+ shift altgr control shiftr keycode 17 = Delete
+ alt shiftr keycode 17 = Meta_w
+ shift alt shiftr keycode 17 = Meta_W
+ altgr alt shiftr keycode 17 = Meta_question
+ shift altgr alt shiftr keycode 17 = Meta_question
+ control alt shiftr keycode 17 = Meta_Control_w
+ shift control alt shiftr keycode 17 = Meta_Control_w
+ altgr control alt shiftr keycode 17 = Meta_Delete
+ shift altgr control alt shiftr keycode 17 = Meta_Delete
+ shift shiftl shiftr keycode 17 = +W
+ altgr shiftl shiftr keycode 17 = question
+ shift altgr shiftl shiftr keycode 17 = question
+ control shiftl shiftr keycode 17 = Control_w
+ shift control shiftl shiftr keycode 17 = Control_w
+ altgr control shiftl shiftr keycode 17 = Delete
+ shift altgr control shiftl shiftr keycode 17 = Delete
+ alt shiftl shiftr keycode 17 = Meta_w
+ shift alt shiftl shiftr keycode 17 = Meta_W
+ altgr alt shiftl shiftr keycode 17 = Meta_question
+ shift altgr alt shiftl shiftr keycode 17 = Meta_question
+ control alt shiftl shiftr keycode 17 = Meta_Control_w
+ shift control alt shiftl shiftr keycode 17 = Meta_Control_w
+ altgr control alt shiftl shiftr keycode 17 = Meta_Delete
+ shift altgr control alt shiftl shiftr keycode 17 = Meta_Delete
+ ctrll keycode 17 = +W
+ altgr ctrll keycode 17 = question
+ shift altgr ctrll keycode 17 = question
+ control ctrll keycode 17 = Control_w
+ shift control ctrll keycode 17 = Control_w
+ altgr control ctrll keycode 17 = Delete
+ shift altgr control ctrll keycode 17 = Delete
+ alt ctrll keycode 17 = Meta_w
+ shift alt ctrll keycode 17 = Meta_W
+ altgr alt ctrll keycode 17 = Meta_question
+ shift altgr alt ctrll keycode 17 = Meta_question
+ control alt ctrll keycode 17 = Meta_Control_w
+ shift control alt ctrll keycode 17 = Meta_Control_w
+ altgr control alt ctrll keycode 17 = Meta_Delete
+ shift altgr control alt ctrll keycode 17 = Meta_Delete
+ shiftl ctrll keycode 17 = +W
+ altgr shiftl ctrll keycode 17 = question
+ shift altgr shiftl ctrll keycode 17 = question
+ control shiftl ctrll keycode 17 = Control_w
+ shift control shiftl ctrll keycode 17 = Control_w
+ altgr control shiftl ctrll keycode 17 = Delete
+ shift altgr control shiftl ctrll keycode 17 = Delete
+ alt shiftl ctrll keycode 17 = Meta_w
+ shift alt shiftl ctrll keycode 17 = Meta_W
+ altgr alt shiftl ctrll keycode 17 = Meta_question
+ shift altgr alt shiftl ctrll keycode 17 = Meta_question
+ control alt shiftl ctrll keycode 17 = Meta_Control_w
+ shift control alt shiftl ctrll keycode 17 = Meta_Control_w
+ altgr control alt shiftl ctrll keycode 17 = Meta_Delete
+ shift altgr control alt shiftl ctrll keycode 17 = Meta_Delete
+ shiftr ctrll keycode 17 = +W
+ altgr shiftr ctrll keycode 17 = question
+ shift altgr shiftr ctrll keycode 17 = question
+ control shiftr ctrll keycode 17 = Control_w
+ shift control shiftr ctrll keycode 17 = Control_w
+ altgr control shiftr ctrll keycode 17 = Delete
+ shift altgr control shiftr ctrll keycode 17 = Delete
+ alt shiftr ctrll keycode 17 = Meta_w
+ shift alt shiftr ctrll keycode 17 = Meta_W
+ altgr alt shiftr ctrll keycode 17 = Meta_question
+ shift altgr alt shiftr ctrll keycode 17 = Meta_question
+ control alt shiftr ctrll keycode 17 = Meta_Control_w
+ shift control alt shiftr ctrll keycode 17 = Meta_Control_w
+ altgr control alt shiftr ctrll keycode 17 = Meta_Delete
+ shift altgr control alt shiftr ctrll keycode 17 = Meta_Delete
+ shiftl shiftr ctrll keycode 17 = +W
+ altgr shiftl shiftr ctrll keycode 17 = question
+ shift altgr shiftl shiftr ctrll keycode 17 = question
+ control shiftl shiftr ctrll keycode 17 = Control_w
+ shift control shiftl shiftr ctrll keycode 17 = Control_w
+ altgr control shiftl shiftr ctrll keycode 17 = Delete
+ shift altgr control shiftl shiftr ctrll keycode 17 = Delete
+ alt shiftl shiftr ctrll keycode 17 = Meta_w
+ shift alt shiftl shiftr ctrll keycode 17 = Meta_W
+ altgr alt shiftl shiftr ctrll keycode 17 = Meta_question
+ shift altgr alt shiftl shiftr ctrll keycode 17 = Meta_question
+ control alt shiftl shiftr ctrll keycode 17 = Meta_Control_w
+ shift control alt shiftl shiftr ctrll keycode 17 = Meta_Control_w
+ altgr control alt shiftl shiftr ctrll keycode 17 = Meta_Delete
+ shift altgr control alt shiftl shiftr ctrll keycode 17 = Meta_Delete
+keycode 18 = +e
+ shift keycode 18 = +E
+ altgr keycode 18 = euro
+ shift altgr keycode 18 = euro
+ control keycode 18 = Control_e
+ shift control keycode 18 = Control_e
+ altgr control keycode 18 = Control_e
+ shift altgr control keycode 18 = Control_e
+ alt keycode 18 = Meta_e
+ shift alt keycode 18 = Meta_E
+ altgr alt keycode 18 = Meta_e
+ shift altgr alt keycode 18 = Meta_E
+ control alt keycode 18 = Meta_Control_e
+ shift control alt keycode 18 = Meta_Control_e
+ altgr control alt keycode 18 = Meta_Control_e
+ shift altgr control alt keycode 18 = Meta_Control_e
+ shift shiftl keycode 18 = +E
+ altgr shiftl keycode 18 = euro
+ shift altgr shiftl keycode 18 = euro
+ control shiftl keycode 18 = Control_e
+ shift control shiftl keycode 18 = Control_e
+ altgr control shiftl keycode 18 = Control_e
+ shift altgr control shiftl keycode 18 = Control_e
+ alt shiftl keycode 18 = Meta_e
+ shift alt shiftl keycode 18 = Meta_E
+ altgr alt shiftl keycode 18 = Meta_e
+ shift altgr alt shiftl keycode 18 = Meta_E
+ control alt shiftl keycode 18 = Meta_Control_e
+ shift control alt shiftl keycode 18 = Meta_Control_e
+ altgr control alt shiftl keycode 18 = Meta_Control_e
+ shift altgr control alt shiftl keycode 18 = Meta_Control_e
+ shift shiftr keycode 18 = +E
+ altgr shiftr keycode 18 = euro
+ shift altgr shiftr keycode 18 = euro
+ control shiftr keycode 18 = Control_e
+ shift control shiftr keycode 18 = Control_e
+ altgr control shiftr keycode 18 = Control_e
+ shift altgr control shiftr keycode 18 = Control_e
+ alt shiftr keycode 18 = Meta_e
+ shift alt shiftr keycode 18 = Meta_E
+ altgr alt shiftr keycode 18 = Meta_e
+ shift altgr alt shiftr keycode 18 = Meta_E
+ control alt shiftr keycode 18 = Meta_Control_e
+ shift control alt shiftr keycode 18 = Meta_Control_e
+ altgr control alt shiftr keycode 18 = Meta_Control_e
+ shift altgr control alt shiftr keycode 18 = Meta_Control_e
+ shift shiftl shiftr keycode 18 = +E
+ altgr shiftl shiftr keycode 18 = euro
+ shift altgr shiftl shiftr keycode 18 = euro
+ control shiftl shiftr keycode 18 = Control_e
+ shift control shiftl shiftr keycode 18 = Control_e
+ altgr control shiftl shiftr keycode 18 = Control_e
+ shift altgr control shiftl shiftr keycode 18 = Control_e
+ alt shiftl shiftr keycode 18 = Meta_e
+ shift alt shiftl shiftr keycode 18 = Meta_E
+ altgr alt shiftl shiftr keycode 18 = Meta_e
+ shift altgr alt shiftl shiftr keycode 18 = Meta_E
+ control alt shiftl shiftr keycode 18 = Meta_Control_e
+ shift control alt shiftl shiftr keycode 18 = Meta_Control_e
+ altgr control alt shiftl shiftr keycode 18 = Meta_Control_e
+ shift altgr control alt shiftl shiftr keycode 18 = Meta_Control_e
+ ctrll keycode 18 = +E
+ altgr ctrll keycode 18 = euro
+ shift altgr ctrll keycode 18 = euro
+ control ctrll keycode 18 = Control_e
+ shift control ctrll keycode 18 = Control_e
+ altgr control ctrll keycode 18 = Control_e
+ shift altgr control ctrll keycode 18 = Control_e
+ alt ctrll keycode 18 = Meta_e
+ shift alt ctrll keycode 18 = Meta_E
+ altgr alt ctrll keycode 18 = Meta_e
+ shift altgr alt ctrll keycode 18 = Meta_E
+ control alt ctrll keycode 18 = Meta_Control_e
+ shift control alt ctrll keycode 18 = Meta_Control_e
+ altgr control alt ctrll keycode 18 = Meta_Control_e
+ shift altgr control alt ctrll keycode 18 = Meta_Control_e
+ shiftl ctrll keycode 18 = +E
+ altgr shiftl ctrll keycode 18 = euro
+ shift altgr shiftl ctrll keycode 18 = euro
+ control shiftl ctrll keycode 18 = Control_e
+ shift control shiftl ctrll keycode 18 = Control_e
+ altgr control shiftl ctrll keycode 18 = Control_e
+ shift altgr control shiftl ctrll keycode 18 = Control_e
+ alt shiftl ctrll keycode 18 = Meta_e
+ shift alt shiftl ctrll keycode 18 = Meta_E
+ altgr alt shiftl ctrll keycode 18 = Meta_e
+ shift altgr alt shiftl ctrll keycode 18 = Meta_E
+ control alt shiftl ctrll keycode 18 = Meta_Control_e
+ shift control alt shiftl ctrll keycode 18 = Meta_Control_e
+ altgr control alt shiftl ctrll keycode 18 = Meta_Control_e
+ shift altgr control alt shiftl ctrll keycode 18 = Meta_Control_e
+ shiftr ctrll keycode 18 = +E
+ altgr shiftr ctrll keycode 18 = euro
+ shift altgr shiftr ctrll keycode 18 = euro
+ control shiftr ctrll keycode 18 = Control_e
+ shift control shiftr ctrll keycode 18 = Control_e
+ altgr control shiftr ctrll keycode 18 = Control_e
+ shift altgr control shiftr ctrll keycode 18 = Control_e
+ alt shiftr ctrll keycode 18 = Meta_e
+ shift alt shiftr ctrll keycode 18 = Meta_E
+ altgr alt shiftr ctrll keycode 18 = Meta_e
+ shift altgr alt shiftr ctrll keycode 18 = Meta_E
+ control alt shiftr ctrll keycode 18 = Meta_Control_e
+ shift control alt shiftr ctrll keycode 18 = Meta_Control_e
+ altgr control alt shiftr ctrll keycode 18 = Meta_Control_e
+ shift altgr control alt shiftr ctrll keycode 18 = Meta_Control_e
+ shiftl shiftr ctrll keycode 18 = +E
+ altgr shiftl shiftr ctrll keycode 18 = euro
+ shift altgr shiftl shiftr ctrll keycode 18 = euro
+ control shiftl shiftr ctrll keycode 18 = Control_e
+ shift control shiftl shiftr ctrll keycode 18 = Control_e
+ altgr control shiftl shiftr ctrll keycode 18 = Control_e
+ shift altgr control shiftl shiftr ctrll keycode 18 = Control_e
+ alt shiftl shiftr ctrll keycode 18 = Meta_e
+ shift alt shiftl shiftr ctrll keycode 18 = Meta_E
+ altgr alt shiftl shiftr ctrll keycode 18 = Meta_e
+ shift altgr alt shiftl shiftr ctrll keycode 18 = Meta_E
+ control alt shiftl shiftr ctrll keycode 18 = Meta_Control_e
+ shift control alt shiftl shiftr ctrll keycode 18 = Meta_Control_e
+ altgr control alt shiftl shiftr ctrll keycode 18 = Meta_Control_e
+ shift altgr control alt shiftl shiftr ctrll keycode 18 = Meta_Control_e
+keycode 19 = +r
+ shift keycode 19 = +R
+ altgr keycode 19 = registered
+ shift altgr keycode 19 = registered
+ control keycode 19 = Control_r
+ shift control keycode 19 = Control_r
+ altgr control keycode 19 = Control_r
+ shift altgr control keycode 19 = Control_r
+ alt keycode 19 = Meta_r
+ shift alt keycode 19 = Meta_R
+ altgr alt keycode 19 = Meta_r
+ shift altgr alt keycode 19 = Meta_R
+ control alt keycode 19 = Meta_Control_r
+ shift control alt keycode 19 = Meta_Control_r
+ altgr control alt keycode 19 = Meta_Control_r
+ shift altgr control alt keycode 19 = Meta_Control_r
+ shift shiftl keycode 19 = +R
+ altgr shiftl keycode 19 = registered
+ shift altgr shiftl keycode 19 = registered
+ control shiftl keycode 19 = Control_r
+ shift control shiftl keycode 19 = Control_r
+ altgr control shiftl keycode 19 = Control_r
+ shift altgr control shiftl keycode 19 = Control_r
+ alt shiftl keycode 19 = Meta_r
+ shift alt shiftl keycode 19 = Meta_R
+ altgr alt shiftl keycode 19 = Meta_r
+ shift altgr alt shiftl keycode 19 = Meta_R
+ control alt shiftl keycode 19 = Meta_Control_r
+ shift control alt shiftl keycode 19 = Meta_Control_r
+ altgr control alt shiftl keycode 19 = Meta_Control_r
+ shift altgr control alt shiftl keycode 19 = Meta_Control_r
+ shift shiftr keycode 19 = +R
+ altgr shiftr keycode 19 = registered
+ shift altgr shiftr keycode 19 = registered
+ control shiftr keycode 19 = Control_r
+ shift control shiftr keycode 19 = Control_r
+ altgr control shiftr keycode 19 = Control_r
+ shift altgr control shiftr keycode 19 = Control_r
+ alt shiftr keycode 19 = Meta_r
+ shift alt shiftr keycode 19 = Meta_R
+ altgr alt shiftr keycode 19 = Meta_r
+ shift altgr alt shiftr keycode 19 = Meta_R
+ control alt shiftr keycode 19 = Meta_Control_r
+ shift control alt shiftr keycode 19 = Meta_Control_r
+ altgr control alt shiftr keycode 19 = Meta_Control_r
+ shift altgr control alt shiftr keycode 19 = Meta_Control_r
+ shift shiftl shiftr keycode 19 = +R
+ altgr shiftl shiftr keycode 19 = registered
+ shift altgr shiftl shiftr keycode 19 = registered
+ control shiftl shiftr keycode 19 = Control_r
+ shift control shiftl shiftr keycode 19 = Control_r
+ altgr control shiftl shiftr keycode 19 = Control_r
+ shift altgr control shiftl shiftr keycode 19 = Control_r
+ alt shiftl shiftr keycode 19 = Meta_r
+ shift alt shiftl shiftr keycode 19 = Meta_R
+ altgr alt shiftl shiftr keycode 19 = Meta_r
+ shift altgr alt shiftl shiftr keycode 19 = Meta_R
+ control alt shiftl shiftr keycode 19 = Meta_Control_r
+ shift control alt shiftl shiftr keycode 19 = Meta_Control_r
+ altgr control alt shiftl shiftr keycode 19 = Meta_Control_r
+ shift altgr control alt shiftl shiftr keycode 19 = Meta_Control_r
+ ctrll keycode 19 = +R
+ altgr ctrll keycode 19 = registered
+ shift altgr ctrll keycode 19 = registered
+ control ctrll keycode 19 = Control_r
+ shift control ctrll keycode 19 = Control_r
+ altgr control ctrll keycode 19 = Control_r
+ shift altgr control ctrll keycode 19 = Control_r
+ alt ctrll keycode 19 = Meta_r
+ shift alt ctrll keycode 19 = Meta_R
+ altgr alt ctrll keycode 19 = Meta_r
+ shift altgr alt ctrll keycode 19 = Meta_R
+ control alt ctrll keycode 19 = Meta_Control_r
+ shift control alt ctrll keycode 19 = Meta_Control_r
+ altgr control alt ctrll keycode 19 = Meta_Control_r
+ shift altgr control alt ctrll keycode 19 = Meta_Control_r
+ shiftl ctrll keycode 19 = +R
+ altgr shiftl ctrll keycode 19 = registered
+ shift altgr shiftl ctrll keycode 19 = registered
+ control shiftl ctrll keycode 19 = Control_r
+ shift control shiftl ctrll keycode 19 = Control_r
+ altgr control shiftl ctrll keycode 19 = Control_r
+ shift altgr control shiftl ctrll keycode 19 = Control_r
+ alt shiftl ctrll keycode 19 = Meta_r
+ shift alt shiftl ctrll keycode 19 = Meta_R
+ altgr alt shiftl ctrll keycode 19 = Meta_r
+ shift altgr alt shiftl ctrll keycode 19 = Meta_R
+ control alt shiftl ctrll keycode 19 = Meta_Control_r
+ shift control alt shiftl ctrll keycode 19 = Meta_Control_r
+ altgr control alt shiftl ctrll keycode 19 = Meta_Control_r
+ shift altgr control alt shiftl ctrll keycode 19 = Meta_Control_r
+ shiftr ctrll keycode 19 = +R
+ altgr shiftr ctrll keycode 19 = registered
+ shift altgr shiftr ctrll keycode 19 = registered
+ control shiftr ctrll keycode 19 = Control_r
+ shift control shiftr ctrll keycode 19 = Control_r
+ altgr control shiftr ctrll keycode 19 = Control_r
+ shift altgr control shiftr ctrll keycode 19 = Control_r
+ alt shiftr ctrll keycode 19 = Meta_r
+ shift alt shiftr ctrll keycode 19 = Meta_R
+ altgr alt shiftr ctrll keycode 19 = Meta_r
+ shift altgr alt shiftr ctrll keycode 19 = Meta_R
+ control alt shiftr ctrll keycode 19 = Meta_Control_r
+ shift control alt shiftr ctrll keycode 19 = Meta_Control_r
+ altgr control alt shiftr ctrll keycode 19 = Meta_Control_r
+ shift altgr control alt shiftr ctrll keycode 19 = Meta_Control_r
+ shiftl shiftr ctrll keycode 19 = +R
+ altgr shiftl shiftr ctrll keycode 19 = registered
+ shift altgr shiftl shiftr ctrll keycode 19 = registered
+ control shiftl shiftr ctrll keycode 19 = Control_r
+ shift control shiftl shiftr ctrll keycode 19 = Control_r
+ altgr control shiftl shiftr ctrll keycode 19 = Control_r
+ shift altgr control shiftl shiftr ctrll keycode 19 = Control_r
+ alt shiftl shiftr ctrll keycode 19 = Meta_r
+ shift alt shiftl shiftr ctrll keycode 19 = Meta_R
+ altgr alt shiftl shiftr ctrll keycode 19 = Meta_r
+ shift altgr alt shiftl shiftr ctrll keycode 19 = Meta_R
+ control alt shiftl shiftr ctrll keycode 19 = Meta_Control_r
+ shift control alt shiftl shiftr ctrll keycode 19 = Meta_Control_r
+ altgr control alt shiftl shiftr ctrll keycode 19 = Meta_Control_r
+ shift altgr control alt shiftl shiftr ctrll keycode 19 = Meta_Control_r
+keycode 20 = +t
+ shift keycode 20 = +T
+ altgr keycode 20 = tslash
+ shift altgr keycode 20 = Tslash
+ control keycode 20 = Control_t
+ shift control keycode 20 = Control_t
+ altgr control keycode 20 = Control_t
+ shift altgr control keycode 20 = Control_t
+ alt keycode 20 = Meta_t
+ shift alt keycode 20 = Meta_T
+ altgr alt keycode 20 = Meta_t
+ shift altgr alt keycode 20 = Meta_T
+ control alt keycode 20 = Meta_Control_t
+ shift control alt keycode 20 = Meta_Control_t
+ altgr control alt keycode 20 = Meta_Control_t
+ shift altgr control alt keycode 20 = Meta_Control_t
+ shift shiftl keycode 20 = +T
+ altgr shiftl keycode 20 = tslash
+ shift altgr shiftl keycode 20 = Tslash
+ control shiftl keycode 20 = Control_t
+ shift control shiftl keycode 20 = Control_t
+ altgr control shiftl keycode 20 = Control_t
+ shift altgr control shiftl keycode 20 = Control_t
+ alt shiftl keycode 20 = Meta_t
+ shift alt shiftl keycode 20 = Meta_T
+ altgr alt shiftl keycode 20 = Meta_t
+ shift altgr alt shiftl keycode 20 = Meta_T
+ control alt shiftl keycode 20 = Meta_Control_t
+ shift control alt shiftl keycode 20 = Meta_Control_t
+ altgr control alt shiftl keycode 20 = Meta_Control_t
+ shift altgr control alt shiftl keycode 20 = Meta_Control_t
+ shift shiftr keycode 20 = +T
+ altgr shiftr keycode 20 = tslash
+ shift altgr shiftr keycode 20 = Tslash
+ control shiftr keycode 20 = Control_t
+ shift control shiftr keycode 20 = Control_t
+ altgr control shiftr keycode 20 = Control_t
+ shift altgr control shiftr keycode 20 = Control_t
+ alt shiftr keycode 20 = Meta_t
+ shift alt shiftr keycode 20 = Meta_T
+ altgr alt shiftr keycode 20 = Meta_t
+ shift altgr alt shiftr keycode 20 = Meta_T
+ control alt shiftr keycode 20 = Meta_Control_t
+ shift control alt shiftr keycode 20 = Meta_Control_t
+ altgr control alt shiftr keycode 20 = Meta_Control_t
+ shift altgr control alt shiftr keycode 20 = Meta_Control_t
+ shift shiftl shiftr keycode 20 = +T
+ altgr shiftl shiftr keycode 20 = tslash
+ shift altgr shiftl shiftr keycode 20 = Tslash
+ control shiftl shiftr keycode 20 = Control_t
+ shift control shiftl shiftr keycode 20 = Control_t
+ altgr control shiftl shiftr keycode 20 = Control_t
+ shift altgr control shiftl shiftr keycode 20 = Control_t
+ alt shiftl shiftr keycode 20 = Meta_t
+ shift alt shiftl shiftr keycode 20 = Meta_T
+ altgr alt shiftl shiftr keycode 20 = Meta_t
+ shift altgr alt shiftl shiftr keycode 20 = Meta_T
+ control alt shiftl shiftr keycode 20 = Meta_Control_t
+ shift control alt shiftl shiftr keycode 20 = Meta_Control_t
+ altgr control alt shiftl shiftr keycode 20 = Meta_Control_t
+ shift altgr control alt shiftl shiftr keycode 20 = Meta_Control_t
+ ctrll keycode 20 = +T
+ altgr ctrll keycode 20 = Tslash
+ shift altgr ctrll keycode 20 = tslash
+ control ctrll keycode 20 = Control_t
+ shift control ctrll keycode 20 = Control_t
+ altgr control ctrll keycode 20 = Control_t
+ shift altgr control ctrll keycode 20 = Control_t
+ alt ctrll keycode 20 = Meta_t
+ shift alt ctrll keycode 20 = Meta_T
+ altgr alt ctrll keycode 20 = Meta_t
+ shift altgr alt ctrll keycode 20 = Meta_T
+ control alt ctrll keycode 20 = Meta_Control_t
+ shift control alt ctrll keycode 20 = Meta_Control_t
+ altgr control alt ctrll keycode 20 = Meta_Control_t
+ shift altgr control alt ctrll keycode 20 = Meta_Control_t
+ shiftl ctrll keycode 20 = +T
+ altgr shiftl ctrll keycode 20 = Tslash
+ shift altgr shiftl ctrll keycode 20 = tslash
+ control shiftl ctrll keycode 20 = Control_t
+ shift control shiftl ctrll keycode 20 = Control_t
+ altgr control shiftl ctrll keycode 20 = Control_t
+ shift altgr control shiftl ctrll keycode 20 = Control_t
+ alt shiftl ctrll keycode 20 = Meta_t
+ shift alt shiftl ctrll keycode 20 = Meta_T
+ altgr alt shiftl ctrll keycode 20 = Meta_t
+ shift altgr alt shiftl ctrll keycode 20 = Meta_T
+ control alt shiftl ctrll keycode 20 = Meta_Control_t
+ shift control alt shiftl ctrll keycode 20 = Meta_Control_t
+ altgr control alt shiftl ctrll keycode 20 = Meta_Control_t
+ shift altgr control alt shiftl ctrll keycode 20 = Meta_Control_t
+ shiftr ctrll keycode 20 = +T
+ altgr shiftr ctrll keycode 20 = Tslash
+ shift altgr shiftr ctrll keycode 20 = tslash
+ control shiftr ctrll keycode 20 = Control_t
+ shift control shiftr ctrll keycode 20 = Control_t
+ altgr control shiftr ctrll keycode 20 = Control_t
+ shift altgr control shiftr ctrll keycode 20 = Control_t
+ alt shiftr ctrll keycode 20 = Meta_t
+ shift alt shiftr ctrll keycode 20 = Meta_T
+ altgr alt shiftr ctrll keycode 20 = Meta_t
+ shift altgr alt shiftr ctrll keycode 20 = Meta_T
+ control alt shiftr ctrll keycode 20 = Meta_Control_t
+ shift control alt shiftr ctrll keycode 20 = Meta_Control_t
+ altgr control alt shiftr ctrll keycode 20 = Meta_Control_t
+ shift altgr control alt shiftr ctrll keycode 20 = Meta_Control_t
+ shiftl shiftr ctrll keycode 20 = +T
+ altgr shiftl shiftr ctrll keycode 20 = Tslash
+ shift altgr shiftl shiftr ctrll keycode 20 = tslash
+ control shiftl shiftr ctrll keycode 20 = Control_t
+ shift control shiftl shiftr ctrll keycode 20 = Control_t
+ altgr control shiftl shiftr ctrll keycode 20 = Control_t
+ shift altgr control shiftl shiftr ctrll keycode 20 = Control_t
+ alt shiftl shiftr ctrll keycode 20 = Meta_t
+ shift alt shiftl shiftr ctrll keycode 20 = Meta_T
+ altgr alt shiftl shiftr ctrll keycode 20 = Meta_t
+ shift altgr alt shiftl shiftr ctrll keycode 20 = Meta_T
+ control alt shiftl shiftr ctrll keycode 20 = Meta_Control_t
+ shift control alt shiftl shiftr ctrll keycode 20 = Meta_Control_t
+ altgr control alt shiftl shiftr ctrll keycode 20 = Meta_Control_t
+ shift altgr control alt shiftl shiftr ctrll keycode 20 = Meta_Control_t
+keycode 21 = +y
+ shift keycode 21 = +Y
+ altgr keycode 21 = U+2190
+ shift altgr keycode 21 = yen
+ control keycode 21 = Control_y
+ shift control keycode 21 = Control_y
+ altgr control keycode 21 = Control_y
+ shift altgr control keycode 21 = Control_y
+ alt keycode 21 = Meta_y
+ shift alt keycode 21 = Meta_Y
+ altgr alt keycode 21 = Meta_y
+ shift altgr alt keycode 21 = Meta_Y
+ control alt keycode 21 = Meta_Control_y
+ shift control alt keycode 21 = Meta_Control_y
+ altgr control alt keycode 21 = Meta_Control_y
+ shift altgr control alt keycode 21 = Meta_Control_y
+ shift shiftl keycode 21 = +Y
+ altgr shiftl keycode 21 = U+2190
+ shift altgr shiftl keycode 21 = yen
+ control shiftl keycode 21 = Control_y
+ shift control shiftl keycode 21 = Control_y
+ altgr control shiftl keycode 21 = Control_y
+ shift altgr control shiftl keycode 21 = Control_y
+ alt shiftl keycode 21 = Meta_y
+ shift alt shiftl keycode 21 = Meta_Y
+ altgr alt shiftl keycode 21 = Meta_y
+ shift altgr alt shiftl keycode 21 = Meta_Y
+ control alt shiftl keycode 21 = Meta_Control_y
+ shift control alt shiftl keycode 21 = Meta_Control_y
+ altgr control alt shiftl keycode 21 = Meta_Control_y
+ shift altgr control alt shiftl keycode 21 = Meta_Control_y
+ shift shiftr keycode 21 = +Y
+ altgr shiftr keycode 21 = U+2190
+ shift altgr shiftr keycode 21 = yen
+ control shiftr keycode 21 = Control_y
+ shift control shiftr keycode 21 = Control_y
+ altgr control shiftr keycode 21 = Control_y
+ shift altgr control shiftr keycode 21 = Control_y
+ alt shiftr keycode 21 = Meta_y
+ shift alt shiftr keycode 21 = Meta_Y
+ altgr alt shiftr keycode 21 = Meta_y
+ shift altgr alt shiftr keycode 21 = Meta_Y
+ control alt shiftr keycode 21 = Meta_Control_y
+ shift control alt shiftr keycode 21 = Meta_Control_y
+ altgr control alt shiftr keycode 21 = Meta_Control_y
+ shift altgr control alt shiftr keycode 21 = Meta_Control_y
+ shift shiftl shiftr keycode 21 = +Y
+ altgr shiftl shiftr keycode 21 = U+2190
+ shift altgr shiftl shiftr keycode 21 = yen
+ control shiftl shiftr keycode 21 = Control_y
+ shift control shiftl shiftr keycode 21 = Control_y
+ altgr control shiftl shiftr keycode 21 = Control_y
+ shift altgr control shiftl shiftr keycode 21 = Control_y
+ alt shiftl shiftr keycode 21 = Meta_y
+ shift alt shiftl shiftr keycode 21 = Meta_Y
+ altgr alt shiftl shiftr keycode 21 = Meta_y
+ shift altgr alt shiftl shiftr keycode 21 = Meta_Y
+ control alt shiftl shiftr keycode 21 = Meta_Control_y
+ shift control alt shiftl shiftr keycode 21 = Meta_Control_y
+ altgr control alt shiftl shiftr keycode 21 = Meta_Control_y
+ shift altgr control alt shiftl shiftr keycode 21 = Meta_Control_y
+ ctrll keycode 21 = +Y
+ altgr ctrll keycode 21 = U+2190
+ shift altgr ctrll keycode 21 = yen
+ control ctrll keycode 21 = Control_y
+ shift control ctrll keycode 21 = Control_y
+ altgr control ctrll keycode 21 = Control_y
+ shift altgr control ctrll keycode 21 = Control_y
+ alt ctrll keycode 21 = Meta_y
+ shift alt ctrll keycode 21 = Meta_Y
+ altgr alt ctrll keycode 21 = Meta_y
+ shift altgr alt ctrll keycode 21 = Meta_Y
+ control alt ctrll keycode 21 = Meta_Control_y
+ shift control alt ctrll keycode 21 = Meta_Control_y
+ altgr control alt ctrll keycode 21 = Meta_Control_y
+ shift altgr control alt ctrll keycode 21 = Meta_Control_y
+ shiftl ctrll keycode 21 = +Y
+ altgr shiftl ctrll keycode 21 = U+2190
+ shift altgr shiftl ctrll keycode 21 = yen
+ control shiftl ctrll keycode 21 = Control_y
+ shift control shiftl ctrll keycode 21 = Control_y
+ altgr control shiftl ctrll keycode 21 = Control_y
+ shift altgr control shiftl ctrll keycode 21 = Control_y
+ alt shiftl ctrll keycode 21 = Meta_y
+ shift alt shiftl ctrll keycode 21 = Meta_Y
+ altgr alt shiftl ctrll keycode 21 = Meta_y
+ shift altgr alt shiftl ctrll keycode 21 = Meta_Y
+ control alt shiftl ctrll keycode 21 = Meta_Control_y
+ shift control alt shiftl ctrll keycode 21 = Meta_Control_y
+ altgr control alt shiftl ctrll keycode 21 = Meta_Control_y
+ shift altgr control alt shiftl ctrll keycode 21 = Meta_Control_y
+ shiftr ctrll keycode 21 = +Y
+ altgr shiftr ctrll keycode 21 = U+2190
+ shift altgr shiftr ctrll keycode 21 = yen
+ control shiftr ctrll keycode 21 = Control_y
+ shift control shiftr ctrll keycode 21 = Control_y
+ altgr control shiftr ctrll keycode 21 = Control_y
+ shift altgr control shiftr ctrll keycode 21 = Control_y
+ alt shiftr ctrll keycode 21 = Meta_y
+ shift alt shiftr ctrll keycode 21 = Meta_Y
+ altgr alt shiftr ctrll keycode 21 = Meta_y
+ shift altgr alt shiftr ctrll keycode 21 = Meta_Y
+ control alt shiftr ctrll keycode 21 = Meta_Control_y
+ shift control alt shiftr ctrll keycode 21 = Meta_Control_y
+ altgr control alt shiftr ctrll keycode 21 = Meta_Control_y
+ shift altgr control alt shiftr ctrll keycode 21 = Meta_Control_y
+ shiftl shiftr ctrll keycode 21 = +Y
+ altgr shiftl shiftr ctrll keycode 21 = U+2190
+ shift altgr shiftl shiftr ctrll keycode 21 = yen
+ control shiftl shiftr ctrll keycode 21 = Control_y
+ shift control shiftl shiftr ctrll keycode 21 = Control_y
+ altgr control shiftl shiftr ctrll keycode 21 = Control_y
+ shift altgr control shiftl shiftr ctrll keycode 21 = Control_y
+ alt shiftl shiftr ctrll keycode 21 = Meta_y
+ shift alt shiftl shiftr ctrll keycode 21 = Meta_Y
+ altgr alt shiftl shiftr ctrll keycode 21 = Meta_y
+ shift altgr alt shiftl shiftr ctrll keycode 21 = Meta_Y
+ control alt shiftl shiftr ctrll keycode 21 = Meta_Control_y
+ shift control alt shiftl shiftr ctrll keycode 21 = Meta_Control_y
+ altgr control alt shiftl shiftr ctrll keycode 21 = Meta_Control_y
+ shift altgr control alt shiftl shiftr ctrll keycode 21 = Meta_Control_y
+keycode 22 = +u
+ shift keycode 22 = +U
+ altgr keycode 22 = U+2193
+ shift altgr keycode 22 = U+2191
+ control keycode 22 = Control_u
+ shift control keycode 22 = Control_u
+ altgr control keycode 22 = Control_u
+ shift altgr control keycode 22 = Control_u
+ alt keycode 22 = Meta_u
+ shift alt keycode 22 = Meta_U
+ altgr alt keycode 22 = Meta_u
+ shift altgr alt keycode 22 = Meta_U
+ control alt keycode 22 = Meta_Control_u
+ shift control alt keycode 22 = Meta_Control_u
+ altgr control alt keycode 22 = Meta_Control_u
+ shift altgr control alt keycode 22 = Meta_Control_u
+ shift shiftl keycode 22 = +U
+ altgr shiftl keycode 22 = U+2193
+ shift altgr shiftl keycode 22 = U+2191
+ control shiftl keycode 22 = Control_u
+ shift control shiftl keycode 22 = Control_u
+ altgr control shiftl keycode 22 = Control_u
+ shift altgr control shiftl keycode 22 = Control_u
+ alt shiftl keycode 22 = Meta_u
+ shift alt shiftl keycode 22 = Meta_U
+ altgr alt shiftl keycode 22 = Meta_u
+ shift altgr alt shiftl keycode 22 = Meta_U
+ control alt shiftl keycode 22 = Meta_Control_u
+ shift control alt shiftl keycode 22 = Meta_Control_u
+ altgr control alt shiftl keycode 22 = Meta_Control_u
+ shift altgr control alt shiftl keycode 22 = Meta_Control_u
+ shift shiftr keycode 22 = +U
+ altgr shiftr keycode 22 = U+2193
+ shift altgr shiftr keycode 22 = U+2191
+ control shiftr keycode 22 = Control_u
+ shift control shiftr keycode 22 = Control_u
+ altgr control shiftr keycode 22 = Control_u
+ shift altgr control shiftr keycode 22 = Control_u
+ alt shiftr keycode 22 = Meta_u
+ shift alt shiftr keycode 22 = Meta_U
+ altgr alt shiftr keycode 22 = Meta_u
+ shift altgr alt shiftr keycode 22 = Meta_U
+ control alt shiftr keycode 22 = Meta_Control_u
+ shift control alt shiftr keycode 22 = Meta_Control_u
+ altgr control alt shiftr keycode 22 = Meta_Control_u
+ shift altgr control alt shiftr keycode 22 = Meta_Control_u
+ shift shiftl shiftr keycode 22 = +U
+ altgr shiftl shiftr keycode 22 = U+2193
+ shift altgr shiftl shiftr keycode 22 = U+2191
+ control shiftl shiftr keycode 22 = Control_u
+ shift control shiftl shiftr keycode 22 = Control_u
+ altgr control shiftl shiftr keycode 22 = Control_u
+ shift altgr control shiftl shiftr keycode 22 = Control_u
+ alt shiftl shiftr keycode 22 = Meta_u
+ shift alt shiftl shiftr keycode 22 = Meta_U
+ altgr alt shiftl shiftr keycode 22 = Meta_u
+ shift altgr alt shiftl shiftr keycode 22 = Meta_U
+ control alt shiftl shiftr keycode 22 = Meta_Control_u
+ shift control alt shiftl shiftr keycode 22 = Meta_Control_u
+ altgr control alt shiftl shiftr keycode 22 = Meta_Control_u
+ shift altgr control alt shiftl shiftr keycode 22 = Meta_Control_u
+ ctrll keycode 22 = +U
+ altgr ctrll keycode 22 = U+2193
+ shift altgr ctrll keycode 22 = U+2191
+ control ctrll keycode 22 = Control_u
+ shift control ctrll keycode 22 = Control_u
+ altgr control ctrll keycode 22 = Control_u
+ shift altgr control ctrll keycode 22 = Control_u
+ alt ctrll keycode 22 = Meta_u
+ shift alt ctrll keycode 22 = Meta_U
+ altgr alt ctrll keycode 22 = Meta_u
+ shift altgr alt ctrll keycode 22 = Meta_U
+ control alt ctrll keycode 22 = Meta_Control_u
+ shift control alt ctrll keycode 22 = Meta_Control_u
+ altgr control alt ctrll keycode 22 = Meta_Control_u
+ shift altgr control alt ctrll keycode 22 = Meta_Control_u
+ shiftl ctrll keycode 22 = +U
+ altgr shiftl ctrll keycode 22 = U+2193
+ shift altgr shiftl ctrll keycode 22 = U+2191
+ control shiftl ctrll keycode 22 = Control_u
+ shift control shiftl ctrll keycode 22 = Control_u
+ altgr control shiftl ctrll keycode 22 = Control_u
+ shift altgr control shiftl ctrll keycode 22 = Control_u
+ alt shiftl ctrll keycode 22 = Meta_u
+ shift alt shiftl ctrll keycode 22 = Meta_U
+ altgr alt shiftl ctrll keycode 22 = Meta_u
+ shift altgr alt shiftl ctrll keycode 22 = Meta_U
+ control alt shiftl ctrll keycode 22 = Meta_Control_u
+ shift control alt shiftl ctrll keycode 22 = Meta_Control_u
+ altgr control alt shiftl ctrll keycode 22 = Meta_Control_u
+ shift altgr control alt shiftl ctrll keycode 22 = Meta_Control_u
+ shiftr ctrll keycode 22 = +U
+ altgr shiftr ctrll keycode 22 = U+2193
+ shift altgr shiftr ctrll keycode 22 = U+2191
+ control shiftr ctrll keycode 22 = Control_u
+ shift control shiftr ctrll keycode 22 = Control_u
+ altgr control shiftr ctrll keycode 22 = Control_u
+ shift altgr control shiftr ctrll keycode 22 = Control_u
+ alt shiftr ctrll keycode 22 = Meta_u
+ shift alt shiftr ctrll keycode 22 = Meta_U
+ altgr alt shiftr ctrll keycode 22 = Meta_u
+ shift altgr alt shiftr ctrll keycode 22 = Meta_U
+ control alt shiftr ctrll keycode 22 = Meta_Control_u
+ shift control alt shiftr ctrll keycode 22 = Meta_Control_u
+ altgr control alt shiftr ctrll keycode 22 = Meta_Control_u
+ shift altgr control alt shiftr ctrll keycode 22 = Meta_Control_u
+ shiftl shiftr ctrll keycode 22 = +U
+ altgr shiftl shiftr ctrll keycode 22 = U+2193
+ shift altgr shiftl shiftr ctrll keycode 22 = U+2191
+ control shiftl shiftr ctrll keycode 22 = Control_u
+ shift control shiftl shiftr ctrll keycode 22 = Control_u
+ altgr control shiftl shiftr ctrll keycode 22 = Control_u
+ shift altgr control shiftl shiftr ctrll keycode 22 = Control_u
+ alt shiftl shiftr ctrll keycode 22 = Meta_u
+ shift alt shiftl shiftr ctrll keycode 22 = Meta_U
+ altgr alt shiftl shiftr ctrll keycode 22 = Meta_u
+ shift altgr alt shiftl shiftr ctrll keycode 22 = Meta_U
+ control alt shiftl shiftr ctrll keycode 22 = Meta_Control_u
+ shift control alt shiftl shiftr ctrll keycode 22 = Meta_Control_u
+ altgr control alt shiftl shiftr ctrll keycode 22 = Meta_Control_u
+ shift altgr control alt shiftl shiftr ctrll keycode 22 = Meta_Control_u
+keycode 23 = +i
+ shift keycode 23 = +I
+ altgr keycode 23 = U+2192
+ shift altgr keycode 23 = idotless
+ control keycode 23 = Tab
+ shift control keycode 23 = Tab
+ altgr control keycode 23 = Tab
+ shift altgr control keycode 23 = Tab
+ alt keycode 23 = Meta_i
+ shift alt keycode 23 = Meta_I
+ altgr alt keycode 23 = Meta_i
+ shift altgr alt keycode 23 = Meta_I
+ control alt keycode 23 = Meta_Tab
+ shift control alt keycode 23 = Meta_Tab
+ altgr control alt keycode 23 = Meta_Tab
+ shift altgr control alt keycode 23 = Meta_Tab
+ shift shiftl keycode 23 = +I
+ altgr shiftl keycode 23 = U+2192
+ shift altgr shiftl keycode 23 = idotless
+ control shiftl keycode 23 = Tab
+ shift control shiftl keycode 23 = Tab
+ altgr control shiftl keycode 23 = Tab
+ shift altgr control shiftl keycode 23 = Tab
+ alt shiftl keycode 23 = Meta_i
+ shift alt shiftl keycode 23 = Meta_I
+ altgr alt shiftl keycode 23 = Meta_i
+ shift altgr alt shiftl keycode 23 = Meta_I
+ control alt shiftl keycode 23 = Meta_Tab
+ shift control alt shiftl keycode 23 = Meta_Tab
+ altgr control alt shiftl keycode 23 = Meta_Tab
+ shift altgr control alt shiftl keycode 23 = Meta_Tab
+ shift shiftr keycode 23 = +I
+ altgr shiftr keycode 23 = U+2192
+ shift altgr shiftr keycode 23 = idotless
+ control shiftr keycode 23 = Tab
+ shift control shiftr keycode 23 = Tab
+ altgr control shiftr keycode 23 = Tab
+ shift altgr control shiftr keycode 23 = Tab
+ alt shiftr keycode 23 = Meta_i
+ shift alt shiftr keycode 23 = Meta_I
+ altgr alt shiftr keycode 23 = Meta_i
+ shift altgr alt shiftr keycode 23 = Meta_I
+ control alt shiftr keycode 23 = Meta_Tab
+ shift control alt shiftr keycode 23 = Meta_Tab
+ altgr control alt shiftr keycode 23 = Meta_Tab
+ shift altgr control alt shiftr keycode 23 = Meta_Tab
+ shift shiftl shiftr keycode 23 = +I
+ altgr shiftl shiftr keycode 23 = U+2192
+ shift altgr shiftl shiftr keycode 23 = idotless
+ control shiftl shiftr keycode 23 = Tab
+ shift control shiftl shiftr keycode 23 = Tab
+ altgr control shiftl shiftr keycode 23 = Tab
+ shift altgr control shiftl shiftr keycode 23 = Tab
+ alt shiftl shiftr keycode 23 = Meta_i
+ shift alt shiftl shiftr keycode 23 = Meta_I
+ altgr alt shiftl shiftr keycode 23 = Meta_i
+ shift altgr alt shiftl shiftr keycode 23 = Meta_I
+ control alt shiftl shiftr keycode 23 = Meta_Tab
+ shift control alt shiftl shiftr keycode 23 = Meta_Tab
+ altgr control alt shiftl shiftr keycode 23 = Meta_Tab
+ shift altgr control alt shiftl shiftr keycode 23 = Meta_Tab
+ ctrll keycode 23 = +I
+ altgr ctrll keycode 23 = U+2192
+ shift altgr ctrll keycode 23 = +I
+ control ctrll keycode 23 = Tab
+ shift control ctrll keycode 23 = Tab
+ altgr control ctrll keycode 23 = Tab
+ shift altgr control ctrll keycode 23 = Tab
+ alt ctrll keycode 23 = Meta_i
+ shift alt ctrll keycode 23 = Meta_I
+ altgr alt ctrll keycode 23 = Meta_i
+ shift altgr alt ctrll keycode 23 = Meta_I
+ control alt ctrll keycode 23 = Meta_Tab
+ shift control alt ctrll keycode 23 = Meta_Tab
+ altgr control alt ctrll keycode 23 = Meta_Tab
+ shift altgr control alt ctrll keycode 23 = Meta_Tab
+ shiftl ctrll keycode 23 = +I
+ altgr shiftl ctrll keycode 23 = U+2192
+ shift altgr shiftl ctrll keycode 23 = +I
+ control shiftl ctrll keycode 23 = Tab
+ shift control shiftl ctrll keycode 23 = Tab
+ altgr control shiftl ctrll keycode 23 = Tab
+ shift altgr control shiftl ctrll keycode 23 = Tab
+ alt shiftl ctrll keycode 23 = Meta_i
+ shift alt shiftl ctrll keycode 23 = Meta_I
+ altgr alt shiftl ctrll keycode 23 = Meta_i
+ shift altgr alt shiftl ctrll keycode 23 = Meta_I
+ control alt shiftl ctrll keycode 23 = Meta_Tab
+ shift control alt shiftl ctrll keycode 23 = Meta_Tab
+ altgr control alt shiftl ctrll keycode 23 = Meta_Tab
+ shift altgr control alt shiftl ctrll keycode 23 = Meta_Tab
+ shiftr ctrll keycode 23 = +I
+ altgr shiftr ctrll keycode 23 = U+2192
+ shift altgr shiftr ctrll keycode 23 = +I
+ control shiftr ctrll keycode 23 = Tab
+ shift control shiftr ctrll keycode 23 = Tab
+ altgr control shiftr ctrll keycode 23 = Tab
+ shift altgr control shiftr ctrll keycode 23 = Tab
+ alt shiftr ctrll keycode 23 = Meta_i
+ shift alt shiftr ctrll keycode 23 = Meta_I
+ altgr alt shiftr ctrll keycode 23 = Meta_i
+ shift altgr alt shiftr ctrll keycode 23 = Meta_I
+ control alt shiftr ctrll keycode 23 = Meta_Tab
+ shift control alt shiftr ctrll keycode 23 = Meta_Tab
+ altgr control alt shiftr ctrll keycode 23 = Meta_Tab
+ shift altgr control alt shiftr ctrll keycode 23 = Meta_Tab
+ shiftl shiftr ctrll keycode 23 = +I
+ altgr shiftl shiftr ctrll keycode 23 = U+2192
+ shift altgr shiftl shiftr ctrll keycode 23 = +I
+ control shiftl shiftr ctrll keycode 23 = Tab
+ shift control shiftl shiftr ctrll keycode 23 = Tab
+ altgr control shiftl shiftr ctrll keycode 23 = Tab
+ shift altgr control shiftl shiftr ctrll keycode 23 = Tab
+ alt shiftl shiftr ctrll keycode 23 = Meta_i
+ shift alt shiftl shiftr ctrll keycode 23 = Meta_I
+ altgr alt shiftl shiftr ctrll keycode 23 = Meta_i
+ shift altgr alt shiftl shiftr ctrll keycode 23 = Meta_I
+ control alt shiftl shiftr ctrll keycode 23 = Meta_Tab
+ shift control alt shiftl shiftr ctrll keycode 23 = Meta_Tab
+ altgr control alt shiftl shiftr ctrll keycode 23 = Meta_Tab
+ shift altgr control alt shiftl shiftr ctrll keycode 23 = Meta_Tab
+keycode 24 = +o
+ shift keycode 24 = +O
+ altgr keycode 24 = +oslash
+ shift altgr keycode 24 = +Ooblique
+ control keycode 24 = Control_o
+ shift control keycode 24 = Control_o
+ altgr control keycode 24 = Control_o
+ shift altgr control keycode 24 = Control_o
+ alt keycode 24 = Meta_o
+ shift alt keycode 24 = Meta_O
+ altgr alt keycode 24 = Meta_o
+ shift altgr alt keycode 24 = Meta_O
+ control alt keycode 24 = Meta_Control_o
+ shift control alt keycode 24 = Meta_Control_o
+ altgr control alt keycode 24 = Meta_Control_o
+ shift altgr control alt keycode 24 = Meta_Control_o
+ shift shiftl keycode 24 = +O
+ altgr shiftl keycode 24 = +oslash
+ shift altgr shiftl keycode 24 = +Ooblique
+ control shiftl keycode 24 = Control_o
+ shift control shiftl keycode 24 = Control_o
+ altgr control shiftl keycode 24 = Control_o
+ shift altgr control shiftl keycode 24 = Control_o
+ alt shiftl keycode 24 = Meta_o
+ shift alt shiftl keycode 24 = Meta_O
+ altgr alt shiftl keycode 24 = Meta_o
+ shift altgr alt shiftl keycode 24 = Meta_O
+ control alt shiftl keycode 24 = Meta_Control_o
+ shift control alt shiftl keycode 24 = Meta_Control_o
+ altgr control alt shiftl keycode 24 = Meta_Control_o
+ shift altgr control alt shiftl keycode 24 = Meta_Control_o
+ shift shiftr keycode 24 = +O
+ altgr shiftr keycode 24 = +oslash
+ shift altgr shiftr keycode 24 = +Ooblique
+ control shiftr keycode 24 = Control_o
+ shift control shiftr keycode 24 = Control_o
+ altgr control shiftr keycode 24 = Control_o
+ shift altgr control shiftr keycode 24 = Control_o
+ alt shiftr keycode 24 = Meta_o
+ shift alt shiftr keycode 24 = Meta_O
+ altgr alt shiftr keycode 24 = Meta_o
+ shift altgr alt shiftr keycode 24 = Meta_O
+ control alt shiftr keycode 24 = Meta_Control_o
+ shift control alt shiftr keycode 24 = Meta_Control_o
+ altgr control alt shiftr keycode 24 = Meta_Control_o
+ shift altgr control alt shiftr keycode 24 = Meta_Control_o
+ shift shiftl shiftr keycode 24 = +O
+ altgr shiftl shiftr keycode 24 = +oslash
+ shift altgr shiftl shiftr keycode 24 = +Ooblique
+ control shiftl shiftr keycode 24 = Control_o
+ shift control shiftl shiftr keycode 24 = Control_o
+ altgr control shiftl shiftr keycode 24 = Control_o
+ shift altgr control shiftl shiftr keycode 24 = Control_o
+ alt shiftl shiftr keycode 24 = Meta_o
+ shift alt shiftl shiftr keycode 24 = Meta_O
+ altgr alt shiftl shiftr keycode 24 = Meta_o
+ shift altgr alt shiftl shiftr keycode 24 = Meta_O
+ control alt shiftl shiftr keycode 24 = Meta_Control_o
+ shift control alt shiftl shiftr keycode 24 = Meta_Control_o
+ altgr control alt shiftl shiftr keycode 24 = Meta_Control_o
+ shift altgr control alt shiftl shiftr keycode 24 = Meta_Control_o
+ ctrll keycode 24 = +O
+ altgr ctrll keycode 24 = +Ooblique
+ shift altgr ctrll keycode 24 = +oslash
+ control ctrll keycode 24 = Control_o
+ shift control ctrll keycode 24 = Control_o
+ altgr control ctrll keycode 24 = Control_o
+ shift altgr control ctrll keycode 24 = Control_o
+ alt ctrll keycode 24 = Meta_o
+ shift alt ctrll keycode 24 = Meta_O
+ altgr alt ctrll keycode 24 = Meta_o
+ shift altgr alt ctrll keycode 24 = Meta_O
+ control alt ctrll keycode 24 = Meta_Control_o
+ shift control alt ctrll keycode 24 = Meta_Control_o
+ altgr control alt ctrll keycode 24 = Meta_Control_o
+ shift altgr control alt ctrll keycode 24 = Meta_Control_o
+ shiftl ctrll keycode 24 = +O
+ altgr shiftl ctrll keycode 24 = +Ooblique
+ shift altgr shiftl ctrll keycode 24 = +oslash
+ control shiftl ctrll keycode 24 = Control_o
+ shift control shiftl ctrll keycode 24 = Control_o
+ altgr control shiftl ctrll keycode 24 = Control_o
+ shift altgr control shiftl ctrll keycode 24 = Control_o
+ alt shiftl ctrll keycode 24 = Meta_o
+ shift alt shiftl ctrll keycode 24 = Meta_O
+ altgr alt shiftl ctrll keycode 24 = Meta_o
+ shift altgr alt shiftl ctrll keycode 24 = Meta_O
+ control alt shiftl ctrll keycode 24 = Meta_Control_o
+ shift control alt shiftl ctrll keycode 24 = Meta_Control_o
+ altgr control alt shiftl ctrll keycode 24 = Meta_Control_o
+ shift altgr control alt shiftl ctrll keycode 24 = Meta_Control_o
+ shiftr ctrll keycode 24 = +O
+ altgr shiftr ctrll keycode 24 = +Ooblique
+ shift altgr shiftr ctrll keycode 24 = +oslash
+ control shiftr ctrll keycode 24 = Control_o
+ shift control shiftr ctrll keycode 24 = Control_o
+ altgr control shiftr ctrll keycode 24 = Control_o
+ shift altgr control shiftr ctrll keycode 24 = Control_o
+ alt shiftr ctrll keycode 24 = Meta_o
+ shift alt shiftr ctrll keycode 24 = Meta_O
+ altgr alt shiftr ctrll keycode 24 = Meta_o
+ shift altgr alt shiftr ctrll keycode 24 = Meta_O
+ control alt shiftr ctrll keycode 24 = Meta_Control_o
+ shift control alt shiftr ctrll keycode 24 = Meta_Control_o
+ altgr control alt shiftr ctrll keycode 24 = Meta_Control_o
+ shift altgr control alt shiftr ctrll keycode 24 = Meta_Control_o
+ shiftl shiftr ctrll keycode 24 = +O
+ altgr shiftl shiftr ctrll keycode 24 = +Ooblique
+ shift altgr shiftl shiftr ctrll keycode 24 = +oslash
+ control shiftl shiftr ctrll keycode 24 = Control_o
+ shift control shiftl shiftr ctrll keycode 24 = Control_o
+ altgr control shiftl shiftr ctrll keycode 24 = Control_o
+ shift altgr control shiftl shiftr ctrll keycode 24 = Control_o
+ alt shiftl shiftr ctrll keycode 24 = Meta_o
+ shift alt shiftl shiftr ctrll keycode 24 = Meta_O
+ altgr alt shiftl shiftr ctrll keycode 24 = Meta_o
+ shift altgr alt shiftl shiftr ctrll keycode 24 = Meta_O
+ control alt shiftl shiftr ctrll keycode 24 = Meta_Control_o
+ shift control alt shiftl shiftr ctrll keycode 24 = Meta_Control_o
+ altgr control alt shiftl shiftr ctrll keycode 24 = Meta_Control_o
+ shift altgr control alt shiftl shiftr ctrll keycode 24 = Meta_Control_o
+keycode 25 = +p
+ shift keycode 25 = +P
+ altgr keycode 25 = +thorn
+ shift altgr keycode 25 = +THORN
+ control keycode 25 = Control_p
+ shift control keycode 25 = Control_p
+ altgr control keycode 25 = Control_p
+ shift altgr control keycode 25 = Control_p
+ alt keycode 25 = Meta_p
+ shift alt keycode 25 = Meta_P
+ altgr alt keycode 25 = Meta_p
+ shift altgr alt keycode 25 = Meta_P
+ control alt keycode 25 = Meta_Control_p
+ shift control alt keycode 25 = Meta_Control_p
+ altgr control alt keycode 25 = Meta_Control_p
+ shift altgr control alt keycode 25 = Meta_Control_p
+ shift shiftl keycode 25 = +P
+ altgr shiftl keycode 25 = +thorn
+ shift altgr shiftl keycode 25 = +THORN
+ control shiftl keycode 25 = Control_p
+ shift control shiftl keycode 25 = Control_p
+ altgr control shiftl keycode 25 = Control_p
+ shift altgr control shiftl keycode 25 = Control_p
+ alt shiftl keycode 25 = Meta_p
+ shift alt shiftl keycode 25 = Meta_P
+ altgr alt shiftl keycode 25 = Meta_p
+ shift altgr alt shiftl keycode 25 = Meta_P
+ control alt shiftl keycode 25 = Meta_Control_p
+ shift control alt shiftl keycode 25 = Meta_Control_p
+ altgr control alt shiftl keycode 25 = Meta_Control_p
+ shift altgr control alt shiftl keycode 25 = Meta_Control_p
+ shift shiftr keycode 25 = +P
+ altgr shiftr keycode 25 = +thorn
+ shift altgr shiftr keycode 25 = +THORN
+ control shiftr keycode 25 = Control_p
+ shift control shiftr keycode 25 = Control_p
+ altgr control shiftr keycode 25 = Control_p
+ shift altgr control shiftr keycode 25 = Control_p
+ alt shiftr keycode 25 = Meta_p
+ shift alt shiftr keycode 25 = Meta_P
+ altgr alt shiftr keycode 25 = Meta_p
+ shift altgr alt shiftr keycode 25 = Meta_P
+ control alt shiftr keycode 25 = Meta_Control_p
+ shift control alt shiftr keycode 25 = Meta_Control_p
+ altgr control alt shiftr keycode 25 = Meta_Control_p
+ shift altgr control alt shiftr keycode 25 = Meta_Control_p
+ shift shiftl shiftr keycode 25 = +P
+ altgr shiftl shiftr keycode 25 = +thorn
+ shift altgr shiftl shiftr keycode 25 = +THORN
+ control shiftl shiftr keycode 25 = Control_p
+ shift control shiftl shiftr keycode 25 = Control_p
+ altgr control shiftl shiftr keycode 25 = Control_p
+ shift altgr control shiftl shiftr keycode 25 = Control_p
+ alt shiftl shiftr keycode 25 = Meta_p
+ shift alt shiftl shiftr keycode 25 = Meta_P
+ altgr alt shiftl shiftr keycode 25 = Meta_p
+ shift altgr alt shiftl shiftr keycode 25 = Meta_P
+ control alt shiftl shiftr keycode 25 = Meta_Control_p
+ shift control alt shiftl shiftr keycode 25 = Meta_Control_p
+ altgr control alt shiftl shiftr keycode 25 = Meta_Control_p
+ shift altgr control alt shiftl shiftr keycode 25 = Meta_Control_p
+ ctrll keycode 25 = +P
+ altgr ctrll keycode 25 = +THORN
+ shift altgr ctrll keycode 25 = +thorn
+ control ctrll keycode 25 = Control_p
+ shift control ctrll keycode 25 = Control_p
+ altgr control ctrll keycode 25 = Control_p
+ shift altgr control ctrll keycode 25 = Control_p
+ alt ctrll keycode 25 = Meta_p
+ shift alt ctrll keycode 25 = Meta_P
+ altgr alt ctrll keycode 25 = Meta_p
+ shift altgr alt ctrll keycode 25 = Meta_P
+ control alt ctrll keycode 25 = Meta_Control_p
+ shift control alt ctrll keycode 25 = Meta_Control_p
+ altgr control alt ctrll keycode 25 = Meta_Control_p
+ shift altgr control alt ctrll keycode 25 = Meta_Control_p
+ shiftl ctrll keycode 25 = +P
+ altgr shiftl ctrll keycode 25 = +THORN
+ shift altgr shiftl ctrll keycode 25 = +thorn
+ control shiftl ctrll keycode 25 = Control_p
+ shift control shiftl ctrll keycode 25 = Control_p
+ altgr control shiftl ctrll keycode 25 = Control_p
+ shift altgr control shiftl ctrll keycode 25 = Control_p
+ alt shiftl ctrll keycode 25 = Meta_p
+ shift alt shiftl ctrll keycode 25 = Meta_P
+ altgr alt shiftl ctrll keycode 25 = Meta_p
+ shift altgr alt shiftl ctrll keycode 25 = Meta_P
+ control alt shiftl ctrll keycode 25 = Meta_Control_p
+ shift control alt shiftl ctrll keycode 25 = Meta_Control_p
+ altgr control alt shiftl ctrll keycode 25 = Meta_Control_p
+ shift altgr control alt shiftl ctrll keycode 25 = Meta_Control_p
+ shiftr ctrll keycode 25 = +P
+ altgr shiftr ctrll keycode 25 = +THORN
+ shift altgr shiftr ctrll keycode 25 = +thorn
+ control shiftr ctrll keycode 25 = Control_p
+ shift control shiftr ctrll keycode 25 = Control_p
+ altgr control shiftr ctrll keycode 25 = Control_p
+ shift altgr control shiftr ctrll keycode 25 = Control_p
+ alt shiftr ctrll keycode 25 = Meta_p
+ shift alt shiftr ctrll keycode 25 = Meta_P
+ altgr alt shiftr ctrll keycode 25 = Meta_p
+ shift altgr alt shiftr ctrll keycode 25 = Meta_P
+ control alt shiftr ctrll keycode 25 = Meta_Control_p
+ shift control alt shiftr ctrll keycode 25 = Meta_Control_p
+ altgr control alt shiftr ctrll keycode 25 = Meta_Control_p
+ shift altgr control alt shiftr ctrll keycode 25 = Meta_Control_p
+ shiftl shiftr ctrll keycode 25 = +P
+ altgr shiftl shiftr ctrll keycode 25 = +THORN
+ shift altgr shiftl shiftr ctrll keycode 25 = +thorn
+ control shiftl shiftr ctrll keycode 25 = Control_p
+ shift control shiftl shiftr ctrll keycode 25 = Control_p
+ altgr control shiftl shiftr ctrll keycode 25 = Control_p
+ shift altgr control shiftl shiftr ctrll keycode 25 = Control_p
+ alt shiftl shiftr ctrll keycode 25 = Meta_p
+ shift alt shiftl shiftr ctrll keycode 25 = Meta_P
+ altgr alt shiftl shiftr ctrll keycode 25 = Meta_p
+ shift altgr alt shiftl shiftr ctrll keycode 25 = Meta_P
+ control alt shiftl shiftr ctrll keycode 25 = Meta_Control_p
+ shift control alt shiftl shiftr ctrll keycode 25 = Meta_Control_p
+ altgr control alt shiftl shiftr ctrll keycode 25 = Meta_Control_p
+ shift altgr control alt shiftl shiftr ctrll keycode 25 = Meta_Control_p
+keycode 26 = dead_acute
+ shift keycode 26 = dead_grave
+ altgr keycode 26 = apostrophe
+ shift altgr keycode 26 = grave
+ shift control keycode 26 = dead_grave
+ altgr control keycode 26 = Control_g
+ shift altgr control keycode 26 = nul
+ shift alt keycode 26 = dead_grave
+ altgr alt keycode 26 = Meta_apostrophe
+ shift altgr alt keycode 26 = Meta_grave
+ shift control alt keycode 26 = dead_grave
+ altgr control alt keycode 26 = Meta_Control_g
+ shift altgr control alt keycode 26 = Meta_nul
+ shift shiftl keycode 26 = dead_grave
+ altgr shiftl keycode 26 = apostrophe
+ shift altgr shiftl keycode 26 = grave
+ shift control shiftl keycode 26 = dead_grave
+ altgr control shiftl keycode 26 = Control_g
+ shift altgr control shiftl keycode 26 = nul
+ shift alt shiftl keycode 26 = dead_grave
+ altgr alt shiftl keycode 26 = Meta_apostrophe
+ shift altgr alt shiftl keycode 26 = Meta_grave
+ shift control alt shiftl keycode 26 = dead_grave
+ altgr control alt shiftl keycode 26 = Meta_Control_g
+ shift altgr control alt shiftl keycode 26 = Meta_nul
+ shift shiftr keycode 26 = dead_grave
+ altgr shiftr keycode 26 = apostrophe
+ shift altgr shiftr keycode 26 = grave
+ shift control shiftr keycode 26 = dead_grave
+ altgr control shiftr keycode 26 = Control_g
+ shift altgr control shiftr keycode 26 = nul
+ shift alt shiftr keycode 26 = dead_grave
+ altgr alt shiftr keycode 26 = Meta_apostrophe
+ shift altgr alt shiftr keycode 26 = Meta_grave
+ shift control alt shiftr keycode 26 = dead_grave
+ altgr control alt shiftr keycode 26 = Meta_Control_g
+ shift altgr control alt shiftr keycode 26 = Meta_nul
+ shift shiftl shiftr keycode 26 = dead_grave
+ altgr shiftl shiftr keycode 26 = apostrophe
+ shift altgr shiftl shiftr keycode 26 = grave
+ shift control shiftl shiftr keycode 26 = dead_grave
+ altgr control shiftl shiftr keycode 26 = Control_g
+ shift altgr control shiftl shiftr keycode 26 = nul
+ shift alt shiftl shiftr keycode 26 = dead_grave
+ altgr alt shiftl shiftr keycode 26 = Meta_apostrophe
+ shift altgr alt shiftl shiftr keycode 26 = Meta_grave
+ shift control alt shiftl shiftr keycode 26 = dead_grave
+ altgr control alt shiftl shiftr keycode 26 = Meta_Control_g
+ shift altgr control alt shiftl shiftr keycode 26 = Meta_nul
+ shift ctrll keycode 26 = dead_grave
+ altgr ctrll keycode 26 = apostrophe
+ shift altgr ctrll keycode 26 = grave
+ shift control ctrll keycode 26 = dead_grave
+ altgr control ctrll keycode 26 = Control_g
+ shift altgr control ctrll keycode 26 = nul
+ shift alt ctrll keycode 26 = dead_grave
+ altgr alt ctrll keycode 26 = Meta_apostrophe
+ shift altgr alt ctrll keycode 26 = Meta_grave
+ shift control alt ctrll keycode 26 = dead_grave
+ altgr control alt ctrll keycode 26 = Meta_Control_g
+ shift altgr control alt ctrll keycode 26 = Meta_nul
+ shift shiftl ctrll keycode 26 = dead_grave
+ altgr shiftl ctrll keycode 26 = apostrophe
+ shift altgr shiftl ctrll keycode 26 = grave
+ shift control shiftl ctrll keycode 26 = dead_grave
+ altgr control shiftl ctrll keycode 26 = Control_g
+ shift altgr control shiftl ctrll keycode 26 = nul
+ shift alt shiftl ctrll keycode 26 = dead_grave
+ altgr alt shiftl ctrll keycode 26 = Meta_apostrophe
+ shift altgr alt shiftl ctrll keycode 26 = Meta_grave
+ shift control alt shiftl ctrll keycode 26 = dead_grave
+ altgr control alt shiftl ctrll keycode 26 = Meta_Control_g
+ shift altgr control alt shiftl ctrll keycode 26 = Meta_nul
+ shift shiftr ctrll keycode 26 = dead_grave
+ altgr shiftr ctrll keycode 26 = apostrophe
+ shift altgr shiftr ctrll keycode 26 = grave
+ shift control shiftr ctrll keycode 26 = dead_grave
+ altgr control shiftr ctrll keycode 26 = Control_g
+ shift altgr control shiftr ctrll keycode 26 = nul
+ shift alt shiftr ctrll keycode 26 = dead_grave
+ altgr alt shiftr ctrll keycode 26 = Meta_apostrophe
+ shift altgr alt shiftr ctrll keycode 26 = Meta_grave
+ shift control alt shiftr ctrll keycode 26 = dead_grave
+ altgr control alt shiftr ctrll keycode 26 = Meta_Control_g
+ shift altgr control alt shiftr ctrll keycode 26 = Meta_nul
+ shift shiftl shiftr ctrll keycode 26 = dead_grave
+ altgr shiftl shiftr ctrll keycode 26 = apostrophe
+ shift altgr shiftl shiftr ctrll keycode 26 = grave
+ shift control shiftl shiftr ctrll keycode 26 = dead_grave
+ altgr control shiftl shiftr ctrll keycode 26 = Control_g
+ shift altgr control shiftl shiftr ctrll keycode 26 = nul
+ shift alt shiftl shiftr ctrll keycode 26 = dead_grave
+ altgr alt shiftl shiftr ctrll keycode 26 = Meta_apostrophe
+ shift altgr alt shiftl shiftr ctrll keycode 26 = Meta_grave
+ shift control alt shiftl shiftr ctrll keycode 26 = dead_grave
+ altgr control alt shiftl shiftr ctrll keycode 26 = Meta_Control_g
+ shift altgr control alt shiftl shiftr ctrll keycode 26 = Meta_nul
+keycode 27 = bracketleft
+ shift keycode 27 = braceleft
+ altgr keycode 27 = +ordfeminine
+ shift altgr keycode 27 = underscore
+ control keycode 27 = Escape
+ shift control keycode 27 = Escape
+ altgr control keycode 27 = Escape
+ shift altgr control keycode 27 = Control_underscore
+ alt keycode 27 = Meta_bracketleft
+ shift alt keycode 27 = Meta_braceleft
+ altgr alt keycode 27 = Meta_bracketleft
+ shift altgr alt keycode 27 = Meta_underscore
+ control alt keycode 27 = Meta_Escape
+ shift control alt keycode 27 = Meta_Escape
+ altgr control alt keycode 27 = Meta_Escape
+ shift altgr control alt keycode 27 = Meta_Control_underscore
+ shift shiftl keycode 27 = braceleft
+ altgr shiftl keycode 27 = +ordfeminine
+ shift altgr shiftl keycode 27 = underscore
+ control shiftl keycode 27 = Escape
+ shift control shiftl keycode 27 = Escape
+ altgr control shiftl keycode 27 = Escape
+ shift altgr control shiftl keycode 27 = Control_underscore
+ alt shiftl keycode 27 = Meta_bracketleft
+ shift alt shiftl keycode 27 = Meta_braceleft
+ altgr alt shiftl keycode 27 = Meta_bracketleft
+ shift altgr alt shiftl keycode 27 = Meta_underscore
+ control alt shiftl keycode 27 = Meta_Escape
+ shift control alt shiftl keycode 27 = Meta_Escape
+ altgr control alt shiftl keycode 27 = Meta_Escape
+ shift altgr control alt shiftl keycode 27 = Meta_Control_underscore
+ shift shiftr keycode 27 = braceleft
+ altgr shiftr keycode 27 = +ordfeminine
+ shift altgr shiftr keycode 27 = underscore
+ control shiftr keycode 27 = Escape
+ shift control shiftr keycode 27 = Escape
+ altgr control shiftr keycode 27 = Escape
+ shift altgr control shiftr keycode 27 = Control_underscore
+ alt shiftr keycode 27 = Meta_bracketleft
+ shift alt shiftr keycode 27 = Meta_braceleft
+ altgr alt shiftr keycode 27 = Meta_bracketleft
+ shift altgr alt shiftr keycode 27 = Meta_underscore
+ control alt shiftr keycode 27 = Meta_Escape
+ shift control alt shiftr keycode 27 = Meta_Escape
+ altgr control alt shiftr keycode 27 = Meta_Escape
+ shift altgr control alt shiftr keycode 27 = Meta_Control_underscore
+ shift shiftl shiftr keycode 27 = braceleft
+ altgr shiftl shiftr keycode 27 = +ordfeminine
+ shift altgr shiftl shiftr keycode 27 = underscore
+ control shiftl shiftr keycode 27 = Escape
+ shift control shiftl shiftr keycode 27 = Escape
+ altgr control shiftl shiftr keycode 27 = Escape
+ shift altgr control shiftl shiftr keycode 27 = Control_underscore
+ alt shiftl shiftr keycode 27 = Meta_bracketleft
+ shift alt shiftl shiftr keycode 27 = Meta_braceleft
+ altgr alt shiftl shiftr keycode 27 = Meta_bracketleft
+ shift altgr alt shiftl shiftr keycode 27 = Meta_underscore
+ control alt shiftl shiftr keycode 27 = Meta_Escape
+ shift control alt shiftl shiftr keycode 27 = Meta_Escape
+ altgr control alt shiftl shiftr keycode 27 = Meta_Escape
+ shift altgr control alt shiftl shiftr keycode 27 = Meta_Control_underscore
+ shift ctrll keycode 27 = braceleft
+ altgr ctrll keycode 27 = +ordfeminine
+ shift altgr ctrll keycode 27 = underscore
+ control ctrll keycode 27 = Escape
+ shift control ctrll keycode 27 = Escape
+ altgr control ctrll keycode 27 = Escape
+ shift altgr control ctrll keycode 27 = Control_underscore
+ alt ctrll keycode 27 = Meta_bracketleft
+ shift alt ctrll keycode 27 = Meta_braceleft
+ altgr alt ctrll keycode 27 = Meta_bracketleft
+ shift altgr alt ctrll keycode 27 = Meta_underscore
+ control alt ctrll keycode 27 = Meta_Escape
+ shift control alt ctrll keycode 27 = Meta_Escape
+ altgr control alt ctrll keycode 27 = Meta_Escape
+ shift altgr control alt ctrll keycode 27 = Meta_Control_underscore
+ shift shiftl ctrll keycode 27 = braceleft
+ altgr shiftl ctrll keycode 27 = +ordfeminine
+ shift altgr shiftl ctrll keycode 27 = underscore
+ control shiftl ctrll keycode 27 = Escape
+ shift control shiftl ctrll keycode 27 = Escape
+ altgr control shiftl ctrll keycode 27 = Escape
+ shift altgr control shiftl ctrll keycode 27 = Control_underscore
+ alt shiftl ctrll keycode 27 = Meta_bracketleft
+ shift alt shiftl ctrll keycode 27 = Meta_braceleft
+ altgr alt shiftl ctrll keycode 27 = Meta_bracketleft
+ shift altgr alt shiftl ctrll keycode 27 = Meta_underscore
+ control alt shiftl ctrll keycode 27 = Meta_Escape
+ shift control alt shiftl ctrll keycode 27 = Meta_Escape
+ altgr control alt shiftl ctrll keycode 27 = Meta_Escape
+ shift altgr control alt shiftl ctrll keycode 27 = Meta_Control_underscore
+ shift shiftr ctrll keycode 27 = braceleft
+ altgr shiftr ctrll keycode 27 = +ordfeminine
+ shift altgr shiftr ctrll keycode 27 = underscore
+ control shiftr ctrll keycode 27 = Escape
+ shift control shiftr ctrll keycode 27 = Escape
+ altgr control shiftr ctrll keycode 27 = Escape
+ shift altgr control shiftr ctrll keycode 27 = Control_underscore
+ alt shiftr ctrll keycode 27 = Meta_bracketleft
+ shift alt shiftr ctrll keycode 27 = Meta_braceleft
+ altgr alt shiftr ctrll keycode 27 = Meta_bracketleft
+ shift altgr alt shiftr ctrll keycode 27 = Meta_underscore
+ control alt shiftr ctrll keycode 27 = Meta_Escape
+ shift control alt shiftr ctrll keycode 27 = Meta_Escape
+ altgr control alt shiftr ctrll keycode 27 = Meta_Escape
+ shift altgr control alt shiftr ctrll keycode 27 = Meta_Control_underscore
+ shift shiftl shiftr ctrll keycode 27 = braceleft
+ altgr shiftl shiftr ctrll keycode 27 = +ordfeminine
+ shift altgr shiftl shiftr ctrll keycode 27 = underscore
+ control shiftl shiftr ctrll keycode 27 = Escape
+ shift control shiftl shiftr ctrll keycode 27 = Escape
+ altgr control shiftl shiftr ctrll keycode 27 = Escape
+ shift altgr control shiftl shiftr ctrll keycode 27 = Control_underscore
+ alt shiftl shiftr ctrll keycode 27 = Meta_bracketleft
+ shift alt shiftl shiftr ctrll keycode 27 = Meta_braceleft
+ altgr alt shiftl shiftr ctrll keycode 27 = Meta_bracketleft
+ shift altgr alt shiftl shiftr ctrll keycode 27 = Meta_underscore
+ control alt shiftl shiftr ctrll keycode 27 = Meta_Escape
+ shift control alt shiftl shiftr ctrll keycode 27 = Meta_Escape
+ altgr control alt shiftl shiftr ctrll keycode 27 = Meta_Escape
+ shift altgr control alt shiftl shiftr ctrll keycode 27 = Meta_Control_underscore
+keycode 28 = Return
+ control keycode 28 = Control_m
+ shift control keycode 28 = Control_m
+ altgr control keycode 28 = Control_m
+ shift altgr control keycode 28 = Control_m
+ alt keycode 28 = Meta_Control_m
+ shift alt keycode 28 = Meta_Control_m
+ altgr alt keycode 28 = Meta_Control_m
+ shift altgr alt keycode 28 = Meta_Control_m
+ control alt keycode 28 = Meta_Control_m
+ shift control alt keycode 28 = Meta_Control_m
+ altgr control alt keycode 28 = Meta_Control_m
+ shift altgr control alt keycode 28 = Meta_Control_m
+ control shiftl keycode 28 = Control_m
+ shift control shiftl keycode 28 = Control_m
+ altgr control shiftl keycode 28 = Control_m
+ shift altgr control shiftl keycode 28 = Control_m
+ alt shiftl keycode 28 = Meta_Control_m
+ shift alt shiftl keycode 28 = Meta_Control_m
+ altgr alt shiftl keycode 28 = Meta_Control_m
+ shift altgr alt shiftl keycode 28 = Meta_Control_m
+ control alt shiftl keycode 28 = Meta_Control_m
+ shift control alt shiftl keycode 28 = Meta_Control_m
+ altgr control alt shiftl keycode 28 = Meta_Control_m
+ shift altgr control alt shiftl keycode 28 = Meta_Control_m
+ control shiftr keycode 28 = Control_m
+ shift control shiftr keycode 28 = Control_m
+ altgr control shiftr keycode 28 = Control_m
+ shift altgr control shiftr keycode 28 = Control_m
+ alt shiftr keycode 28 = Meta_Control_m
+ shift alt shiftr keycode 28 = Meta_Control_m
+ altgr alt shiftr keycode 28 = Meta_Control_m
+ shift altgr alt shiftr keycode 28 = Meta_Control_m
+ control alt shiftr keycode 28 = Meta_Control_m
+ shift control alt shiftr keycode 28 = Meta_Control_m
+ altgr control alt shiftr keycode 28 = Meta_Control_m
+ shift altgr control alt shiftr keycode 28 = Meta_Control_m
+ control shiftl shiftr keycode 28 = Control_m
+ shift control shiftl shiftr keycode 28 = Control_m
+ altgr control shiftl shiftr keycode 28 = Control_m
+ shift altgr control shiftl shiftr keycode 28 = Control_m
+ alt shiftl shiftr keycode 28 = Meta_Control_m
+ shift alt shiftl shiftr keycode 28 = Meta_Control_m
+ altgr alt shiftl shiftr keycode 28 = Meta_Control_m
+ shift altgr alt shiftl shiftr keycode 28 = Meta_Control_m
+ control alt shiftl shiftr keycode 28 = Meta_Control_m
+ shift control alt shiftl shiftr keycode 28 = Meta_Control_m
+ altgr control alt shiftl shiftr keycode 28 = Meta_Control_m
+ shift altgr control alt shiftl shiftr keycode 28 = Meta_Control_m
+ control ctrll keycode 28 = Control_m
+ shift control ctrll keycode 28 = Control_m
+ altgr control ctrll keycode 28 = Control_m
+ shift altgr control ctrll keycode 28 = Control_m
+ alt ctrll keycode 28 = Meta_Control_m
+ shift alt ctrll keycode 28 = Meta_Control_m
+ altgr alt ctrll keycode 28 = Meta_Control_m
+ shift altgr alt ctrll keycode 28 = Meta_Control_m
+ control alt ctrll keycode 28 = Meta_Control_m
+ shift control alt ctrll keycode 28 = Meta_Control_m
+ altgr control alt ctrll keycode 28 = Meta_Control_m
+ shift altgr control alt ctrll keycode 28 = Meta_Control_m
+ control shiftl ctrll keycode 28 = Control_m
+ shift control shiftl ctrll keycode 28 = Control_m
+ altgr control shiftl ctrll keycode 28 = Control_m
+ shift altgr control shiftl ctrll keycode 28 = Control_m
+ alt shiftl ctrll keycode 28 = Meta_Control_m
+ shift alt shiftl ctrll keycode 28 = Meta_Control_m
+ altgr alt shiftl ctrll keycode 28 = Meta_Control_m
+ shift altgr alt shiftl ctrll keycode 28 = Meta_Control_m
+ control alt shiftl ctrll keycode 28 = Meta_Control_m
+ shift control alt shiftl ctrll keycode 28 = Meta_Control_m
+ altgr control alt shiftl ctrll keycode 28 = Meta_Control_m
+ shift altgr control alt shiftl ctrll keycode 28 = Meta_Control_m
+ control shiftr ctrll keycode 28 = Control_m
+ shift control shiftr ctrll keycode 28 = Control_m
+ altgr control shiftr ctrll keycode 28 = Control_m
+ shift altgr control shiftr ctrll keycode 28 = Control_m
+ alt shiftr ctrll keycode 28 = Meta_Control_m
+ shift alt shiftr ctrll keycode 28 = Meta_Control_m
+ altgr alt shiftr ctrll keycode 28 = Meta_Control_m
+ shift altgr alt shiftr ctrll keycode 28 = Meta_Control_m
+ control alt shiftr ctrll keycode 28 = Meta_Control_m
+ shift control alt shiftr ctrll keycode 28 = Meta_Control_m
+ altgr control alt shiftr ctrll keycode 28 = Meta_Control_m
+ shift altgr control alt shiftr ctrll keycode 28 = Meta_Control_m
+ control shiftl shiftr ctrll keycode 28 = Control_m
+ shift control shiftl shiftr ctrll keycode 28 = Control_m
+ altgr control shiftl shiftr ctrll keycode 28 = Control_m
+ shift altgr control shiftl shiftr ctrll keycode 28 = Control_m
+ alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ shift alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ altgr alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ shift altgr alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ control alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ shift control alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ altgr control alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ shift altgr control alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 30 = +a
+ shift keycode 30 = +A
+ altgr keycode 30 = +ae
+ shift altgr keycode 30 = +AE
+ control keycode 30 = Control_a
+ shift control keycode 30 = Control_a
+ altgr control keycode 30 = Control_a
+ shift altgr control keycode 30 = Control_a
+ alt keycode 30 = Meta_a
+ shift alt keycode 30 = Meta_A
+ altgr alt keycode 30 = Meta_a
+ shift altgr alt keycode 30 = Meta_A
+ control alt keycode 30 = Meta_Control_a
+ shift control alt keycode 30 = Meta_Control_a
+ altgr control alt keycode 30 = Meta_Control_a
+ shift altgr control alt keycode 30 = Meta_Control_a
+ shift shiftl keycode 30 = +A
+ altgr shiftl keycode 30 = +ae
+ shift altgr shiftl keycode 30 = +AE
+ control shiftl keycode 30 = Control_a
+ shift control shiftl keycode 30 = Control_a
+ altgr control shiftl keycode 30 = Control_a
+ shift altgr control shiftl keycode 30 = Control_a
+ alt shiftl keycode 30 = Meta_a
+ shift alt shiftl keycode 30 = Meta_A
+ altgr alt shiftl keycode 30 = Meta_a
+ shift altgr alt shiftl keycode 30 = Meta_A
+ control alt shiftl keycode 30 = Meta_Control_a
+ shift control alt shiftl keycode 30 = Meta_Control_a
+ altgr control alt shiftl keycode 30 = Meta_Control_a
+ shift altgr control alt shiftl keycode 30 = Meta_Control_a
+ shift shiftr keycode 30 = +A
+ altgr shiftr keycode 30 = +ae
+ shift altgr shiftr keycode 30 = +AE
+ control shiftr keycode 30 = Control_a
+ shift control shiftr keycode 30 = Control_a
+ altgr control shiftr keycode 30 = Control_a
+ shift altgr control shiftr keycode 30 = Control_a
+ alt shiftr keycode 30 = Meta_a
+ shift alt shiftr keycode 30 = Meta_A
+ altgr alt shiftr keycode 30 = Meta_a
+ shift altgr alt shiftr keycode 30 = Meta_A
+ control alt shiftr keycode 30 = Meta_Control_a
+ shift control alt shiftr keycode 30 = Meta_Control_a
+ altgr control alt shiftr keycode 30 = Meta_Control_a
+ shift altgr control alt shiftr keycode 30 = Meta_Control_a
+ shift shiftl shiftr keycode 30 = +A
+ altgr shiftl shiftr keycode 30 = +ae
+ shift altgr shiftl shiftr keycode 30 = +AE
+ control shiftl shiftr keycode 30 = Control_a
+ shift control shiftl shiftr keycode 30 = Control_a
+ altgr control shiftl shiftr keycode 30 = Control_a
+ shift altgr control shiftl shiftr keycode 30 = Control_a
+ alt shiftl shiftr keycode 30 = Meta_a
+ shift alt shiftl shiftr keycode 30 = Meta_A
+ altgr alt shiftl shiftr keycode 30 = Meta_a
+ shift altgr alt shiftl shiftr keycode 30 = Meta_A
+ control alt shiftl shiftr keycode 30 = Meta_Control_a
+ shift control alt shiftl shiftr keycode 30 = Meta_Control_a
+ altgr control alt shiftl shiftr keycode 30 = Meta_Control_a
+ shift altgr control alt shiftl shiftr keycode 30 = Meta_Control_a
+ ctrll keycode 30 = +A
+ altgr ctrll keycode 30 = +AE
+ shift altgr ctrll keycode 30 = +ae
+ control ctrll keycode 30 = Control_a
+ shift control ctrll keycode 30 = Control_a
+ altgr control ctrll keycode 30 = Control_a
+ shift altgr control ctrll keycode 30 = Control_a
+ alt ctrll keycode 30 = Meta_a
+ shift alt ctrll keycode 30 = Meta_A
+ altgr alt ctrll keycode 30 = Meta_a
+ shift altgr alt ctrll keycode 30 = Meta_A
+ control alt ctrll keycode 30 = Meta_Control_a
+ shift control alt ctrll keycode 30 = Meta_Control_a
+ altgr control alt ctrll keycode 30 = Meta_Control_a
+ shift altgr control alt ctrll keycode 30 = Meta_Control_a
+ shiftl ctrll keycode 30 = +A
+ altgr shiftl ctrll keycode 30 = +AE
+ shift altgr shiftl ctrll keycode 30 = +ae
+ control shiftl ctrll keycode 30 = Control_a
+ shift control shiftl ctrll keycode 30 = Control_a
+ altgr control shiftl ctrll keycode 30 = Control_a
+ shift altgr control shiftl ctrll keycode 30 = Control_a
+ alt shiftl ctrll keycode 30 = Meta_a
+ shift alt shiftl ctrll keycode 30 = Meta_A
+ altgr alt shiftl ctrll keycode 30 = Meta_a
+ shift altgr alt shiftl ctrll keycode 30 = Meta_A
+ control alt shiftl ctrll keycode 30 = Meta_Control_a
+ shift control alt shiftl ctrll keycode 30 = Meta_Control_a
+ altgr control alt shiftl ctrll keycode 30 = Meta_Control_a
+ shift altgr control alt shiftl ctrll keycode 30 = Meta_Control_a
+ shiftr ctrll keycode 30 = +A
+ altgr shiftr ctrll keycode 30 = +AE
+ shift altgr shiftr ctrll keycode 30 = +ae
+ control shiftr ctrll keycode 30 = Control_a
+ shift control shiftr ctrll keycode 30 = Control_a
+ altgr control shiftr ctrll keycode 30 = Control_a
+ shift altgr control shiftr ctrll keycode 30 = Control_a
+ alt shiftr ctrll keycode 30 = Meta_a
+ shift alt shiftr ctrll keycode 30 = Meta_A
+ altgr alt shiftr ctrll keycode 30 = Meta_a
+ shift altgr alt shiftr ctrll keycode 30 = Meta_A
+ control alt shiftr ctrll keycode 30 = Meta_Control_a
+ shift control alt shiftr ctrll keycode 30 = Meta_Control_a
+ altgr control alt shiftr ctrll keycode 30 = Meta_Control_a
+ shift altgr control alt shiftr ctrll keycode 30 = Meta_Control_a
+ shiftl shiftr ctrll keycode 30 = +A
+ altgr shiftl shiftr ctrll keycode 30 = +AE
+ shift altgr shiftl shiftr ctrll keycode 30 = +ae
+ control shiftl shiftr ctrll keycode 30 = Control_a
+ shift control shiftl shiftr ctrll keycode 30 = Control_a
+ altgr control shiftl shiftr ctrll keycode 30 = Control_a
+ shift altgr control shiftl shiftr ctrll keycode 30 = Control_a
+ alt shiftl shiftr ctrll keycode 30 = Meta_a
+ shift alt shiftl shiftr ctrll keycode 30 = Meta_A
+ altgr alt shiftl shiftr ctrll keycode 30 = Meta_a
+ shift altgr alt shiftl shiftr ctrll keycode 30 = Meta_A
+ control alt shiftl shiftr ctrll keycode 30 = Meta_Control_a
+ shift control alt shiftl shiftr ctrll keycode 30 = Meta_Control_a
+ altgr control alt shiftl shiftr ctrll keycode 30 = Meta_Control_a
+ shift altgr control alt shiftl shiftr ctrll keycode 30 = Meta_Control_a
+keycode 31 = +s
+ shift keycode 31 = +S
+ altgr keycode 31 = +ssharp
+ shift altgr keycode 31 = section
+ control keycode 31 = Control_s
+ shift control keycode 31 = Control_s
+ altgr control keycode 31 = Control_s
+ shift altgr control keycode 31 = Control_s
+ alt keycode 31 = Meta_s
+ shift alt keycode 31 = Meta_S
+ altgr alt keycode 31 = Meta_s
+ shift altgr alt keycode 31 = Meta_S
+ control alt keycode 31 = Meta_Control_s
+ shift control alt keycode 31 = Meta_Control_s
+ altgr control alt keycode 31 = Meta_Control_s
+ shift altgr control alt keycode 31 = Meta_Control_s
+ shift shiftl keycode 31 = +S
+ altgr shiftl keycode 31 = +ssharp
+ shift altgr shiftl keycode 31 = section
+ control shiftl keycode 31 = Control_s
+ shift control shiftl keycode 31 = Control_s
+ altgr control shiftl keycode 31 = Control_s
+ shift altgr control shiftl keycode 31 = Control_s
+ alt shiftl keycode 31 = Meta_s
+ shift alt shiftl keycode 31 = Meta_S
+ altgr alt shiftl keycode 31 = Meta_s
+ shift altgr alt shiftl keycode 31 = Meta_S
+ control alt shiftl keycode 31 = Meta_Control_s
+ shift control alt shiftl keycode 31 = Meta_Control_s
+ altgr control alt shiftl keycode 31 = Meta_Control_s
+ shift altgr control alt shiftl keycode 31 = Meta_Control_s
+ shift shiftr keycode 31 = +S
+ altgr shiftr keycode 31 = +ssharp
+ shift altgr shiftr keycode 31 = section
+ control shiftr keycode 31 = Control_s
+ shift control shiftr keycode 31 = Control_s
+ altgr control shiftr keycode 31 = Control_s
+ shift altgr control shiftr keycode 31 = Control_s
+ alt shiftr keycode 31 = Meta_s
+ shift alt shiftr keycode 31 = Meta_S
+ altgr alt shiftr keycode 31 = Meta_s
+ shift altgr alt shiftr keycode 31 = Meta_S
+ control alt shiftr keycode 31 = Meta_Control_s
+ shift control alt shiftr keycode 31 = Meta_Control_s
+ altgr control alt shiftr keycode 31 = Meta_Control_s
+ shift altgr control alt shiftr keycode 31 = Meta_Control_s
+ shift shiftl shiftr keycode 31 = +S
+ altgr shiftl shiftr keycode 31 = +ssharp
+ shift altgr shiftl shiftr keycode 31 = section
+ control shiftl shiftr keycode 31 = Control_s
+ shift control shiftl shiftr keycode 31 = Control_s
+ altgr control shiftl shiftr keycode 31 = Control_s
+ shift altgr control shiftl shiftr keycode 31 = Control_s
+ alt shiftl shiftr keycode 31 = Meta_s
+ shift alt shiftl shiftr keycode 31 = Meta_S
+ altgr alt shiftl shiftr keycode 31 = Meta_s
+ shift altgr alt shiftl shiftr keycode 31 = Meta_S
+ control alt shiftl shiftr keycode 31 = Meta_Control_s
+ shift control alt shiftl shiftr keycode 31 = Meta_Control_s
+ altgr control alt shiftl shiftr keycode 31 = Meta_Control_s
+ shift altgr control alt shiftl shiftr keycode 31 = Meta_Control_s
+ ctrll keycode 31 = +S
+ altgr ctrll keycode 31 = +S
+ shift altgr ctrll keycode 31 = section
+ control ctrll keycode 31 = Control_s
+ shift control ctrll keycode 31 = Control_s
+ altgr control ctrll keycode 31 = Control_s
+ shift altgr control ctrll keycode 31 = Control_s
+ alt ctrll keycode 31 = Meta_s
+ shift alt ctrll keycode 31 = Meta_S
+ altgr alt ctrll keycode 31 = Meta_s
+ shift altgr alt ctrll keycode 31 = Meta_S
+ control alt ctrll keycode 31 = Meta_Control_s
+ shift control alt ctrll keycode 31 = Meta_Control_s
+ altgr control alt ctrll keycode 31 = Meta_Control_s
+ shift altgr control alt ctrll keycode 31 = Meta_Control_s
+ shiftl ctrll keycode 31 = +S
+ altgr shiftl ctrll keycode 31 = +S
+ shift altgr shiftl ctrll keycode 31 = section
+ control shiftl ctrll keycode 31 = Control_s
+ shift control shiftl ctrll keycode 31 = Control_s
+ altgr control shiftl ctrll keycode 31 = Control_s
+ shift altgr control shiftl ctrll keycode 31 = Control_s
+ alt shiftl ctrll keycode 31 = Meta_s
+ shift alt shiftl ctrll keycode 31 = Meta_S
+ altgr alt shiftl ctrll keycode 31 = Meta_s
+ shift altgr alt shiftl ctrll keycode 31 = Meta_S
+ control alt shiftl ctrll keycode 31 = Meta_Control_s
+ shift control alt shiftl ctrll keycode 31 = Meta_Control_s
+ altgr control alt shiftl ctrll keycode 31 = Meta_Control_s
+ shift altgr control alt shiftl ctrll keycode 31 = Meta_Control_s
+ shiftr ctrll keycode 31 = +S
+ altgr shiftr ctrll keycode 31 = +S
+ shift altgr shiftr ctrll keycode 31 = section
+ control shiftr ctrll keycode 31 = Control_s
+ shift control shiftr ctrll keycode 31 = Control_s
+ altgr control shiftr ctrll keycode 31 = Control_s
+ shift altgr control shiftr ctrll keycode 31 = Control_s
+ alt shiftr ctrll keycode 31 = Meta_s
+ shift alt shiftr ctrll keycode 31 = Meta_S
+ altgr alt shiftr ctrll keycode 31 = Meta_s
+ shift altgr alt shiftr ctrll keycode 31 = Meta_S
+ control alt shiftr ctrll keycode 31 = Meta_Control_s
+ shift control alt shiftr ctrll keycode 31 = Meta_Control_s
+ altgr control alt shiftr ctrll keycode 31 = Meta_Control_s
+ shift altgr control alt shiftr ctrll keycode 31 = Meta_Control_s
+ shiftl shiftr ctrll keycode 31 = +S
+ altgr shiftl shiftr ctrll keycode 31 = +S
+ shift altgr shiftl shiftr ctrll keycode 31 = section
+ control shiftl shiftr ctrll keycode 31 = Control_s
+ shift control shiftl shiftr ctrll keycode 31 = Control_s
+ altgr control shiftl shiftr ctrll keycode 31 = Control_s
+ shift altgr control shiftl shiftr ctrll keycode 31 = Control_s
+ alt shiftl shiftr ctrll keycode 31 = Meta_s
+ shift alt shiftl shiftr ctrll keycode 31 = Meta_S
+ altgr alt shiftl shiftr ctrll keycode 31 = Meta_s
+ shift altgr alt shiftl shiftr ctrll keycode 31 = Meta_S
+ control alt shiftl shiftr ctrll keycode 31 = Meta_Control_s
+ shift control alt shiftl shiftr ctrll keycode 31 = Meta_Control_s
+ altgr control alt shiftl shiftr ctrll keycode 31 = Meta_Control_s
+ shift altgr control alt shiftl shiftr ctrll keycode 31 = Meta_Control_s
+keycode 32 = +d
+ shift keycode 32 = +D
+ altgr keycode 32 = +eth
+ shift altgr keycode 32 = +ETH
+ control keycode 32 = Control_d
+ shift control keycode 32 = Control_d
+ altgr control keycode 32 = Control_d
+ shift altgr control keycode 32 = Control_d
+ alt keycode 32 = Meta_d
+ shift alt keycode 32 = Meta_D
+ altgr alt keycode 32 = Meta_d
+ shift altgr alt keycode 32 = Meta_D
+ control alt keycode 32 = Meta_Control_d
+ shift control alt keycode 32 = Meta_Control_d
+ altgr control alt keycode 32 = Meta_Control_d
+ shift altgr control alt keycode 32 = Meta_Control_d
+ shift shiftl keycode 32 = +D
+ altgr shiftl keycode 32 = +eth
+ shift altgr shiftl keycode 32 = +ETH
+ control shiftl keycode 32 = Control_d
+ shift control shiftl keycode 32 = Control_d
+ altgr control shiftl keycode 32 = Control_d
+ shift altgr control shiftl keycode 32 = Control_d
+ alt shiftl keycode 32 = Meta_d
+ shift alt shiftl keycode 32 = Meta_D
+ altgr alt shiftl keycode 32 = Meta_d
+ shift altgr alt shiftl keycode 32 = Meta_D
+ control alt shiftl keycode 32 = Meta_Control_d
+ shift control alt shiftl keycode 32 = Meta_Control_d
+ altgr control alt shiftl keycode 32 = Meta_Control_d
+ shift altgr control alt shiftl keycode 32 = Meta_Control_d
+ shift shiftr keycode 32 = +D
+ altgr shiftr keycode 32 = +eth
+ shift altgr shiftr keycode 32 = +ETH
+ control shiftr keycode 32 = Control_d
+ shift control shiftr keycode 32 = Control_d
+ altgr control shiftr keycode 32 = Control_d
+ shift altgr control shiftr keycode 32 = Control_d
+ alt shiftr keycode 32 = Meta_d
+ shift alt shiftr keycode 32 = Meta_D
+ altgr alt shiftr keycode 32 = Meta_d
+ shift altgr alt shiftr keycode 32 = Meta_D
+ control alt shiftr keycode 32 = Meta_Control_d
+ shift control alt shiftr keycode 32 = Meta_Control_d
+ altgr control alt shiftr keycode 32 = Meta_Control_d
+ shift altgr control alt shiftr keycode 32 = Meta_Control_d
+ shift shiftl shiftr keycode 32 = +D
+ altgr shiftl shiftr keycode 32 = +eth
+ shift altgr shiftl shiftr keycode 32 = +ETH
+ control shiftl shiftr keycode 32 = Control_d
+ shift control shiftl shiftr keycode 32 = Control_d
+ altgr control shiftl shiftr keycode 32 = Control_d
+ shift altgr control shiftl shiftr keycode 32 = Control_d
+ alt shiftl shiftr keycode 32 = Meta_d
+ shift alt shiftl shiftr keycode 32 = Meta_D
+ altgr alt shiftl shiftr keycode 32 = Meta_d
+ shift altgr alt shiftl shiftr keycode 32 = Meta_D
+ control alt shiftl shiftr keycode 32 = Meta_Control_d
+ shift control alt shiftl shiftr keycode 32 = Meta_Control_d
+ altgr control alt shiftl shiftr keycode 32 = Meta_Control_d
+ shift altgr control alt shiftl shiftr keycode 32 = Meta_Control_d
+ ctrll keycode 32 = +D
+ altgr ctrll keycode 32 = +ETH
+ shift altgr ctrll keycode 32 = +eth
+ control ctrll keycode 32 = Control_d
+ shift control ctrll keycode 32 = Control_d
+ altgr control ctrll keycode 32 = Control_d
+ shift altgr control ctrll keycode 32 = Control_d
+ alt ctrll keycode 32 = Meta_d
+ shift alt ctrll keycode 32 = Meta_D
+ altgr alt ctrll keycode 32 = Meta_d
+ shift altgr alt ctrll keycode 32 = Meta_D
+ control alt ctrll keycode 32 = Meta_Control_d
+ shift control alt ctrll keycode 32 = Meta_Control_d
+ altgr control alt ctrll keycode 32 = Meta_Control_d
+ shift altgr control alt ctrll keycode 32 = Meta_Control_d
+ shiftl ctrll keycode 32 = +D
+ altgr shiftl ctrll keycode 32 = +ETH
+ shift altgr shiftl ctrll keycode 32 = +eth
+ control shiftl ctrll keycode 32 = Control_d
+ shift control shiftl ctrll keycode 32 = Control_d
+ altgr control shiftl ctrll keycode 32 = Control_d
+ shift altgr control shiftl ctrll keycode 32 = Control_d
+ alt shiftl ctrll keycode 32 = Meta_d
+ shift alt shiftl ctrll keycode 32 = Meta_D
+ altgr alt shiftl ctrll keycode 32 = Meta_d
+ shift altgr alt shiftl ctrll keycode 32 = Meta_D
+ control alt shiftl ctrll keycode 32 = Meta_Control_d
+ shift control alt shiftl ctrll keycode 32 = Meta_Control_d
+ altgr control alt shiftl ctrll keycode 32 = Meta_Control_d
+ shift altgr control alt shiftl ctrll keycode 32 = Meta_Control_d
+ shiftr ctrll keycode 32 = +D
+ altgr shiftr ctrll keycode 32 = +ETH
+ shift altgr shiftr ctrll keycode 32 = +eth
+ control shiftr ctrll keycode 32 = Control_d
+ shift control shiftr ctrll keycode 32 = Control_d
+ altgr control shiftr ctrll keycode 32 = Control_d
+ shift altgr control shiftr ctrll keycode 32 = Control_d
+ alt shiftr ctrll keycode 32 = Meta_d
+ shift alt shiftr ctrll keycode 32 = Meta_D
+ altgr alt shiftr ctrll keycode 32 = Meta_d
+ shift altgr alt shiftr ctrll keycode 32 = Meta_D
+ control alt shiftr ctrll keycode 32 = Meta_Control_d
+ shift control alt shiftr ctrll keycode 32 = Meta_Control_d
+ altgr control alt shiftr ctrll keycode 32 = Meta_Control_d
+ shift altgr control alt shiftr ctrll keycode 32 = Meta_Control_d
+ shiftl shiftr ctrll keycode 32 = +D
+ altgr shiftl shiftr ctrll keycode 32 = +ETH
+ shift altgr shiftl shiftr ctrll keycode 32 = +eth
+ control shiftl shiftr ctrll keycode 32 = Control_d
+ shift control shiftl shiftr ctrll keycode 32 = Control_d
+ altgr control shiftl shiftr ctrll keycode 32 = Control_d
+ shift altgr control shiftl shiftr ctrll keycode 32 = Control_d
+ alt shiftl shiftr ctrll keycode 32 = Meta_d
+ shift alt shiftl shiftr ctrll keycode 32 = Meta_D
+ altgr alt shiftl shiftr ctrll keycode 32 = Meta_d
+ shift altgr alt shiftl shiftr ctrll keycode 32 = Meta_D
+ control alt shiftl shiftr ctrll keycode 32 = Meta_Control_d
+ shift control alt shiftl shiftr ctrll keycode 32 = Meta_Control_d
+ altgr control alt shiftl shiftr ctrll keycode 32 = Meta_Control_d
+ shift altgr control alt shiftl shiftr ctrll keycode 32 = Meta_Control_d
+keycode 33 = +f
+ shift keycode 33 = +F
+ altgr keycode 33 = dstroke
+ shift altgr keycode 33 = +ordfeminine
+ control keycode 33 = Control_f
+ shift control keycode 33 = Control_f
+ altgr control keycode 33 = Control_f
+ shift altgr control keycode 33 = Control_f
+ alt keycode 33 = Meta_f
+ shift alt keycode 33 = Meta_F
+ altgr alt keycode 33 = Meta_f
+ shift altgr alt keycode 33 = Meta_F
+ control alt keycode 33 = Meta_Control_f
+ shift control alt keycode 33 = Meta_Control_f
+ altgr control alt keycode 33 = Meta_Control_f
+ shift altgr control alt keycode 33 = Meta_Control_f
+ shift shiftl keycode 33 = +F
+ altgr shiftl keycode 33 = dstroke
+ shift altgr shiftl keycode 33 = +ordfeminine
+ control shiftl keycode 33 = Control_f
+ shift control shiftl keycode 33 = Control_f
+ altgr control shiftl keycode 33 = Control_f
+ shift altgr control shiftl keycode 33 = Control_f
+ alt shiftl keycode 33 = Meta_f
+ shift alt shiftl keycode 33 = Meta_F
+ altgr alt shiftl keycode 33 = Meta_f
+ shift altgr alt shiftl keycode 33 = Meta_F
+ control alt shiftl keycode 33 = Meta_Control_f
+ shift control alt shiftl keycode 33 = Meta_Control_f
+ altgr control alt shiftl keycode 33 = Meta_Control_f
+ shift altgr control alt shiftl keycode 33 = Meta_Control_f
+ shift shiftr keycode 33 = +F
+ altgr shiftr keycode 33 = dstroke
+ shift altgr shiftr keycode 33 = +ordfeminine
+ control shiftr keycode 33 = Control_f
+ shift control shiftr keycode 33 = Control_f
+ altgr control shiftr keycode 33 = Control_f
+ shift altgr control shiftr keycode 33 = Control_f
+ alt shiftr keycode 33 = Meta_f
+ shift alt shiftr keycode 33 = Meta_F
+ altgr alt shiftr keycode 33 = Meta_f
+ shift altgr alt shiftr keycode 33 = Meta_F
+ control alt shiftr keycode 33 = Meta_Control_f
+ shift control alt shiftr keycode 33 = Meta_Control_f
+ altgr control alt shiftr keycode 33 = Meta_Control_f
+ shift altgr control alt shiftr keycode 33 = Meta_Control_f
+ shift shiftl shiftr keycode 33 = +F
+ altgr shiftl shiftr keycode 33 = dstroke
+ shift altgr shiftl shiftr keycode 33 = +ordfeminine
+ control shiftl shiftr keycode 33 = Control_f
+ shift control shiftl shiftr keycode 33 = Control_f
+ altgr control shiftl shiftr keycode 33 = Control_f
+ shift altgr control shiftl shiftr keycode 33 = Control_f
+ alt shiftl shiftr keycode 33 = Meta_f
+ shift alt shiftl shiftr keycode 33 = Meta_F
+ altgr alt shiftl shiftr keycode 33 = Meta_f
+ shift altgr alt shiftl shiftr keycode 33 = Meta_F
+ control alt shiftl shiftr keycode 33 = Meta_Control_f
+ shift control alt shiftl shiftr keycode 33 = Meta_Control_f
+ altgr control alt shiftl shiftr keycode 33 = Meta_Control_f
+ shift altgr control alt shiftl shiftr keycode 33 = Meta_Control_f
+ ctrll keycode 33 = +F
+ altgr ctrll keycode 33 = Dstroke
+ shift altgr ctrll keycode 33 = +ordfeminine
+ control ctrll keycode 33 = Control_f
+ shift control ctrll keycode 33 = Control_f
+ altgr control ctrll keycode 33 = Control_f
+ shift altgr control ctrll keycode 33 = Control_f
+ alt ctrll keycode 33 = Meta_f
+ shift alt ctrll keycode 33 = Meta_F
+ altgr alt ctrll keycode 33 = Meta_f
+ shift altgr alt ctrll keycode 33 = Meta_F
+ control alt ctrll keycode 33 = Meta_Control_f
+ shift control alt ctrll keycode 33 = Meta_Control_f
+ altgr control alt ctrll keycode 33 = Meta_Control_f
+ shift altgr control alt ctrll keycode 33 = Meta_Control_f
+ shiftl ctrll keycode 33 = +F
+ altgr shiftl ctrll keycode 33 = Dstroke
+ shift altgr shiftl ctrll keycode 33 = +ordfeminine
+ control shiftl ctrll keycode 33 = Control_f
+ shift control shiftl ctrll keycode 33 = Control_f
+ altgr control shiftl ctrll keycode 33 = Control_f
+ shift altgr control shiftl ctrll keycode 33 = Control_f
+ alt shiftl ctrll keycode 33 = Meta_f
+ shift alt shiftl ctrll keycode 33 = Meta_F
+ altgr alt shiftl ctrll keycode 33 = Meta_f
+ shift altgr alt shiftl ctrll keycode 33 = Meta_F
+ control alt shiftl ctrll keycode 33 = Meta_Control_f
+ shift control alt shiftl ctrll keycode 33 = Meta_Control_f
+ altgr control alt shiftl ctrll keycode 33 = Meta_Control_f
+ shift altgr control alt shiftl ctrll keycode 33 = Meta_Control_f
+ shiftr ctrll keycode 33 = +F
+ altgr shiftr ctrll keycode 33 = Dstroke
+ shift altgr shiftr ctrll keycode 33 = +ordfeminine
+ control shiftr ctrll keycode 33 = Control_f
+ shift control shiftr ctrll keycode 33 = Control_f
+ altgr control shiftr ctrll keycode 33 = Control_f
+ shift altgr control shiftr ctrll keycode 33 = Control_f
+ alt shiftr ctrll keycode 33 = Meta_f
+ shift alt shiftr ctrll keycode 33 = Meta_F
+ altgr alt shiftr ctrll keycode 33 = Meta_f
+ shift altgr alt shiftr ctrll keycode 33 = Meta_F
+ control alt shiftr ctrll keycode 33 = Meta_Control_f
+ shift control alt shiftr ctrll keycode 33 = Meta_Control_f
+ altgr control alt shiftr ctrll keycode 33 = Meta_Control_f
+ shift altgr control alt shiftr ctrll keycode 33 = Meta_Control_f
+ shiftl shiftr ctrll keycode 33 = +F
+ altgr shiftl shiftr ctrll keycode 33 = Dstroke
+ shift altgr shiftl shiftr ctrll keycode 33 = +ordfeminine
+ control shiftl shiftr ctrll keycode 33 = Control_f
+ shift control shiftl shiftr ctrll keycode 33 = Control_f
+ altgr control shiftl shiftr ctrll keycode 33 = Control_f
+ shift altgr control shiftl shiftr ctrll keycode 33 = Control_f
+ alt shiftl shiftr ctrll keycode 33 = Meta_f
+ shift alt shiftl shiftr ctrll keycode 33 = Meta_F
+ altgr alt shiftl shiftr ctrll keycode 33 = Meta_f
+ shift altgr alt shiftl shiftr ctrll keycode 33 = Meta_F
+ control alt shiftl shiftr ctrll keycode 33 = Meta_Control_f
+ shift control alt shiftl shiftr ctrll keycode 33 = Meta_Control_f
+ altgr control alt shiftl shiftr ctrll keycode 33 = Meta_Control_f
+ shift altgr control alt shiftl shiftr ctrll keycode 33 = Meta_Control_f
+keycode 34 = +g
+ shift keycode 34 = +G
+ altgr keycode 34 = eng
+ shift altgr keycode 34 = ENG
+ control keycode 34 = Control_g
+ shift control keycode 34 = Control_g
+ altgr control keycode 34 = Control_g
+ shift altgr control keycode 34 = Control_g
+ alt keycode 34 = Meta_g
+ shift alt keycode 34 = Meta_G
+ altgr alt keycode 34 = Meta_g
+ shift altgr alt keycode 34 = Meta_G
+ control alt keycode 34 = Meta_Control_g
+ shift control alt keycode 34 = Meta_Control_g
+ altgr control alt keycode 34 = Meta_Control_g
+ shift altgr control alt keycode 34 = Meta_Control_g
+ shift shiftl keycode 34 = +G
+ altgr shiftl keycode 34 = eng
+ shift altgr shiftl keycode 34 = ENG
+ control shiftl keycode 34 = Control_g
+ shift control shiftl keycode 34 = Control_g
+ altgr control shiftl keycode 34 = Control_g
+ shift altgr control shiftl keycode 34 = Control_g
+ alt shiftl keycode 34 = Meta_g
+ shift alt shiftl keycode 34 = Meta_G
+ altgr alt shiftl keycode 34 = Meta_g
+ shift altgr alt shiftl keycode 34 = Meta_G
+ control alt shiftl keycode 34 = Meta_Control_g
+ shift control alt shiftl keycode 34 = Meta_Control_g
+ altgr control alt shiftl keycode 34 = Meta_Control_g
+ shift altgr control alt shiftl keycode 34 = Meta_Control_g
+ shift shiftr keycode 34 = +G
+ altgr shiftr keycode 34 = eng
+ shift altgr shiftr keycode 34 = ENG
+ control shiftr keycode 34 = Control_g
+ shift control shiftr keycode 34 = Control_g
+ altgr control shiftr keycode 34 = Control_g
+ shift altgr control shiftr keycode 34 = Control_g
+ alt shiftr keycode 34 = Meta_g
+ shift alt shiftr keycode 34 = Meta_G
+ altgr alt shiftr keycode 34 = Meta_g
+ shift altgr alt shiftr keycode 34 = Meta_G
+ control alt shiftr keycode 34 = Meta_Control_g
+ shift control alt shiftr keycode 34 = Meta_Control_g
+ altgr control alt shiftr keycode 34 = Meta_Control_g
+ shift altgr control alt shiftr keycode 34 = Meta_Control_g
+ shift shiftl shiftr keycode 34 = +G
+ altgr shiftl shiftr keycode 34 = eng
+ shift altgr shiftl shiftr keycode 34 = ENG
+ control shiftl shiftr keycode 34 = Control_g
+ shift control shiftl shiftr keycode 34 = Control_g
+ altgr control shiftl shiftr keycode 34 = Control_g
+ shift altgr control shiftl shiftr keycode 34 = Control_g
+ alt shiftl shiftr keycode 34 = Meta_g
+ shift alt shiftl shiftr keycode 34 = Meta_G
+ altgr alt shiftl shiftr keycode 34 = Meta_g
+ shift altgr alt shiftl shiftr keycode 34 = Meta_G
+ control alt shiftl shiftr keycode 34 = Meta_Control_g
+ shift control alt shiftl shiftr keycode 34 = Meta_Control_g
+ altgr control alt shiftl shiftr keycode 34 = Meta_Control_g
+ shift altgr control alt shiftl shiftr keycode 34 = Meta_Control_g
+ ctrll keycode 34 = +G
+ altgr ctrll keycode 34 = ENG
+ shift altgr ctrll keycode 34 = eng
+ control ctrll keycode 34 = Control_g
+ shift control ctrll keycode 34 = Control_g
+ altgr control ctrll keycode 34 = Control_g
+ shift altgr control ctrll keycode 34 = Control_g
+ alt ctrll keycode 34 = Meta_g
+ shift alt ctrll keycode 34 = Meta_G
+ altgr alt ctrll keycode 34 = Meta_g
+ shift altgr alt ctrll keycode 34 = Meta_G
+ control alt ctrll keycode 34 = Meta_Control_g
+ shift control alt ctrll keycode 34 = Meta_Control_g
+ altgr control alt ctrll keycode 34 = Meta_Control_g
+ shift altgr control alt ctrll keycode 34 = Meta_Control_g
+ shiftl ctrll keycode 34 = +G
+ altgr shiftl ctrll keycode 34 = ENG
+ shift altgr shiftl ctrll keycode 34 = eng
+ control shiftl ctrll keycode 34 = Control_g
+ shift control shiftl ctrll keycode 34 = Control_g
+ altgr control shiftl ctrll keycode 34 = Control_g
+ shift altgr control shiftl ctrll keycode 34 = Control_g
+ alt shiftl ctrll keycode 34 = Meta_g
+ shift alt shiftl ctrll keycode 34 = Meta_G
+ altgr alt shiftl ctrll keycode 34 = Meta_g
+ shift altgr alt shiftl ctrll keycode 34 = Meta_G
+ control alt shiftl ctrll keycode 34 = Meta_Control_g
+ shift control alt shiftl ctrll keycode 34 = Meta_Control_g
+ altgr control alt shiftl ctrll keycode 34 = Meta_Control_g
+ shift altgr control alt shiftl ctrll keycode 34 = Meta_Control_g
+ shiftr ctrll keycode 34 = +G
+ altgr shiftr ctrll keycode 34 = ENG
+ shift altgr shiftr ctrll keycode 34 = eng
+ control shiftr ctrll keycode 34 = Control_g
+ shift control shiftr ctrll keycode 34 = Control_g
+ altgr control shiftr ctrll keycode 34 = Control_g
+ shift altgr control shiftr ctrll keycode 34 = Control_g
+ alt shiftr ctrll keycode 34 = Meta_g
+ shift alt shiftr ctrll keycode 34 = Meta_G
+ altgr alt shiftr ctrll keycode 34 = Meta_g
+ shift altgr alt shiftr ctrll keycode 34 = Meta_G
+ control alt shiftr ctrll keycode 34 = Meta_Control_g
+ shift control alt shiftr ctrll keycode 34 = Meta_Control_g
+ altgr control alt shiftr ctrll keycode 34 = Meta_Control_g
+ shift altgr control alt shiftr ctrll keycode 34 = Meta_Control_g
+ shiftl shiftr ctrll keycode 34 = +G
+ altgr shiftl shiftr ctrll keycode 34 = ENG
+ shift altgr shiftl shiftr ctrll keycode 34 = eng
+ control shiftl shiftr ctrll keycode 34 = Control_g
+ shift control shiftl shiftr ctrll keycode 34 = Control_g
+ altgr control shiftl shiftr ctrll keycode 34 = Control_g
+ shift altgr control shiftl shiftr ctrll keycode 34 = Control_g
+ alt shiftl shiftr ctrll keycode 34 = Meta_g
+ shift alt shiftl shiftr ctrll keycode 34 = Meta_G
+ altgr alt shiftl shiftr ctrll keycode 34 = Meta_g
+ shift altgr alt shiftl shiftr ctrll keycode 34 = Meta_G
+ control alt shiftl shiftr ctrll keycode 34 = Meta_Control_g
+ shift control alt shiftl shiftr ctrll keycode 34 = Meta_Control_g
+ altgr control alt shiftl shiftr ctrll keycode 34 = Meta_Control_g
+ shift altgr control alt shiftl shiftr ctrll keycode 34 = Meta_Control_g
+keycode 35 = +h
+ shift keycode 35 = +H
+ altgr keycode 35 = hstroke
+ shift altgr keycode 35 = Hstroke
+ control keycode 35 = BackSpace
+ shift control keycode 35 = BackSpace
+ altgr control keycode 35 = BackSpace
+ shift altgr control keycode 35 = BackSpace
+ alt keycode 35 = Meta_h
+ shift alt keycode 35 = Meta_H
+ altgr alt keycode 35 = Meta_h
+ shift altgr alt keycode 35 = Meta_H
+ control alt keycode 35 = Meta_BackSpace
+ shift control alt keycode 35 = Meta_BackSpace
+ altgr control alt keycode 35 = Meta_BackSpace
+ shift altgr control alt keycode 35 = Meta_BackSpace
+ shift shiftl keycode 35 = +H
+ altgr shiftl keycode 35 = hstroke
+ shift altgr shiftl keycode 35 = Hstroke
+ control shiftl keycode 35 = BackSpace
+ shift control shiftl keycode 35 = BackSpace
+ altgr control shiftl keycode 35 = BackSpace
+ shift altgr control shiftl keycode 35 = BackSpace
+ alt shiftl keycode 35 = Meta_h
+ shift alt shiftl keycode 35 = Meta_H
+ altgr alt shiftl keycode 35 = Meta_h
+ shift altgr alt shiftl keycode 35 = Meta_H
+ control alt shiftl keycode 35 = Meta_BackSpace
+ shift control alt shiftl keycode 35 = Meta_BackSpace
+ altgr control alt shiftl keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftl keycode 35 = Meta_BackSpace
+ shift shiftr keycode 35 = +H
+ altgr shiftr keycode 35 = hstroke
+ shift altgr shiftr keycode 35 = Hstroke
+ control shiftr keycode 35 = BackSpace
+ shift control shiftr keycode 35 = BackSpace
+ altgr control shiftr keycode 35 = BackSpace
+ shift altgr control shiftr keycode 35 = BackSpace
+ alt shiftr keycode 35 = Meta_h
+ shift alt shiftr keycode 35 = Meta_H
+ altgr alt shiftr keycode 35 = Meta_h
+ shift altgr alt shiftr keycode 35 = Meta_H
+ control alt shiftr keycode 35 = Meta_BackSpace
+ shift control alt shiftr keycode 35 = Meta_BackSpace
+ altgr control alt shiftr keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftr keycode 35 = Meta_BackSpace
+ shift shiftl shiftr keycode 35 = +H
+ altgr shiftl shiftr keycode 35 = hstroke
+ shift altgr shiftl shiftr keycode 35 = Hstroke
+ control shiftl shiftr keycode 35 = BackSpace
+ shift control shiftl shiftr keycode 35 = BackSpace
+ altgr control shiftl shiftr keycode 35 = BackSpace
+ shift altgr control shiftl shiftr keycode 35 = BackSpace
+ alt shiftl shiftr keycode 35 = Meta_h
+ shift alt shiftl shiftr keycode 35 = Meta_H
+ altgr alt shiftl shiftr keycode 35 = Meta_h
+ shift altgr alt shiftl shiftr keycode 35 = Meta_H
+ control alt shiftl shiftr keycode 35 = Meta_BackSpace
+ shift control alt shiftl shiftr keycode 35 = Meta_BackSpace
+ altgr control alt shiftl shiftr keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftl shiftr keycode 35 = Meta_BackSpace
+ ctrll keycode 35 = +H
+ altgr ctrll keycode 35 = Hstroke
+ shift altgr ctrll keycode 35 = hstroke
+ control ctrll keycode 35 = BackSpace
+ shift control ctrll keycode 35 = BackSpace
+ altgr control ctrll keycode 35 = BackSpace
+ shift altgr control ctrll keycode 35 = BackSpace
+ alt ctrll keycode 35 = Meta_h
+ shift alt ctrll keycode 35 = Meta_H
+ altgr alt ctrll keycode 35 = Meta_h
+ shift altgr alt ctrll keycode 35 = Meta_H
+ control alt ctrll keycode 35 = Meta_BackSpace
+ shift control alt ctrll keycode 35 = Meta_BackSpace
+ altgr control alt ctrll keycode 35 = Meta_BackSpace
+ shift altgr control alt ctrll keycode 35 = Meta_BackSpace
+ shiftl ctrll keycode 35 = +H
+ altgr shiftl ctrll keycode 35 = Hstroke
+ shift altgr shiftl ctrll keycode 35 = hstroke
+ control shiftl ctrll keycode 35 = BackSpace
+ shift control shiftl ctrll keycode 35 = BackSpace
+ altgr control shiftl ctrll keycode 35 = BackSpace
+ shift altgr control shiftl ctrll keycode 35 = BackSpace
+ alt shiftl ctrll keycode 35 = Meta_h
+ shift alt shiftl ctrll keycode 35 = Meta_H
+ altgr alt shiftl ctrll keycode 35 = Meta_h
+ shift altgr alt shiftl ctrll keycode 35 = Meta_H
+ control alt shiftl ctrll keycode 35 = Meta_BackSpace
+ shift control alt shiftl ctrll keycode 35 = Meta_BackSpace
+ altgr control alt shiftl ctrll keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftl ctrll keycode 35 = Meta_BackSpace
+ shiftr ctrll keycode 35 = +H
+ altgr shiftr ctrll keycode 35 = Hstroke
+ shift altgr shiftr ctrll keycode 35 = hstroke
+ control shiftr ctrll keycode 35 = BackSpace
+ shift control shiftr ctrll keycode 35 = BackSpace
+ altgr control shiftr ctrll keycode 35 = BackSpace
+ shift altgr control shiftr ctrll keycode 35 = BackSpace
+ alt shiftr ctrll keycode 35 = Meta_h
+ shift alt shiftr ctrll keycode 35 = Meta_H
+ altgr alt shiftr ctrll keycode 35 = Meta_h
+ shift altgr alt shiftr ctrll keycode 35 = Meta_H
+ control alt shiftr ctrll keycode 35 = Meta_BackSpace
+ shift control alt shiftr ctrll keycode 35 = Meta_BackSpace
+ altgr control alt shiftr ctrll keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftr ctrll keycode 35 = Meta_BackSpace
+ shiftl shiftr ctrll keycode 35 = +H
+ altgr shiftl shiftr ctrll keycode 35 = Hstroke
+ shift altgr shiftl shiftr ctrll keycode 35 = hstroke
+ control shiftl shiftr ctrll keycode 35 = BackSpace
+ shift control shiftl shiftr ctrll keycode 35 = BackSpace
+ altgr control shiftl shiftr ctrll keycode 35 = BackSpace
+ shift altgr control shiftl shiftr ctrll keycode 35 = BackSpace
+ alt shiftl shiftr ctrll keycode 35 = Meta_h
+ shift alt shiftl shiftr ctrll keycode 35 = Meta_H
+ altgr alt shiftl shiftr ctrll keycode 35 = Meta_h
+ shift altgr alt shiftl shiftr ctrll keycode 35 = Meta_H
+ control alt shiftl shiftr ctrll keycode 35 = Meta_BackSpace
+ shift control alt shiftl shiftr ctrll keycode 35 = Meta_BackSpace
+ altgr control alt shiftl shiftr ctrll keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftl shiftr ctrll keycode 35 = Meta_BackSpace
+keycode 36 = +j
+ shift keycode 36 = +J
+ altgr keycode 36 = U+0309
+ shift altgr keycode 36 = U+031b
+ control keycode 36 = Linefeed
+ shift control keycode 36 = Linefeed
+ altgr control keycode 36 = Linefeed
+ shift altgr control keycode 36 = Linefeed
+ alt keycode 36 = Meta_j
+ shift alt keycode 36 = Meta_J
+ altgr alt keycode 36 = Meta_j
+ shift altgr alt keycode 36 = Meta_J
+ control alt keycode 36 = Meta_Linefeed
+ shift control alt keycode 36 = Meta_Linefeed
+ altgr control alt keycode 36 = Meta_Linefeed
+ shift altgr control alt keycode 36 = Meta_Linefeed
+ shift shiftl keycode 36 = +J
+ altgr shiftl keycode 36 = U+0309
+ shift altgr shiftl keycode 36 = U+031b
+ control shiftl keycode 36 = Linefeed
+ shift control shiftl keycode 36 = Linefeed
+ altgr control shiftl keycode 36 = Linefeed
+ shift altgr control shiftl keycode 36 = Linefeed
+ alt shiftl keycode 36 = Meta_j
+ shift alt shiftl keycode 36 = Meta_J
+ altgr alt shiftl keycode 36 = Meta_j
+ shift altgr alt shiftl keycode 36 = Meta_J
+ control alt shiftl keycode 36 = Meta_Linefeed
+ shift control alt shiftl keycode 36 = Meta_Linefeed
+ altgr control alt shiftl keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftl keycode 36 = Meta_Linefeed
+ shift shiftr keycode 36 = +J
+ altgr shiftr keycode 36 = U+0309
+ shift altgr shiftr keycode 36 = U+031b
+ control shiftr keycode 36 = Linefeed
+ shift control shiftr keycode 36 = Linefeed
+ altgr control shiftr keycode 36 = Linefeed
+ shift altgr control shiftr keycode 36 = Linefeed
+ alt shiftr keycode 36 = Meta_j
+ shift alt shiftr keycode 36 = Meta_J
+ altgr alt shiftr keycode 36 = Meta_j
+ shift altgr alt shiftr keycode 36 = Meta_J
+ control alt shiftr keycode 36 = Meta_Linefeed
+ shift control alt shiftr keycode 36 = Meta_Linefeed
+ altgr control alt shiftr keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftr keycode 36 = Meta_Linefeed
+ shift shiftl shiftr keycode 36 = +J
+ altgr shiftl shiftr keycode 36 = U+0309
+ shift altgr shiftl shiftr keycode 36 = U+031b
+ control shiftl shiftr keycode 36 = Linefeed
+ shift control shiftl shiftr keycode 36 = Linefeed
+ altgr control shiftl shiftr keycode 36 = Linefeed
+ shift altgr control shiftl shiftr keycode 36 = Linefeed
+ alt shiftl shiftr keycode 36 = Meta_j
+ shift alt shiftl shiftr keycode 36 = Meta_J
+ altgr alt shiftl shiftr keycode 36 = Meta_j
+ shift altgr alt shiftl shiftr keycode 36 = Meta_J
+ control alt shiftl shiftr keycode 36 = Meta_Linefeed
+ shift control alt shiftl shiftr keycode 36 = Meta_Linefeed
+ altgr control alt shiftl shiftr keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftl shiftr keycode 36 = Meta_Linefeed
+ ctrll keycode 36 = +J
+ altgr ctrll keycode 36 = U+0309
+ shift altgr ctrll keycode 36 = U+031b
+ control ctrll keycode 36 = Linefeed
+ shift control ctrll keycode 36 = Linefeed
+ altgr control ctrll keycode 36 = Linefeed
+ shift altgr control ctrll keycode 36 = Linefeed
+ alt ctrll keycode 36 = Meta_j
+ shift alt ctrll keycode 36 = Meta_J
+ altgr alt ctrll keycode 36 = Meta_j
+ shift altgr alt ctrll keycode 36 = Meta_J
+ control alt ctrll keycode 36 = Meta_Linefeed
+ shift control alt ctrll keycode 36 = Meta_Linefeed
+ altgr control alt ctrll keycode 36 = Meta_Linefeed
+ shift altgr control alt ctrll keycode 36 = Meta_Linefeed
+ shiftl ctrll keycode 36 = +J
+ altgr shiftl ctrll keycode 36 = U+0309
+ shift altgr shiftl ctrll keycode 36 = U+031b
+ control shiftl ctrll keycode 36 = Linefeed
+ shift control shiftl ctrll keycode 36 = Linefeed
+ altgr control shiftl ctrll keycode 36 = Linefeed
+ shift altgr control shiftl ctrll keycode 36 = Linefeed
+ alt shiftl ctrll keycode 36 = Meta_j
+ shift alt shiftl ctrll keycode 36 = Meta_J
+ altgr alt shiftl ctrll keycode 36 = Meta_j
+ shift altgr alt shiftl ctrll keycode 36 = Meta_J
+ control alt shiftl ctrll keycode 36 = Meta_Linefeed
+ shift control alt shiftl ctrll keycode 36 = Meta_Linefeed
+ altgr control alt shiftl ctrll keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftl ctrll keycode 36 = Meta_Linefeed
+ shiftr ctrll keycode 36 = +J
+ altgr shiftr ctrll keycode 36 = U+0309
+ shift altgr shiftr ctrll keycode 36 = U+031b
+ control shiftr ctrll keycode 36 = Linefeed
+ shift control shiftr ctrll keycode 36 = Linefeed
+ altgr control shiftr ctrll keycode 36 = Linefeed
+ shift altgr control shiftr ctrll keycode 36 = Linefeed
+ alt shiftr ctrll keycode 36 = Meta_j
+ shift alt shiftr ctrll keycode 36 = Meta_J
+ altgr alt shiftr ctrll keycode 36 = Meta_j
+ shift altgr alt shiftr ctrll keycode 36 = Meta_J
+ control alt shiftr ctrll keycode 36 = Meta_Linefeed
+ shift control alt shiftr ctrll keycode 36 = Meta_Linefeed
+ altgr control alt shiftr ctrll keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftr ctrll keycode 36 = Meta_Linefeed
+ shiftl shiftr ctrll keycode 36 = +J
+ altgr shiftl shiftr ctrll keycode 36 = U+0309
+ shift altgr shiftl shiftr ctrll keycode 36 = U+031b
+ control shiftl shiftr ctrll keycode 36 = Linefeed
+ shift control shiftl shiftr ctrll keycode 36 = Linefeed
+ altgr control shiftl shiftr ctrll keycode 36 = Linefeed
+ shift altgr control shiftl shiftr ctrll keycode 36 = Linefeed
+ alt shiftl shiftr ctrll keycode 36 = Meta_j
+ shift alt shiftl shiftr ctrll keycode 36 = Meta_J
+ altgr alt shiftl shiftr ctrll keycode 36 = Meta_j
+ shift altgr alt shiftl shiftr ctrll keycode 36 = Meta_J
+ control alt shiftl shiftr ctrll keycode 36 = Meta_Linefeed
+ shift control alt shiftl shiftr ctrll keycode 36 = Meta_Linefeed
+ altgr control alt shiftl shiftr ctrll keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftl shiftr ctrll keycode 36 = Meta_Linefeed
+keycode 37 = +k
+ shift keycode 37 = +K
+ altgr keycode 37 = kra
+ shift altgr keycode 37 = ampersand
+ control keycode 37 = Control_k
+ shift control keycode 37 = Control_k
+ altgr control keycode 37 = Control_k
+ shift altgr control keycode 37 = Control_k
+ alt keycode 37 = Meta_k
+ shift alt keycode 37 = Meta_K
+ altgr alt keycode 37 = Meta_k
+ shift altgr alt keycode 37 = Meta_ampersand
+ control alt keycode 37 = Meta_Control_k
+ shift control alt keycode 37 = Meta_Control_k
+ altgr control alt keycode 37 = Meta_Control_k
+ shift altgr control alt keycode 37 = Meta_Control_k
+ shift shiftl keycode 37 = +K
+ altgr shiftl keycode 37 = kra
+ shift altgr shiftl keycode 37 = ampersand
+ control shiftl keycode 37 = Control_k
+ shift control shiftl keycode 37 = Control_k
+ altgr control shiftl keycode 37 = Control_k
+ shift altgr control shiftl keycode 37 = Control_k
+ alt shiftl keycode 37 = Meta_k
+ shift alt shiftl keycode 37 = Meta_K
+ altgr alt shiftl keycode 37 = Meta_k
+ shift altgr alt shiftl keycode 37 = Meta_ampersand
+ control alt shiftl keycode 37 = Meta_Control_k
+ shift control alt shiftl keycode 37 = Meta_Control_k
+ altgr control alt shiftl keycode 37 = Meta_Control_k
+ shift altgr control alt shiftl keycode 37 = Meta_Control_k
+ shift shiftr keycode 37 = +K
+ altgr shiftr keycode 37 = kra
+ shift altgr shiftr keycode 37 = ampersand
+ control shiftr keycode 37 = Control_k
+ shift control shiftr keycode 37 = Control_k
+ altgr control shiftr keycode 37 = Control_k
+ shift altgr control shiftr keycode 37 = Control_k
+ alt shiftr keycode 37 = Meta_k
+ shift alt shiftr keycode 37 = Meta_K
+ altgr alt shiftr keycode 37 = Meta_k
+ shift altgr alt shiftr keycode 37 = Meta_ampersand
+ control alt shiftr keycode 37 = Meta_Control_k
+ shift control alt shiftr keycode 37 = Meta_Control_k
+ altgr control alt shiftr keycode 37 = Meta_Control_k
+ shift altgr control alt shiftr keycode 37 = Meta_Control_k
+ shift shiftl shiftr keycode 37 = +K
+ altgr shiftl shiftr keycode 37 = kra
+ shift altgr shiftl shiftr keycode 37 = ampersand
+ control shiftl shiftr keycode 37 = Control_k
+ shift control shiftl shiftr keycode 37 = Control_k
+ altgr control shiftl shiftr keycode 37 = Control_k
+ shift altgr control shiftl shiftr keycode 37 = Control_k
+ alt shiftl shiftr keycode 37 = Meta_k
+ shift alt shiftl shiftr keycode 37 = Meta_K
+ altgr alt shiftl shiftr keycode 37 = Meta_k
+ shift altgr alt shiftl shiftr keycode 37 = Meta_ampersand
+ control alt shiftl shiftr keycode 37 = Meta_Control_k
+ shift control alt shiftl shiftr keycode 37 = Meta_Control_k
+ altgr control alt shiftl shiftr keycode 37 = Meta_Control_k
+ shift altgr control alt shiftl shiftr keycode 37 = Meta_Control_k
+ ctrll keycode 37 = +K
+ altgr ctrll keycode 37 = kra
+ shift altgr ctrll keycode 37 = ampersand
+ control ctrll keycode 37 = Control_k
+ shift control ctrll keycode 37 = Control_k
+ altgr control ctrll keycode 37 = Control_k
+ shift altgr control ctrll keycode 37 = Control_k
+ alt ctrll keycode 37 = Meta_k
+ shift alt ctrll keycode 37 = Meta_K
+ altgr alt ctrll keycode 37 = Meta_k
+ shift altgr alt ctrll keycode 37 = Meta_ampersand
+ control alt ctrll keycode 37 = Meta_Control_k
+ shift control alt ctrll keycode 37 = Meta_Control_k
+ altgr control alt ctrll keycode 37 = Meta_Control_k
+ shift altgr control alt ctrll keycode 37 = Meta_Control_k
+ shiftl ctrll keycode 37 = +K
+ altgr shiftl ctrll keycode 37 = kra
+ shift altgr shiftl ctrll keycode 37 = ampersand
+ control shiftl ctrll keycode 37 = Control_k
+ shift control shiftl ctrll keycode 37 = Control_k
+ altgr control shiftl ctrll keycode 37 = Control_k
+ shift altgr control shiftl ctrll keycode 37 = Control_k
+ alt shiftl ctrll keycode 37 = Meta_k
+ shift alt shiftl ctrll keycode 37 = Meta_K
+ altgr alt shiftl ctrll keycode 37 = Meta_k
+ shift altgr alt shiftl ctrll keycode 37 = Meta_ampersand
+ control alt shiftl ctrll keycode 37 = Meta_Control_k
+ shift control alt shiftl ctrll keycode 37 = Meta_Control_k
+ altgr control alt shiftl ctrll keycode 37 = Meta_Control_k
+ shift altgr control alt shiftl ctrll keycode 37 = Meta_Control_k
+ shiftr ctrll keycode 37 = +K
+ altgr shiftr ctrll keycode 37 = kra
+ shift altgr shiftr ctrll keycode 37 = ampersand
+ control shiftr ctrll keycode 37 = Control_k
+ shift control shiftr ctrll keycode 37 = Control_k
+ altgr control shiftr ctrll keycode 37 = Control_k
+ shift altgr control shiftr ctrll keycode 37 = Control_k
+ alt shiftr ctrll keycode 37 = Meta_k
+ shift alt shiftr ctrll keycode 37 = Meta_K
+ altgr alt shiftr ctrll keycode 37 = Meta_k
+ shift altgr alt shiftr ctrll keycode 37 = Meta_ampersand
+ control alt shiftr ctrll keycode 37 = Meta_Control_k
+ shift control alt shiftr ctrll keycode 37 = Meta_Control_k
+ altgr control alt shiftr ctrll keycode 37 = Meta_Control_k
+ shift altgr control alt shiftr ctrll keycode 37 = Meta_Control_k
+ shiftl shiftr ctrll keycode 37 = +K
+ altgr shiftl shiftr ctrll keycode 37 = kra
+ shift altgr shiftl shiftr ctrll keycode 37 = ampersand
+ control shiftl shiftr ctrll keycode 37 = Control_k
+ shift control shiftl shiftr ctrll keycode 37 = Control_k
+ altgr control shiftl shiftr ctrll keycode 37 = Control_k
+ shift altgr control shiftl shiftr ctrll keycode 37 = Control_k
+ alt shiftl shiftr ctrll keycode 37 = Meta_k
+ shift alt shiftl shiftr ctrll keycode 37 = Meta_K
+ altgr alt shiftl shiftr ctrll keycode 37 = Meta_k
+ shift altgr alt shiftl shiftr ctrll keycode 37 = Meta_ampersand
+ control alt shiftl shiftr ctrll keycode 37 = Meta_Control_k
+ shift control alt shiftl shiftr ctrll keycode 37 = Meta_Control_k
+ altgr control alt shiftl shiftr ctrll keycode 37 = Meta_Control_k
+ shift altgr control alt shiftl shiftr ctrll keycode 37 = Meta_Control_k
+keycode 38 = +l
+ shift keycode 38 = +L
+ altgr keycode 38 = lstroke
+ shift altgr keycode 38 = Lstroke
+ control keycode 38 = Control_l
+ shift control keycode 38 = Control_l
+ altgr control keycode 38 = Control_l
+ shift altgr control keycode 38 = Control_l
+ alt keycode 38 = Meta_l
+ shift alt keycode 38 = Meta_L
+ altgr alt keycode 38 = Meta_l
+ shift altgr alt keycode 38 = Meta_L
+ control alt keycode 38 = Meta_Control_l
+ shift control alt keycode 38 = Meta_Control_l
+ altgr control alt keycode 38 = Meta_Control_l
+ shift altgr control alt keycode 38 = Meta_Control_l
+ shift shiftl keycode 38 = +L
+ altgr shiftl keycode 38 = lstroke
+ shift altgr shiftl keycode 38 = Lstroke
+ control shiftl keycode 38 = Control_l
+ shift control shiftl keycode 38 = Control_l
+ altgr control shiftl keycode 38 = Control_l
+ shift altgr control shiftl keycode 38 = Control_l
+ alt shiftl keycode 38 = Meta_l
+ shift alt shiftl keycode 38 = Meta_L
+ altgr alt shiftl keycode 38 = Meta_l
+ shift altgr alt shiftl keycode 38 = Meta_L
+ control alt shiftl keycode 38 = Meta_Control_l
+ shift control alt shiftl keycode 38 = Meta_Control_l
+ altgr control alt shiftl keycode 38 = Meta_Control_l
+ shift altgr control alt shiftl keycode 38 = Meta_Control_l
+ shift shiftr keycode 38 = +L
+ altgr shiftr keycode 38 = lstroke
+ shift altgr shiftr keycode 38 = Lstroke
+ control shiftr keycode 38 = Control_l
+ shift control shiftr keycode 38 = Control_l
+ altgr control shiftr keycode 38 = Control_l
+ shift altgr control shiftr keycode 38 = Control_l
+ alt shiftr keycode 38 = Meta_l
+ shift alt shiftr keycode 38 = Meta_L
+ altgr alt shiftr keycode 38 = Meta_l
+ shift altgr alt shiftr keycode 38 = Meta_L
+ control alt shiftr keycode 38 = Meta_Control_l
+ shift control alt shiftr keycode 38 = Meta_Control_l
+ altgr control alt shiftr keycode 38 = Meta_Control_l
+ shift altgr control alt shiftr keycode 38 = Meta_Control_l
+ shift shiftl shiftr keycode 38 = +L
+ altgr shiftl shiftr keycode 38 = lstroke
+ shift altgr shiftl shiftr keycode 38 = Lstroke
+ control shiftl shiftr keycode 38 = Control_l
+ shift control shiftl shiftr keycode 38 = Control_l
+ altgr control shiftl shiftr keycode 38 = Control_l
+ shift altgr control shiftl shiftr keycode 38 = Control_l
+ alt shiftl shiftr keycode 38 = Meta_l
+ shift alt shiftl shiftr keycode 38 = Meta_L
+ altgr alt shiftl shiftr keycode 38 = Meta_l
+ shift altgr alt shiftl shiftr keycode 38 = Meta_L
+ control alt shiftl shiftr keycode 38 = Meta_Control_l
+ shift control alt shiftl shiftr keycode 38 = Meta_Control_l
+ altgr control alt shiftl shiftr keycode 38 = Meta_Control_l
+ shift altgr control alt shiftl shiftr keycode 38 = Meta_Control_l
+ ctrll keycode 38 = +L
+ altgr ctrll keycode 38 = Lstroke
+ shift altgr ctrll keycode 38 = lstroke
+ control ctrll keycode 38 = Control_l
+ shift control ctrll keycode 38 = Control_l
+ altgr control ctrll keycode 38 = Control_l
+ shift altgr control ctrll keycode 38 = Control_l
+ alt ctrll keycode 38 = Meta_l
+ shift alt ctrll keycode 38 = Meta_L
+ altgr alt ctrll keycode 38 = Meta_l
+ shift altgr alt ctrll keycode 38 = Meta_L
+ control alt ctrll keycode 38 = Meta_Control_l
+ shift control alt ctrll keycode 38 = Meta_Control_l
+ altgr control alt ctrll keycode 38 = Meta_Control_l
+ shift altgr control alt ctrll keycode 38 = Meta_Control_l
+ shiftl ctrll keycode 38 = +L
+ altgr shiftl ctrll keycode 38 = Lstroke
+ shift altgr shiftl ctrll keycode 38 = lstroke
+ control shiftl ctrll keycode 38 = Control_l
+ shift control shiftl ctrll keycode 38 = Control_l
+ altgr control shiftl ctrll keycode 38 = Control_l
+ shift altgr control shiftl ctrll keycode 38 = Control_l
+ alt shiftl ctrll keycode 38 = Meta_l
+ shift alt shiftl ctrll keycode 38 = Meta_L
+ altgr alt shiftl ctrll keycode 38 = Meta_l
+ shift altgr alt shiftl ctrll keycode 38 = Meta_L
+ control alt shiftl ctrll keycode 38 = Meta_Control_l
+ shift control alt shiftl ctrll keycode 38 = Meta_Control_l
+ altgr control alt shiftl ctrll keycode 38 = Meta_Control_l
+ shift altgr control alt shiftl ctrll keycode 38 = Meta_Control_l
+ shiftr ctrll keycode 38 = +L
+ altgr shiftr ctrll keycode 38 = Lstroke
+ shift altgr shiftr ctrll keycode 38 = lstroke
+ control shiftr ctrll keycode 38 = Control_l
+ shift control shiftr ctrll keycode 38 = Control_l
+ altgr control shiftr ctrll keycode 38 = Control_l
+ shift altgr control shiftr ctrll keycode 38 = Control_l
+ alt shiftr ctrll keycode 38 = Meta_l
+ shift alt shiftr ctrll keycode 38 = Meta_L
+ altgr alt shiftr ctrll keycode 38 = Meta_l
+ shift altgr alt shiftr ctrll keycode 38 = Meta_L
+ control alt shiftr ctrll keycode 38 = Meta_Control_l
+ shift control alt shiftr ctrll keycode 38 = Meta_Control_l
+ altgr control alt shiftr ctrll keycode 38 = Meta_Control_l
+ shift altgr control alt shiftr ctrll keycode 38 = Meta_Control_l
+ shiftl shiftr ctrll keycode 38 = +L
+ altgr shiftl shiftr ctrll keycode 38 = Lstroke
+ shift altgr shiftl shiftr ctrll keycode 38 = lstroke
+ control shiftl shiftr ctrll keycode 38 = Control_l
+ shift control shiftl shiftr ctrll keycode 38 = Control_l
+ altgr control shiftl shiftr ctrll keycode 38 = Control_l
+ shift altgr control shiftl shiftr ctrll keycode 38 = Control_l
+ alt shiftl shiftr ctrll keycode 38 = Meta_l
+ shift alt shiftl shiftr ctrll keycode 38 = Meta_L
+ altgr alt shiftl shiftr ctrll keycode 38 = Meta_l
+ shift altgr alt shiftl shiftr ctrll keycode 38 = Meta_L
+ control alt shiftl shiftr ctrll keycode 38 = Meta_Control_l
+ shift control alt shiftl shiftr ctrll keycode 38 = Meta_Control_l
+ altgr control alt shiftl shiftr ctrll keycode 38 = Meta_Control_l
+ shift altgr control alt shiftl shiftr ctrll keycode 38 = Meta_Control_l
+keycode 39 = +ccedilla
+ shift keycode 39 = +Ccedilla
+ altgr keycode 39 = dead_acute
+ shift altgr keycode 39 = dead_tilde
+ control keycode 39 = dead_acute
+ shift control keycode 39 = dead_tilde
+ altgr control keycode 39 = dead_acute
+ shift altgr control keycode 39 = dead_tilde
+ alt keycode 39 = dead_acute
+ shift alt keycode 39 = dead_tilde
+ altgr alt keycode 39 = dead_acute
+ shift altgr alt keycode 39 = dead_tilde
+ control alt keycode 39 = dead_acute
+ shift control alt keycode 39 = dead_tilde
+ altgr control alt keycode 39 = dead_acute
+ shift altgr control alt keycode 39 = dead_tilde
+ shift shiftl keycode 39 = +Ccedilla
+ altgr shiftl keycode 39 = dead_acute
+ shift altgr shiftl keycode 39 = dead_tilde
+ control shiftl keycode 39 = dead_acute
+ shift control shiftl keycode 39 = dead_tilde
+ altgr control shiftl keycode 39 = dead_acute
+ shift altgr control shiftl keycode 39 = dead_tilde
+ alt shiftl keycode 39 = dead_acute
+ shift alt shiftl keycode 39 = dead_tilde
+ altgr alt shiftl keycode 39 = dead_acute
+ shift altgr alt shiftl keycode 39 = dead_tilde
+ control alt shiftl keycode 39 = dead_acute
+ shift control alt shiftl keycode 39 = dead_tilde
+ altgr control alt shiftl keycode 39 = dead_acute
+ shift altgr control alt shiftl keycode 39 = dead_tilde
+ shift shiftr keycode 39 = +Ccedilla
+ altgr shiftr keycode 39 = dead_acute
+ shift altgr shiftr keycode 39 = dead_tilde
+ control shiftr keycode 39 = dead_acute
+ shift control shiftr keycode 39 = dead_tilde
+ altgr control shiftr keycode 39 = dead_acute
+ shift altgr control shiftr keycode 39 = dead_tilde
+ alt shiftr keycode 39 = dead_acute
+ shift alt shiftr keycode 39 = dead_tilde
+ altgr alt shiftr keycode 39 = dead_acute
+ shift altgr alt shiftr keycode 39 = dead_tilde
+ control alt shiftr keycode 39 = dead_acute
+ shift control alt shiftr keycode 39 = dead_tilde
+ altgr control alt shiftr keycode 39 = dead_acute
+ shift altgr control alt shiftr keycode 39 = dead_tilde
+ shift shiftl shiftr keycode 39 = +Ccedilla
+ altgr shiftl shiftr keycode 39 = dead_acute
+ shift altgr shiftl shiftr keycode 39 = dead_tilde
+ control shiftl shiftr keycode 39 = dead_acute
+ shift control shiftl shiftr keycode 39 = dead_tilde
+ altgr control shiftl shiftr keycode 39 = dead_acute
+ shift altgr control shiftl shiftr keycode 39 = dead_tilde
+ alt shiftl shiftr keycode 39 = dead_acute
+ shift alt shiftl shiftr keycode 39 = dead_tilde
+ altgr alt shiftl shiftr keycode 39 = dead_acute
+ shift altgr alt shiftl shiftr keycode 39 = dead_tilde
+ control alt shiftl shiftr keycode 39 = dead_acute
+ shift control alt shiftl shiftr keycode 39 = dead_tilde
+ altgr control alt shiftl shiftr keycode 39 = dead_acute
+ shift altgr control alt shiftl shiftr keycode 39 = dead_tilde
+ ctrll keycode 39 = +Ccedilla
+ altgr ctrll keycode 39 = dead_acute
+ shift altgr ctrll keycode 39 = dead_tilde
+ control ctrll keycode 39 = dead_acute
+ shift control ctrll keycode 39 = dead_tilde
+ altgr control ctrll keycode 39 = dead_acute
+ shift altgr control ctrll keycode 39 = dead_tilde
+ alt ctrll keycode 39 = dead_acute
+ shift alt ctrll keycode 39 = dead_tilde
+ altgr alt ctrll keycode 39 = dead_acute
+ shift altgr alt ctrll keycode 39 = dead_tilde
+ control alt ctrll keycode 39 = dead_acute
+ shift control alt ctrll keycode 39 = dead_tilde
+ altgr control alt ctrll keycode 39 = dead_acute
+ shift altgr control alt ctrll keycode 39 = dead_tilde
+ shiftl ctrll keycode 39 = +Ccedilla
+ altgr shiftl ctrll keycode 39 = dead_acute
+ shift altgr shiftl ctrll keycode 39 = dead_tilde
+ control shiftl ctrll keycode 39 = dead_acute
+ shift control shiftl ctrll keycode 39 = dead_tilde
+ altgr control shiftl ctrll keycode 39 = dead_acute
+ shift altgr control shiftl ctrll keycode 39 = dead_tilde
+ alt shiftl ctrll keycode 39 = dead_acute
+ shift alt shiftl ctrll keycode 39 = dead_tilde
+ altgr alt shiftl ctrll keycode 39 = dead_acute
+ shift altgr alt shiftl ctrll keycode 39 = dead_tilde
+ control alt shiftl ctrll keycode 39 = dead_acute
+ shift control alt shiftl ctrll keycode 39 = dead_tilde
+ altgr control alt shiftl ctrll keycode 39 = dead_acute
+ shift altgr control alt shiftl ctrll keycode 39 = dead_tilde
+ shiftr ctrll keycode 39 = +Ccedilla
+ altgr shiftr ctrll keycode 39 = dead_acute
+ shift altgr shiftr ctrll keycode 39 = dead_tilde
+ control shiftr ctrll keycode 39 = dead_acute
+ shift control shiftr ctrll keycode 39 = dead_tilde
+ altgr control shiftr ctrll keycode 39 = dead_acute
+ shift altgr control shiftr ctrll keycode 39 = dead_tilde
+ alt shiftr ctrll keycode 39 = dead_acute
+ shift alt shiftr ctrll keycode 39 = dead_tilde
+ altgr alt shiftr ctrll keycode 39 = dead_acute
+ shift altgr alt shiftr ctrll keycode 39 = dead_tilde
+ control alt shiftr ctrll keycode 39 = dead_acute
+ shift control alt shiftr ctrll keycode 39 = dead_tilde
+ altgr control alt shiftr ctrll keycode 39 = dead_acute
+ shift altgr control alt shiftr ctrll keycode 39 = dead_tilde
+ shiftl shiftr ctrll keycode 39 = +Ccedilla
+ altgr shiftl shiftr ctrll keycode 39 = dead_acute
+ shift altgr shiftl shiftr ctrll keycode 39 = dead_tilde
+ control shiftl shiftr ctrll keycode 39 = dead_acute
+ shift control shiftl shiftr ctrll keycode 39 = dead_tilde
+ altgr control shiftl shiftr ctrll keycode 39 = dead_acute
+ shift altgr control shiftl shiftr ctrll keycode 39 = dead_tilde
+ alt shiftl shiftr ctrll keycode 39 = dead_acute
+ shift alt shiftl shiftr ctrll keycode 39 = dead_tilde
+ altgr alt shiftl shiftr ctrll keycode 39 = dead_acute
+ shift altgr alt shiftl shiftr ctrll keycode 39 = dead_tilde
+ control alt shiftl shiftr ctrll keycode 39 = dead_acute
+ shift control alt shiftl shiftr ctrll keycode 39 = dead_tilde
+ altgr control alt shiftl shiftr ctrll keycode 39 = dead_acute
+ shift altgr control alt shiftl shiftr ctrll keycode 39 = dead_tilde
+keycode 40 = dead_tilde
+ shift keycode 40 = dead_circumflex
+ altgr keycode 40 = asciitilde
+ shift altgr keycode 40 = asciicircum
+ shift control keycode 40 = dead_circumflex
+ shift altgr control keycode 40 = Control_asciicircum
+ shift alt keycode 40 = dead_circumflex
+ altgr alt keycode 40 = Meta_asciitilde
+ shift altgr alt keycode 40 = Meta_asciicircum
+ shift control alt keycode 40 = dead_circumflex
+ shift altgr control alt keycode 40 = Meta_Control_asciicircum
+ shift shiftl keycode 40 = dead_circumflex
+ altgr shiftl keycode 40 = asciitilde
+ shift altgr shiftl keycode 40 = asciicircum
+ shift control shiftl keycode 40 = dead_circumflex
+ shift altgr control shiftl keycode 40 = Control_asciicircum
+ shift alt shiftl keycode 40 = dead_circumflex
+ altgr alt shiftl keycode 40 = Meta_asciitilde
+ shift altgr alt shiftl keycode 40 = Meta_asciicircum
+ shift control alt shiftl keycode 40 = dead_circumflex
+ shift altgr control alt shiftl keycode 40 = Meta_Control_asciicircum
+ shift shiftr keycode 40 = dead_circumflex
+ altgr shiftr keycode 40 = asciitilde
+ shift altgr shiftr keycode 40 = asciicircum
+ shift control shiftr keycode 40 = dead_circumflex
+ shift altgr control shiftr keycode 40 = Control_asciicircum
+ shift alt shiftr keycode 40 = dead_circumflex
+ altgr alt shiftr keycode 40 = Meta_asciitilde
+ shift altgr alt shiftr keycode 40 = Meta_asciicircum
+ shift control alt shiftr keycode 40 = dead_circumflex
+ shift altgr control alt shiftr keycode 40 = Meta_Control_asciicircum
+ shift shiftl shiftr keycode 40 = dead_circumflex
+ altgr shiftl shiftr keycode 40 = asciitilde
+ shift altgr shiftl shiftr keycode 40 = asciicircum
+ shift control shiftl shiftr keycode 40 = dead_circumflex
+ shift altgr control shiftl shiftr keycode 40 = Control_asciicircum
+ shift alt shiftl shiftr keycode 40 = dead_circumflex
+ altgr alt shiftl shiftr keycode 40 = Meta_asciitilde
+ shift altgr alt shiftl shiftr keycode 40 = Meta_asciicircum
+ shift control alt shiftl shiftr keycode 40 = dead_circumflex
+ shift altgr control alt shiftl shiftr keycode 40 = Meta_Control_asciicircum
+ shift ctrll keycode 40 = dead_circumflex
+ altgr ctrll keycode 40 = asciitilde
+ shift altgr ctrll keycode 40 = asciicircum
+ shift control ctrll keycode 40 = dead_circumflex
+ shift altgr control ctrll keycode 40 = Control_asciicircum
+ shift alt ctrll keycode 40 = dead_circumflex
+ altgr alt ctrll keycode 40 = Meta_asciitilde
+ shift altgr alt ctrll keycode 40 = Meta_asciicircum
+ shift control alt ctrll keycode 40 = dead_circumflex
+ shift altgr control alt ctrll keycode 40 = Meta_Control_asciicircum
+ shift shiftl ctrll keycode 40 = dead_circumflex
+ altgr shiftl ctrll keycode 40 = asciitilde
+ shift altgr shiftl ctrll keycode 40 = asciicircum
+ shift control shiftl ctrll keycode 40 = dead_circumflex
+ shift altgr control shiftl ctrll keycode 40 = Control_asciicircum
+ shift alt shiftl ctrll keycode 40 = dead_circumflex
+ altgr alt shiftl ctrll keycode 40 = Meta_asciitilde
+ shift altgr alt shiftl ctrll keycode 40 = Meta_asciicircum
+ shift control alt shiftl ctrll keycode 40 = dead_circumflex
+ shift altgr control alt shiftl ctrll keycode 40 = Meta_Control_asciicircum
+ shift shiftr ctrll keycode 40 = dead_circumflex
+ altgr shiftr ctrll keycode 40 = asciitilde
+ shift altgr shiftr ctrll keycode 40 = asciicircum
+ shift control shiftr ctrll keycode 40 = dead_circumflex
+ shift altgr control shiftr ctrll keycode 40 = Control_asciicircum
+ shift alt shiftr ctrll keycode 40 = dead_circumflex
+ altgr alt shiftr ctrll keycode 40 = Meta_asciitilde
+ shift altgr alt shiftr ctrll keycode 40 = Meta_asciicircum
+ shift control alt shiftr ctrll keycode 40 = dead_circumflex
+ shift altgr control alt shiftr ctrll keycode 40 = Meta_Control_asciicircum
+ shift shiftl shiftr ctrll keycode 40 = dead_circumflex
+ altgr shiftl shiftr ctrll keycode 40 = asciitilde
+ shift altgr shiftl shiftr ctrll keycode 40 = asciicircum
+ shift control shiftl shiftr ctrll keycode 40 = dead_circumflex
+ shift altgr control shiftl shiftr ctrll keycode 40 = Control_asciicircum
+ shift alt shiftl shiftr ctrll keycode 40 = dead_circumflex
+ altgr alt shiftl shiftr ctrll keycode 40 = Meta_asciitilde
+ shift altgr alt shiftl shiftr ctrll keycode 40 = Meta_asciicircum
+ shift control alt shiftl shiftr ctrll keycode 40 = dead_circumflex
+ shift altgr control alt shiftl shiftr ctrll keycode 40 = Meta_Control_asciicircum
+keycode 41 = apostrophe
+ shift keycode 41 = quotedbl
+ altgr keycode 41 = notsign
+ shift altgr keycode 41 = notsign
+ control keycode 41 = Control_g
+ shift control keycode 41 = Control_g
+ altgr control keycode 41 = Control_g
+ shift altgr control keycode 41 = Control_g
+ alt keycode 41 = Meta_apostrophe
+ shift alt keycode 41 = Meta_quotedbl
+ altgr alt keycode 41 = Meta_apostrophe
+ shift altgr alt keycode 41 = Meta_quotedbl
+ control alt keycode 41 = Meta_Control_g
+ shift control alt keycode 41 = Meta_Control_g
+ altgr control alt keycode 41 = Meta_Control_g
+ shift altgr control alt keycode 41 = Meta_Control_g
+ shift shiftl keycode 41 = quotedbl
+ altgr shiftl keycode 41 = notsign
+ shift altgr shiftl keycode 41 = notsign
+ control shiftl keycode 41 = Control_g
+ shift control shiftl keycode 41 = Control_g
+ altgr control shiftl keycode 41 = Control_g
+ shift altgr control shiftl keycode 41 = Control_g
+ alt shiftl keycode 41 = Meta_apostrophe
+ shift alt shiftl keycode 41 = Meta_quotedbl
+ altgr alt shiftl keycode 41 = Meta_apostrophe
+ shift altgr alt shiftl keycode 41 = Meta_quotedbl
+ control alt shiftl keycode 41 = Meta_Control_g
+ shift control alt shiftl keycode 41 = Meta_Control_g
+ altgr control alt shiftl keycode 41 = Meta_Control_g
+ shift altgr control alt shiftl keycode 41 = Meta_Control_g
+ shift shiftr keycode 41 = quotedbl
+ altgr shiftr keycode 41 = notsign
+ shift altgr shiftr keycode 41 = notsign
+ control shiftr keycode 41 = Control_g
+ shift control shiftr keycode 41 = Control_g
+ altgr control shiftr keycode 41 = Control_g
+ shift altgr control shiftr keycode 41 = Control_g
+ alt shiftr keycode 41 = Meta_apostrophe
+ shift alt shiftr keycode 41 = Meta_quotedbl
+ altgr alt shiftr keycode 41 = Meta_apostrophe
+ shift altgr alt shiftr keycode 41 = Meta_quotedbl
+ control alt shiftr keycode 41 = Meta_Control_g
+ shift control alt shiftr keycode 41 = Meta_Control_g
+ altgr control alt shiftr keycode 41 = Meta_Control_g
+ shift altgr control alt shiftr keycode 41 = Meta_Control_g
+ shift shiftl shiftr keycode 41 = quotedbl
+ altgr shiftl shiftr keycode 41 = notsign
+ shift altgr shiftl shiftr keycode 41 = notsign
+ control shiftl shiftr keycode 41 = Control_g
+ shift control shiftl shiftr keycode 41 = Control_g
+ altgr control shiftl shiftr keycode 41 = Control_g
+ shift altgr control shiftl shiftr keycode 41 = Control_g
+ alt shiftl shiftr keycode 41 = Meta_apostrophe
+ shift alt shiftl shiftr keycode 41 = Meta_quotedbl
+ altgr alt shiftl shiftr keycode 41 = Meta_apostrophe
+ shift altgr alt shiftl shiftr keycode 41 = Meta_quotedbl
+ control alt shiftl shiftr keycode 41 = Meta_Control_g
+ shift control alt shiftl shiftr keycode 41 = Meta_Control_g
+ altgr control alt shiftl shiftr keycode 41 = Meta_Control_g
+ shift altgr control alt shiftl shiftr keycode 41 = Meta_Control_g
+ shift ctrll keycode 41 = quotedbl
+ altgr ctrll keycode 41 = notsign
+ shift altgr ctrll keycode 41 = notsign
+ control ctrll keycode 41 = Control_g
+ shift control ctrll keycode 41 = Control_g
+ altgr control ctrll keycode 41 = Control_g
+ shift altgr control ctrll keycode 41 = Control_g
+ alt ctrll keycode 41 = Meta_apostrophe
+ shift alt ctrll keycode 41 = Meta_quotedbl
+ altgr alt ctrll keycode 41 = Meta_apostrophe
+ shift altgr alt ctrll keycode 41 = Meta_quotedbl
+ control alt ctrll keycode 41 = Meta_Control_g
+ shift control alt ctrll keycode 41 = Meta_Control_g
+ altgr control alt ctrll keycode 41 = Meta_Control_g
+ shift altgr control alt ctrll keycode 41 = Meta_Control_g
+ shift shiftl ctrll keycode 41 = quotedbl
+ altgr shiftl ctrll keycode 41 = notsign
+ shift altgr shiftl ctrll keycode 41 = notsign
+ control shiftl ctrll keycode 41 = Control_g
+ shift control shiftl ctrll keycode 41 = Control_g
+ altgr control shiftl ctrll keycode 41 = Control_g
+ shift altgr control shiftl ctrll keycode 41 = Control_g
+ alt shiftl ctrll keycode 41 = Meta_apostrophe
+ shift alt shiftl ctrll keycode 41 = Meta_quotedbl
+ altgr alt shiftl ctrll keycode 41 = Meta_apostrophe
+ shift altgr alt shiftl ctrll keycode 41 = Meta_quotedbl
+ control alt shiftl ctrll keycode 41 = Meta_Control_g
+ shift control alt shiftl ctrll keycode 41 = Meta_Control_g
+ altgr control alt shiftl ctrll keycode 41 = Meta_Control_g
+ shift altgr control alt shiftl ctrll keycode 41 = Meta_Control_g
+ shift shiftr ctrll keycode 41 = quotedbl
+ altgr shiftr ctrll keycode 41 = notsign
+ shift altgr shiftr ctrll keycode 41 = notsign
+ control shiftr ctrll keycode 41 = Control_g
+ shift control shiftr ctrll keycode 41 = Control_g
+ altgr control shiftr ctrll keycode 41 = Control_g
+ shift altgr control shiftr ctrll keycode 41 = Control_g
+ alt shiftr ctrll keycode 41 = Meta_apostrophe
+ shift alt shiftr ctrll keycode 41 = Meta_quotedbl
+ altgr alt shiftr ctrll keycode 41 = Meta_apostrophe
+ shift altgr alt shiftr ctrll keycode 41 = Meta_quotedbl
+ control alt shiftr ctrll keycode 41 = Meta_Control_g
+ shift control alt shiftr ctrll keycode 41 = Meta_Control_g
+ altgr control alt shiftr ctrll keycode 41 = Meta_Control_g
+ shift altgr control alt shiftr ctrll keycode 41 = Meta_Control_g
+ shift shiftl shiftr ctrll keycode 41 = quotedbl
+ altgr shiftl shiftr ctrll keycode 41 = notsign
+ shift altgr shiftl shiftr ctrll keycode 41 = notsign
+ control shiftl shiftr ctrll keycode 41 = Control_g
+ shift control shiftl shiftr ctrll keycode 41 = Control_g
+ altgr control shiftl shiftr ctrll keycode 41 = Control_g
+ shift altgr control shiftl shiftr ctrll keycode 41 = Control_g
+ alt shiftl shiftr ctrll keycode 41 = Meta_apostrophe
+ shift alt shiftl shiftr ctrll keycode 41 = Meta_quotedbl
+ altgr alt shiftl shiftr ctrll keycode 41 = Meta_apostrophe
+ shift altgr alt shiftl shiftr ctrll keycode 41 = Meta_quotedbl
+ control alt shiftl shiftr ctrll keycode 41 = Meta_Control_g
+ shift control alt shiftl shiftr ctrll keycode 41 = Meta_Control_g
+ altgr control alt shiftl shiftr ctrll keycode 41 = Meta_Control_g
+ shift altgr control alt shiftl shiftr ctrll keycode 41 = Meta_Control_g
+keycode 42 = Shift
+keycode 43 = bracketright
+ shift keycode 43 = braceright
+ altgr keycode 43 = +masculine
+ shift altgr keycode 43 = +masculine
+ control keycode 43 = Control_bracketright
+ shift control keycode 43 = Control_bracketright
+ altgr control keycode 43 = Control_bracketright
+ shift altgr control keycode 43 = Control_bracketright
+ alt keycode 43 = Meta_bracketright
+ shift alt keycode 43 = Meta_braceright
+ altgr alt keycode 43 = Meta_bracketright
+ shift altgr alt keycode 43 = Meta_braceright
+ control alt keycode 43 = Meta_Control_bracketright
+ shift control alt keycode 43 = Meta_Control_bracketright
+ altgr control alt keycode 43 = Meta_Control_bracketright
+ shift altgr control alt keycode 43 = Meta_Control_bracketright
+ shift shiftl keycode 43 = braceright
+ altgr shiftl keycode 43 = +masculine
+ shift altgr shiftl keycode 43 = +masculine
+ control shiftl keycode 43 = Control_bracketright
+ shift control shiftl keycode 43 = Control_bracketright
+ altgr control shiftl keycode 43 = Control_bracketright
+ shift altgr control shiftl keycode 43 = Control_bracketright
+ alt shiftl keycode 43 = Meta_bracketright
+ shift alt shiftl keycode 43 = Meta_braceright
+ altgr alt shiftl keycode 43 = Meta_bracketright
+ shift altgr alt shiftl keycode 43 = Meta_braceright
+ control alt shiftl keycode 43 = Meta_Control_bracketright
+ shift control alt shiftl keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftl keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftl keycode 43 = Meta_Control_bracketright
+ shift shiftr keycode 43 = braceright
+ altgr shiftr keycode 43 = +masculine
+ shift altgr shiftr keycode 43 = +masculine
+ control shiftr keycode 43 = Control_bracketright
+ shift control shiftr keycode 43 = Control_bracketright
+ altgr control shiftr keycode 43 = Control_bracketright
+ shift altgr control shiftr keycode 43 = Control_bracketright
+ alt shiftr keycode 43 = Meta_bracketright
+ shift alt shiftr keycode 43 = Meta_braceright
+ altgr alt shiftr keycode 43 = Meta_bracketright
+ shift altgr alt shiftr keycode 43 = Meta_braceright
+ control alt shiftr keycode 43 = Meta_Control_bracketright
+ shift control alt shiftr keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftr keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftr keycode 43 = Meta_Control_bracketright
+ shift shiftl shiftr keycode 43 = braceright
+ altgr shiftl shiftr keycode 43 = +masculine
+ shift altgr shiftl shiftr keycode 43 = +masculine
+ control shiftl shiftr keycode 43 = Control_bracketright
+ shift control shiftl shiftr keycode 43 = Control_bracketright
+ altgr control shiftl shiftr keycode 43 = Control_bracketright
+ shift altgr control shiftl shiftr keycode 43 = Control_bracketright
+ alt shiftl shiftr keycode 43 = Meta_bracketright
+ shift alt shiftl shiftr keycode 43 = Meta_braceright
+ altgr alt shiftl shiftr keycode 43 = Meta_bracketright
+ shift altgr alt shiftl shiftr keycode 43 = Meta_braceright
+ control alt shiftl shiftr keycode 43 = Meta_Control_bracketright
+ shift control alt shiftl shiftr keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr keycode 43 = Meta_Control_bracketright
+ shift ctrll keycode 43 = braceright
+ altgr ctrll keycode 43 = +masculine
+ shift altgr ctrll keycode 43 = +masculine
+ control ctrll keycode 43 = Control_bracketright
+ shift control ctrll keycode 43 = Control_bracketright
+ altgr control ctrll keycode 43 = Control_bracketright
+ shift altgr control ctrll keycode 43 = Control_bracketright
+ alt ctrll keycode 43 = Meta_bracketright
+ shift alt ctrll keycode 43 = Meta_braceright
+ altgr alt ctrll keycode 43 = Meta_bracketright
+ shift altgr alt ctrll keycode 43 = Meta_braceright
+ control alt ctrll keycode 43 = Meta_Control_bracketright
+ shift control alt ctrll keycode 43 = Meta_Control_bracketright
+ altgr control alt ctrll keycode 43 = Meta_Control_bracketright
+ shift altgr control alt ctrll keycode 43 = Meta_Control_bracketright
+ shift shiftl ctrll keycode 43 = braceright
+ altgr shiftl ctrll keycode 43 = +masculine
+ shift altgr shiftl ctrll keycode 43 = +masculine
+ control shiftl ctrll keycode 43 = Control_bracketright
+ shift control shiftl ctrll keycode 43 = Control_bracketright
+ altgr control shiftl ctrll keycode 43 = Control_bracketright
+ shift altgr control shiftl ctrll keycode 43 = Control_bracketright
+ alt shiftl ctrll keycode 43 = Meta_bracketright
+ shift alt shiftl ctrll keycode 43 = Meta_braceright
+ altgr alt shiftl ctrll keycode 43 = Meta_bracketright
+ shift altgr alt shiftl ctrll keycode 43 = Meta_braceright
+ control alt shiftl ctrll keycode 43 = Meta_Control_bracketright
+ shift control alt shiftl ctrll keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftl ctrll keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftl ctrll keycode 43 = Meta_Control_bracketright
+ shift shiftr ctrll keycode 43 = braceright
+ altgr shiftr ctrll keycode 43 = +masculine
+ shift altgr shiftr ctrll keycode 43 = +masculine
+ control shiftr ctrll keycode 43 = Control_bracketright
+ shift control shiftr ctrll keycode 43 = Control_bracketright
+ altgr control shiftr ctrll keycode 43 = Control_bracketright
+ shift altgr control shiftr ctrll keycode 43 = Control_bracketright
+ alt shiftr ctrll keycode 43 = Meta_bracketright
+ shift alt shiftr ctrll keycode 43 = Meta_braceright
+ altgr alt shiftr ctrll keycode 43 = Meta_bracketright
+ shift altgr alt shiftr ctrll keycode 43 = Meta_braceright
+ control alt shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift control alt shiftr ctrll keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift shiftl shiftr ctrll keycode 43 = braceright
+ altgr shiftl shiftr ctrll keycode 43 = +masculine
+ shift altgr shiftl shiftr ctrll keycode 43 = +masculine
+ control shiftl shiftr ctrll keycode 43 = Control_bracketright
+ shift control shiftl shiftr ctrll keycode 43 = Control_bracketright
+ altgr control shiftl shiftr ctrll keycode 43 = Control_bracketright
+ shift altgr control shiftl shiftr ctrll keycode 43 = Control_bracketright
+ alt shiftl shiftr ctrll keycode 43 = Meta_bracketright
+ shift alt shiftl shiftr ctrll keycode 43 = Meta_braceright
+ altgr alt shiftl shiftr ctrll keycode 43 = Meta_bracketright
+ shift altgr alt shiftl shiftr ctrll keycode 43 = Meta_braceright
+ control alt shiftl shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift control alt shiftl shiftr ctrll keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr ctrll keycode 43 = Meta_Control_bracketright
+keycode 44 = +z
+ shift keycode 44 = +Z
+ altgr keycode 44 = guillemotleft
+ shift altgr keycode 44 = less
+ control keycode 44 = Control_z
+ shift control keycode 44 = Control_z
+ altgr control keycode 44 = Control_z
+ shift altgr control keycode 44 = Control_z
+ alt keycode 44 = Meta_z
+ shift alt keycode 44 = Meta_Z
+ altgr alt keycode 44 = Meta_z
+ shift altgr alt keycode 44 = Meta_less
+ control alt keycode 44 = Meta_Control_z
+ shift control alt keycode 44 = Meta_Control_z
+ altgr control alt keycode 44 = Meta_Control_z
+ shift altgr control alt keycode 44 = Meta_Control_z
+ shift shiftl keycode 44 = +Z
+ altgr shiftl keycode 44 = guillemotleft
+ shift altgr shiftl keycode 44 = less
+ control shiftl keycode 44 = Control_z
+ shift control shiftl keycode 44 = Control_z
+ altgr control shiftl keycode 44 = Control_z
+ shift altgr control shiftl keycode 44 = Control_z
+ alt shiftl keycode 44 = Meta_z
+ shift alt shiftl keycode 44 = Meta_Z
+ altgr alt shiftl keycode 44 = Meta_z
+ shift altgr alt shiftl keycode 44 = Meta_less
+ control alt shiftl keycode 44 = Meta_Control_z
+ shift control alt shiftl keycode 44 = Meta_Control_z
+ altgr control alt shiftl keycode 44 = Meta_Control_z
+ shift altgr control alt shiftl keycode 44 = Meta_Control_z
+ shift shiftr keycode 44 = +Z
+ altgr shiftr keycode 44 = guillemotleft
+ shift altgr shiftr keycode 44 = less
+ control shiftr keycode 44 = Control_z
+ shift control shiftr keycode 44 = Control_z
+ altgr control shiftr keycode 44 = Control_z
+ shift altgr control shiftr keycode 44 = Control_z
+ alt shiftr keycode 44 = Meta_z
+ shift alt shiftr keycode 44 = Meta_Z
+ altgr alt shiftr keycode 44 = Meta_z
+ shift altgr alt shiftr keycode 44 = Meta_less
+ control alt shiftr keycode 44 = Meta_Control_z
+ shift control alt shiftr keycode 44 = Meta_Control_z
+ altgr control alt shiftr keycode 44 = Meta_Control_z
+ shift altgr control alt shiftr keycode 44 = Meta_Control_z
+ shift shiftl shiftr keycode 44 = +Z
+ altgr shiftl shiftr keycode 44 = guillemotleft
+ shift altgr shiftl shiftr keycode 44 = less
+ control shiftl shiftr keycode 44 = Control_z
+ shift control shiftl shiftr keycode 44 = Control_z
+ altgr control shiftl shiftr keycode 44 = Control_z
+ shift altgr control shiftl shiftr keycode 44 = Control_z
+ alt shiftl shiftr keycode 44 = Meta_z
+ shift alt shiftl shiftr keycode 44 = Meta_Z
+ altgr alt shiftl shiftr keycode 44 = Meta_z
+ shift altgr alt shiftl shiftr keycode 44 = Meta_less
+ control alt shiftl shiftr keycode 44 = Meta_Control_z
+ shift control alt shiftl shiftr keycode 44 = Meta_Control_z
+ altgr control alt shiftl shiftr keycode 44 = Meta_Control_z
+ shift altgr control alt shiftl shiftr keycode 44 = Meta_Control_z
+ ctrll keycode 44 = +Z
+ altgr ctrll keycode 44 = guillemotleft
+ shift altgr ctrll keycode 44 = less
+ control ctrll keycode 44 = Control_z
+ shift control ctrll keycode 44 = Control_z
+ altgr control ctrll keycode 44 = Control_z
+ shift altgr control ctrll keycode 44 = Control_z
+ alt ctrll keycode 44 = Meta_z
+ shift alt ctrll keycode 44 = Meta_Z
+ altgr alt ctrll keycode 44 = Meta_z
+ shift altgr alt ctrll keycode 44 = Meta_less
+ control alt ctrll keycode 44 = Meta_Control_z
+ shift control alt ctrll keycode 44 = Meta_Control_z
+ altgr control alt ctrll keycode 44 = Meta_Control_z
+ shift altgr control alt ctrll keycode 44 = Meta_Control_z
+ shiftl ctrll keycode 44 = +Z
+ altgr shiftl ctrll keycode 44 = guillemotleft
+ shift altgr shiftl ctrll keycode 44 = less
+ control shiftl ctrll keycode 44 = Control_z
+ shift control shiftl ctrll keycode 44 = Control_z
+ altgr control shiftl ctrll keycode 44 = Control_z
+ shift altgr control shiftl ctrll keycode 44 = Control_z
+ alt shiftl ctrll keycode 44 = Meta_z
+ shift alt shiftl ctrll keycode 44 = Meta_Z
+ altgr alt shiftl ctrll keycode 44 = Meta_z
+ shift altgr alt shiftl ctrll keycode 44 = Meta_less
+ control alt shiftl ctrll keycode 44 = Meta_Control_z
+ shift control alt shiftl ctrll keycode 44 = Meta_Control_z
+ altgr control alt shiftl ctrll keycode 44 = Meta_Control_z
+ shift altgr control alt shiftl ctrll keycode 44 = Meta_Control_z
+ shiftr ctrll keycode 44 = +Z
+ altgr shiftr ctrll keycode 44 = guillemotleft
+ shift altgr shiftr ctrll keycode 44 = less
+ control shiftr ctrll keycode 44 = Control_z
+ shift control shiftr ctrll keycode 44 = Control_z
+ altgr control shiftr ctrll keycode 44 = Control_z
+ shift altgr control shiftr ctrll keycode 44 = Control_z
+ alt shiftr ctrll keycode 44 = Meta_z
+ shift alt shiftr ctrll keycode 44 = Meta_Z
+ altgr alt shiftr ctrll keycode 44 = Meta_z
+ shift altgr alt shiftr ctrll keycode 44 = Meta_less
+ control alt shiftr ctrll keycode 44 = Meta_Control_z
+ shift control alt shiftr ctrll keycode 44 = Meta_Control_z
+ altgr control alt shiftr ctrll keycode 44 = Meta_Control_z
+ shift altgr control alt shiftr ctrll keycode 44 = Meta_Control_z
+ shiftl shiftr ctrll keycode 44 = +Z
+ altgr shiftl shiftr ctrll keycode 44 = guillemotleft
+ shift altgr shiftl shiftr ctrll keycode 44 = less
+ control shiftl shiftr ctrll keycode 44 = Control_z
+ shift control shiftl shiftr ctrll keycode 44 = Control_z
+ altgr control shiftl shiftr ctrll keycode 44 = Control_z
+ shift altgr control shiftl shiftr ctrll keycode 44 = Control_z
+ alt shiftl shiftr ctrll keycode 44 = Meta_z
+ shift alt shiftl shiftr ctrll keycode 44 = Meta_Z
+ altgr alt shiftl shiftr ctrll keycode 44 = Meta_z
+ shift altgr alt shiftl shiftr ctrll keycode 44 = Meta_less
+ control alt shiftl shiftr ctrll keycode 44 = Meta_Control_z
+ shift control alt shiftl shiftr ctrll keycode 44 = Meta_Control_z
+ altgr control alt shiftl shiftr ctrll keycode 44 = Meta_Control_z
+ shift altgr control alt shiftl shiftr ctrll keycode 44 = Meta_Control_z
+keycode 45 = +x
+ shift keycode 45 = +X
+ altgr keycode 45 = guillemotright
+ shift altgr keycode 45 = greater
+ control keycode 45 = Control_x
+ shift control keycode 45 = Control_x
+ altgr control keycode 45 = Control_x
+ shift altgr control keycode 45 = Control_x
+ alt keycode 45 = Meta_x
+ shift alt keycode 45 = Meta_X
+ altgr alt keycode 45 = Meta_x
+ shift altgr alt keycode 45 = Meta_greater
+ control alt keycode 45 = Meta_Control_x
+ shift control alt keycode 45 = Meta_Control_x
+ altgr control alt keycode 45 = Meta_Control_x
+ shift altgr control alt keycode 45 = Meta_Control_x
+ shift shiftl keycode 45 = +X
+ altgr shiftl keycode 45 = guillemotright
+ shift altgr shiftl keycode 45 = greater
+ control shiftl keycode 45 = Control_x
+ shift control shiftl keycode 45 = Control_x
+ altgr control shiftl keycode 45 = Control_x
+ shift altgr control shiftl keycode 45 = Control_x
+ alt shiftl keycode 45 = Meta_x
+ shift alt shiftl keycode 45 = Meta_X
+ altgr alt shiftl keycode 45 = Meta_x
+ shift altgr alt shiftl keycode 45 = Meta_greater
+ control alt shiftl keycode 45 = Meta_Control_x
+ shift control alt shiftl keycode 45 = Meta_Control_x
+ altgr control alt shiftl keycode 45 = Meta_Control_x
+ shift altgr control alt shiftl keycode 45 = Meta_Control_x
+ shift shiftr keycode 45 = +X
+ altgr shiftr keycode 45 = guillemotright
+ shift altgr shiftr keycode 45 = greater
+ control shiftr keycode 45 = Control_x
+ shift control shiftr keycode 45 = Control_x
+ altgr control shiftr keycode 45 = Control_x
+ shift altgr control shiftr keycode 45 = Control_x
+ alt shiftr keycode 45 = Meta_x
+ shift alt shiftr keycode 45 = Meta_X
+ altgr alt shiftr keycode 45 = Meta_x
+ shift altgr alt shiftr keycode 45 = Meta_greater
+ control alt shiftr keycode 45 = Meta_Control_x
+ shift control alt shiftr keycode 45 = Meta_Control_x
+ altgr control alt shiftr keycode 45 = Meta_Control_x
+ shift altgr control alt shiftr keycode 45 = Meta_Control_x
+ shift shiftl shiftr keycode 45 = +X
+ altgr shiftl shiftr keycode 45 = guillemotright
+ shift altgr shiftl shiftr keycode 45 = greater
+ control shiftl shiftr keycode 45 = Control_x
+ shift control shiftl shiftr keycode 45 = Control_x
+ altgr control shiftl shiftr keycode 45 = Control_x
+ shift altgr control shiftl shiftr keycode 45 = Control_x
+ alt shiftl shiftr keycode 45 = Meta_x
+ shift alt shiftl shiftr keycode 45 = Meta_X
+ altgr alt shiftl shiftr keycode 45 = Meta_x
+ shift altgr alt shiftl shiftr keycode 45 = Meta_greater
+ control alt shiftl shiftr keycode 45 = Meta_Control_x
+ shift control alt shiftl shiftr keycode 45 = Meta_Control_x
+ altgr control alt shiftl shiftr keycode 45 = Meta_Control_x
+ shift altgr control alt shiftl shiftr keycode 45 = Meta_Control_x
+ ctrll keycode 45 = +X
+ altgr ctrll keycode 45 = guillemotright
+ shift altgr ctrll keycode 45 = greater
+ control ctrll keycode 45 = Control_x
+ shift control ctrll keycode 45 = Control_x
+ altgr control ctrll keycode 45 = Control_x
+ shift altgr control ctrll keycode 45 = Control_x
+ alt ctrll keycode 45 = Meta_x
+ shift alt ctrll keycode 45 = Meta_X
+ altgr alt ctrll keycode 45 = Meta_x
+ shift altgr alt ctrll keycode 45 = Meta_greater
+ control alt ctrll keycode 45 = Meta_Control_x
+ shift control alt ctrll keycode 45 = Meta_Control_x
+ altgr control alt ctrll keycode 45 = Meta_Control_x
+ shift altgr control alt ctrll keycode 45 = Meta_Control_x
+ shiftl ctrll keycode 45 = +X
+ altgr shiftl ctrll keycode 45 = guillemotright
+ shift altgr shiftl ctrll keycode 45 = greater
+ control shiftl ctrll keycode 45 = Control_x
+ shift control shiftl ctrll keycode 45 = Control_x
+ altgr control shiftl ctrll keycode 45 = Control_x
+ shift altgr control shiftl ctrll keycode 45 = Control_x
+ alt shiftl ctrll keycode 45 = Meta_x
+ shift alt shiftl ctrll keycode 45 = Meta_X
+ altgr alt shiftl ctrll keycode 45 = Meta_x
+ shift altgr alt shiftl ctrll keycode 45 = Meta_greater
+ control alt shiftl ctrll keycode 45 = Meta_Control_x
+ shift control alt shiftl ctrll keycode 45 = Meta_Control_x
+ altgr control alt shiftl ctrll keycode 45 = Meta_Control_x
+ shift altgr control alt shiftl ctrll keycode 45 = Meta_Control_x
+ shiftr ctrll keycode 45 = +X
+ altgr shiftr ctrll keycode 45 = guillemotright
+ shift altgr shiftr ctrll keycode 45 = greater
+ control shiftr ctrll keycode 45 = Control_x
+ shift control shiftr ctrll keycode 45 = Control_x
+ altgr control shiftr ctrll keycode 45 = Control_x
+ shift altgr control shiftr ctrll keycode 45 = Control_x
+ alt shiftr ctrll keycode 45 = Meta_x
+ shift alt shiftr ctrll keycode 45 = Meta_X
+ altgr alt shiftr ctrll keycode 45 = Meta_x
+ shift altgr alt shiftr ctrll keycode 45 = Meta_greater
+ control alt shiftr ctrll keycode 45 = Meta_Control_x
+ shift control alt shiftr ctrll keycode 45 = Meta_Control_x
+ altgr control alt shiftr ctrll keycode 45 = Meta_Control_x
+ shift altgr control alt shiftr ctrll keycode 45 = Meta_Control_x
+ shiftl shiftr ctrll keycode 45 = +X
+ altgr shiftl shiftr ctrll keycode 45 = guillemotright
+ shift altgr shiftl shiftr ctrll keycode 45 = greater
+ control shiftl shiftr ctrll keycode 45 = Control_x
+ shift control shiftl shiftr ctrll keycode 45 = Control_x
+ altgr control shiftl shiftr ctrll keycode 45 = Control_x
+ shift altgr control shiftl shiftr ctrll keycode 45 = Control_x
+ alt shiftl shiftr ctrll keycode 45 = Meta_x
+ shift alt shiftl shiftr ctrll keycode 45 = Meta_X
+ altgr alt shiftl shiftr ctrll keycode 45 = Meta_x
+ shift altgr alt shiftl shiftr ctrll keycode 45 = Meta_greater
+ control alt shiftl shiftr ctrll keycode 45 = Meta_Control_x
+ shift control alt shiftl shiftr ctrll keycode 45 = Meta_Control_x
+ altgr control alt shiftl shiftr ctrll keycode 45 = Meta_Control_x
+ shift altgr control alt shiftl shiftr ctrll keycode 45 = Meta_Control_x
+keycode 46 = +c
+ shift keycode 46 = +C
+ altgr keycode 46 = copyright
+ shift altgr keycode 46 = copyright
+ control keycode 46 = Control_c
+ shift control keycode 46 = Control_c
+ altgr control keycode 46 = Control_c
+ shift altgr control keycode 46 = Control_c
+ alt keycode 46 = Meta_c
+ shift alt keycode 46 = Meta_C
+ altgr alt keycode 46 = Meta_c
+ shift altgr alt keycode 46 = Meta_C
+ control alt keycode 46 = Meta_Control_c
+ shift control alt keycode 46 = Meta_Control_c
+ altgr control alt keycode 46 = Meta_Control_c
+ shift altgr control alt keycode 46 = Meta_Control_c
+ shift shiftl keycode 46 = +C
+ altgr shiftl keycode 46 = copyright
+ shift altgr shiftl keycode 46 = copyright
+ control shiftl keycode 46 = Control_c
+ shift control shiftl keycode 46 = Control_c
+ altgr control shiftl keycode 46 = Control_c
+ shift altgr control shiftl keycode 46 = Control_c
+ alt shiftl keycode 46 = Meta_c
+ shift alt shiftl keycode 46 = Meta_C
+ altgr alt shiftl keycode 46 = Meta_c
+ shift altgr alt shiftl keycode 46 = Meta_C
+ control alt shiftl keycode 46 = Meta_Control_c
+ shift control alt shiftl keycode 46 = Meta_Control_c
+ altgr control alt shiftl keycode 46 = Meta_Control_c
+ shift altgr control alt shiftl keycode 46 = Meta_Control_c
+ shift shiftr keycode 46 = +C
+ altgr shiftr keycode 46 = copyright
+ shift altgr shiftr keycode 46 = copyright
+ control shiftr keycode 46 = Control_c
+ shift control shiftr keycode 46 = Control_c
+ altgr control shiftr keycode 46 = Control_c
+ shift altgr control shiftr keycode 46 = Control_c
+ alt shiftr keycode 46 = Meta_c
+ shift alt shiftr keycode 46 = Meta_C
+ altgr alt shiftr keycode 46 = Meta_c
+ shift altgr alt shiftr keycode 46 = Meta_C
+ control alt shiftr keycode 46 = Meta_Control_c
+ shift control alt shiftr keycode 46 = Meta_Control_c
+ altgr control alt shiftr keycode 46 = Meta_Control_c
+ shift altgr control alt shiftr keycode 46 = Meta_Control_c
+ shift shiftl shiftr keycode 46 = +C
+ altgr shiftl shiftr keycode 46 = copyright
+ shift altgr shiftl shiftr keycode 46 = copyright
+ control shiftl shiftr keycode 46 = Control_c
+ shift control shiftl shiftr keycode 46 = Control_c
+ altgr control shiftl shiftr keycode 46 = Control_c
+ shift altgr control shiftl shiftr keycode 46 = Control_c
+ alt shiftl shiftr keycode 46 = Meta_c
+ shift alt shiftl shiftr keycode 46 = Meta_C
+ altgr alt shiftl shiftr keycode 46 = Meta_c
+ shift altgr alt shiftl shiftr keycode 46 = Meta_C
+ control alt shiftl shiftr keycode 46 = Meta_Control_c
+ shift control alt shiftl shiftr keycode 46 = Meta_Control_c
+ altgr control alt shiftl shiftr keycode 46 = Meta_Control_c
+ shift altgr control alt shiftl shiftr keycode 46 = Meta_Control_c
+ ctrll keycode 46 = +C
+ altgr ctrll keycode 46 = copyright
+ shift altgr ctrll keycode 46 = copyright
+ control ctrll keycode 46 = Control_c
+ shift control ctrll keycode 46 = Control_c
+ altgr control ctrll keycode 46 = Control_c
+ shift altgr control ctrll keycode 46 = Control_c
+ alt ctrll keycode 46 = Meta_c
+ shift alt ctrll keycode 46 = Meta_C
+ altgr alt ctrll keycode 46 = Meta_c
+ shift altgr alt ctrll keycode 46 = Meta_C
+ control alt ctrll keycode 46 = Meta_Control_c
+ shift control alt ctrll keycode 46 = Meta_Control_c
+ altgr control alt ctrll keycode 46 = Meta_Control_c
+ shift altgr control alt ctrll keycode 46 = Meta_Control_c
+ shiftl ctrll keycode 46 = +C
+ altgr shiftl ctrll keycode 46 = copyright
+ shift altgr shiftl ctrll keycode 46 = copyright
+ control shiftl ctrll keycode 46 = Control_c
+ shift control shiftl ctrll keycode 46 = Control_c
+ altgr control shiftl ctrll keycode 46 = Control_c
+ shift altgr control shiftl ctrll keycode 46 = Control_c
+ alt shiftl ctrll keycode 46 = Meta_c
+ shift alt shiftl ctrll keycode 46 = Meta_C
+ altgr alt shiftl ctrll keycode 46 = Meta_c
+ shift altgr alt shiftl ctrll keycode 46 = Meta_C
+ control alt shiftl ctrll keycode 46 = Meta_Control_c
+ shift control alt shiftl ctrll keycode 46 = Meta_Control_c
+ altgr control alt shiftl ctrll keycode 46 = Meta_Control_c
+ shift altgr control alt shiftl ctrll keycode 46 = Meta_Control_c
+ shiftr ctrll keycode 46 = +C
+ altgr shiftr ctrll keycode 46 = copyright
+ shift altgr shiftr ctrll keycode 46 = copyright
+ control shiftr ctrll keycode 46 = Control_c
+ shift control shiftr ctrll keycode 46 = Control_c
+ altgr control shiftr ctrll keycode 46 = Control_c
+ shift altgr control shiftr ctrll keycode 46 = Control_c
+ alt shiftr ctrll keycode 46 = Meta_c
+ shift alt shiftr ctrll keycode 46 = Meta_C
+ altgr alt shiftr ctrll keycode 46 = Meta_c
+ shift altgr alt shiftr ctrll keycode 46 = Meta_C
+ control alt shiftr ctrll keycode 46 = Meta_Control_c
+ shift control alt shiftr ctrll keycode 46 = Meta_Control_c
+ altgr control alt shiftr ctrll keycode 46 = Meta_Control_c
+ shift altgr control alt shiftr ctrll keycode 46 = Meta_Control_c
+ shiftl shiftr ctrll keycode 46 = +C
+ altgr shiftl shiftr ctrll keycode 46 = copyright
+ shift altgr shiftl shiftr ctrll keycode 46 = copyright
+ control shiftl shiftr ctrll keycode 46 = Control_c
+ shift control shiftl shiftr ctrll keycode 46 = Control_c
+ altgr control shiftl shiftr ctrll keycode 46 = Control_c
+ shift altgr control shiftl shiftr ctrll keycode 46 = Control_c
+ alt shiftl shiftr ctrll keycode 46 = Meta_c
+ shift alt shiftl shiftr ctrll keycode 46 = Meta_C
+ altgr alt shiftl shiftr ctrll keycode 46 = Meta_c
+ shift altgr alt shiftl shiftr ctrll keycode 46 = Meta_C
+ control alt shiftl shiftr ctrll keycode 46 = Meta_Control_c
+ shift control alt shiftl shiftr ctrll keycode 46 = Meta_Control_c
+ altgr control alt shiftl shiftr ctrll keycode 46 = Meta_Control_c
+ shift altgr control alt shiftl shiftr ctrll keycode 46 = Meta_Control_c
+keycode 47 = +v
+ shift keycode 47 = +V
+ altgr keycode 47 = U+201c
+ shift altgr keycode 47 = U+2018
+ control keycode 47 = Control_v
+ shift control keycode 47 = Control_v
+ altgr control keycode 47 = Control_v
+ shift altgr control keycode 47 = Control_v
+ alt keycode 47 = Meta_v
+ shift alt keycode 47 = Meta_V
+ altgr alt keycode 47 = Meta_v
+ shift altgr alt keycode 47 = Meta_V
+ control alt keycode 47 = Meta_Control_v
+ shift control alt keycode 47 = Meta_Control_v
+ altgr control alt keycode 47 = Meta_Control_v
+ shift altgr control alt keycode 47 = Meta_Control_v
+ shift shiftl keycode 47 = +V
+ altgr shiftl keycode 47 = U+201c
+ shift altgr shiftl keycode 47 = U+2018
+ control shiftl keycode 47 = Control_v
+ shift control shiftl keycode 47 = Control_v
+ altgr control shiftl keycode 47 = Control_v
+ shift altgr control shiftl keycode 47 = Control_v
+ alt shiftl keycode 47 = Meta_v
+ shift alt shiftl keycode 47 = Meta_V
+ altgr alt shiftl keycode 47 = Meta_v
+ shift altgr alt shiftl keycode 47 = Meta_V
+ control alt shiftl keycode 47 = Meta_Control_v
+ shift control alt shiftl keycode 47 = Meta_Control_v
+ altgr control alt shiftl keycode 47 = Meta_Control_v
+ shift altgr control alt shiftl keycode 47 = Meta_Control_v
+ shift shiftr keycode 47 = +V
+ altgr shiftr keycode 47 = U+201c
+ shift altgr shiftr keycode 47 = U+2018
+ control shiftr keycode 47 = Control_v
+ shift control shiftr keycode 47 = Control_v
+ altgr control shiftr keycode 47 = Control_v
+ shift altgr control shiftr keycode 47 = Control_v
+ alt shiftr keycode 47 = Meta_v
+ shift alt shiftr keycode 47 = Meta_V
+ altgr alt shiftr keycode 47 = Meta_v
+ shift altgr alt shiftr keycode 47 = Meta_V
+ control alt shiftr keycode 47 = Meta_Control_v
+ shift control alt shiftr keycode 47 = Meta_Control_v
+ altgr control alt shiftr keycode 47 = Meta_Control_v
+ shift altgr control alt shiftr keycode 47 = Meta_Control_v
+ shift shiftl shiftr keycode 47 = +V
+ altgr shiftl shiftr keycode 47 = U+201c
+ shift altgr shiftl shiftr keycode 47 = U+2018
+ control shiftl shiftr keycode 47 = Control_v
+ shift control shiftl shiftr keycode 47 = Control_v
+ altgr control shiftl shiftr keycode 47 = Control_v
+ shift altgr control shiftl shiftr keycode 47 = Control_v
+ alt shiftl shiftr keycode 47 = Meta_v
+ shift alt shiftl shiftr keycode 47 = Meta_V
+ altgr alt shiftl shiftr keycode 47 = Meta_v
+ shift altgr alt shiftl shiftr keycode 47 = Meta_V
+ control alt shiftl shiftr keycode 47 = Meta_Control_v
+ shift control alt shiftl shiftr keycode 47 = Meta_Control_v
+ altgr control alt shiftl shiftr keycode 47 = Meta_Control_v
+ shift altgr control alt shiftl shiftr keycode 47 = Meta_Control_v
+ ctrll keycode 47 = +V
+ altgr ctrll keycode 47 = U+201c
+ shift altgr ctrll keycode 47 = U+2018
+ control ctrll keycode 47 = Control_v
+ shift control ctrll keycode 47 = Control_v
+ altgr control ctrll keycode 47 = Control_v
+ shift altgr control ctrll keycode 47 = Control_v
+ alt ctrll keycode 47 = Meta_v
+ shift alt ctrll keycode 47 = Meta_V
+ altgr alt ctrll keycode 47 = Meta_v
+ shift altgr alt ctrll keycode 47 = Meta_V
+ control alt ctrll keycode 47 = Meta_Control_v
+ shift control alt ctrll keycode 47 = Meta_Control_v
+ altgr control alt ctrll keycode 47 = Meta_Control_v
+ shift altgr control alt ctrll keycode 47 = Meta_Control_v
+ shiftl ctrll keycode 47 = +V
+ altgr shiftl ctrll keycode 47 = U+201c
+ shift altgr shiftl ctrll keycode 47 = U+2018
+ control shiftl ctrll keycode 47 = Control_v
+ shift control shiftl ctrll keycode 47 = Control_v
+ altgr control shiftl ctrll keycode 47 = Control_v
+ shift altgr control shiftl ctrll keycode 47 = Control_v
+ alt shiftl ctrll keycode 47 = Meta_v
+ shift alt shiftl ctrll keycode 47 = Meta_V
+ altgr alt shiftl ctrll keycode 47 = Meta_v
+ shift altgr alt shiftl ctrll keycode 47 = Meta_V
+ control alt shiftl ctrll keycode 47 = Meta_Control_v
+ shift control alt shiftl ctrll keycode 47 = Meta_Control_v
+ altgr control alt shiftl ctrll keycode 47 = Meta_Control_v
+ shift altgr control alt shiftl ctrll keycode 47 = Meta_Control_v
+ shiftr ctrll keycode 47 = +V
+ altgr shiftr ctrll keycode 47 = U+201c
+ shift altgr shiftr ctrll keycode 47 = U+2018
+ control shiftr ctrll keycode 47 = Control_v
+ shift control shiftr ctrll keycode 47 = Control_v
+ altgr control shiftr ctrll keycode 47 = Control_v
+ shift altgr control shiftr ctrll keycode 47 = Control_v
+ alt shiftr ctrll keycode 47 = Meta_v
+ shift alt shiftr ctrll keycode 47 = Meta_V
+ altgr alt shiftr ctrll keycode 47 = Meta_v
+ shift altgr alt shiftr ctrll keycode 47 = Meta_V
+ control alt shiftr ctrll keycode 47 = Meta_Control_v
+ shift control alt shiftr ctrll keycode 47 = Meta_Control_v
+ altgr control alt shiftr ctrll keycode 47 = Meta_Control_v
+ shift altgr control alt shiftr ctrll keycode 47 = Meta_Control_v
+ shiftl shiftr ctrll keycode 47 = +V
+ altgr shiftl shiftr ctrll keycode 47 = U+201c
+ shift altgr shiftl shiftr ctrll keycode 47 = U+2018
+ control shiftl shiftr ctrll keycode 47 = Control_v
+ shift control shiftl shiftr ctrll keycode 47 = Control_v
+ altgr control shiftl shiftr ctrll keycode 47 = Control_v
+ shift altgr control shiftl shiftr ctrll keycode 47 = Control_v
+ alt shiftl shiftr ctrll keycode 47 = Meta_v
+ shift alt shiftl shiftr ctrll keycode 47 = Meta_V
+ altgr alt shiftl shiftr ctrll keycode 47 = Meta_v
+ shift altgr alt shiftl shiftr ctrll keycode 47 = Meta_V
+ control alt shiftl shiftr ctrll keycode 47 = Meta_Control_v
+ shift control alt shiftl shiftr ctrll keycode 47 = Meta_Control_v
+ altgr control alt shiftl shiftr ctrll keycode 47 = Meta_Control_v
+ shift altgr control alt shiftl shiftr ctrll keycode 47 = Meta_Control_v
+keycode 48 = +b
+ shift keycode 48 = +B
+ altgr keycode 48 = U+201d
+ shift altgr keycode 48 = U+2019
+ control keycode 48 = Control_b
+ shift control keycode 48 = Control_b
+ altgr control keycode 48 = Control_b
+ shift altgr control keycode 48 = Control_b
+ alt keycode 48 = Meta_b
+ shift alt keycode 48 = Meta_B
+ altgr alt keycode 48 = Meta_b
+ shift altgr alt keycode 48 = Meta_B
+ control alt keycode 48 = Meta_Control_b
+ shift control alt keycode 48 = Meta_Control_b
+ altgr control alt keycode 48 = Meta_Control_b
+ shift altgr control alt keycode 48 = Meta_Control_b
+ shift shiftl keycode 48 = +B
+ altgr shiftl keycode 48 = U+201d
+ shift altgr shiftl keycode 48 = U+2019
+ control shiftl keycode 48 = Control_b
+ shift control shiftl keycode 48 = Control_b
+ altgr control shiftl keycode 48 = Control_b
+ shift altgr control shiftl keycode 48 = Control_b
+ alt shiftl keycode 48 = Meta_b
+ shift alt shiftl keycode 48 = Meta_B
+ altgr alt shiftl keycode 48 = Meta_b
+ shift altgr alt shiftl keycode 48 = Meta_B
+ control alt shiftl keycode 48 = Meta_Control_b
+ shift control alt shiftl keycode 48 = Meta_Control_b
+ altgr control alt shiftl keycode 48 = Meta_Control_b
+ shift altgr control alt shiftl keycode 48 = Meta_Control_b
+ shift shiftr keycode 48 = +B
+ altgr shiftr keycode 48 = U+201d
+ shift altgr shiftr keycode 48 = U+2019
+ control shiftr keycode 48 = Control_b
+ shift control shiftr keycode 48 = Control_b
+ altgr control shiftr keycode 48 = Control_b
+ shift altgr control shiftr keycode 48 = Control_b
+ alt shiftr keycode 48 = Meta_b
+ shift alt shiftr keycode 48 = Meta_B
+ altgr alt shiftr keycode 48 = Meta_b
+ shift altgr alt shiftr keycode 48 = Meta_B
+ control alt shiftr keycode 48 = Meta_Control_b
+ shift control alt shiftr keycode 48 = Meta_Control_b
+ altgr control alt shiftr keycode 48 = Meta_Control_b
+ shift altgr control alt shiftr keycode 48 = Meta_Control_b
+ shift shiftl shiftr keycode 48 = +B
+ altgr shiftl shiftr keycode 48 = U+201d
+ shift altgr shiftl shiftr keycode 48 = U+2019
+ control shiftl shiftr keycode 48 = Control_b
+ shift control shiftl shiftr keycode 48 = Control_b
+ altgr control shiftl shiftr keycode 48 = Control_b
+ shift altgr control shiftl shiftr keycode 48 = Control_b
+ alt shiftl shiftr keycode 48 = Meta_b
+ shift alt shiftl shiftr keycode 48 = Meta_B
+ altgr alt shiftl shiftr keycode 48 = Meta_b
+ shift altgr alt shiftl shiftr keycode 48 = Meta_B
+ control alt shiftl shiftr keycode 48 = Meta_Control_b
+ shift control alt shiftl shiftr keycode 48 = Meta_Control_b
+ altgr control alt shiftl shiftr keycode 48 = Meta_Control_b
+ shift altgr control alt shiftl shiftr keycode 48 = Meta_Control_b
+ ctrll keycode 48 = +B
+ altgr ctrll keycode 48 = U+201d
+ shift altgr ctrll keycode 48 = U+2019
+ control ctrll keycode 48 = Control_b
+ shift control ctrll keycode 48 = Control_b
+ altgr control ctrll keycode 48 = Control_b
+ shift altgr control ctrll keycode 48 = Control_b
+ alt ctrll keycode 48 = Meta_b
+ shift alt ctrll keycode 48 = Meta_B
+ altgr alt ctrll keycode 48 = Meta_b
+ shift altgr alt ctrll keycode 48 = Meta_B
+ control alt ctrll keycode 48 = Meta_Control_b
+ shift control alt ctrll keycode 48 = Meta_Control_b
+ altgr control alt ctrll keycode 48 = Meta_Control_b
+ shift altgr control alt ctrll keycode 48 = Meta_Control_b
+ shiftl ctrll keycode 48 = +B
+ altgr shiftl ctrll keycode 48 = U+201d
+ shift altgr shiftl ctrll keycode 48 = U+2019
+ control shiftl ctrll keycode 48 = Control_b
+ shift control shiftl ctrll keycode 48 = Control_b
+ altgr control shiftl ctrll keycode 48 = Control_b
+ shift altgr control shiftl ctrll keycode 48 = Control_b
+ alt shiftl ctrll keycode 48 = Meta_b
+ shift alt shiftl ctrll keycode 48 = Meta_B
+ altgr alt shiftl ctrll keycode 48 = Meta_b
+ shift altgr alt shiftl ctrll keycode 48 = Meta_B
+ control alt shiftl ctrll keycode 48 = Meta_Control_b
+ shift control alt shiftl ctrll keycode 48 = Meta_Control_b
+ altgr control alt shiftl ctrll keycode 48 = Meta_Control_b
+ shift altgr control alt shiftl ctrll keycode 48 = Meta_Control_b
+ shiftr ctrll keycode 48 = +B
+ altgr shiftr ctrll keycode 48 = U+201d
+ shift altgr shiftr ctrll keycode 48 = U+2019
+ control shiftr ctrll keycode 48 = Control_b
+ shift control shiftr ctrll keycode 48 = Control_b
+ altgr control shiftr ctrll keycode 48 = Control_b
+ shift altgr control shiftr ctrll keycode 48 = Control_b
+ alt shiftr ctrll keycode 48 = Meta_b
+ shift alt shiftr ctrll keycode 48 = Meta_B
+ altgr alt shiftr ctrll keycode 48 = Meta_b
+ shift altgr alt shiftr ctrll keycode 48 = Meta_B
+ control alt shiftr ctrll keycode 48 = Meta_Control_b
+ shift control alt shiftr ctrll keycode 48 = Meta_Control_b
+ altgr control alt shiftr ctrll keycode 48 = Meta_Control_b
+ shift altgr control alt shiftr ctrll keycode 48 = Meta_Control_b
+ shiftl shiftr ctrll keycode 48 = +B
+ altgr shiftl shiftr ctrll keycode 48 = U+201d
+ shift altgr shiftl shiftr ctrll keycode 48 = U+2019
+ control shiftl shiftr ctrll keycode 48 = Control_b
+ shift control shiftl shiftr ctrll keycode 48 = Control_b
+ altgr control shiftl shiftr ctrll keycode 48 = Control_b
+ shift altgr control shiftl shiftr ctrll keycode 48 = Control_b
+ alt shiftl shiftr ctrll keycode 48 = Meta_b
+ shift alt shiftl shiftr ctrll keycode 48 = Meta_B
+ altgr alt shiftl shiftr ctrll keycode 48 = Meta_b
+ shift altgr alt shiftl shiftr ctrll keycode 48 = Meta_B
+ control alt shiftl shiftr ctrll keycode 48 = Meta_Control_b
+ shift control alt shiftl shiftr ctrll keycode 48 = Meta_Control_b
+ altgr control alt shiftl shiftr ctrll keycode 48 = Meta_Control_b
+ shift altgr control alt shiftl shiftr ctrll keycode 48 = Meta_Control_b
+keycode 49 = +n
+ shift keycode 49 = +N
+ shift altgr keycode 49 = +N
+ control keycode 49 = Control_n
+ shift control keycode 49 = Control_n
+ altgr control keycode 49 = Control_n
+ shift altgr control keycode 49 = Control_n
+ alt keycode 49 = Meta_n
+ shift alt keycode 49 = Meta_N
+ altgr alt keycode 49 = Meta_n
+ shift altgr alt keycode 49 = Meta_N
+ control alt keycode 49 = Meta_Control_n
+ shift control alt keycode 49 = Meta_Control_n
+ altgr control alt keycode 49 = Meta_Control_n
+ shift altgr control alt keycode 49 = Meta_Control_n
+ shift shiftl keycode 49 = +N
+ shift altgr shiftl keycode 49 = +N
+ control shiftl keycode 49 = Control_n
+ shift control shiftl keycode 49 = Control_n
+ altgr control shiftl keycode 49 = Control_n
+ shift altgr control shiftl keycode 49 = Control_n
+ alt shiftl keycode 49 = Meta_n
+ shift alt shiftl keycode 49 = Meta_N
+ altgr alt shiftl keycode 49 = Meta_n
+ shift altgr alt shiftl keycode 49 = Meta_N
+ control alt shiftl keycode 49 = Meta_Control_n
+ shift control alt shiftl keycode 49 = Meta_Control_n
+ altgr control alt shiftl keycode 49 = Meta_Control_n
+ shift altgr control alt shiftl keycode 49 = Meta_Control_n
+ shift shiftr keycode 49 = +N
+ shift altgr shiftr keycode 49 = +N
+ control shiftr keycode 49 = Control_n
+ shift control shiftr keycode 49 = Control_n
+ altgr control shiftr keycode 49 = Control_n
+ shift altgr control shiftr keycode 49 = Control_n
+ alt shiftr keycode 49 = Meta_n
+ shift alt shiftr keycode 49 = Meta_N
+ altgr alt shiftr keycode 49 = Meta_n
+ shift altgr alt shiftr keycode 49 = Meta_N
+ control alt shiftr keycode 49 = Meta_Control_n
+ shift control alt shiftr keycode 49 = Meta_Control_n
+ altgr control alt shiftr keycode 49 = Meta_Control_n
+ shift altgr control alt shiftr keycode 49 = Meta_Control_n
+ shift shiftl shiftr keycode 49 = +N
+ shift altgr shiftl shiftr keycode 49 = +N
+ control shiftl shiftr keycode 49 = Control_n
+ shift control shiftl shiftr keycode 49 = Control_n
+ altgr control shiftl shiftr keycode 49 = Control_n
+ shift altgr control shiftl shiftr keycode 49 = Control_n
+ alt shiftl shiftr keycode 49 = Meta_n
+ shift alt shiftl shiftr keycode 49 = Meta_N
+ altgr alt shiftl shiftr keycode 49 = Meta_n
+ shift altgr alt shiftl shiftr keycode 49 = Meta_N
+ control alt shiftl shiftr keycode 49 = Meta_Control_n
+ shift control alt shiftl shiftr keycode 49 = Meta_Control_n
+ altgr control alt shiftl shiftr keycode 49 = Meta_Control_n
+ shift altgr control alt shiftl shiftr keycode 49 = Meta_Control_n
+ ctrll keycode 49 = +N
+ altgr ctrll keycode 49 = +N
+ control ctrll keycode 49 = Control_n
+ shift control ctrll keycode 49 = Control_n
+ altgr control ctrll keycode 49 = Control_n
+ shift altgr control ctrll keycode 49 = Control_n
+ alt ctrll keycode 49 = Meta_n
+ shift alt ctrll keycode 49 = Meta_N
+ altgr alt ctrll keycode 49 = Meta_n
+ shift altgr alt ctrll keycode 49 = Meta_N
+ control alt ctrll keycode 49 = Meta_Control_n
+ shift control alt ctrll keycode 49 = Meta_Control_n
+ altgr control alt ctrll keycode 49 = Meta_Control_n
+ shift altgr control alt ctrll keycode 49 = Meta_Control_n
+ shiftl ctrll keycode 49 = +N
+ altgr shiftl ctrll keycode 49 = +N
+ control shiftl ctrll keycode 49 = Control_n
+ shift control shiftl ctrll keycode 49 = Control_n
+ altgr control shiftl ctrll keycode 49 = Control_n
+ shift altgr control shiftl ctrll keycode 49 = Control_n
+ alt shiftl ctrll keycode 49 = Meta_n
+ shift alt shiftl ctrll keycode 49 = Meta_N
+ altgr alt shiftl ctrll keycode 49 = Meta_n
+ shift altgr alt shiftl ctrll keycode 49 = Meta_N
+ control alt shiftl ctrll keycode 49 = Meta_Control_n
+ shift control alt shiftl ctrll keycode 49 = Meta_Control_n
+ altgr control alt shiftl ctrll keycode 49 = Meta_Control_n
+ shift altgr control alt shiftl ctrll keycode 49 = Meta_Control_n
+ shiftr ctrll keycode 49 = +N
+ altgr shiftr ctrll keycode 49 = +N
+ control shiftr ctrll keycode 49 = Control_n
+ shift control shiftr ctrll keycode 49 = Control_n
+ altgr control shiftr ctrll keycode 49 = Control_n
+ shift altgr control shiftr ctrll keycode 49 = Control_n
+ alt shiftr ctrll keycode 49 = Meta_n
+ shift alt shiftr ctrll keycode 49 = Meta_N
+ altgr alt shiftr ctrll keycode 49 = Meta_n
+ shift altgr alt shiftr ctrll keycode 49 = Meta_N
+ control alt shiftr ctrll keycode 49 = Meta_Control_n
+ shift control alt shiftr ctrll keycode 49 = Meta_Control_n
+ altgr control alt shiftr ctrll keycode 49 = Meta_Control_n
+ shift altgr control alt shiftr ctrll keycode 49 = Meta_Control_n
+ shiftl shiftr ctrll keycode 49 = +N
+ altgr shiftl shiftr ctrll keycode 49 = +N
+ control shiftl shiftr ctrll keycode 49 = Control_n
+ shift control shiftl shiftr ctrll keycode 49 = Control_n
+ altgr control shiftl shiftr ctrll keycode 49 = Control_n
+ shift altgr control shiftl shiftr ctrll keycode 49 = Control_n
+ alt shiftl shiftr ctrll keycode 49 = Meta_n
+ shift alt shiftl shiftr ctrll keycode 49 = Meta_N
+ altgr alt shiftl shiftr ctrll keycode 49 = Meta_n
+ shift altgr alt shiftl shiftr ctrll keycode 49 = Meta_N
+ control alt shiftl shiftr ctrll keycode 49 = Meta_Control_n
+ shift control alt shiftl shiftr ctrll keycode 49 = Meta_Control_n
+ altgr control alt shiftl shiftr ctrll keycode 49 = Meta_Control_n
+ shift altgr control alt shiftl shiftr ctrll keycode 49 = Meta_Control_n
+keycode 50 = +m
+ shift keycode 50 = +M
+ altgr keycode 50 = +mu
+ shift altgr keycode 50 = +mu
+ control keycode 50 = Control_m
+ shift control keycode 50 = Control_m
+ altgr control keycode 50 = Control_m
+ shift altgr control keycode 50 = Control_m
+ alt keycode 50 = Meta_m
+ shift alt keycode 50 = Meta_M
+ altgr alt keycode 50 = Meta_m
+ shift altgr alt keycode 50 = Meta_M
+ control alt keycode 50 = Meta_Control_m
+ shift control alt keycode 50 = Meta_Control_m
+ altgr control alt keycode 50 = Meta_Control_m
+ shift altgr control alt keycode 50 = Meta_Control_m
+ shift shiftl keycode 50 = +M
+ altgr shiftl keycode 50 = +mu
+ shift altgr shiftl keycode 50 = +mu
+ control shiftl keycode 50 = Control_m
+ shift control shiftl keycode 50 = Control_m
+ altgr control shiftl keycode 50 = Control_m
+ shift altgr control shiftl keycode 50 = Control_m
+ alt shiftl keycode 50 = Meta_m
+ shift alt shiftl keycode 50 = Meta_M
+ altgr alt shiftl keycode 50 = Meta_m
+ shift altgr alt shiftl keycode 50 = Meta_M
+ control alt shiftl keycode 50 = Meta_Control_m
+ shift control alt shiftl keycode 50 = Meta_Control_m
+ altgr control alt shiftl keycode 50 = Meta_Control_m
+ shift altgr control alt shiftl keycode 50 = Meta_Control_m
+ shift shiftr keycode 50 = +M
+ altgr shiftr keycode 50 = +mu
+ shift altgr shiftr keycode 50 = +mu
+ control shiftr keycode 50 = Control_m
+ shift control shiftr keycode 50 = Control_m
+ altgr control shiftr keycode 50 = Control_m
+ shift altgr control shiftr keycode 50 = Control_m
+ alt shiftr keycode 50 = Meta_m
+ shift alt shiftr keycode 50 = Meta_M
+ altgr alt shiftr keycode 50 = Meta_m
+ shift altgr alt shiftr keycode 50 = Meta_M
+ control alt shiftr keycode 50 = Meta_Control_m
+ shift control alt shiftr keycode 50 = Meta_Control_m
+ altgr control alt shiftr keycode 50 = Meta_Control_m
+ shift altgr control alt shiftr keycode 50 = Meta_Control_m
+ shift shiftl shiftr keycode 50 = +M
+ altgr shiftl shiftr keycode 50 = +mu
+ shift altgr shiftl shiftr keycode 50 = +mu
+ control shiftl shiftr keycode 50 = Control_m
+ shift control shiftl shiftr keycode 50 = Control_m
+ altgr control shiftl shiftr keycode 50 = Control_m
+ shift altgr control shiftl shiftr keycode 50 = Control_m
+ alt shiftl shiftr keycode 50 = Meta_m
+ shift alt shiftl shiftr keycode 50 = Meta_M
+ altgr alt shiftl shiftr keycode 50 = Meta_m
+ shift altgr alt shiftl shiftr keycode 50 = Meta_M
+ control alt shiftl shiftr keycode 50 = Meta_Control_m
+ shift control alt shiftl shiftr keycode 50 = Meta_Control_m
+ altgr control alt shiftl shiftr keycode 50 = Meta_Control_m
+ shift altgr control alt shiftl shiftr keycode 50 = Meta_Control_m
+ ctrll keycode 50 = +M
+ altgr ctrll keycode 50 = Mu
+ shift altgr ctrll keycode 50 = Mu
+ control ctrll keycode 50 = Control_m
+ shift control ctrll keycode 50 = Control_m
+ altgr control ctrll keycode 50 = Control_m
+ shift altgr control ctrll keycode 50 = Control_m
+ alt ctrll keycode 50 = Meta_m
+ shift alt ctrll keycode 50 = Meta_M
+ altgr alt ctrll keycode 50 = Meta_m
+ shift altgr alt ctrll keycode 50 = Meta_M
+ control alt ctrll keycode 50 = Meta_Control_m
+ shift control alt ctrll keycode 50 = Meta_Control_m
+ altgr control alt ctrll keycode 50 = Meta_Control_m
+ shift altgr control alt ctrll keycode 50 = Meta_Control_m
+ shiftl ctrll keycode 50 = +M
+ altgr shiftl ctrll keycode 50 = Mu
+ shift altgr shiftl ctrll keycode 50 = Mu
+ control shiftl ctrll keycode 50 = Control_m
+ shift control shiftl ctrll keycode 50 = Control_m
+ altgr control shiftl ctrll keycode 50 = Control_m
+ shift altgr control shiftl ctrll keycode 50 = Control_m
+ alt shiftl ctrll keycode 50 = Meta_m
+ shift alt shiftl ctrll keycode 50 = Meta_M
+ altgr alt shiftl ctrll keycode 50 = Meta_m
+ shift altgr alt shiftl ctrll keycode 50 = Meta_M
+ control alt shiftl ctrll keycode 50 = Meta_Control_m
+ shift control alt shiftl ctrll keycode 50 = Meta_Control_m
+ altgr control alt shiftl ctrll keycode 50 = Meta_Control_m
+ shift altgr control alt shiftl ctrll keycode 50 = Meta_Control_m
+ shiftr ctrll keycode 50 = +M
+ altgr shiftr ctrll keycode 50 = Mu
+ shift altgr shiftr ctrll keycode 50 = Mu
+ control shiftr ctrll keycode 50 = Control_m
+ shift control shiftr ctrll keycode 50 = Control_m
+ altgr control shiftr ctrll keycode 50 = Control_m
+ shift altgr control shiftr ctrll keycode 50 = Control_m
+ alt shiftr ctrll keycode 50 = Meta_m
+ shift alt shiftr ctrll keycode 50 = Meta_M
+ altgr alt shiftr ctrll keycode 50 = Meta_m
+ shift altgr alt shiftr ctrll keycode 50 = Meta_M
+ control alt shiftr ctrll keycode 50 = Meta_Control_m
+ shift control alt shiftr ctrll keycode 50 = Meta_Control_m
+ altgr control alt shiftr ctrll keycode 50 = Meta_Control_m
+ shift altgr control alt shiftr ctrll keycode 50 = Meta_Control_m
+ shiftl shiftr ctrll keycode 50 = +M
+ altgr shiftl shiftr ctrll keycode 50 = Mu
+ shift altgr shiftl shiftr ctrll keycode 50 = Mu
+ control shiftl shiftr ctrll keycode 50 = Control_m
+ shift control shiftl shiftr ctrll keycode 50 = Control_m
+ altgr control shiftl shiftr ctrll keycode 50 = Control_m
+ shift altgr control shiftl shiftr ctrll keycode 50 = Control_m
+ alt shiftl shiftr ctrll keycode 50 = Meta_m
+ shift alt shiftl shiftr ctrll keycode 50 = Meta_M
+ altgr alt shiftl shiftr ctrll keycode 50 = Meta_m
+ shift altgr alt shiftl shiftr ctrll keycode 50 = Meta_M
+ control alt shiftl shiftr ctrll keycode 50 = Meta_Control_m
+ shift control alt shiftl shiftr ctrll keycode 50 = Meta_Control_m
+ altgr control alt shiftl shiftr ctrll keycode 50 = Meta_Control_m
+ shift altgr control alt shiftl shiftr ctrll keycode 50 = Meta_Control_m
+keycode 51 = comma less U+2500 multiply
+ alt keycode 51 = Meta_comma
+ shift alt keycode 51 = Meta_less
+ altgr alt keycode 51 = Meta_comma
+ shift altgr alt keycode 51 = Meta_less
+ shiftl keycode 51 = comma
+ shift shiftl keycode 51 = less
+ altgr shiftl keycode 51 = U+2500
+ shift altgr shiftl keycode 51 = multiply
+ alt shiftl keycode 51 = Meta_comma
+ shift alt shiftl keycode 51 = Meta_less
+ altgr alt shiftl keycode 51 = Meta_comma
+ shift altgr alt shiftl keycode 51 = Meta_less
+ shiftr keycode 51 = comma
+ shift shiftr keycode 51 = less
+ altgr shiftr keycode 51 = U+2500
+ shift altgr shiftr keycode 51 = multiply
+ alt shiftr keycode 51 = Meta_comma
+ shift alt shiftr keycode 51 = Meta_less
+ altgr alt shiftr keycode 51 = Meta_comma
+ shift altgr alt shiftr keycode 51 = Meta_less
+ shiftl shiftr keycode 51 = comma
+ shift shiftl shiftr keycode 51 = less
+ altgr shiftl shiftr keycode 51 = U+2500
+ shift altgr shiftl shiftr keycode 51 = multiply
+ alt shiftl shiftr keycode 51 = Meta_comma
+ shift alt shiftl shiftr keycode 51 = Meta_less
+ altgr alt shiftl shiftr keycode 51 = Meta_comma
+ shift altgr alt shiftl shiftr keycode 51 = Meta_less
+ ctrll keycode 51 = comma
+ shift ctrll keycode 51 = less
+ altgr ctrll keycode 51 = U+2500
+ shift altgr ctrll keycode 51 = multiply
+ alt ctrll keycode 51 = Meta_comma
+ shift alt ctrll keycode 51 = Meta_less
+ altgr alt ctrll keycode 51 = Meta_comma
+ shift altgr alt ctrll keycode 51 = Meta_less
+ shiftl ctrll keycode 51 = comma
+ shift shiftl ctrll keycode 51 = less
+ altgr shiftl ctrll keycode 51 = U+2500
+ shift altgr shiftl ctrll keycode 51 = multiply
+ alt shiftl ctrll keycode 51 = Meta_comma
+ shift alt shiftl ctrll keycode 51 = Meta_less
+ altgr alt shiftl ctrll keycode 51 = Meta_comma
+ shift altgr alt shiftl ctrll keycode 51 = Meta_less
+ shiftr ctrll keycode 51 = comma
+ shift shiftr ctrll keycode 51 = less
+ altgr shiftr ctrll keycode 51 = U+2500
+ shift altgr shiftr ctrll keycode 51 = multiply
+ alt shiftr ctrll keycode 51 = Meta_comma
+ shift alt shiftr ctrll keycode 51 = Meta_less
+ altgr alt shiftr ctrll keycode 51 = Meta_comma
+ shift altgr alt shiftr ctrll keycode 51 = Meta_less
+ shiftl shiftr ctrll keycode 51 = comma
+ shift shiftl shiftr ctrll keycode 51 = less
+ altgr shiftl shiftr ctrll keycode 51 = U+2500
+ shift altgr shiftl shiftr ctrll keycode 51 = multiply
+ alt shiftl shiftr ctrll keycode 51 = Meta_comma
+ shift alt shiftl shiftr ctrll keycode 51 = Meta_less
+ altgr alt shiftl shiftr ctrll keycode 51 = Meta_comma
+ shift altgr alt shiftl shiftr ctrll keycode 51 = Meta_less
+keycode 52 = period
+ shift keycode 52 = greater
+ altgr keycode 52 = periodcentered
+ shift altgr keycode 52 = division
+ control keycode 52 = Compose
+ shift control keycode 52 = Compose
+ altgr control keycode 52 = Compose
+ shift altgr control keycode 52 = Compose
+ alt keycode 52 = Meta_period
+ shift alt keycode 52 = Meta_greater
+ altgr alt keycode 52 = Meta_period
+ shift altgr alt keycode 52 = Meta_greater
+ control alt keycode 52 = Compose
+ shift control alt keycode 52 = Compose
+ altgr control alt keycode 52 = Compose
+ shift altgr control alt keycode 52 = Compose
+ shift shiftl keycode 52 = greater
+ altgr shiftl keycode 52 = periodcentered
+ shift altgr shiftl keycode 52 = division
+ control shiftl keycode 52 = Compose
+ shift control shiftl keycode 52 = Compose
+ altgr control shiftl keycode 52 = Compose
+ shift altgr control shiftl keycode 52 = Compose
+ alt shiftl keycode 52 = Meta_period
+ shift alt shiftl keycode 52 = Meta_greater
+ altgr alt shiftl keycode 52 = Meta_period
+ shift altgr alt shiftl keycode 52 = Meta_greater
+ control alt shiftl keycode 52 = Compose
+ shift control alt shiftl keycode 52 = Compose
+ altgr control alt shiftl keycode 52 = Compose
+ shift altgr control alt shiftl keycode 52 = Compose
+ shift shiftr keycode 52 = greater
+ altgr shiftr keycode 52 = periodcentered
+ shift altgr shiftr keycode 52 = division
+ control shiftr keycode 52 = Compose
+ shift control shiftr keycode 52 = Compose
+ altgr control shiftr keycode 52 = Compose
+ shift altgr control shiftr keycode 52 = Compose
+ alt shiftr keycode 52 = Meta_period
+ shift alt shiftr keycode 52 = Meta_greater
+ altgr alt shiftr keycode 52 = Meta_period
+ shift altgr alt shiftr keycode 52 = Meta_greater
+ control alt shiftr keycode 52 = Compose
+ shift control alt shiftr keycode 52 = Compose
+ altgr control alt shiftr keycode 52 = Compose
+ shift altgr control alt shiftr keycode 52 = Compose
+ shift shiftl shiftr keycode 52 = greater
+ altgr shiftl shiftr keycode 52 = periodcentered
+ shift altgr shiftl shiftr keycode 52 = division
+ control shiftl shiftr keycode 52 = Compose
+ shift control shiftl shiftr keycode 52 = Compose
+ altgr control shiftl shiftr keycode 52 = Compose
+ shift altgr control shiftl shiftr keycode 52 = Compose
+ alt shiftl shiftr keycode 52 = Meta_period
+ shift alt shiftl shiftr keycode 52 = Meta_greater
+ altgr alt shiftl shiftr keycode 52 = Meta_period
+ shift altgr alt shiftl shiftr keycode 52 = Meta_greater
+ control alt shiftl shiftr keycode 52 = Compose
+ shift control alt shiftl shiftr keycode 52 = Compose
+ altgr control alt shiftl shiftr keycode 52 = Compose
+ shift altgr control alt shiftl shiftr keycode 52 = Compose
+ shift ctrll keycode 52 = greater
+ altgr ctrll keycode 52 = periodcentered
+ shift altgr ctrll keycode 52 = division
+ control ctrll keycode 52 = Compose
+ shift control ctrll keycode 52 = Compose
+ altgr control ctrll keycode 52 = Compose
+ shift altgr control ctrll keycode 52 = Compose
+ alt ctrll keycode 52 = Meta_period
+ shift alt ctrll keycode 52 = Meta_greater
+ altgr alt ctrll keycode 52 = Meta_period
+ shift altgr alt ctrll keycode 52 = Meta_greater
+ control alt ctrll keycode 52 = Compose
+ shift control alt ctrll keycode 52 = Compose
+ altgr control alt ctrll keycode 52 = Compose
+ shift altgr control alt ctrll keycode 52 = Compose
+ shift shiftl ctrll keycode 52 = greater
+ altgr shiftl ctrll keycode 52 = periodcentered
+ shift altgr shiftl ctrll keycode 52 = division
+ control shiftl ctrll keycode 52 = Compose
+ shift control shiftl ctrll keycode 52 = Compose
+ altgr control shiftl ctrll keycode 52 = Compose
+ shift altgr control shiftl ctrll keycode 52 = Compose
+ alt shiftl ctrll keycode 52 = Meta_period
+ shift alt shiftl ctrll keycode 52 = Meta_greater
+ altgr alt shiftl ctrll keycode 52 = Meta_period
+ shift altgr alt shiftl ctrll keycode 52 = Meta_greater
+ control alt shiftl ctrll keycode 52 = Compose
+ shift control alt shiftl ctrll keycode 52 = Compose
+ altgr control alt shiftl ctrll keycode 52 = Compose
+ shift altgr control alt shiftl ctrll keycode 52 = Compose
+ shift shiftr ctrll keycode 52 = greater
+ altgr shiftr ctrll keycode 52 = periodcentered
+ shift altgr shiftr ctrll keycode 52 = division
+ control shiftr ctrll keycode 52 = Compose
+ shift control shiftr ctrll keycode 52 = Compose
+ altgr control shiftr ctrll keycode 52 = Compose
+ shift altgr control shiftr ctrll keycode 52 = Compose
+ alt shiftr ctrll keycode 52 = Meta_period
+ shift alt shiftr ctrll keycode 52 = Meta_greater
+ altgr alt shiftr ctrll keycode 52 = Meta_period
+ shift altgr alt shiftr ctrll keycode 52 = Meta_greater
+ control alt shiftr ctrll keycode 52 = Compose
+ shift control alt shiftr ctrll keycode 52 = Compose
+ altgr control alt shiftr ctrll keycode 52 = Compose
+ shift altgr control alt shiftr ctrll keycode 52 = Compose
+ shift shiftl shiftr ctrll keycode 52 = greater
+ altgr shiftl shiftr ctrll keycode 52 = periodcentered
+ shift altgr shiftl shiftr ctrll keycode 52 = division
+ control shiftl shiftr ctrll keycode 52 = Compose
+ shift control shiftl shiftr ctrll keycode 52 = Compose
+ altgr control shiftl shiftr ctrll keycode 52 = Compose
+ shift altgr control shiftl shiftr ctrll keycode 52 = Compose
+ alt shiftl shiftr ctrll keycode 52 = Meta_period
+ shift alt shiftl shiftr ctrll keycode 52 = Meta_greater
+ altgr alt shiftl shiftr ctrll keycode 52 = Meta_period
+ shift altgr alt shiftl shiftr ctrll keycode 52 = Meta_greater
+ control alt shiftl shiftr ctrll keycode 52 = Compose
+ shift control alt shiftl shiftr ctrll keycode 52 = Compose
+ altgr control alt shiftl shiftr ctrll keycode 52 = Compose
+ shift altgr control alt shiftl shiftr ctrll keycode 52 = Compose
+keycode 53 = semicolon
+ shift keycode 53 = colon
+ altgr keycode 53 = U+0323
+ shift altgr keycode 53 = period
+ control keycode 53 = Compose
+ shift control keycode 53 = Compose
+ altgr control keycode 53 = Compose
+ shift altgr control keycode 53 = Compose
+ alt keycode 53 = Meta_semicolon
+ shift alt keycode 53 = Meta_colon
+ altgr alt keycode 53 = Meta_semicolon
+ shift altgr alt keycode 53 = Meta_period
+ control alt keycode 53 = Compose
+ shift control alt keycode 53 = Compose
+ altgr control alt keycode 53 = Compose
+ shift altgr control alt keycode 53 = Compose
+ shift shiftl keycode 53 = colon
+ altgr shiftl keycode 53 = U+0323
+ shift altgr shiftl keycode 53 = period
+ control shiftl keycode 53 = Compose
+ shift control shiftl keycode 53 = Compose
+ altgr control shiftl keycode 53 = Compose
+ shift altgr control shiftl keycode 53 = Compose
+ alt shiftl keycode 53 = Meta_semicolon
+ shift alt shiftl keycode 53 = Meta_colon
+ altgr alt shiftl keycode 53 = Meta_semicolon
+ shift altgr alt shiftl keycode 53 = Meta_period
+ control alt shiftl keycode 53 = Compose
+ shift control alt shiftl keycode 53 = Compose
+ altgr control alt shiftl keycode 53 = Compose
+ shift altgr control alt shiftl keycode 53 = Compose
+ shift shiftr keycode 53 = colon
+ altgr shiftr keycode 53 = U+0323
+ shift altgr shiftr keycode 53 = period
+ control shiftr keycode 53 = Compose
+ shift control shiftr keycode 53 = Compose
+ altgr control shiftr keycode 53 = Compose
+ shift altgr control shiftr keycode 53 = Compose
+ alt shiftr keycode 53 = Meta_semicolon
+ shift alt shiftr keycode 53 = Meta_colon
+ altgr alt shiftr keycode 53 = Meta_semicolon
+ shift altgr alt shiftr keycode 53 = Meta_period
+ control alt shiftr keycode 53 = Compose
+ shift control alt shiftr keycode 53 = Compose
+ altgr control alt shiftr keycode 53 = Compose
+ shift altgr control alt shiftr keycode 53 = Compose
+ shift shiftl shiftr keycode 53 = colon
+ altgr shiftl shiftr keycode 53 = U+0323
+ shift altgr shiftl shiftr keycode 53 = period
+ control shiftl shiftr keycode 53 = Compose
+ shift control shiftl shiftr keycode 53 = Compose
+ altgr control shiftl shiftr keycode 53 = Compose
+ shift altgr control shiftl shiftr keycode 53 = Compose
+ alt shiftl shiftr keycode 53 = Meta_semicolon
+ shift alt shiftl shiftr keycode 53 = Meta_colon
+ altgr alt shiftl shiftr keycode 53 = Meta_semicolon
+ shift altgr alt shiftl shiftr keycode 53 = Meta_period
+ control alt shiftl shiftr keycode 53 = Compose
+ shift control alt shiftl shiftr keycode 53 = Compose
+ altgr control alt shiftl shiftr keycode 53 = Compose
+ shift altgr control alt shiftl shiftr keycode 53 = Compose
+ shift ctrll keycode 53 = colon
+ altgr ctrll keycode 53 = U+0323
+ shift altgr ctrll keycode 53 = period
+ control ctrll keycode 53 = Compose
+ shift control ctrll keycode 53 = Compose
+ altgr control ctrll keycode 53 = Compose
+ shift altgr control ctrll keycode 53 = Compose
+ alt ctrll keycode 53 = Meta_semicolon
+ shift alt ctrll keycode 53 = Meta_colon
+ altgr alt ctrll keycode 53 = Meta_semicolon
+ shift altgr alt ctrll keycode 53 = Meta_period
+ control alt ctrll keycode 53 = Compose
+ shift control alt ctrll keycode 53 = Compose
+ altgr control alt ctrll keycode 53 = Compose
+ shift altgr control alt ctrll keycode 53 = Compose
+ shift shiftl ctrll keycode 53 = colon
+ altgr shiftl ctrll keycode 53 = U+0323
+ shift altgr shiftl ctrll keycode 53 = period
+ control shiftl ctrll keycode 53 = Compose
+ shift control shiftl ctrll keycode 53 = Compose
+ altgr control shiftl ctrll keycode 53 = Compose
+ shift altgr control shiftl ctrll keycode 53 = Compose
+ alt shiftl ctrll keycode 53 = Meta_semicolon
+ shift alt shiftl ctrll keycode 53 = Meta_colon
+ altgr alt shiftl ctrll keycode 53 = Meta_semicolon
+ shift altgr alt shiftl ctrll keycode 53 = Meta_period
+ control alt shiftl ctrll keycode 53 = Compose
+ shift control alt shiftl ctrll keycode 53 = Compose
+ altgr control alt shiftl ctrll keycode 53 = Compose
+ shift altgr control alt shiftl ctrll keycode 53 = Compose
+ shift shiftr ctrll keycode 53 = colon
+ altgr shiftr ctrll keycode 53 = U+0323
+ shift altgr shiftr ctrll keycode 53 = period
+ control shiftr ctrll keycode 53 = Compose
+ shift control shiftr ctrll keycode 53 = Compose
+ altgr control shiftr ctrll keycode 53 = Compose
+ shift altgr control shiftr ctrll keycode 53 = Compose
+ alt shiftr ctrll keycode 53 = Meta_semicolon
+ shift alt shiftr ctrll keycode 53 = Meta_colon
+ altgr alt shiftr ctrll keycode 53 = Meta_semicolon
+ shift altgr alt shiftr ctrll keycode 53 = Meta_period
+ control alt shiftr ctrll keycode 53 = Compose
+ shift control alt shiftr ctrll keycode 53 = Compose
+ altgr control alt shiftr ctrll keycode 53 = Compose
+ shift altgr control alt shiftr ctrll keycode 53 = Compose
+ shift shiftl shiftr ctrll keycode 53 = colon
+ altgr shiftl shiftr ctrll keycode 53 = U+0323
+ shift altgr shiftl shiftr ctrll keycode 53 = period
+ control shiftl shiftr ctrll keycode 53 = Compose
+ shift control shiftl shiftr ctrll keycode 53 = Compose
+ altgr control shiftl shiftr ctrll keycode 53 = Compose
+ shift altgr control shiftl shiftr ctrll keycode 53 = Compose
+ alt shiftl shiftr ctrll keycode 53 = Meta_semicolon
+ shift alt shiftl shiftr ctrll keycode 53 = Meta_colon
+ altgr alt shiftl shiftr ctrll keycode 53 = Meta_semicolon
+ shift altgr alt shiftl shiftr ctrll keycode 53 = Meta_period
+ control alt shiftl shiftr ctrll keycode 53 = Compose
+ shift control alt shiftl shiftr ctrll keycode 53 = Compose
+ altgr control alt shiftl shiftr ctrll keycode 53 = Compose
+ shift altgr control alt shiftl shiftr ctrll keycode 53 = Compose
+keycode 54 = Shift
+keycode 55 = KP_Multiply
+ altgr keycode 55 = Hex_C
+ shift alt keycode 55 = Hex_C
+ altgr shiftl keycode 55 = Hex_C
+ shift alt shiftl keycode 55 = Hex_C
+ altgr shiftr keycode 55 = Hex_C
+ shift alt shiftr keycode 55 = Hex_C
+ altgr shiftl shiftr keycode 55 = Hex_C
+ shift alt shiftl shiftr keycode 55 = Hex_C
+ altgr ctrll keycode 55 = Hex_C
+ shift alt ctrll keycode 55 = Hex_C
+ altgr shiftl ctrll keycode 55 = Hex_C
+ shift alt shiftl ctrll keycode 55 = Hex_C
+ altgr shiftr ctrll keycode 55 = Hex_C
+ shift alt shiftr ctrll keycode 55 = Hex_C
+ altgr shiftl shiftr ctrll keycode 55 = Hex_C
+ shift alt shiftl shiftr ctrll keycode 55 = Hex_C
+keycode 56 = Alt
+keycode 57 = space
+ control keycode 57 = nul
+ shift control keycode 57 = nul
+ altgr control keycode 57 = nul
+ shift altgr control keycode 57 = nul
+ alt keycode 57 = Meta_space
+ shift alt keycode 57 = Meta_space
+ altgr alt keycode 57 = Meta_space
+ shift altgr alt keycode 57 = Meta_space
+ control alt keycode 57 = Meta_nul
+ shift control alt keycode 57 = Meta_nul
+ altgr control alt keycode 57 = Meta_nul
+ shift altgr control alt keycode 57 = Meta_nul
+ control shiftl keycode 57 = nul
+ shift control shiftl keycode 57 = nul
+ altgr control shiftl keycode 57 = nul
+ shift altgr control shiftl keycode 57 = nul
+ alt shiftl keycode 57 = Meta_space
+ shift alt shiftl keycode 57 = Meta_space
+ altgr alt shiftl keycode 57 = Meta_space
+ shift altgr alt shiftl keycode 57 = Meta_space
+ control alt shiftl keycode 57 = Meta_nul
+ shift control alt shiftl keycode 57 = Meta_nul
+ altgr control alt shiftl keycode 57 = Meta_nul
+ shift altgr control alt shiftl keycode 57 = Meta_nul
+ control shiftr keycode 57 = nul
+ shift control shiftr keycode 57 = nul
+ altgr control shiftr keycode 57 = nul
+ shift altgr control shiftr keycode 57 = nul
+ alt shiftr keycode 57 = Meta_space
+ shift alt shiftr keycode 57 = Meta_space
+ altgr alt shiftr keycode 57 = Meta_space
+ shift altgr alt shiftr keycode 57 = Meta_space
+ control alt shiftr keycode 57 = Meta_nul
+ shift control alt shiftr keycode 57 = Meta_nul
+ altgr control alt shiftr keycode 57 = Meta_nul
+ shift altgr control alt shiftr keycode 57 = Meta_nul
+ control shiftl shiftr keycode 57 = nul
+ shift control shiftl shiftr keycode 57 = nul
+ altgr control shiftl shiftr keycode 57 = nul
+ shift altgr control shiftl shiftr keycode 57 = nul
+ alt shiftl shiftr keycode 57 = Meta_space
+ shift alt shiftl shiftr keycode 57 = Meta_space
+ altgr alt shiftl shiftr keycode 57 = Meta_space
+ shift altgr alt shiftl shiftr keycode 57 = Meta_space
+ control alt shiftl shiftr keycode 57 = Meta_nul
+ shift control alt shiftl shiftr keycode 57 = Meta_nul
+ altgr control alt shiftl shiftr keycode 57 = Meta_nul
+ shift altgr control alt shiftl shiftr keycode 57 = Meta_nul
+ control ctrll keycode 57 = nul
+ shift control ctrll keycode 57 = nul
+ altgr control ctrll keycode 57 = nul
+ shift altgr control ctrll keycode 57 = nul
+ alt ctrll keycode 57 = Meta_space
+ shift alt ctrll keycode 57 = Meta_space
+ altgr alt ctrll keycode 57 = Meta_space
+ shift altgr alt ctrll keycode 57 = Meta_space
+ control alt ctrll keycode 57 = Meta_nul
+ shift control alt ctrll keycode 57 = Meta_nul
+ altgr control alt ctrll keycode 57 = Meta_nul
+ shift altgr control alt ctrll keycode 57 = Meta_nul
+ control shiftl ctrll keycode 57 = nul
+ shift control shiftl ctrll keycode 57 = nul
+ altgr control shiftl ctrll keycode 57 = nul
+ shift altgr control shiftl ctrll keycode 57 = nul
+ alt shiftl ctrll keycode 57 = Meta_space
+ shift alt shiftl ctrll keycode 57 = Meta_space
+ altgr alt shiftl ctrll keycode 57 = Meta_space
+ shift altgr alt shiftl ctrll keycode 57 = Meta_space
+ control alt shiftl ctrll keycode 57 = Meta_nul
+ shift control alt shiftl ctrll keycode 57 = Meta_nul
+ altgr control alt shiftl ctrll keycode 57 = Meta_nul
+ shift altgr control alt shiftl ctrll keycode 57 = Meta_nul
+ control shiftr ctrll keycode 57 = nul
+ shift control shiftr ctrll keycode 57 = nul
+ altgr control shiftr ctrll keycode 57 = nul
+ shift altgr control shiftr ctrll keycode 57 = nul
+ alt shiftr ctrll keycode 57 = Meta_space
+ shift alt shiftr ctrll keycode 57 = Meta_space
+ altgr alt shiftr ctrll keycode 57 = Meta_space
+ shift altgr alt shiftr ctrll keycode 57 = Meta_space
+ control alt shiftr ctrll keycode 57 = Meta_nul
+ shift control alt shiftr ctrll keycode 57 = Meta_nul
+ altgr control alt shiftr ctrll keycode 57 = Meta_nul
+ shift altgr control alt shiftr ctrll keycode 57 = Meta_nul
+ control shiftl shiftr ctrll keycode 57 = nul
+ shift control shiftl shiftr ctrll keycode 57 = nul
+ altgr control shiftl shiftr ctrll keycode 57 = nul
+ shift altgr control shiftl shiftr ctrll keycode 57 = nul
+ alt shiftl shiftr ctrll keycode 57 = Meta_space
+ shift alt shiftl shiftr ctrll keycode 57 = Meta_space
+ altgr alt shiftl shiftr ctrll keycode 57 = Meta_space
+ shift altgr alt shiftl shiftr ctrll keycode 57 = Meta_space
+ control alt shiftl shiftr ctrll keycode 57 = Meta_nul
+ shift control alt shiftl shiftr ctrll keycode 57 = Meta_nul
+ altgr control alt shiftl shiftr ctrll keycode 57 = Meta_nul
+ shift altgr control alt shiftl shiftr ctrll keycode 57 = Meta_nul
+keycode 58 = CtrlL_Lock
+keycode 59 = F1
+ shift keycode 59 = F13
+ altgr keycode 59 = Console_13
+ shift altgr keycode 59 = Console_25
+ control keycode 59 = F25
+ shift control keycode 59 = F37
+ altgr control keycode 59 = Console_13
+ shift altgr control keycode 59 = Console_25
+ alt keycode 59 = Console_1
+ shift alt keycode 59 = Console_13
+ control alt keycode 59 = Console_1
+ shift control alt keycode 59 = Console_13
+ shift shiftl keycode 59 = F13
+ altgr shiftl keycode 59 = Console_13
+ shift altgr shiftl keycode 59 = Console_25
+ control shiftl keycode 59 = F25
+ shift control shiftl keycode 59 = F37
+ altgr control shiftl keycode 59 = Console_13
+ shift altgr control shiftl keycode 59 = Console_25
+ alt shiftl keycode 59 = Console_1
+ shift alt shiftl keycode 59 = Console_13
+ control alt shiftl keycode 59 = Console_1
+ shift control alt shiftl keycode 59 = Console_13
+ shift shiftr keycode 59 = F13
+ altgr shiftr keycode 59 = Console_13
+ shift altgr shiftr keycode 59 = Console_25
+ control shiftr keycode 59 = F25
+ shift control shiftr keycode 59 = F37
+ altgr control shiftr keycode 59 = Console_13
+ shift altgr control shiftr keycode 59 = Console_25
+ alt shiftr keycode 59 = Console_1
+ shift alt shiftr keycode 59 = Console_13
+ control alt shiftr keycode 59 = Console_1
+ shift control alt shiftr keycode 59 = Console_13
+ shift shiftl shiftr keycode 59 = F13
+ altgr shiftl shiftr keycode 59 = Console_13
+ shift altgr shiftl shiftr keycode 59 = Console_25
+ control shiftl shiftr keycode 59 = F25
+ shift control shiftl shiftr keycode 59 = F37
+ altgr control shiftl shiftr keycode 59 = Console_13
+ shift altgr control shiftl shiftr keycode 59 = Console_25
+ alt shiftl shiftr keycode 59 = Console_1
+ shift alt shiftl shiftr keycode 59 = Console_13
+ control alt shiftl shiftr keycode 59 = Console_1
+ shift control alt shiftl shiftr keycode 59 = Console_13
+ shift ctrll keycode 59 = F13
+ altgr ctrll keycode 59 = Console_13
+ shift altgr ctrll keycode 59 = Console_25
+ control ctrll keycode 59 = F25
+ shift control ctrll keycode 59 = F37
+ altgr control ctrll keycode 59 = Console_13
+ shift altgr control ctrll keycode 59 = Console_25
+ alt ctrll keycode 59 = Console_1
+ shift alt ctrll keycode 59 = Console_13
+ control alt ctrll keycode 59 = Console_1
+ shift control alt ctrll keycode 59 = Console_13
+ shift shiftl ctrll keycode 59 = F13
+ altgr shiftl ctrll keycode 59 = Console_13
+ shift altgr shiftl ctrll keycode 59 = Console_25
+ control shiftl ctrll keycode 59 = F25
+ shift control shiftl ctrll keycode 59 = F37
+ altgr control shiftl ctrll keycode 59 = Console_13
+ shift altgr control shiftl ctrll keycode 59 = Console_25
+ alt shiftl ctrll keycode 59 = Console_1
+ shift alt shiftl ctrll keycode 59 = Console_13
+ control alt shiftl ctrll keycode 59 = Console_1
+ shift control alt shiftl ctrll keycode 59 = Console_13
+ shift shiftr ctrll keycode 59 = F13
+ altgr shiftr ctrll keycode 59 = Console_13
+ shift altgr shiftr ctrll keycode 59 = Console_25
+ control shiftr ctrll keycode 59 = F25
+ shift control shiftr ctrll keycode 59 = F37
+ altgr control shiftr ctrll keycode 59 = Console_13
+ shift altgr control shiftr ctrll keycode 59 = Console_25
+ alt shiftr ctrll keycode 59 = Console_1
+ shift alt shiftr ctrll keycode 59 = Console_13
+ control alt shiftr ctrll keycode 59 = Console_1
+ shift control alt shiftr ctrll keycode 59 = Console_13
+ shift shiftl shiftr ctrll keycode 59 = F13
+ altgr shiftl shiftr ctrll keycode 59 = Console_13
+ shift altgr shiftl shiftr ctrll keycode 59 = Console_25
+ control shiftl shiftr ctrll keycode 59 = F25
+ shift control shiftl shiftr ctrll keycode 59 = F37
+ altgr control shiftl shiftr ctrll keycode 59 = Console_13
+ shift altgr control shiftl shiftr ctrll keycode 59 = Console_25
+ alt shiftl shiftr ctrll keycode 59 = Console_1
+ shift alt shiftl shiftr ctrll keycode 59 = Console_13
+ control alt shiftl shiftr ctrll keycode 59 = Console_1
+ shift control alt shiftl shiftr ctrll keycode 59 = Console_13
+keycode 60 = F2
+ shift keycode 60 = F14
+ altgr keycode 60 = Console_14
+ shift altgr keycode 60 = Console_26
+ control keycode 60 = F26
+ shift control keycode 60 = F38
+ altgr control keycode 60 = Console_14
+ shift altgr control keycode 60 = Console_26
+ alt keycode 60 = Console_2
+ shift alt keycode 60 = Console_14
+ control alt keycode 60 = Console_2
+ shift control alt keycode 60 = Console_14
+ shift shiftl keycode 60 = F14
+ altgr shiftl keycode 60 = Console_14
+ shift altgr shiftl keycode 60 = Console_26
+ control shiftl keycode 60 = F26
+ shift control shiftl keycode 60 = F38
+ altgr control shiftl keycode 60 = Console_14
+ shift altgr control shiftl keycode 60 = Console_26
+ alt shiftl keycode 60 = Console_2
+ shift alt shiftl keycode 60 = Console_14
+ control alt shiftl keycode 60 = Console_2
+ shift control alt shiftl keycode 60 = Console_14
+ shift shiftr keycode 60 = F14
+ altgr shiftr keycode 60 = Console_14
+ shift altgr shiftr keycode 60 = Console_26
+ control shiftr keycode 60 = F26
+ shift control shiftr keycode 60 = F38
+ altgr control shiftr keycode 60 = Console_14
+ shift altgr control shiftr keycode 60 = Console_26
+ alt shiftr keycode 60 = Console_2
+ shift alt shiftr keycode 60 = Console_14
+ control alt shiftr keycode 60 = Console_2
+ shift control alt shiftr keycode 60 = Console_14
+ shift shiftl shiftr keycode 60 = F14
+ altgr shiftl shiftr keycode 60 = Console_14
+ shift altgr shiftl shiftr keycode 60 = Console_26
+ control shiftl shiftr keycode 60 = F26
+ shift control shiftl shiftr keycode 60 = F38
+ altgr control shiftl shiftr keycode 60 = Console_14
+ shift altgr control shiftl shiftr keycode 60 = Console_26
+ alt shiftl shiftr keycode 60 = Console_2
+ shift alt shiftl shiftr keycode 60 = Console_14
+ control alt shiftl shiftr keycode 60 = Console_2
+ shift control alt shiftl shiftr keycode 60 = Console_14
+ shift ctrll keycode 60 = F14
+ altgr ctrll keycode 60 = Console_14
+ shift altgr ctrll keycode 60 = Console_26
+ control ctrll keycode 60 = F26
+ shift control ctrll keycode 60 = F38
+ altgr control ctrll keycode 60 = Console_14
+ shift altgr control ctrll keycode 60 = Console_26
+ alt ctrll keycode 60 = Console_2
+ shift alt ctrll keycode 60 = Console_14
+ control alt ctrll keycode 60 = Console_2
+ shift control alt ctrll keycode 60 = Console_14
+ shift shiftl ctrll keycode 60 = F14
+ altgr shiftl ctrll keycode 60 = Console_14
+ shift altgr shiftl ctrll keycode 60 = Console_26
+ control shiftl ctrll keycode 60 = F26
+ shift control shiftl ctrll keycode 60 = F38
+ altgr control shiftl ctrll keycode 60 = Console_14
+ shift altgr control shiftl ctrll keycode 60 = Console_26
+ alt shiftl ctrll keycode 60 = Console_2
+ shift alt shiftl ctrll keycode 60 = Console_14
+ control alt shiftl ctrll keycode 60 = Console_2
+ shift control alt shiftl ctrll keycode 60 = Console_14
+ shift shiftr ctrll keycode 60 = F14
+ altgr shiftr ctrll keycode 60 = Console_14
+ shift altgr shiftr ctrll keycode 60 = Console_26
+ control shiftr ctrll keycode 60 = F26
+ shift control shiftr ctrll keycode 60 = F38
+ altgr control shiftr ctrll keycode 60 = Console_14
+ shift altgr control shiftr ctrll keycode 60 = Console_26
+ alt shiftr ctrll keycode 60 = Console_2
+ shift alt shiftr ctrll keycode 60 = Console_14
+ control alt shiftr ctrll keycode 60 = Console_2
+ shift control alt shiftr ctrll keycode 60 = Console_14
+ shift shiftl shiftr ctrll keycode 60 = F14
+ altgr shiftl shiftr ctrll keycode 60 = Console_14
+ shift altgr shiftl shiftr ctrll keycode 60 = Console_26
+ control shiftl shiftr ctrll keycode 60 = F26
+ shift control shiftl shiftr ctrll keycode 60 = F38
+ altgr control shiftl shiftr ctrll keycode 60 = Console_14
+ shift altgr control shiftl shiftr ctrll keycode 60 = Console_26
+ alt shiftl shiftr ctrll keycode 60 = Console_2
+ shift alt shiftl shiftr ctrll keycode 60 = Console_14
+ control alt shiftl shiftr ctrll keycode 60 = Console_2
+ shift control alt shiftl shiftr ctrll keycode 60 = Console_14
+keycode 61 = F3
+ shift keycode 61 = F15
+ altgr keycode 61 = Console_15
+ shift altgr keycode 61 = Console_27
+ control keycode 61 = F27
+ shift control keycode 61 = F39
+ altgr control keycode 61 = Console_15
+ shift altgr control keycode 61 = Console_27
+ alt keycode 61 = Console_3
+ shift alt keycode 61 = Console_15
+ control alt keycode 61 = Console_3
+ shift control alt keycode 61 = Console_15
+ shift shiftl keycode 61 = F15
+ altgr shiftl keycode 61 = Console_15
+ shift altgr shiftl keycode 61 = Console_27
+ control shiftl keycode 61 = F27
+ shift control shiftl keycode 61 = F39
+ altgr control shiftl keycode 61 = Console_15
+ shift altgr control shiftl keycode 61 = Console_27
+ alt shiftl keycode 61 = Console_3
+ shift alt shiftl keycode 61 = Console_15
+ control alt shiftl keycode 61 = Console_3
+ shift control alt shiftl keycode 61 = Console_15
+ shift shiftr keycode 61 = F15
+ altgr shiftr keycode 61 = Console_15
+ shift altgr shiftr keycode 61 = Console_27
+ control shiftr keycode 61 = F27
+ shift control shiftr keycode 61 = F39
+ altgr control shiftr keycode 61 = Console_15
+ shift altgr control shiftr keycode 61 = Console_27
+ alt shiftr keycode 61 = Console_3
+ shift alt shiftr keycode 61 = Console_15
+ control alt shiftr keycode 61 = Console_3
+ shift control alt shiftr keycode 61 = Console_15
+ shift shiftl shiftr keycode 61 = F15
+ altgr shiftl shiftr keycode 61 = Console_15
+ shift altgr shiftl shiftr keycode 61 = Console_27
+ control shiftl shiftr keycode 61 = F27
+ shift control shiftl shiftr keycode 61 = F39
+ altgr control shiftl shiftr keycode 61 = Console_15
+ shift altgr control shiftl shiftr keycode 61 = Console_27
+ alt shiftl shiftr keycode 61 = Console_3
+ shift alt shiftl shiftr keycode 61 = Console_15
+ control alt shiftl shiftr keycode 61 = Console_3
+ shift control alt shiftl shiftr keycode 61 = Console_15
+ shift ctrll keycode 61 = F15
+ altgr ctrll keycode 61 = Console_15
+ shift altgr ctrll keycode 61 = Console_27
+ control ctrll keycode 61 = F27
+ shift control ctrll keycode 61 = F39
+ altgr control ctrll keycode 61 = Console_15
+ shift altgr control ctrll keycode 61 = Console_27
+ alt ctrll keycode 61 = Console_3
+ shift alt ctrll keycode 61 = Console_15
+ control alt ctrll keycode 61 = Console_3
+ shift control alt ctrll keycode 61 = Console_15
+ shift shiftl ctrll keycode 61 = F15
+ altgr shiftl ctrll keycode 61 = Console_15
+ shift altgr shiftl ctrll keycode 61 = Console_27
+ control shiftl ctrll keycode 61 = F27
+ shift control shiftl ctrll keycode 61 = F39
+ altgr control shiftl ctrll keycode 61 = Console_15
+ shift altgr control shiftl ctrll keycode 61 = Console_27
+ alt shiftl ctrll keycode 61 = Console_3
+ shift alt shiftl ctrll keycode 61 = Console_15
+ control alt shiftl ctrll keycode 61 = Console_3
+ shift control alt shiftl ctrll keycode 61 = Console_15
+ shift shiftr ctrll keycode 61 = F15
+ altgr shiftr ctrll keycode 61 = Console_15
+ shift altgr shiftr ctrll keycode 61 = Console_27
+ control shiftr ctrll keycode 61 = F27
+ shift control shiftr ctrll keycode 61 = F39
+ altgr control shiftr ctrll keycode 61 = Console_15
+ shift altgr control shiftr ctrll keycode 61 = Console_27
+ alt shiftr ctrll keycode 61 = Console_3
+ shift alt shiftr ctrll keycode 61 = Console_15
+ control alt shiftr ctrll keycode 61 = Console_3
+ shift control alt shiftr ctrll keycode 61 = Console_15
+ shift shiftl shiftr ctrll keycode 61 = F15
+ altgr shiftl shiftr ctrll keycode 61 = Console_15
+ shift altgr shiftl shiftr ctrll keycode 61 = Console_27
+ control shiftl shiftr ctrll keycode 61 = F27
+ shift control shiftl shiftr ctrll keycode 61 = F39
+ altgr control shiftl shiftr ctrll keycode 61 = Console_15
+ shift altgr control shiftl shiftr ctrll keycode 61 = Console_27
+ alt shiftl shiftr ctrll keycode 61 = Console_3
+ shift alt shiftl shiftr ctrll keycode 61 = Console_15
+ control alt shiftl shiftr ctrll keycode 61 = Console_3
+ shift control alt shiftl shiftr ctrll keycode 61 = Console_15
+keycode 62 = F4
+ shift keycode 62 = F16
+ altgr keycode 62 = Console_16
+ shift altgr keycode 62 = Console_28
+ control keycode 62 = F28
+ shift control keycode 62 = F40
+ altgr control keycode 62 = Console_16
+ shift altgr control keycode 62 = Console_28
+ alt keycode 62 = Console_4
+ shift alt keycode 62 = Console_16
+ control alt keycode 62 = Console_4
+ shift control alt keycode 62 = Console_16
+ shift shiftl keycode 62 = F16
+ altgr shiftl keycode 62 = Console_16
+ shift altgr shiftl keycode 62 = Console_28
+ control shiftl keycode 62 = F28
+ shift control shiftl keycode 62 = F40
+ altgr control shiftl keycode 62 = Console_16
+ shift altgr control shiftl keycode 62 = Console_28
+ alt shiftl keycode 62 = Console_4
+ shift alt shiftl keycode 62 = Console_16
+ control alt shiftl keycode 62 = Console_4
+ shift control alt shiftl keycode 62 = Console_16
+ shift shiftr keycode 62 = F16
+ altgr shiftr keycode 62 = Console_16
+ shift altgr shiftr keycode 62 = Console_28
+ control shiftr keycode 62 = F28
+ shift control shiftr keycode 62 = F40
+ altgr control shiftr keycode 62 = Console_16
+ shift altgr control shiftr keycode 62 = Console_28
+ alt shiftr keycode 62 = Console_4
+ shift alt shiftr keycode 62 = Console_16
+ control alt shiftr keycode 62 = Console_4
+ shift control alt shiftr keycode 62 = Console_16
+ shift shiftl shiftr keycode 62 = F16
+ altgr shiftl shiftr keycode 62 = Console_16
+ shift altgr shiftl shiftr keycode 62 = Console_28
+ control shiftl shiftr keycode 62 = F28
+ shift control shiftl shiftr keycode 62 = F40
+ altgr control shiftl shiftr keycode 62 = Console_16
+ shift altgr control shiftl shiftr keycode 62 = Console_28
+ alt shiftl shiftr keycode 62 = Console_4
+ shift alt shiftl shiftr keycode 62 = Console_16
+ control alt shiftl shiftr keycode 62 = Console_4
+ shift control alt shiftl shiftr keycode 62 = Console_16
+ shift ctrll keycode 62 = F16
+ altgr ctrll keycode 62 = Console_16
+ shift altgr ctrll keycode 62 = Console_28
+ control ctrll keycode 62 = F28
+ shift control ctrll keycode 62 = F40
+ altgr control ctrll keycode 62 = Console_16
+ shift altgr control ctrll keycode 62 = Console_28
+ alt ctrll keycode 62 = Console_4
+ shift alt ctrll keycode 62 = Console_16
+ control alt ctrll keycode 62 = Console_4
+ shift control alt ctrll keycode 62 = Console_16
+ shift shiftl ctrll keycode 62 = F16
+ altgr shiftl ctrll keycode 62 = Console_16
+ shift altgr shiftl ctrll keycode 62 = Console_28
+ control shiftl ctrll keycode 62 = F28
+ shift control shiftl ctrll keycode 62 = F40
+ altgr control shiftl ctrll keycode 62 = Console_16
+ shift altgr control shiftl ctrll keycode 62 = Console_28
+ alt shiftl ctrll keycode 62 = Console_4
+ shift alt shiftl ctrll keycode 62 = Console_16
+ control alt shiftl ctrll keycode 62 = Console_4
+ shift control alt shiftl ctrll keycode 62 = Console_16
+ shift shiftr ctrll keycode 62 = F16
+ altgr shiftr ctrll keycode 62 = Console_16
+ shift altgr shiftr ctrll keycode 62 = Console_28
+ control shiftr ctrll keycode 62 = F28
+ shift control shiftr ctrll keycode 62 = F40
+ altgr control shiftr ctrll keycode 62 = Console_16
+ shift altgr control shiftr ctrll keycode 62 = Console_28
+ alt shiftr ctrll keycode 62 = Console_4
+ shift alt shiftr ctrll keycode 62 = Console_16
+ control alt shiftr ctrll keycode 62 = Console_4
+ shift control alt shiftr ctrll keycode 62 = Console_16
+ shift shiftl shiftr ctrll keycode 62 = F16
+ altgr shiftl shiftr ctrll keycode 62 = Console_16
+ shift altgr shiftl shiftr ctrll keycode 62 = Console_28
+ control shiftl shiftr ctrll keycode 62 = F28
+ shift control shiftl shiftr ctrll keycode 62 = F40
+ altgr control shiftl shiftr ctrll keycode 62 = Console_16
+ shift altgr control shiftl shiftr ctrll keycode 62 = Console_28
+ alt shiftl shiftr ctrll keycode 62 = Console_4
+ shift alt shiftl shiftr ctrll keycode 62 = Console_16
+ control alt shiftl shiftr ctrll keycode 62 = Console_4
+ shift control alt shiftl shiftr ctrll keycode 62 = Console_16
+keycode 63 = F5
+ shift keycode 63 = F17
+ altgr keycode 63 = Console_17
+ shift altgr keycode 63 = Console_29
+ control keycode 63 = F29
+ shift control keycode 63 = F41
+ altgr control keycode 63 = Console_17
+ shift altgr control keycode 63 = Console_29
+ alt keycode 63 = Console_5
+ shift alt keycode 63 = Console_17
+ control alt keycode 63 = Console_5
+ shift control alt keycode 63 = Console_17
+ shift shiftl keycode 63 = F17
+ altgr shiftl keycode 63 = Console_17
+ shift altgr shiftl keycode 63 = Console_29
+ control shiftl keycode 63 = F29
+ shift control shiftl keycode 63 = F41
+ altgr control shiftl keycode 63 = Console_17
+ shift altgr control shiftl keycode 63 = Console_29
+ alt shiftl keycode 63 = Console_5
+ shift alt shiftl keycode 63 = Console_17
+ control alt shiftl keycode 63 = Console_5
+ shift control alt shiftl keycode 63 = Console_17
+ shift shiftr keycode 63 = F17
+ altgr shiftr keycode 63 = Console_17
+ shift altgr shiftr keycode 63 = Console_29
+ control shiftr keycode 63 = F29
+ shift control shiftr keycode 63 = F41
+ altgr control shiftr keycode 63 = Console_17
+ shift altgr control shiftr keycode 63 = Console_29
+ alt shiftr keycode 63 = Console_5
+ shift alt shiftr keycode 63 = Console_17
+ control alt shiftr keycode 63 = Console_5
+ shift control alt shiftr keycode 63 = Console_17
+ shift shiftl shiftr keycode 63 = F17
+ altgr shiftl shiftr keycode 63 = Console_17
+ shift altgr shiftl shiftr keycode 63 = Console_29
+ control shiftl shiftr keycode 63 = F29
+ shift control shiftl shiftr keycode 63 = F41
+ altgr control shiftl shiftr keycode 63 = Console_17
+ shift altgr control shiftl shiftr keycode 63 = Console_29
+ alt shiftl shiftr keycode 63 = Console_5
+ shift alt shiftl shiftr keycode 63 = Console_17
+ control alt shiftl shiftr keycode 63 = Console_5
+ shift control alt shiftl shiftr keycode 63 = Console_17
+ shift ctrll keycode 63 = F17
+ altgr ctrll keycode 63 = Console_17
+ shift altgr ctrll keycode 63 = Console_29
+ control ctrll keycode 63 = F29
+ shift control ctrll keycode 63 = F41
+ altgr control ctrll keycode 63 = Console_17
+ shift altgr control ctrll keycode 63 = Console_29
+ alt ctrll keycode 63 = Console_5
+ shift alt ctrll keycode 63 = Console_17
+ control alt ctrll keycode 63 = Console_5
+ shift control alt ctrll keycode 63 = Console_17
+ shift shiftl ctrll keycode 63 = F17
+ altgr shiftl ctrll keycode 63 = Console_17
+ shift altgr shiftl ctrll keycode 63 = Console_29
+ control shiftl ctrll keycode 63 = F29
+ shift control shiftl ctrll keycode 63 = F41
+ altgr control shiftl ctrll keycode 63 = Console_17
+ shift altgr control shiftl ctrll keycode 63 = Console_29
+ alt shiftl ctrll keycode 63 = Console_5
+ shift alt shiftl ctrll keycode 63 = Console_17
+ control alt shiftl ctrll keycode 63 = Console_5
+ shift control alt shiftl ctrll keycode 63 = Console_17
+ shift shiftr ctrll keycode 63 = F17
+ altgr shiftr ctrll keycode 63 = Console_17
+ shift altgr shiftr ctrll keycode 63 = Console_29
+ control shiftr ctrll keycode 63 = F29
+ shift control shiftr ctrll keycode 63 = F41
+ altgr control shiftr ctrll keycode 63 = Console_17
+ shift altgr control shiftr ctrll keycode 63 = Console_29
+ alt shiftr ctrll keycode 63 = Console_5
+ shift alt shiftr ctrll keycode 63 = Console_17
+ control alt shiftr ctrll keycode 63 = Console_5
+ shift control alt shiftr ctrll keycode 63 = Console_17
+ shift shiftl shiftr ctrll keycode 63 = F17
+ altgr shiftl shiftr ctrll keycode 63 = Console_17
+ shift altgr shiftl shiftr ctrll keycode 63 = Console_29
+ control shiftl shiftr ctrll keycode 63 = F29
+ shift control shiftl shiftr ctrll keycode 63 = F41
+ altgr control shiftl shiftr ctrll keycode 63 = Console_17
+ shift altgr control shiftl shiftr ctrll keycode 63 = Console_29
+ alt shiftl shiftr ctrll keycode 63 = Console_5
+ shift alt shiftl shiftr ctrll keycode 63 = Console_17
+ control alt shiftl shiftr ctrll keycode 63 = Console_5
+ shift control alt shiftl shiftr ctrll keycode 63 = Console_17
+keycode 64 = F6
+ shift keycode 64 = F18
+ altgr keycode 64 = Console_18
+ shift altgr keycode 64 = Console_30
+ control keycode 64 = F30
+ shift control keycode 64 = F42
+ altgr control keycode 64 = Console_18
+ shift altgr control keycode 64 = Console_30
+ alt keycode 64 = Console_6
+ shift alt keycode 64 = Console_18
+ control alt keycode 64 = Console_6
+ shift control alt keycode 64 = Console_18
+ shift shiftl keycode 64 = F18
+ altgr shiftl keycode 64 = Console_18
+ shift altgr shiftl keycode 64 = Console_30
+ control shiftl keycode 64 = F30
+ shift control shiftl keycode 64 = F42
+ altgr control shiftl keycode 64 = Console_18
+ shift altgr control shiftl keycode 64 = Console_30
+ alt shiftl keycode 64 = Console_6
+ shift alt shiftl keycode 64 = Console_18
+ control alt shiftl keycode 64 = Console_6
+ shift control alt shiftl keycode 64 = Console_18
+ shift shiftr keycode 64 = F18
+ altgr shiftr keycode 64 = Console_18
+ shift altgr shiftr keycode 64 = Console_30
+ control shiftr keycode 64 = F30
+ shift control shiftr keycode 64 = F42
+ altgr control shiftr keycode 64 = Console_18
+ shift altgr control shiftr keycode 64 = Console_30
+ alt shiftr keycode 64 = Console_6
+ shift alt shiftr keycode 64 = Console_18
+ control alt shiftr keycode 64 = Console_6
+ shift control alt shiftr keycode 64 = Console_18
+ shift shiftl shiftr keycode 64 = F18
+ altgr shiftl shiftr keycode 64 = Console_18
+ shift altgr shiftl shiftr keycode 64 = Console_30
+ control shiftl shiftr keycode 64 = F30
+ shift control shiftl shiftr keycode 64 = F42
+ altgr control shiftl shiftr keycode 64 = Console_18
+ shift altgr control shiftl shiftr keycode 64 = Console_30
+ alt shiftl shiftr keycode 64 = Console_6
+ shift alt shiftl shiftr keycode 64 = Console_18
+ control alt shiftl shiftr keycode 64 = Console_6
+ shift control alt shiftl shiftr keycode 64 = Console_18
+ shift ctrll keycode 64 = F18
+ altgr ctrll keycode 64 = Console_18
+ shift altgr ctrll keycode 64 = Console_30
+ control ctrll keycode 64 = F30
+ shift control ctrll keycode 64 = F42
+ altgr control ctrll keycode 64 = Console_18
+ shift altgr control ctrll keycode 64 = Console_30
+ alt ctrll keycode 64 = Console_6
+ shift alt ctrll keycode 64 = Console_18
+ control alt ctrll keycode 64 = Console_6
+ shift control alt ctrll keycode 64 = Console_18
+ shift shiftl ctrll keycode 64 = F18
+ altgr shiftl ctrll keycode 64 = Console_18
+ shift altgr shiftl ctrll keycode 64 = Console_30
+ control shiftl ctrll keycode 64 = F30
+ shift control shiftl ctrll keycode 64 = F42
+ altgr control shiftl ctrll keycode 64 = Console_18
+ shift altgr control shiftl ctrll keycode 64 = Console_30
+ alt shiftl ctrll keycode 64 = Console_6
+ shift alt shiftl ctrll keycode 64 = Console_18
+ control alt shiftl ctrll keycode 64 = Console_6
+ shift control alt shiftl ctrll keycode 64 = Console_18
+ shift shiftr ctrll keycode 64 = F18
+ altgr shiftr ctrll keycode 64 = Console_18
+ shift altgr shiftr ctrll keycode 64 = Console_30
+ control shiftr ctrll keycode 64 = F30
+ shift control shiftr ctrll keycode 64 = F42
+ altgr control shiftr ctrll keycode 64 = Console_18
+ shift altgr control shiftr ctrll keycode 64 = Console_30
+ alt shiftr ctrll keycode 64 = Console_6
+ shift alt shiftr ctrll keycode 64 = Console_18
+ control alt shiftr ctrll keycode 64 = Console_6
+ shift control alt shiftr ctrll keycode 64 = Console_18
+ shift shiftl shiftr ctrll keycode 64 = F18
+ altgr shiftl shiftr ctrll keycode 64 = Console_18
+ shift altgr shiftl shiftr ctrll keycode 64 = Console_30
+ control shiftl shiftr ctrll keycode 64 = F30
+ shift control shiftl shiftr ctrll keycode 64 = F42
+ altgr control shiftl shiftr ctrll keycode 64 = Console_18
+ shift altgr control shiftl shiftr ctrll keycode 64 = Console_30
+ alt shiftl shiftr ctrll keycode 64 = Console_6
+ shift alt shiftl shiftr ctrll keycode 64 = Console_18
+ control alt shiftl shiftr ctrll keycode 64 = Console_6
+ shift control alt shiftl shiftr ctrll keycode 64 = Console_18
+keycode 65 = F7
+ shift keycode 65 = F19
+ altgr keycode 65 = Console_19
+ shift altgr keycode 65 = Console_31
+ control keycode 65 = F31
+ shift control keycode 65 = F43
+ altgr control keycode 65 = Console_19
+ shift altgr control keycode 65 = Console_31
+ alt keycode 65 = Console_7
+ shift alt keycode 65 = Console_19
+ control alt keycode 65 = Console_7
+ shift control alt keycode 65 = Console_19
+ shift shiftl keycode 65 = F19
+ altgr shiftl keycode 65 = Console_19
+ shift altgr shiftl keycode 65 = Console_31
+ control shiftl keycode 65 = F31
+ shift control shiftl keycode 65 = F43
+ altgr control shiftl keycode 65 = Console_19
+ shift altgr control shiftl keycode 65 = Console_31
+ alt shiftl keycode 65 = Console_7
+ shift alt shiftl keycode 65 = Console_19
+ control alt shiftl keycode 65 = Console_7
+ shift control alt shiftl keycode 65 = Console_19
+ shift shiftr keycode 65 = F19
+ altgr shiftr keycode 65 = Console_19
+ shift altgr shiftr keycode 65 = Console_31
+ control shiftr keycode 65 = F31
+ shift control shiftr keycode 65 = F43
+ altgr control shiftr keycode 65 = Console_19
+ shift altgr control shiftr keycode 65 = Console_31
+ alt shiftr keycode 65 = Console_7
+ shift alt shiftr keycode 65 = Console_19
+ control alt shiftr keycode 65 = Console_7
+ shift control alt shiftr keycode 65 = Console_19
+ shift shiftl shiftr keycode 65 = F19
+ altgr shiftl shiftr keycode 65 = Console_19
+ shift altgr shiftl shiftr keycode 65 = Console_31
+ control shiftl shiftr keycode 65 = F31
+ shift control shiftl shiftr keycode 65 = F43
+ altgr control shiftl shiftr keycode 65 = Console_19
+ shift altgr control shiftl shiftr keycode 65 = Console_31
+ alt shiftl shiftr keycode 65 = Console_7
+ shift alt shiftl shiftr keycode 65 = Console_19
+ control alt shiftl shiftr keycode 65 = Console_7
+ shift control alt shiftl shiftr keycode 65 = Console_19
+ shift ctrll keycode 65 = F19
+ altgr ctrll keycode 65 = Console_19
+ shift altgr ctrll keycode 65 = Console_31
+ control ctrll keycode 65 = F31
+ shift control ctrll keycode 65 = F43
+ altgr control ctrll keycode 65 = Console_19
+ shift altgr control ctrll keycode 65 = Console_31
+ alt ctrll keycode 65 = Console_7
+ shift alt ctrll keycode 65 = Console_19
+ control alt ctrll keycode 65 = Console_7
+ shift control alt ctrll keycode 65 = Console_19
+ shift shiftl ctrll keycode 65 = F19
+ altgr shiftl ctrll keycode 65 = Console_19
+ shift altgr shiftl ctrll keycode 65 = Console_31
+ control shiftl ctrll keycode 65 = F31
+ shift control shiftl ctrll keycode 65 = F43
+ altgr control shiftl ctrll keycode 65 = Console_19
+ shift altgr control shiftl ctrll keycode 65 = Console_31
+ alt shiftl ctrll keycode 65 = Console_7
+ shift alt shiftl ctrll keycode 65 = Console_19
+ control alt shiftl ctrll keycode 65 = Console_7
+ shift control alt shiftl ctrll keycode 65 = Console_19
+ shift shiftr ctrll keycode 65 = F19
+ altgr shiftr ctrll keycode 65 = Console_19
+ shift altgr shiftr ctrll keycode 65 = Console_31
+ control shiftr ctrll keycode 65 = F31
+ shift control shiftr ctrll keycode 65 = F43
+ altgr control shiftr ctrll keycode 65 = Console_19
+ shift altgr control shiftr ctrll keycode 65 = Console_31
+ alt shiftr ctrll keycode 65 = Console_7
+ shift alt shiftr ctrll keycode 65 = Console_19
+ control alt shiftr ctrll keycode 65 = Console_7
+ shift control alt shiftr ctrll keycode 65 = Console_19
+ shift shiftl shiftr ctrll keycode 65 = F19
+ altgr shiftl shiftr ctrll keycode 65 = Console_19
+ shift altgr shiftl shiftr ctrll keycode 65 = Console_31
+ control shiftl shiftr ctrll keycode 65 = F31
+ shift control shiftl shiftr ctrll keycode 65 = F43
+ altgr control shiftl shiftr ctrll keycode 65 = Console_19
+ shift altgr control shiftl shiftr ctrll keycode 65 = Console_31
+ alt shiftl shiftr ctrll keycode 65 = Console_7
+ shift alt shiftl shiftr ctrll keycode 65 = Console_19
+ control alt shiftl shiftr ctrll keycode 65 = Console_7
+ shift control alt shiftl shiftr ctrll keycode 65 = Console_19
+keycode 66 = F8
+ shift keycode 66 = F20
+ altgr keycode 66 = Console_20
+ shift altgr keycode 66 = Console_32
+ control keycode 66 = F32
+ shift control keycode 66 = F44
+ altgr control keycode 66 = Console_20
+ shift altgr control keycode 66 = Console_32
+ alt keycode 66 = Console_8
+ shift alt keycode 66 = Console_20
+ control alt keycode 66 = Console_8
+ shift control alt keycode 66 = Console_20
+ shift shiftl keycode 66 = F20
+ altgr shiftl keycode 66 = Console_20
+ shift altgr shiftl keycode 66 = Console_32
+ control shiftl keycode 66 = F32
+ shift control shiftl keycode 66 = F44
+ altgr control shiftl keycode 66 = Console_20
+ shift altgr control shiftl keycode 66 = Console_32
+ alt shiftl keycode 66 = Console_8
+ shift alt shiftl keycode 66 = Console_20
+ control alt shiftl keycode 66 = Console_8
+ shift control alt shiftl keycode 66 = Console_20
+ shift shiftr keycode 66 = F20
+ altgr shiftr keycode 66 = Console_20
+ shift altgr shiftr keycode 66 = Console_32
+ control shiftr keycode 66 = F32
+ shift control shiftr keycode 66 = F44
+ altgr control shiftr keycode 66 = Console_20
+ shift altgr control shiftr keycode 66 = Console_32
+ alt shiftr keycode 66 = Console_8
+ shift alt shiftr keycode 66 = Console_20
+ control alt shiftr keycode 66 = Console_8
+ shift control alt shiftr keycode 66 = Console_20
+ shift shiftl shiftr keycode 66 = F20
+ altgr shiftl shiftr keycode 66 = Console_20
+ shift altgr shiftl shiftr keycode 66 = Console_32
+ control shiftl shiftr keycode 66 = F32
+ shift control shiftl shiftr keycode 66 = F44
+ altgr control shiftl shiftr keycode 66 = Console_20
+ shift altgr control shiftl shiftr keycode 66 = Console_32
+ alt shiftl shiftr keycode 66 = Console_8
+ shift alt shiftl shiftr keycode 66 = Console_20
+ control alt shiftl shiftr keycode 66 = Console_8
+ shift control alt shiftl shiftr keycode 66 = Console_20
+ shift ctrll keycode 66 = F20
+ altgr ctrll keycode 66 = Console_20
+ shift altgr ctrll keycode 66 = Console_32
+ control ctrll keycode 66 = F32
+ shift control ctrll keycode 66 = F44
+ altgr control ctrll keycode 66 = Console_20
+ shift altgr control ctrll keycode 66 = Console_32
+ alt ctrll keycode 66 = Console_8
+ shift alt ctrll keycode 66 = Console_20
+ control alt ctrll keycode 66 = Console_8
+ shift control alt ctrll keycode 66 = Console_20
+ shift shiftl ctrll keycode 66 = F20
+ altgr shiftl ctrll keycode 66 = Console_20
+ shift altgr shiftl ctrll keycode 66 = Console_32
+ control shiftl ctrll keycode 66 = F32
+ shift control shiftl ctrll keycode 66 = F44
+ altgr control shiftl ctrll keycode 66 = Console_20
+ shift altgr control shiftl ctrll keycode 66 = Console_32
+ alt shiftl ctrll keycode 66 = Console_8
+ shift alt shiftl ctrll keycode 66 = Console_20
+ control alt shiftl ctrll keycode 66 = Console_8
+ shift control alt shiftl ctrll keycode 66 = Console_20
+ shift shiftr ctrll keycode 66 = F20
+ altgr shiftr ctrll keycode 66 = Console_20
+ shift altgr shiftr ctrll keycode 66 = Console_32
+ control shiftr ctrll keycode 66 = F32
+ shift control shiftr ctrll keycode 66 = F44
+ altgr control shiftr ctrll keycode 66 = Console_20
+ shift altgr control shiftr ctrll keycode 66 = Console_32
+ alt shiftr ctrll keycode 66 = Console_8
+ shift alt shiftr ctrll keycode 66 = Console_20
+ control alt shiftr ctrll keycode 66 = Console_8
+ shift control alt shiftr ctrll keycode 66 = Console_20
+ shift shiftl shiftr ctrll keycode 66 = F20
+ altgr shiftl shiftr ctrll keycode 66 = Console_20
+ shift altgr shiftl shiftr ctrll keycode 66 = Console_32
+ control shiftl shiftr ctrll keycode 66 = F32
+ shift control shiftl shiftr ctrll keycode 66 = F44
+ altgr control shiftl shiftr ctrll keycode 66 = Console_20
+ shift altgr control shiftl shiftr ctrll keycode 66 = Console_32
+ alt shiftl shiftr ctrll keycode 66 = Console_8
+ shift alt shiftl shiftr ctrll keycode 66 = Console_20
+ control alt shiftl shiftr ctrll keycode 66 = Console_8
+ shift control alt shiftl shiftr ctrll keycode 66 = Console_20
+keycode 67 = F9
+ shift keycode 67 = F21
+ altgr keycode 67 = Console_21
+ shift altgr keycode 67 = Console_33
+ control keycode 67 = F33
+ shift control keycode 67 = F45
+ altgr control keycode 67 = Console_21
+ shift altgr control keycode 67 = Console_33
+ alt keycode 67 = Console_9
+ shift alt keycode 67 = Console_21
+ control alt keycode 67 = Console_9
+ shift control alt keycode 67 = Console_21
+ shift shiftl keycode 67 = F21
+ altgr shiftl keycode 67 = Console_21
+ shift altgr shiftl keycode 67 = Console_33
+ control shiftl keycode 67 = F33
+ shift control shiftl keycode 67 = F45
+ altgr control shiftl keycode 67 = Console_21
+ shift altgr control shiftl keycode 67 = Console_33
+ alt shiftl keycode 67 = Console_9
+ shift alt shiftl keycode 67 = Console_21
+ control alt shiftl keycode 67 = Console_9
+ shift control alt shiftl keycode 67 = Console_21
+ shift shiftr keycode 67 = F21
+ altgr shiftr keycode 67 = Console_21
+ shift altgr shiftr keycode 67 = Console_33
+ control shiftr keycode 67 = F33
+ shift control shiftr keycode 67 = F45
+ altgr control shiftr keycode 67 = Console_21
+ shift altgr control shiftr keycode 67 = Console_33
+ alt shiftr keycode 67 = Console_9
+ shift alt shiftr keycode 67 = Console_21
+ control alt shiftr keycode 67 = Console_9
+ shift control alt shiftr keycode 67 = Console_21
+ shift shiftl shiftr keycode 67 = F21
+ altgr shiftl shiftr keycode 67 = Console_21
+ shift altgr shiftl shiftr keycode 67 = Console_33
+ control shiftl shiftr keycode 67 = F33
+ shift control shiftl shiftr keycode 67 = F45
+ altgr control shiftl shiftr keycode 67 = Console_21
+ shift altgr control shiftl shiftr keycode 67 = Console_33
+ alt shiftl shiftr keycode 67 = Console_9
+ shift alt shiftl shiftr keycode 67 = Console_21
+ control alt shiftl shiftr keycode 67 = Console_9
+ shift control alt shiftl shiftr keycode 67 = Console_21
+ shift ctrll keycode 67 = F21
+ altgr ctrll keycode 67 = Console_21
+ shift altgr ctrll keycode 67 = Console_33
+ control ctrll keycode 67 = F33
+ shift control ctrll keycode 67 = F45
+ altgr control ctrll keycode 67 = Console_21
+ shift altgr control ctrll keycode 67 = Console_33
+ alt ctrll keycode 67 = Console_9
+ shift alt ctrll keycode 67 = Console_21
+ control alt ctrll keycode 67 = Console_9
+ shift control alt ctrll keycode 67 = Console_21
+ shift shiftl ctrll keycode 67 = F21
+ altgr shiftl ctrll keycode 67 = Console_21
+ shift altgr shiftl ctrll keycode 67 = Console_33
+ control shiftl ctrll keycode 67 = F33
+ shift control shiftl ctrll keycode 67 = F45
+ altgr control shiftl ctrll keycode 67 = Console_21
+ shift altgr control shiftl ctrll keycode 67 = Console_33
+ alt shiftl ctrll keycode 67 = Console_9
+ shift alt shiftl ctrll keycode 67 = Console_21
+ control alt shiftl ctrll keycode 67 = Console_9
+ shift control alt shiftl ctrll keycode 67 = Console_21
+ shift shiftr ctrll keycode 67 = F21
+ altgr shiftr ctrll keycode 67 = Console_21
+ shift altgr shiftr ctrll keycode 67 = Console_33
+ control shiftr ctrll keycode 67 = F33
+ shift control shiftr ctrll keycode 67 = F45
+ altgr control shiftr ctrll keycode 67 = Console_21
+ shift altgr control shiftr ctrll keycode 67 = Console_33
+ alt shiftr ctrll keycode 67 = Console_9
+ shift alt shiftr ctrll keycode 67 = Console_21
+ control alt shiftr ctrll keycode 67 = Console_9
+ shift control alt shiftr ctrll keycode 67 = Console_21
+ shift shiftl shiftr ctrll keycode 67 = F21
+ altgr shiftl shiftr ctrll keycode 67 = Console_21
+ shift altgr shiftl shiftr ctrll keycode 67 = Console_33
+ control shiftl shiftr ctrll keycode 67 = F33
+ shift control shiftl shiftr ctrll keycode 67 = F45
+ altgr control shiftl shiftr ctrll keycode 67 = Console_21
+ shift altgr control shiftl shiftr ctrll keycode 67 = Console_33
+ alt shiftl shiftr ctrll keycode 67 = Console_9
+ shift alt shiftl shiftr ctrll keycode 67 = Console_21
+ control alt shiftl shiftr ctrll keycode 67 = Console_9
+ shift control alt shiftl shiftr ctrll keycode 67 = Console_21
+keycode 68 = F10
+ shift keycode 68 = F22
+ altgr keycode 68 = Console_22
+ shift altgr keycode 68 = Console_34
+ control keycode 68 = F34
+ shift control keycode 68 = F46
+ altgr control keycode 68 = Console_22
+ shift altgr control keycode 68 = Console_34
+ alt keycode 68 = Console_10
+ shift alt keycode 68 = Console_22
+ control alt keycode 68 = Console_10
+ shift control alt keycode 68 = Console_22
+ shift shiftl keycode 68 = F22
+ altgr shiftl keycode 68 = Console_22
+ shift altgr shiftl keycode 68 = Console_34
+ control shiftl keycode 68 = F34
+ shift control shiftl keycode 68 = F46
+ altgr control shiftl keycode 68 = Console_22
+ shift altgr control shiftl keycode 68 = Console_34
+ alt shiftl keycode 68 = Console_10
+ shift alt shiftl keycode 68 = Console_22
+ control alt shiftl keycode 68 = Console_10
+ shift control alt shiftl keycode 68 = Console_22
+ shift shiftr keycode 68 = F22
+ altgr shiftr keycode 68 = Console_22
+ shift altgr shiftr keycode 68 = Console_34
+ control shiftr keycode 68 = F34
+ shift control shiftr keycode 68 = F46
+ altgr control shiftr keycode 68 = Console_22
+ shift altgr control shiftr keycode 68 = Console_34
+ alt shiftr keycode 68 = Console_10
+ shift alt shiftr keycode 68 = Console_22
+ control alt shiftr keycode 68 = Console_10
+ shift control alt shiftr keycode 68 = Console_22
+ shift shiftl shiftr keycode 68 = F22
+ altgr shiftl shiftr keycode 68 = Console_22
+ shift altgr shiftl shiftr keycode 68 = Console_34
+ control shiftl shiftr keycode 68 = F34
+ shift control shiftl shiftr keycode 68 = F46
+ altgr control shiftl shiftr keycode 68 = Console_22
+ shift altgr control shiftl shiftr keycode 68 = Console_34
+ alt shiftl shiftr keycode 68 = Console_10
+ shift alt shiftl shiftr keycode 68 = Console_22
+ control alt shiftl shiftr keycode 68 = Console_10
+ shift control alt shiftl shiftr keycode 68 = Console_22
+ shift ctrll keycode 68 = F22
+ altgr ctrll keycode 68 = Console_22
+ shift altgr ctrll keycode 68 = Console_34
+ control ctrll keycode 68 = F34
+ shift control ctrll keycode 68 = F46
+ altgr control ctrll keycode 68 = Console_22
+ shift altgr control ctrll keycode 68 = Console_34
+ alt ctrll keycode 68 = Console_10
+ shift alt ctrll keycode 68 = Console_22
+ control alt ctrll keycode 68 = Console_10
+ shift control alt ctrll keycode 68 = Console_22
+ shift shiftl ctrll keycode 68 = F22
+ altgr shiftl ctrll keycode 68 = Console_22
+ shift altgr shiftl ctrll keycode 68 = Console_34
+ control shiftl ctrll keycode 68 = F34
+ shift control shiftl ctrll keycode 68 = F46
+ altgr control shiftl ctrll keycode 68 = Console_22
+ shift altgr control shiftl ctrll keycode 68 = Console_34
+ alt shiftl ctrll keycode 68 = Console_10
+ shift alt shiftl ctrll keycode 68 = Console_22
+ control alt shiftl ctrll keycode 68 = Console_10
+ shift control alt shiftl ctrll keycode 68 = Console_22
+ shift shiftr ctrll keycode 68 = F22
+ altgr shiftr ctrll keycode 68 = Console_22
+ shift altgr shiftr ctrll keycode 68 = Console_34
+ control shiftr ctrll keycode 68 = F34
+ shift control shiftr ctrll keycode 68 = F46
+ altgr control shiftr ctrll keycode 68 = Console_22
+ shift altgr control shiftr ctrll keycode 68 = Console_34
+ alt shiftr ctrll keycode 68 = Console_10
+ shift alt shiftr ctrll keycode 68 = Console_22
+ control alt shiftr ctrll keycode 68 = Console_10
+ shift control alt shiftr ctrll keycode 68 = Console_22
+ shift shiftl shiftr ctrll keycode 68 = F22
+ altgr shiftl shiftr ctrll keycode 68 = Console_22
+ shift altgr shiftl shiftr ctrll keycode 68 = Console_34
+ control shiftl shiftr ctrll keycode 68 = F34
+ shift control shiftl shiftr ctrll keycode 68 = F46
+ altgr control shiftl shiftr ctrll keycode 68 = Console_22
+ shift altgr control shiftl shiftr ctrll keycode 68 = Console_34
+ alt shiftl shiftr ctrll keycode 68 = Console_10
+ shift alt shiftl shiftr ctrll keycode 68 = Console_22
+ control alt shiftl shiftr ctrll keycode 68 = Console_10
+ shift control alt shiftl shiftr ctrll keycode 68 = Console_22
+keycode 69 = Num_Lock
+ altgr keycode 69 = Hex_A
+ shift alt keycode 69 = Hex_A
+ altgr shiftl keycode 69 = Hex_A
+ shift alt shiftl keycode 69 = Hex_A
+ altgr shiftr keycode 69 = Hex_A
+ shift alt shiftr keycode 69 = Hex_A
+ altgr shiftl shiftr keycode 69 = Hex_A
+ shift alt shiftl shiftr keycode 69 = Hex_A
+ altgr ctrll keycode 69 = Hex_A
+ shift alt ctrll keycode 69 = Hex_A
+ altgr shiftl ctrll keycode 69 = Hex_A
+ shift alt shiftl ctrll keycode 69 = Hex_A
+ altgr shiftr ctrll keycode 69 = Hex_A
+ shift alt shiftr ctrll keycode 69 = Hex_A
+ altgr shiftl shiftr ctrll keycode 69 = Hex_A
+ shift alt shiftl shiftr ctrll keycode 69 = Hex_A
+keycode 70 = Scroll_Lock
+ shift keycode 70 = Show_Memory
+ altgr keycode 70 = Show_Registers
+ control keycode 70 = Show_State
+ alt keycode 70 = Show_Registers
+ shift shiftl keycode 70 = Show_Memory
+ altgr shiftl keycode 70 = Show_Registers
+ control shiftl keycode 70 = Show_State
+ alt shiftl keycode 70 = Show_Registers
+ shift shiftr keycode 70 = Show_Memory
+ altgr shiftr keycode 70 = Show_Registers
+ control shiftr keycode 70 = Show_State
+ alt shiftr keycode 70 = Show_Registers
+ shift shiftl shiftr keycode 70 = Show_Memory
+ altgr shiftl shiftr keycode 70 = Show_Registers
+ control shiftl shiftr keycode 70 = Show_State
+ alt shiftl shiftr keycode 70 = Show_Registers
+ shift ctrll keycode 70 = Show_Memory
+ altgr ctrll keycode 70 = Show_Registers
+ control ctrll keycode 70 = Show_State
+ alt ctrll keycode 70 = Show_Registers
+ shift shiftl ctrll keycode 70 = Show_Memory
+ altgr shiftl ctrll keycode 70 = Show_Registers
+ control shiftl ctrll keycode 70 = Show_State
+ alt shiftl ctrll keycode 70 = Show_Registers
+ shift shiftr ctrll keycode 70 = Show_Memory
+ altgr shiftr ctrll keycode 70 = Show_Registers
+ control shiftr ctrll keycode 70 = Show_State
+ alt shiftr ctrll keycode 70 = Show_Registers
+ shift shiftl shiftr ctrll keycode 70 = Show_Memory
+ altgr shiftl shiftr ctrll keycode 70 = Show_Registers
+ control shiftl shiftr ctrll keycode 70 = Show_State
+ alt shiftl shiftr ctrll keycode 70 = Show_Registers
+keycode 71 = KP_7
+ altgr keycode 71 = Hex_7
+ alt keycode 71 = Ascii_7
+ shift alt keycode 71 = Hex_7
+ altgr shiftl keycode 71 = Hex_7
+ alt shiftl keycode 71 = Ascii_7
+ shift alt shiftl keycode 71 = Hex_7
+ altgr shiftr keycode 71 = Hex_7
+ alt shiftr keycode 71 = Ascii_7
+ shift alt shiftr keycode 71 = Hex_7
+ altgr shiftl shiftr keycode 71 = Hex_7
+ alt shiftl shiftr keycode 71 = Ascii_7
+ shift alt shiftl shiftr keycode 71 = Hex_7
+ altgr ctrll keycode 71 = Hex_7
+ alt ctrll keycode 71 = Ascii_7
+ shift alt ctrll keycode 71 = Hex_7
+ altgr shiftl ctrll keycode 71 = Hex_7
+ alt shiftl ctrll keycode 71 = Ascii_7
+ shift alt shiftl ctrll keycode 71 = Hex_7
+ altgr shiftr ctrll keycode 71 = Hex_7
+ alt shiftr ctrll keycode 71 = Ascii_7
+ shift alt shiftr ctrll keycode 71 = Hex_7
+ altgr shiftl shiftr ctrll keycode 71 = Hex_7
+ alt shiftl shiftr ctrll keycode 71 = Ascii_7
+ shift alt shiftl shiftr ctrll keycode 71 = Hex_7
+keycode 72 = KP_8
+ altgr keycode 72 = Hex_8
+ alt keycode 72 = Ascii_8
+ shift alt keycode 72 = Hex_8
+ altgr shiftl keycode 72 = Hex_8
+ alt shiftl keycode 72 = Ascii_8
+ shift alt shiftl keycode 72 = Hex_8
+ altgr shiftr keycode 72 = Hex_8
+ alt shiftr keycode 72 = Ascii_8
+ shift alt shiftr keycode 72 = Hex_8
+ altgr shiftl shiftr keycode 72 = Hex_8
+ alt shiftl shiftr keycode 72 = Ascii_8
+ shift alt shiftl shiftr keycode 72 = Hex_8
+ altgr ctrll keycode 72 = Hex_8
+ alt ctrll keycode 72 = Ascii_8
+ shift alt ctrll keycode 72 = Hex_8
+ altgr shiftl ctrll keycode 72 = Hex_8
+ alt shiftl ctrll keycode 72 = Ascii_8
+ shift alt shiftl ctrll keycode 72 = Hex_8
+ altgr shiftr ctrll keycode 72 = Hex_8
+ alt shiftr ctrll keycode 72 = Ascii_8
+ shift alt shiftr ctrll keycode 72 = Hex_8
+ altgr shiftl shiftr ctrll keycode 72 = Hex_8
+ alt shiftl shiftr ctrll keycode 72 = Ascii_8
+ shift alt shiftl shiftr ctrll keycode 72 = Hex_8
+keycode 73 = KP_9
+ altgr keycode 73 = Hex_9
+ alt keycode 73 = Ascii_9
+ shift alt keycode 73 = Hex_9
+ altgr shiftl keycode 73 = Hex_9
+ alt shiftl keycode 73 = Ascii_9
+ shift alt shiftl keycode 73 = Hex_9
+ altgr shiftr keycode 73 = Hex_9
+ alt shiftr keycode 73 = Ascii_9
+ shift alt shiftr keycode 73 = Hex_9
+ altgr shiftl shiftr keycode 73 = Hex_9
+ alt shiftl shiftr keycode 73 = Ascii_9
+ shift alt shiftl shiftr keycode 73 = Hex_9
+ altgr ctrll keycode 73 = Hex_9
+ alt ctrll keycode 73 = Ascii_9
+ shift alt ctrll keycode 73 = Hex_9
+ altgr shiftl ctrll keycode 73 = Hex_9
+ alt shiftl ctrll keycode 73 = Ascii_9
+ shift alt shiftl ctrll keycode 73 = Hex_9
+ altgr shiftr ctrll keycode 73 = Hex_9
+ alt shiftr ctrll keycode 73 = Ascii_9
+ shift alt shiftr ctrll keycode 73 = Hex_9
+ altgr shiftl shiftr ctrll keycode 73 = Hex_9
+ alt shiftl shiftr ctrll keycode 73 = Ascii_9
+ shift alt shiftl shiftr ctrll keycode 73 = Hex_9
+keycode 74 = KP_Subtract
+ altgr keycode 74 = Hex_D
+ shift alt keycode 74 = Hex_D
+ altgr shiftl keycode 74 = Hex_D
+ shift alt shiftl keycode 74 = Hex_D
+ altgr shiftr keycode 74 = Hex_D
+ shift alt shiftr keycode 74 = Hex_D
+ altgr shiftl shiftr keycode 74 = Hex_D
+ shift alt shiftl shiftr keycode 74 = Hex_D
+ altgr ctrll keycode 74 = Hex_D
+ shift alt ctrll keycode 74 = Hex_D
+ altgr shiftl ctrll keycode 74 = Hex_D
+ shift alt shiftl ctrll keycode 74 = Hex_D
+ altgr shiftr ctrll keycode 74 = Hex_D
+ shift alt shiftr ctrll keycode 74 = Hex_D
+ altgr shiftl shiftr ctrll keycode 74 = Hex_D
+ shift alt shiftl shiftr ctrll keycode 74 = Hex_D
+keycode 75 = KP_4
+ altgr keycode 75 = Hex_4
+ alt keycode 75 = Ascii_4
+ shift alt keycode 75 = Hex_4
+ altgr shiftl keycode 75 = Hex_4
+ alt shiftl keycode 75 = Ascii_4
+ shift alt shiftl keycode 75 = Hex_4
+ altgr shiftr keycode 75 = Hex_4
+ alt shiftr keycode 75 = Ascii_4
+ shift alt shiftr keycode 75 = Hex_4
+ altgr shiftl shiftr keycode 75 = Hex_4
+ alt shiftl shiftr keycode 75 = Ascii_4
+ shift alt shiftl shiftr keycode 75 = Hex_4
+ altgr ctrll keycode 75 = Hex_4
+ alt ctrll keycode 75 = Ascii_4
+ shift alt ctrll keycode 75 = Hex_4
+ altgr shiftl ctrll keycode 75 = Hex_4
+ alt shiftl ctrll keycode 75 = Ascii_4
+ shift alt shiftl ctrll keycode 75 = Hex_4
+ altgr shiftr ctrll keycode 75 = Hex_4
+ alt shiftr ctrll keycode 75 = Ascii_4
+ shift alt shiftr ctrll keycode 75 = Hex_4
+ altgr shiftl shiftr ctrll keycode 75 = Hex_4
+ alt shiftl shiftr ctrll keycode 75 = Ascii_4
+ shift alt shiftl shiftr ctrll keycode 75 = Hex_4
+keycode 76 = KP_5
+ altgr keycode 76 = Hex_5
+ alt keycode 76 = Ascii_5
+ shift alt keycode 76 = Hex_5
+ altgr shiftl keycode 76 = Hex_5
+ alt shiftl keycode 76 = Ascii_5
+ shift alt shiftl keycode 76 = Hex_5
+ altgr shiftr keycode 76 = Hex_5
+ alt shiftr keycode 76 = Ascii_5
+ shift alt shiftr keycode 76 = Hex_5
+ altgr shiftl shiftr keycode 76 = Hex_5
+ alt shiftl shiftr keycode 76 = Ascii_5
+ shift alt shiftl shiftr keycode 76 = Hex_5
+ altgr ctrll keycode 76 = Hex_5
+ alt ctrll keycode 76 = Ascii_5
+ shift alt ctrll keycode 76 = Hex_5
+ altgr shiftl ctrll keycode 76 = Hex_5
+ alt shiftl ctrll keycode 76 = Ascii_5
+ shift alt shiftl ctrll keycode 76 = Hex_5
+ altgr shiftr ctrll keycode 76 = Hex_5
+ alt shiftr ctrll keycode 76 = Ascii_5
+ shift alt shiftr ctrll keycode 76 = Hex_5
+ altgr shiftl shiftr ctrll keycode 76 = Hex_5
+ alt shiftl shiftr ctrll keycode 76 = Ascii_5
+ shift alt shiftl shiftr ctrll keycode 76 = Hex_5
+keycode 77 = KP_6
+ altgr keycode 77 = Hex_6
+ alt keycode 77 = Ascii_6
+ shift alt keycode 77 = Hex_6
+ altgr shiftl keycode 77 = Hex_6
+ alt shiftl keycode 77 = Ascii_6
+ shift alt shiftl keycode 77 = Hex_6
+ altgr shiftr keycode 77 = Hex_6
+ alt shiftr keycode 77 = Ascii_6
+ shift alt shiftr keycode 77 = Hex_6
+ altgr shiftl shiftr keycode 77 = Hex_6
+ alt shiftl shiftr keycode 77 = Ascii_6
+ shift alt shiftl shiftr keycode 77 = Hex_6
+ altgr ctrll keycode 77 = Hex_6
+ alt ctrll keycode 77 = Ascii_6
+ shift alt ctrll keycode 77 = Hex_6
+ altgr shiftl ctrll keycode 77 = Hex_6
+ alt shiftl ctrll keycode 77 = Ascii_6
+ shift alt shiftl ctrll keycode 77 = Hex_6
+ altgr shiftr ctrll keycode 77 = Hex_6
+ alt shiftr ctrll keycode 77 = Ascii_6
+ shift alt shiftr ctrll keycode 77 = Hex_6
+ altgr shiftl shiftr ctrll keycode 77 = Hex_6
+ alt shiftl shiftr ctrll keycode 77 = Ascii_6
+ shift alt shiftl shiftr ctrll keycode 77 = Hex_6
+keycode 78 = KP_Add
+ altgr keycode 78 = Hex_E
+ shift alt keycode 78 = Hex_E
+ altgr shiftl keycode 78 = Hex_E
+ shift alt shiftl keycode 78 = Hex_E
+ altgr shiftr keycode 78 = Hex_E
+ shift alt shiftr keycode 78 = Hex_E
+ altgr shiftl shiftr keycode 78 = Hex_E
+ shift alt shiftl shiftr keycode 78 = Hex_E
+ altgr ctrll keycode 78 = Hex_E
+ shift alt ctrll keycode 78 = Hex_E
+ altgr shiftl ctrll keycode 78 = Hex_E
+ shift alt shiftl ctrll keycode 78 = Hex_E
+ altgr shiftr ctrll keycode 78 = Hex_E
+ shift alt shiftr ctrll keycode 78 = Hex_E
+ altgr shiftl shiftr ctrll keycode 78 = Hex_E
+ shift alt shiftl shiftr ctrll keycode 78 = Hex_E
+keycode 79 = KP_1
+ altgr keycode 79 = Hex_1
+ alt keycode 79 = Ascii_1
+ shift alt keycode 79 = Hex_1
+ altgr shiftl keycode 79 = Hex_1
+ alt shiftl keycode 79 = Ascii_1
+ shift alt shiftl keycode 79 = Hex_1
+ altgr shiftr keycode 79 = Hex_1
+ alt shiftr keycode 79 = Ascii_1
+ shift alt shiftr keycode 79 = Hex_1
+ altgr shiftl shiftr keycode 79 = Hex_1
+ alt shiftl shiftr keycode 79 = Ascii_1
+ shift alt shiftl shiftr keycode 79 = Hex_1
+ altgr ctrll keycode 79 = Hex_1
+ alt ctrll keycode 79 = Ascii_1
+ shift alt ctrll keycode 79 = Hex_1
+ altgr shiftl ctrll keycode 79 = Hex_1
+ alt shiftl ctrll keycode 79 = Ascii_1
+ shift alt shiftl ctrll keycode 79 = Hex_1
+ altgr shiftr ctrll keycode 79 = Hex_1
+ alt shiftr ctrll keycode 79 = Ascii_1
+ shift alt shiftr ctrll keycode 79 = Hex_1
+ altgr shiftl shiftr ctrll keycode 79 = Hex_1
+ alt shiftl shiftr ctrll keycode 79 = Ascii_1
+ shift alt shiftl shiftr ctrll keycode 79 = Hex_1
+keycode 80 = KP_2
+ altgr keycode 80 = Hex_2
+ alt keycode 80 = Ascii_2
+ shift alt keycode 80 = Hex_2
+ altgr shiftl keycode 80 = Hex_2
+ alt shiftl keycode 80 = Ascii_2
+ shift alt shiftl keycode 80 = Hex_2
+ altgr shiftr keycode 80 = Hex_2
+ alt shiftr keycode 80 = Ascii_2
+ shift alt shiftr keycode 80 = Hex_2
+ altgr shiftl shiftr keycode 80 = Hex_2
+ alt shiftl shiftr keycode 80 = Ascii_2
+ shift alt shiftl shiftr keycode 80 = Hex_2
+ altgr ctrll keycode 80 = Hex_2
+ alt ctrll keycode 80 = Ascii_2
+ shift alt ctrll keycode 80 = Hex_2
+ altgr shiftl ctrll keycode 80 = Hex_2
+ alt shiftl ctrll keycode 80 = Ascii_2
+ shift alt shiftl ctrll keycode 80 = Hex_2
+ altgr shiftr ctrll keycode 80 = Hex_2
+ alt shiftr ctrll keycode 80 = Ascii_2
+ shift alt shiftr ctrll keycode 80 = Hex_2
+ altgr shiftl shiftr ctrll keycode 80 = Hex_2
+ alt shiftl shiftr ctrll keycode 80 = Ascii_2
+ shift alt shiftl shiftr ctrll keycode 80 = Hex_2
+keycode 81 = KP_3
+ altgr keycode 81 = Hex_3
+ alt keycode 81 = Ascii_3
+ shift alt keycode 81 = Hex_3
+ altgr shiftl keycode 81 = Hex_3
+ alt shiftl keycode 81 = Ascii_3
+ shift alt shiftl keycode 81 = Hex_3
+ altgr shiftr keycode 81 = Hex_3
+ alt shiftr keycode 81 = Ascii_3
+ shift alt shiftr keycode 81 = Hex_3
+ altgr shiftl shiftr keycode 81 = Hex_3
+ alt shiftl shiftr keycode 81 = Ascii_3
+ shift alt shiftl shiftr keycode 81 = Hex_3
+ altgr ctrll keycode 81 = Hex_3
+ alt ctrll keycode 81 = Ascii_3
+ shift alt ctrll keycode 81 = Hex_3
+ altgr shiftl ctrll keycode 81 = Hex_3
+ alt shiftl ctrll keycode 81 = Ascii_3
+ shift alt shiftl ctrll keycode 81 = Hex_3
+ altgr shiftr ctrll keycode 81 = Hex_3
+ alt shiftr ctrll keycode 81 = Ascii_3
+ shift alt shiftr ctrll keycode 81 = Hex_3
+ altgr shiftl shiftr ctrll keycode 81 = Hex_3
+ alt shiftl shiftr ctrll keycode 81 = Ascii_3
+ shift alt shiftl shiftr ctrll keycode 81 = Hex_3
+keycode 82 = KP_0
+ altgr keycode 82 = Hex_0
+ alt keycode 82 = Ascii_0
+ shift alt keycode 82 = Hex_0
+ altgr shiftl keycode 82 = Hex_0
+ alt shiftl keycode 82 = Ascii_0
+ shift alt shiftl keycode 82 = Hex_0
+ altgr shiftr keycode 82 = Hex_0
+ alt shiftr keycode 82 = Ascii_0
+ shift alt shiftr keycode 82 = Hex_0
+ altgr shiftl shiftr keycode 82 = Hex_0
+ alt shiftl shiftr keycode 82 = Ascii_0
+ shift alt shiftl shiftr keycode 82 = Hex_0
+ altgr ctrll keycode 82 = Hex_0
+ alt ctrll keycode 82 = Ascii_0
+ shift alt ctrll keycode 82 = Hex_0
+ altgr shiftl ctrll keycode 82 = Hex_0
+ alt shiftl ctrll keycode 82 = Ascii_0
+ shift alt shiftl ctrll keycode 82 = Hex_0
+ altgr shiftr ctrll keycode 82 = Hex_0
+ alt shiftr ctrll keycode 82 = Ascii_0
+ shift alt shiftr ctrll keycode 82 = Hex_0
+ altgr shiftl shiftr ctrll keycode 82 = Hex_0
+ alt shiftl shiftr ctrll keycode 82 = Ascii_0
+ shift alt shiftl shiftr ctrll keycode 82 = Hex_0
+keycode 83 = KP_Comma
+ altgr control keycode 83 = Boot
+ control alt keycode 83 = Boot
+ altgr control alt keycode 83 = Boot
+ altgr control shiftl keycode 83 = Boot
+ control alt shiftl keycode 83 = Boot
+ altgr control alt shiftl keycode 83 = Boot
+ altgr control shiftr keycode 83 = Boot
+ control alt shiftr keycode 83 = Boot
+ altgr control alt shiftr keycode 83 = Boot
+ altgr control shiftl shiftr keycode 83 = Boot
+ control alt shiftl shiftr keycode 83 = Boot
+ altgr control alt shiftl shiftr keycode 83 = Boot
+ altgr control ctrll keycode 83 = Boot
+ control alt ctrll keycode 83 = Boot
+ altgr control alt ctrll keycode 83 = Boot
+ altgr control shiftl ctrll keycode 83 = Boot
+ control alt shiftl ctrll keycode 83 = Boot
+ altgr control alt shiftl ctrll keycode 83 = Boot
+ altgr control shiftr ctrll keycode 83 = Boot
+ control alt shiftr ctrll keycode 83 = Boot
+ altgr control alt shiftr ctrll keycode 83 = Boot
+ altgr control shiftl shiftr ctrll keycode 83 = Boot
+ control alt shiftl shiftr ctrll keycode 83 = Boot
+ altgr control alt shiftl shiftr ctrll keycode 83 = Boot
+keycode 84 = Last_Console Last_Console Last_Console
+ control keycode 84 = Last_Console
+ shift control keycode 84 = Last_Console
+ alt keycode 84 = Last_Console
+ control alt keycode 84 = Last_Console
+keycode 85 =
+keycode 86 = backslash
+ shift keycode 86 = bar
+ altgr keycode 86 = +masculine
+ shift altgr keycode 86 = dead_tilde
+ control keycode 86 = Control_backslash
+ shift control keycode 86 = Control_backslash
+ altgr control keycode 86 = Control_backslash
+ shift altgr control keycode 86 = dead_tilde
+ alt keycode 86 = Meta_backslash
+ shift alt keycode 86 = Meta_bar
+ altgr alt keycode 86 = Meta_backslash
+ shift altgr alt keycode 86 = dead_tilde
+ control alt keycode 86 = Meta_Control_backslash
+ shift control alt keycode 86 = Meta_Control_backslash
+ altgr control alt keycode 86 = Meta_Control_backslash
+ shift altgr control alt keycode 86 = dead_tilde
+ shift shiftl keycode 86 = bar
+ altgr shiftl keycode 86 = +masculine
+ shift altgr shiftl keycode 86 = dead_tilde
+ control shiftl keycode 86 = Control_backslash
+ shift control shiftl keycode 86 = Control_backslash
+ altgr control shiftl keycode 86 = Control_backslash
+ shift altgr control shiftl keycode 86 = dead_tilde
+ alt shiftl keycode 86 = Meta_backslash
+ shift alt shiftl keycode 86 = Meta_bar
+ altgr alt shiftl keycode 86 = Meta_backslash
+ shift altgr alt shiftl keycode 86 = dead_tilde
+ control alt shiftl keycode 86 = Meta_Control_backslash
+ shift control alt shiftl keycode 86 = Meta_Control_backslash
+ altgr control alt shiftl keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftl keycode 86 = dead_tilde
+ shift shiftr keycode 86 = bar
+ altgr shiftr keycode 86 = +masculine
+ shift altgr shiftr keycode 86 = dead_tilde
+ control shiftr keycode 86 = Control_backslash
+ shift control shiftr keycode 86 = Control_backslash
+ altgr control shiftr keycode 86 = Control_backslash
+ shift altgr control shiftr keycode 86 = dead_tilde
+ alt shiftr keycode 86 = Meta_backslash
+ shift alt shiftr keycode 86 = Meta_bar
+ altgr alt shiftr keycode 86 = Meta_backslash
+ shift altgr alt shiftr keycode 86 = dead_tilde
+ control alt shiftr keycode 86 = Meta_Control_backslash
+ shift control alt shiftr keycode 86 = Meta_Control_backslash
+ altgr control alt shiftr keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftr keycode 86 = dead_tilde
+ shift shiftl shiftr keycode 86 = bar
+ altgr shiftl shiftr keycode 86 = +masculine
+ shift altgr shiftl shiftr keycode 86 = dead_tilde
+ control shiftl shiftr keycode 86 = Control_backslash
+ shift control shiftl shiftr keycode 86 = Control_backslash
+ altgr control shiftl shiftr keycode 86 = Control_backslash
+ shift altgr control shiftl shiftr keycode 86 = dead_tilde
+ alt shiftl shiftr keycode 86 = Meta_backslash
+ shift alt shiftl shiftr keycode 86 = Meta_bar
+ altgr alt shiftl shiftr keycode 86 = Meta_backslash
+ shift altgr alt shiftl shiftr keycode 86 = dead_tilde
+ control alt shiftl shiftr keycode 86 = Meta_Control_backslash
+ shift control alt shiftl shiftr keycode 86 = Meta_Control_backslash
+ altgr control alt shiftl shiftr keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr keycode 86 = dead_tilde
+ shift ctrll keycode 86 = bar
+ altgr ctrll keycode 86 = +masculine
+ shift altgr ctrll keycode 86 = dead_tilde
+ control ctrll keycode 86 = Control_backslash
+ shift control ctrll keycode 86 = Control_backslash
+ altgr control ctrll keycode 86 = Control_backslash
+ shift altgr control ctrll keycode 86 = dead_tilde
+ alt ctrll keycode 86 = Meta_backslash
+ shift alt ctrll keycode 86 = Meta_bar
+ altgr alt ctrll keycode 86 = Meta_backslash
+ shift altgr alt ctrll keycode 86 = dead_tilde
+ control alt ctrll keycode 86 = Meta_Control_backslash
+ shift control alt ctrll keycode 86 = Meta_Control_backslash
+ altgr control alt ctrll keycode 86 = Meta_Control_backslash
+ shift altgr control alt ctrll keycode 86 = dead_tilde
+ shift shiftl ctrll keycode 86 = bar
+ altgr shiftl ctrll keycode 86 = +masculine
+ shift altgr shiftl ctrll keycode 86 = dead_tilde
+ control shiftl ctrll keycode 86 = Control_backslash
+ shift control shiftl ctrll keycode 86 = Control_backslash
+ altgr control shiftl ctrll keycode 86 = Control_backslash
+ shift altgr control shiftl ctrll keycode 86 = dead_tilde
+ alt shiftl ctrll keycode 86 = Meta_backslash
+ shift alt shiftl ctrll keycode 86 = Meta_bar
+ altgr alt shiftl ctrll keycode 86 = Meta_backslash
+ shift altgr alt shiftl ctrll keycode 86 = dead_tilde
+ control alt shiftl ctrll keycode 86 = Meta_Control_backslash
+ shift control alt shiftl ctrll keycode 86 = Meta_Control_backslash
+ altgr control alt shiftl ctrll keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftl ctrll keycode 86 = dead_tilde
+ shift shiftr ctrll keycode 86 = bar
+ altgr shiftr ctrll keycode 86 = +masculine
+ shift altgr shiftr ctrll keycode 86 = dead_tilde
+ control shiftr ctrll keycode 86 = Control_backslash
+ shift control shiftr ctrll keycode 86 = Control_backslash
+ altgr control shiftr ctrll keycode 86 = Control_backslash
+ shift altgr control shiftr ctrll keycode 86 = dead_tilde
+ alt shiftr ctrll keycode 86 = Meta_backslash
+ shift alt shiftr ctrll keycode 86 = Meta_bar
+ altgr alt shiftr ctrll keycode 86 = Meta_backslash
+ shift altgr alt shiftr ctrll keycode 86 = dead_tilde
+ control alt shiftr ctrll keycode 86 = Meta_Control_backslash
+ shift control alt shiftr ctrll keycode 86 = Meta_Control_backslash
+ altgr control alt shiftr ctrll keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftr ctrll keycode 86 = dead_tilde
+ shift shiftl shiftr ctrll keycode 86 = bar
+ altgr shiftl shiftr ctrll keycode 86 = +masculine
+ shift altgr shiftl shiftr ctrll keycode 86 = dead_tilde
+ control shiftl shiftr ctrll keycode 86 = Control_backslash
+ shift control shiftl shiftr ctrll keycode 86 = Control_backslash
+ altgr control shiftl shiftr ctrll keycode 86 = Control_backslash
+ shift altgr control shiftl shiftr ctrll keycode 86 = dead_tilde
+ alt shiftl shiftr ctrll keycode 86 = Meta_backslash
+ shift alt shiftl shiftr ctrll keycode 86 = Meta_bar
+ altgr alt shiftl shiftr ctrll keycode 86 = Meta_backslash
+ shift altgr alt shiftl shiftr ctrll keycode 86 = dead_tilde
+ control alt shiftl shiftr ctrll keycode 86 = Meta_Control_backslash
+ shift control alt shiftl shiftr ctrll keycode 86 = Meta_Control_backslash
+ altgr control alt shiftl shiftr ctrll keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr ctrll keycode 86 = dead_tilde
+keycode 87 = F11
+ shift keycode 87 = F23
+ altgr keycode 87 = Console_23
+ shift altgr keycode 87 = Console_35
+ control keycode 87 = F35
+ shift control keycode 87 = F47
+ altgr control keycode 87 = Console_23
+ shift altgr control keycode 87 = Console_35
+ alt keycode 87 = Console_11
+ shift alt keycode 87 = Console_23
+ control alt keycode 87 = Console_11
+ shift control alt keycode 87 = Console_23
+ shift shiftl keycode 87 = F23
+ altgr shiftl keycode 87 = Console_23
+ shift altgr shiftl keycode 87 = Console_35
+ control shiftl keycode 87 = F35
+ shift control shiftl keycode 87 = F47
+ altgr control shiftl keycode 87 = Console_23
+ shift altgr control shiftl keycode 87 = Console_35
+ alt shiftl keycode 87 = Console_11
+ shift alt shiftl keycode 87 = Console_23
+ control alt shiftl keycode 87 = Console_11
+ shift control alt shiftl keycode 87 = Console_23
+ shift shiftr keycode 87 = F23
+ altgr shiftr keycode 87 = Console_23
+ shift altgr shiftr keycode 87 = Console_35
+ control shiftr keycode 87 = F35
+ shift control shiftr keycode 87 = F47
+ altgr control shiftr keycode 87 = Console_23
+ shift altgr control shiftr keycode 87 = Console_35
+ alt shiftr keycode 87 = Console_11
+ shift alt shiftr keycode 87 = Console_23
+ control alt shiftr keycode 87 = Console_11
+ shift control alt shiftr keycode 87 = Console_23
+ shift shiftl shiftr keycode 87 = F23
+ altgr shiftl shiftr keycode 87 = Console_23
+ shift altgr shiftl shiftr keycode 87 = Console_35
+ control shiftl shiftr keycode 87 = F35
+ shift control shiftl shiftr keycode 87 = F47
+ altgr control shiftl shiftr keycode 87 = Console_23
+ shift altgr control shiftl shiftr keycode 87 = Console_35
+ alt shiftl shiftr keycode 87 = Console_11
+ shift alt shiftl shiftr keycode 87 = Console_23
+ control alt shiftl shiftr keycode 87 = Console_11
+ shift control alt shiftl shiftr keycode 87 = Console_23
+ shift ctrll keycode 87 = F23
+ altgr ctrll keycode 87 = Console_23
+ shift altgr ctrll keycode 87 = Console_35
+ control ctrll keycode 87 = F35
+ shift control ctrll keycode 87 = F47
+ altgr control ctrll keycode 87 = Console_23
+ shift altgr control ctrll keycode 87 = Console_35
+ alt ctrll keycode 87 = Console_11
+ shift alt ctrll keycode 87 = Console_23
+ control alt ctrll keycode 87 = Console_11
+ shift control alt ctrll keycode 87 = Console_23
+ shift shiftl ctrll keycode 87 = F23
+ altgr shiftl ctrll keycode 87 = Console_23
+ shift altgr shiftl ctrll keycode 87 = Console_35
+ control shiftl ctrll keycode 87 = F35
+ shift control shiftl ctrll keycode 87 = F47
+ altgr control shiftl ctrll keycode 87 = Console_23
+ shift altgr control shiftl ctrll keycode 87 = Console_35
+ alt shiftl ctrll keycode 87 = Console_11
+ shift alt shiftl ctrll keycode 87 = Console_23
+ control alt shiftl ctrll keycode 87 = Console_11
+ shift control alt shiftl ctrll keycode 87 = Console_23
+ shift shiftr ctrll keycode 87 = F23
+ altgr shiftr ctrll keycode 87 = Console_23
+ shift altgr shiftr ctrll keycode 87 = Console_35
+ control shiftr ctrll keycode 87 = F35
+ shift control shiftr ctrll keycode 87 = F47
+ altgr control shiftr ctrll keycode 87 = Console_23
+ shift altgr control shiftr ctrll keycode 87 = Console_35
+ alt shiftr ctrll keycode 87 = Console_11
+ shift alt shiftr ctrll keycode 87 = Console_23
+ control alt shiftr ctrll keycode 87 = Console_11
+ shift control alt shiftr ctrll keycode 87 = Console_23
+ shift shiftl shiftr ctrll keycode 87 = F23
+ altgr shiftl shiftr ctrll keycode 87 = Console_23
+ shift altgr shiftl shiftr ctrll keycode 87 = Console_35
+ control shiftl shiftr ctrll keycode 87 = F35
+ shift control shiftl shiftr ctrll keycode 87 = F47
+ altgr control shiftl shiftr ctrll keycode 87 = Console_23
+ shift altgr control shiftl shiftr ctrll keycode 87 = Console_35
+ alt shiftl shiftr ctrll keycode 87 = Console_11
+ shift alt shiftl shiftr ctrll keycode 87 = Console_23
+ control alt shiftl shiftr ctrll keycode 87 = Console_11
+ shift control alt shiftl shiftr ctrll keycode 87 = Console_23
+keycode 88 = F12
+ shift keycode 88 = F24
+ altgr keycode 88 = Console_24
+ shift altgr keycode 88 = Console_36
+ control keycode 88 = F36
+ shift control keycode 88 = F48
+ altgr control keycode 88 = Console_24
+ shift altgr control keycode 88 = Console_36
+ alt keycode 88 = Console_12
+ shift alt keycode 88 = Console_24
+ control alt keycode 88 = Console_12
+ shift control alt keycode 88 = Console_24
+ shift shiftl keycode 88 = F24
+ altgr shiftl keycode 88 = Console_24
+ shift altgr shiftl keycode 88 = Console_36
+ control shiftl keycode 88 = F36
+ shift control shiftl keycode 88 = F48
+ altgr control shiftl keycode 88 = Console_24
+ shift altgr control shiftl keycode 88 = Console_36
+ alt shiftl keycode 88 = Console_12
+ shift alt shiftl keycode 88 = Console_24
+ control alt shiftl keycode 88 = Console_12
+ shift control alt shiftl keycode 88 = Console_24
+ shift shiftr keycode 88 = F24
+ altgr shiftr keycode 88 = Console_24
+ shift altgr shiftr keycode 88 = Console_36
+ control shiftr keycode 88 = F36
+ shift control shiftr keycode 88 = F48
+ altgr control shiftr keycode 88 = Console_24
+ shift altgr control shiftr keycode 88 = Console_36
+ alt shiftr keycode 88 = Console_12
+ shift alt shiftr keycode 88 = Console_24
+ control alt shiftr keycode 88 = Console_12
+ shift control alt shiftr keycode 88 = Console_24
+ shift shiftl shiftr keycode 88 = F24
+ altgr shiftl shiftr keycode 88 = Console_24
+ shift altgr shiftl shiftr keycode 88 = Console_36
+ control shiftl shiftr keycode 88 = F36
+ shift control shiftl shiftr keycode 88 = F48
+ altgr control shiftl shiftr keycode 88 = Console_24
+ shift altgr control shiftl shiftr keycode 88 = Console_36
+ alt shiftl shiftr keycode 88 = Console_12
+ shift alt shiftl shiftr keycode 88 = Console_24
+ control alt shiftl shiftr keycode 88 = Console_12
+ shift control alt shiftl shiftr keycode 88 = Console_24
+ shift ctrll keycode 88 = F24
+ altgr ctrll keycode 88 = Console_24
+ shift altgr ctrll keycode 88 = Console_36
+ control ctrll keycode 88 = F36
+ shift control ctrll keycode 88 = F48
+ altgr control ctrll keycode 88 = Console_24
+ shift altgr control ctrll keycode 88 = Console_36
+ alt ctrll keycode 88 = Console_12
+ shift alt ctrll keycode 88 = Console_24
+ control alt ctrll keycode 88 = Console_12
+ shift control alt ctrll keycode 88 = Console_24
+ shift shiftl ctrll keycode 88 = F24
+ altgr shiftl ctrll keycode 88 = Console_24
+ shift altgr shiftl ctrll keycode 88 = Console_36
+ control shiftl ctrll keycode 88 = F36
+ shift control shiftl ctrll keycode 88 = F48
+ altgr control shiftl ctrll keycode 88 = Console_24
+ shift altgr control shiftl ctrll keycode 88 = Console_36
+ alt shiftl ctrll keycode 88 = Console_12
+ shift alt shiftl ctrll keycode 88 = Console_24
+ control alt shiftl ctrll keycode 88 = Console_12
+ shift control alt shiftl ctrll keycode 88 = Console_24
+ shift shiftr ctrll keycode 88 = F24
+ altgr shiftr ctrll keycode 88 = Console_24
+ shift altgr shiftr ctrll keycode 88 = Console_36
+ control shiftr ctrll keycode 88 = F36
+ shift control shiftr ctrll keycode 88 = F48
+ altgr control shiftr ctrll keycode 88 = Console_24
+ shift altgr control shiftr ctrll keycode 88 = Console_36
+ alt shiftr ctrll keycode 88 = Console_12
+ shift alt shiftr ctrll keycode 88 = Console_24
+ control alt shiftr ctrll keycode 88 = Console_12
+ shift control alt shiftr ctrll keycode 88 = Console_24
+ shift shiftl shiftr ctrll keycode 88 = F24
+ altgr shiftl shiftr ctrll keycode 88 = Console_24
+ shift altgr shiftl shiftr ctrll keycode 88 = Console_36
+ control shiftl shiftr ctrll keycode 88 = F36
+ shift control shiftl shiftr ctrll keycode 88 = F48
+ altgr control shiftl shiftr ctrll keycode 88 = Console_24
+ shift altgr control shiftl shiftr ctrll keycode 88 = Console_36
+ alt shiftl shiftr ctrll keycode 88 = Console_12
+ shift alt shiftl shiftr ctrll keycode 88 = Console_24
+ control alt shiftl shiftr ctrll keycode 88 = Console_12
+ shift control alt shiftl shiftr ctrll keycode 88 = Console_24
+keycode 89 = slash
+ shift keycode 89 = question
+ altgr keycode 89 = degree
+ shift altgr keycode 89 = questiondown
+ control keycode 89 = Delete
+ shift control keycode 89 = Delete
+ altgr control keycode 89 = Delete
+ shift altgr control keycode 89 = Delete
+ alt keycode 89 = Meta_slash
+ shift alt keycode 89 = Meta_question
+ altgr alt keycode 89 = Meta_slash
+ shift altgr alt keycode 89 = Meta_question
+ control alt keycode 89 = Meta_Delete
+ shift control alt keycode 89 = Meta_Delete
+ altgr control alt keycode 89 = Meta_Delete
+ shift altgr control alt keycode 89 = Meta_Delete
+ shift shiftl keycode 89 = question
+ altgr shiftl keycode 89 = degree
+ shift altgr shiftl keycode 89 = questiondown
+ control shiftl keycode 89 = Delete
+ shift control shiftl keycode 89 = Delete
+ altgr control shiftl keycode 89 = Delete
+ shift altgr control shiftl keycode 89 = Delete
+ alt shiftl keycode 89 = Meta_slash
+ shift alt shiftl keycode 89 = Meta_question
+ altgr alt shiftl keycode 89 = Meta_slash
+ shift altgr alt shiftl keycode 89 = Meta_question
+ control alt shiftl keycode 89 = Meta_Delete
+ shift control alt shiftl keycode 89 = Meta_Delete
+ altgr control alt shiftl keycode 89 = Meta_Delete
+ shift altgr control alt shiftl keycode 89 = Meta_Delete
+ shift shiftr keycode 89 = question
+ altgr shiftr keycode 89 = degree
+ shift altgr shiftr keycode 89 = questiondown
+ control shiftr keycode 89 = Delete
+ shift control shiftr keycode 89 = Delete
+ altgr control shiftr keycode 89 = Delete
+ shift altgr control shiftr keycode 89 = Delete
+ alt shiftr keycode 89 = Meta_slash
+ shift alt shiftr keycode 89 = Meta_question
+ altgr alt shiftr keycode 89 = Meta_slash
+ shift altgr alt shiftr keycode 89 = Meta_question
+ control alt shiftr keycode 89 = Meta_Delete
+ shift control alt shiftr keycode 89 = Meta_Delete
+ altgr control alt shiftr keycode 89 = Meta_Delete
+ shift altgr control alt shiftr keycode 89 = Meta_Delete
+ shift shiftl shiftr keycode 89 = question
+ altgr shiftl shiftr keycode 89 = degree
+ shift altgr shiftl shiftr keycode 89 = questiondown
+ control shiftl shiftr keycode 89 = Delete
+ shift control shiftl shiftr keycode 89 = Delete
+ altgr control shiftl shiftr keycode 89 = Delete
+ shift altgr control shiftl shiftr keycode 89 = Delete
+ alt shiftl shiftr keycode 89 = Meta_slash
+ shift alt shiftl shiftr keycode 89 = Meta_question
+ altgr alt shiftl shiftr keycode 89 = Meta_slash
+ shift altgr alt shiftl shiftr keycode 89 = Meta_question
+ control alt shiftl shiftr keycode 89 = Meta_Delete
+ shift control alt shiftl shiftr keycode 89 = Meta_Delete
+ altgr control alt shiftl shiftr keycode 89 = Meta_Delete
+ shift altgr control alt shiftl shiftr keycode 89 = Meta_Delete
+ shift ctrll keycode 89 = question
+ altgr ctrll keycode 89 = degree
+ shift altgr ctrll keycode 89 = questiondown
+ control ctrll keycode 89 = Delete
+ shift control ctrll keycode 89 = Delete
+ altgr control ctrll keycode 89 = Delete
+ shift altgr control ctrll keycode 89 = Delete
+ alt ctrll keycode 89 = Meta_slash
+ shift alt ctrll keycode 89 = Meta_question
+ altgr alt ctrll keycode 89 = Meta_slash
+ shift altgr alt ctrll keycode 89 = Meta_question
+ control alt ctrll keycode 89 = Meta_Delete
+ shift control alt ctrll keycode 89 = Meta_Delete
+ altgr control alt ctrll keycode 89 = Meta_Delete
+ shift altgr control alt ctrll keycode 89 = Meta_Delete
+ shift shiftl ctrll keycode 89 = question
+ altgr shiftl ctrll keycode 89 = degree
+ shift altgr shiftl ctrll keycode 89 = questiondown
+ control shiftl ctrll keycode 89 = Delete
+ shift control shiftl ctrll keycode 89 = Delete
+ altgr control shiftl ctrll keycode 89 = Delete
+ shift altgr control shiftl ctrll keycode 89 = Delete
+ alt shiftl ctrll keycode 89 = Meta_slash
+ shift alt shiftl ctrll keycode 89 = Meta_question
+ altgr alt shiftl ctrll keycode 89 = Meta_slash
+ shift altgr alt shiftl ctrll keycode 89 = Meta_question
+ control alt shiftl ctrll keycode 89 = Meta_Delete
+ shift control alt shiftl ctrll keycode 89 = Meta_Delete
+ altgr control alt shiftl ctrll keycode 89 = Meta_Delete
+ shift altgr control alt shiftl ctrll keycode 89 = Meta_Delete
+ shift shiftr ctrll keycode 89 = question
+ altgr shiftr ctrll keycode 89 = degree
+ shift altgr shiftr ctrll keycode 89 = questiondown
+ control shiftr ctrll keycode 89 = Delete
+ shift control shiftr ctrll keycode 89 = Delete
+ altgr control shiftr ctrll keycode 89 = Delete
+ shift altgr control shiftr ctrll keycode 89 = Delete
+ alt shiftr ctrll keycode 89 = Meta_slash
+ shift alt shiftr ctrll keycode 89 = Meta_question
+ altgr alt shiftr ctrll keycode 89 = Meta_slash
+ shift altgr alt shiftr ctrll keycode 89 = Meta_question
+ control alt shiftr ctrll keycode 89 = Meta_Delete
+ shift control alt shiftr ctrll keycode 89 = Meta_Delete
+ altgr control alt shiftr ctrll keycode 89 = Meta_Delete
+ shift altgr control alt shiftr ctrll keycode 89 = Meta_Delete
+ shift shiftl shiftr ctrll keycode 89 = question
+ altgr shiftl shiftr ctrll keycode 89 = degree
+ shift altgr shiftl shiftr ctrll keycode 89 = questiondown
+ control shiftl shiftr ctrll keycode 89 = Delete
+ shift control shiftl shiftr ctrll keycode 89 = Delete
+ altgr control shiftl shiftr ctrll keycode 89 = Delete
+ shift altgr control shiftl shiftr ctrll keycode 89 = Delete
+ alt shiftl shiftr ctrll keycode 89 = Meta_slash
+ shift alt shiftl shiftr ctrll keycode 89 = Meta_question
+ altgr alt shiftl shiftr ctrll keycode 89 = Meta_slash
+ shift altgr alt shiftl shiftr ctrll keycode 89 = Meta_question
+ control alt shiftl shiftr ctrll keycode 89 = Meta_Delete
+ shift control alt shiftl shiftr ctrll keycode 89 = Meta_Delete
+ altgr control alt shiftl shiftr ctrll keycode 89 = Meta_Delete
+ shift altgr control alt shiftl shiftr ctrll keycode 89 = Meta_Delete
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = KP_Enter
+ altgr keycode 96 = Hex_F
+ shift alt keycode 96 = Hex_F
+ altgr shiftl keycode 96 = Hex_F
+ shift alt shiftl keycode 96 = Hex_F
+ altgr shiftr keycode 96 = Hex_F
+ shift alt shiftr keycode 96 = Hex_F
+ altgr shiftl shiftr keycode 96 = Hex_F
+ shift alt shiftl shiftr keycode 96 = Hex_F
+ altgr ctrll keycode 96 = Hex_F
+ shift alt ctrll keycode 96 = Hex_F
+ altgr shiftl ctrll keycode 96 = Hex_F
+ shift alt shiftl ctrll keycode 96 = Hex_F
+ altgr shiftr ctrll keycode 96 = Hex_F
+ shift alt shiftr ctrll keycode 96 = Hex_F
+ altgr shiftl shiftr ctrll keycode 96 = Hex_F
+ shift alt shiftl shiftr ctrll keycode 96 = Hex_F
+keycode 97 = Control
+keycode 98 = KP_Divide
+ altgr keycode 98 = Hex_B
+ shift alt keycode 98 = Hex_B
+ altgr shiftl keycode 98 = Hex_B
+ shift alt shiftl keycode 98 = Hex_B
+ altgr shiftr keycode 98 = Hex_B
+ shift alt shiftr keycode 98 = Hex_B
+ altgr shiftl shiftr keycode 98 = Hex_B
+ shift alt shiftl shiftr keycode 98 = Hex_B
+ altgr ctrll keycode 98 = Hex_B
+ shift alt ctrll keycode 98 = Hex_B
+ altgr shiftl ctrll keycode 98 = Hex_B
+ shift alt shiftl ctrll keycode 98 = Hex_B
+ altgr shiftr ctrll keycode 98 = Hex_B
+ shift alt shiftr ctrll keycode 98 = Hex_B
+ altgr shiftl shiftr ctrll keycode 98 = Hex_B
+ shift alt shiftl shiftr ctrll keycode 98 = Hex_B
+keycode 99 =
+ altgr keycode 99 = Control_backslash
+ shift altgr keycode 99 = Control_backslash
+ control keycode 99 = Control_backslash
+ shift control keycode 99 = Control_backslash
+ altgr control keycode 99 = Control_backslash
+ shift altgr control keycode 99 = Control_backslash
+ alt keycode 99 = Control_backslash
+ shift alt keycode 99 = Control_backslash
+ altgr alt keycode 99 = Control_backslash
+ shift altgr alt keycode 99 = Control_backslash
+ control alt keycode 99 = Control_backslash
+ shift control alt keycode 99 = Control_backslash
+ altgr control alt keycode 99 = Control_backslash
+ shift altgr control alt keycode 99 = Control_backslash
+ altgr shiftl keycode 99 = Control_backslash
+ shift altgr shiftl keycode 99 = Control_backslash
+ control shiftl keycode 99 = Control_backslash
+ shift control shiftl keycode 99 = Control_backslash
+ altgr control shiftl keycode 99 = Control_backslash
+ shift altgr control shiftl keycode 99 = Control_backslash
+ alt shiftl keycode 99 = Control_backslash
+ shift alt shiftl keycode 99 = Control_backslash
+ altgr alt shiftl keycode 99 = Control_backslash
+ shift altgr alt shiftl keycode 99 = Control_backslash
+ control alt shiftl keycode 99 = Control_backslash
+ shift control alt shiftl keycode 99 = Control_backslash
+ altgr control alt shiftl keycode 99 = Control_backslash
+ shift altgr control alt shiftl keycode 99 = Control_backslash
+ altgr shiftr keycode 99 = Control_backslash
+ shift altgr shiftr keycode 99 = Control_backslash
+ control shiftr keycode 99 = Control_backslash
+ shift control shiftr keycode 99 = Control_backslash
+ altgr control shiftr keycode 99 = Control_backslash
+ shift altgr control shiftr keycode 99 = Control_backslash
+ alt shiftr keycode 99 = Control_backslash
+ shift alt shiftr keycode 99 = Control_backslash
+ altgr alt shiftr keycode 99 = Control_backslash
+ shift altgr alt shiftr keycode 99 = Control_backslash
+ control alt shiftr keycode 99 = Control_backslash
+ shift control alt shiftr keycode 99 = Control_backslash
+ altgr control alt shiftr keycode 99 = Control_backslash
+ shift altgr control alt shiftr keycode 99 = Control_backslash
+ altgr shiftl shiftr keycode 99 = Control_backslash
+ shift altgr shiftl shiftr keycode 99 = Control_backslash
+ control shiftl shiftr keycode 99 = Control_backslash
+ shift control shiftl shiftr keycode 99 = Control_backslash
+ altgr control shiftl shiftr keycode 99 = Control_backslash
+ shift altgr control shiftl shiftr keycode 99 = Control_backslash
+ alt shiftl shiftr keycode 99 = Control_backslash
+ shift alt shiftl shiftr keycode 99 = Control_backslash
+ altgr alt shiftl shiftr keycode 99 = Control_backslash
+ shift altgr alt shiftl shiftr keycode 99 = Control_backslash
+ control alt shiftl shiftr keycode 99 = Control_backslash
+ shift control alt shiftl shiftr keycode 99 = Control_backslash
+ altgr control alt shiftl shiftr keycode 99 = Control_backslash
+ shift altgr control alt shiftl shiftr keycode 99 = Control_backslash
+ altgr ctrll keycode 99 = Control_backslash
+ shift altgr ctrll keycode 99 = Control_backslash
+ control ctrll keycode 99 = Control_backslash
+ shift control ctrll keycode 99 = Control_backslash
+ altgr control ctrll keycode 99 = Control_backslash
+ shift altgr control ctrll keycode 99 = Control_backslash
+ alt ctrll keycode 99 = Control_backslash
+ shift alt ctrll keycode 99 = Control_backslash
+ altgr alt ctrll keycode 99 = Control_backslash
+ shift altgr alt ctrll keycode 99 = Control_backslash
+ control alt ctrll keycode 99 = Control_backslash
+ shift control alt ctrll keycode 99 = Control_backslash
+ altgr control alt ctrll keycode 99 = Control_backslash
+ shift altgr control alt ctrll keycode 99 = Control_backslash
+ altgr shiftl ctrll keycode 99 = Control_backslash
+ shift altgr shiftl ctrll keycode 99 = Control_backslash
+ control shiftl ctrll keycode 99 = Control_backslash
+ shift control shiftl ctrll keycode 99 = Control_backslash
+ altgr control shiftl ctrll keycode 99 = Control_backslash
+ shift altgr control shiftl ctrll keycode 99 = Control_backslash
+ alt shiftl ctrll keycode 99 = Control_backslash
+ shift alt shiftl ctrll keycode 99 = Control_backslash
+ altgr alt shiftl ctrll keycode 99 = Control_backslash
+ shift altgr alt shiftl ctrll keycode 99 = Control_backslash
+ control alt shiftl ctrll keycode 99 = Control_backslash
+ shift control alt shiftl ctrll keycode 99 = Control_backslash
+ altgr control alt shiftl ctrll keycode 99 = Control_backslash
+ shift altgr control alt shiftl ctrll keycode 99 = Control_backslash
+ altgr shiftr ctrll keycode 99 = Control_backslash
+ shift altgr shiftr ctrll keycode 99 = Control_backslash
+ control shiftr ctrll keycode 99 = Control_backslash
+ shift control shiftr ctrll keycode 99 = Control_backslash
+ altgr control shiftr ctrll keycode 99 = Control_backslash
+ shift altgr control shiftr ctrll keycode 99 = Control_backslash
+ alt shiftr ctrll keycode 99 = Control_backslash
+ shift alt shiftr ctrll keycode 99 = Control_backslash
+ altgr alt shiftr ctrll keycode 99 = Control_backslash
+ shift altgr alt shiftr ctrll keycode 99 = Control_backslash
+ control alt shiftr ctrll keycode 99 = Control_backslash
+ shift control alt shiftr ctrll keycode 99 = Control_backslash
+ altgr control alt shiftr ctrll keycode 99 = Control_backslash
+ shift altgr control alt shiftr ctrll keycode 99 = Control_backslash
+ altgr shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift altgr shiftl shiftr ctrll keycode 99 = Control_backslash
+ control shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift control shiftl shiftr ctrll keycode 99 = Control_backslash
+ altgr control shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift altgr control shiftl shiftr ctrll keycode 99 = Control_backslash
+ alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ altgr alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift altgr alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ control alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift control alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ altgr control alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift altgr control alt shiftl shiftr ctrll keycode 99 = Control_backslash
+keycode 100 = AltGr
+keycode 101 = Break Break Break
+ control keycode 101 = Break
+ shift control keycode 101 = Break
+ alt keycode 101 = Break
+ control alt keycode 101 = Break
+keycode 102 = Find
+keycode 103 = Up
+ alt keycode 103 = KeyboardSignal
+ alt shiftl keycode 103 = KeyboardSignal
+ alt shiftr keycode 103 = KeyboardSignal
+ alt shiftl shiftr keycode 103 = KeyboardSignal
+ alt ctrll keycode 103 = KeyboardSignal
+ alt shiftl ctrll keycode 103 = KeyboardSignal
+ alt shiftr ctrll keycode 103 = KeyboardSignal
+ alt shiftl shiftr ctrll keycode 103 = KeyboardSignal
+keycode 104 = Prior
+ shift keycode 104 = Scroll_Backward
+ shift shiftl keycode 104 = Scroll_Backward
+ shift shiftr keycode 104 = Scroll_Backward
+ shift shiftl shiftr keycode 104 = Scroll_Backward
+ shift ctrll keycode 104 = Scroll_Backward
+ shift shiftl ctrll keycode 104 = Scroll_Backward
+ shift shiftr ctrll keycode 104 = Scroll_Backward
+ shift shiftl shiftr ctrll keycode 104 = Scroll_Backward
+keycode 105 = Left
+ alt keycode 105 = Decr_Console
+ alt shiftl keycode 105 = Decr_Console
+ alt shiftr keycode 105 = Decr_Console
+ alt shiftl shiftr keycode 105 = Decr_Console
+ alt ctrll keycode 105 = Decr_Console
+ alt shiftl ctrll keycode 105 = Decr_Console
+ alt shiftr ctrll keycode 105 = Decr_Console
+ alt shiftl shiftr ctrll keycode 105 = Decr_Console
+keycode 106 = Right
+ alt keycode 106 = Incr_Console
+ alt shiftl keycode 106 = Incr_Console
+ alt shiftr keycode 106 = Incr_Console
+ alt shiftl shiftr keycode 106 = Incr_Console
+ alt ctrll keycode 106 = Incr_Console
+ alt shiftl ctrll keycode 106 = Incr_Console
+ alt shiftr ctrll keycode 106 = Incr_Console
+ alt shiftl shiftr ctrll keycode 106 = Incr_Console
+keycode 107 = Select
+keycode 108 = Down
+keycode 109 = Next
+ shift keycode 109 = Scroll_Forward
+ shift shiftl keycode 109 = Scroll_Forward
+ shift shiftr keycode 109 = Scroll_Forward
+ shift shiftl shiftr keycode 109 = Scroll_Forward
+ shift ctrll keycode 109 = Scroll_Forward
+ shift shiftl ctrll keycode 109 = Scroll_Forward
+ shift shiftr ctrll keycode 109 = Scroll_Forward
+ shift shiftl shiftr ctrll keycode 109 = Scroll_Forward
+keycode 110 = Insert
+keycode 111 = Remove
+ altgr control keycode 111 = Boot
+ control alt keycode 111 = Boot
+ altgr control alt keycode 111 = Boot
+ altgr control shiftl keycode 111 = Boot
+ control alt shiftl keycode 111 = Boot
+ altgr control alt shiftl keycode 111 = Boot
+ altgr control shiftr keycode 111 = Boot
+ control alt shiftr keycode 111 = Boot
+ altgr control alt shiftr keycode 111 = Boot
+ altgr control shiftl shiftr keycode 111 = Boot
+ control alt shiftl shiftr keycode 111 = Boot
+ altgr control alt shiftl shiftr keycode 111 = Boot
+ altgr control ctrll keycode 111 = Boot
+ control alt ctrll keycode 111 = Boot
+ altgr control alt ctrll keycode 111 = Boot
+ altgr control shiftl ctrll keycode 111 = Boot
+ control alt shiftl ctrll keycode 111 = Boot
+ altgr control alt shiftl ctrll keycode 111 = Boot
+ altgr control shiftr ctrll keycode 111 = Boot
+ control alt shiftr ctrll keycode 111 = Boot
+ altgr control alt shiftr ctrll keycode 111 = Boot
+ altgr control shiftl shiftr ctrll keycode 111 = Boot
+ control alt shiftl shiftr ctrll keycode 111 = Boot
+ altgr control alt shiftl shiftr ctrll keycode 111 = Boot
+keycode 112 = Macro Macro Macro
+ control keycode 112 = Macro
+ shift control keycode 112 = Macro
+ alt keycode 112 = Macro
+ control alt keycode 112 = Macro
+keycode 113 = F13 F13 F13
+ control keycode 113 = F13
+ shift control keycode 113 = F13
+ alt keycode 113 = F13
+ control alt keycode 113 = F13
+keycode 114 = F14 F14 F14
+ control keycode 114 = F14
+ shift control keycode 114 = F14
+ alt keycode 114 = F14
+ control alt keycode 114 = F14
+keycode 115 = Help Help Help
+ control keycode 115 = Help
+ shift control keycode 115 = Help
+ alt keycode 115 = Help
+ control alt keycode 115 = Help
+keycode 116 = Do Do Do
+ control keycode 116 = Do
+ shift control keycode 116 = Do
+ alt keycode 116 = Do
+ control alt keycode 116 = Do
+keycode 117 = F17 F17 F17
+ control keycode 117 = F17
+ shift control keycode 117 = F17
+ alt keycode 117 = F17
+ control alt keycode 117 = F17
+keycode 118 = KP_MinPlus KP_MinPlus KP_MinPlus
+ control keycode 118 = KP_MinPlus
+ shift control keycode 118 = KP_MinPlus
+ alt keycode 118 = KP_MinPlus
+ control alt keycode 118 = KP_MinPlus
+keycode 119 = Pause
+keycode 120 =
+keycode 121 = KP_Period
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 = Alt
+keycode 126 = Alt
+keycode 127 =
+keycode 128 = nul nul nul
+ control keycode 128 = nul
+ shift control keycode 128 = nul
+ alt keycode 128 = nul
+ control alt keycode 128 = nul
+keycode 129 = nul nul nul
+ control keycode 129 = nul
+ shift control keycode 129 = nul
+ alt keycode 129 = nul
+ control alt keycode 129 = nul
+keycode 130 = nul nul nul
+ control keycode 130 = nul
+ shift control keycode 130 = nul
+ alt keycode 130 = nul
+ control alt keycode 130 = nul
+keycode 131 = nul nul nul
+ control keycode 131 = nul
+ shift control keycode 131 = nul
+ alt keycode 131 = nul
+ control alt keycode 131 = nul
+keycode 132 = nul nul nul
+ control keycode 132 = nul
+ shift control keycode 132 = nul
+ alt keycode 132 = nul
+ control alt keycode 132 = nul
+keycode 133 = nul nul nul
+ control keycode 133 = nul
+ shift control keycode 133 = nul
+ alt keycode 133 = nul
+ control alt keycode 133 = nul
+keycode 134 = nul nul nul
+ control keycode 134 = nul
+ shift control keycode 134 = nul
+ alt keycode 134 = nul
+ control alt keycode 134 = nul
+keycode 135 = nul nul nul
+ control keycode 135 = nul
+ shift control keycode 135 = nul
+ alt keycode 135 = nul
+ control alt keycode 135 = nul
+keycode 136 = nul nul nul
+ control keycode 136 = nul
+ shift control keycode 136 = nul
+ alt keycode 136 = nul
+ control alt keycode 136 = nul
+keycode 137 = nul nul nul
+ control keycode 137 = nul
+ shift control keycode 137 = nul
+ alt keycode 137 = nul
+ control alt keycode 137 = nul
+keycode 138 = nul nul nul
+ control keycode 138 = nul
+ shift control keycode 138 = nul
+ alt keycode 138 = nul
+ control alt keycode 138 = nul
+keycode 139 = nul nul nul
+ control keycode 139 = nul
+ shift control keycode 139 = nul
+ alt keycode 139 = nul
+ control alt keycode 139 = nul
+keycode 140 = nul nul nul
+ control keycode 140 = nul
+ shift control keycode 140 = nul
+ alt keycode 140 = nul
+ control alt keycode 140 = nul
+keycode 141 = nul nul nul
+ control keycode 141 = nul
+ shift control keycode 141 = nul
+ alt keycode 141 = nul
+ control alt keycode 141 = nul
+keycode 142 = nul nul nul
+ control keycode 142 = nul
+ shift control keycode 142 = nul
+ alt keycode 142 = nul
+ control alt keycode 142 = nul
+keycode 143 = nul nul nul
+ control keycode 143 = nul
+ shift control keycode 143 = nul
+ alt keycode 143 = nul
+ control alt keycode 143 = nul
+keycode 144 = nul nul nul
+ control keycode 144 = nul
+ shift control keycode 144 = nul
+ alt keycode 144 = nul
+ control alt keycode 144 = nul
+keycode 145 = nul nul nul
+ control keycode 145 = nul
+ shift control keycode 145 = nul
+ alt keycode 145 = nul
+ control alt keycode 145 = nul
+keycode 146 = nul nul nul
+ control keycode 146 = nul
+ shift control keycode 146 = nul
+ alt keycode 146 = nul
+ control alt keycode 146 = nul
+keycode 147 = nul nul nul
+ control keycode 147 = nul
+ shift control keycode 147 = nul
+ alt keycode 147 = nul
+ control alt keycode 147 = nul
+keycode 148 = nul nul nul
+ control keycode 148 = nul
+ shift control keycode 148 = nul
+ alt keycode 148 = nul
+ control alt keycode 148 = nul
+keycode 149 = nul nul nul
+ control keycode 149 = nul
+ shift control keycode 149 = nul
+ alt keycode 149 = nul
+ control alt keycode 149 = nul
+keycode 150 = nul nul nul
+ control keycode 150 = nul
+ shift control keycode 150 = nul
+ alt keycode 150 = nul
+ control alt keycode 150 = nul
+keycode 151 = nul nul nul
+ control keycode 151 = nul
+ shift control keycode 151 = nul
+ alt keycode 151 = nul
+ control alt keycode 151 = nul
+keycode 152 = nul nul nul
+ control keycode 152 = nul
+ shift control keycode 152 = nul
+ alt keycode 152 = nul
+ control alt keycode 152 = nul
+keycode 153 = nul nul nul
+ control keycode 153 = nul
+ shift control keycode 153 = nul
+ alt keycode 153 = nul
+ control alt keycode 153 = nul
+keycode 154 = nul nul nul
+ control keycode 154 = nul
+ shift control keycode 154 = nul
+ alt keycode 154 = nul
+ control alt keycode 154 = nul
+keycode 155 = nul nul nul
+ control keycode 155 = nul
+ shift control keycode 155 = nul
+ alt keycode 155 = nul
+ control alt keycode 155 = nul
+keycode 156 = nul nul nul
+ control keycode 156 = nul
+ shift control keycode 156 = nul
+ alt keycode 156 = nul
+ control alt keycode 156 = nul
+keycode 157 = nul nul nul
+ control keycode 157 = nul
+ shift control keycode 157 = nul
+ alt keycode 157 = nul
+ control alt keycode 157 = nul
+keycode 158 = nul nul nul
+ control keycode 158 = nul
+ shift control keycode 158 = nul
+ alt keycode 158 = nul
+ control alt keycode 158 = nul
+keycode 159 = nul nul nul
+ control keycode 159 = nul
+ shift control keycode 159 = nul
+ alt keycode 159 = nul
+ control alt keycode 159 = nul
+keycode 160 = nul nul nul
+ control keycode 160 = nul
+ shift control keycode 160 = nul
+ alt keycode 160 = nul
+ control alt keycode 160 = nul
+keycode 161 = nul nul nul
+ control keycode 161 = nul
+ shift control keycode 161 = nul
+ alt keycode 161 = nul
+ control alt keycode 161 = nul
+keycode 162 = nul nul nul
+ control keycode 162 = nul
+ shift control keycode 162 = nul
+ alt keycode 162 = nul
+ control alt keycode 162 = nul
+keycode 163 = nul nul nul
+ control keycode 163 = nul
+ shift control keycode 163 = nul
+ alt keycode 163 = nul
+ control alt keycode 163 = nul
+keycode 164 = nul nul nul
+ control keycode 164 = nul
+ shift control keycode 164 = nul
+ alt keycode 164 = nul
+ control alt keycode 164 = nul
+keycode 165 = nul nul nul
+ control keycode 165 = nul
+ shift control keycode 165 = nul
+ alt keycode 165 = nul
+ control alt keycode 165 = nul
+keycode 166 = nul nul nul
+ control keycode 166 = nul
+ shift control keycode 166 = nul
+ alt keycode 166 = nul
+ control alt keycode 166 = nul
+keycode 167 = nul nul nul
+ control keycode 167 = nul
+ shift control keycode 167 = nul
+ alt keycode 167 = nul
+ control alt keycode 167 = nul
+keycode 168 = nul nul nul
+ control keycode 168 = nul
+ shift control keycode 168 = nul
+ alt keycode 168 = nul
+ control alt keycode 168 = nul
+keycode 169 = nul nul nul
+ control keycode 169 = nul
+ shift control keycode 169 = nul
+ alt keycode 169 = nul
+ control alt keycode 169 = nul
+keycode 170 = nul nul nul
+ control keycode 170 = nul
+ shift control keycode 170 = nul
+ alt keycode 170 = nul
+ control alt keycode 170 = nul
+keycode 171 = nul nul nul
+ control keycode 171 = nul
+ shift control keycode 171 = nul
+ alt keycode 171 = nul
+ control alt keycode 171 = nul
+keycode 172 = nul nul nul
+ control keycode 172 = nul
+ shift control keycode 172 = nul
+ alt keycode 172 = nul
+ control alt keycode 172 = nul
+keycode 173 = nul nul nul
+ control keycode 173 = nul
+ shift control keycode 173 = nul
+ alt keycode 173 = nul
+ control alt keycode 173 = nul
+keycode 174 = nul nul nul
+ control keycode 174 = nul
+ shift control keycode 174 = nul
+ alt keycode 174 = nul
+ control alt keycode 174 = nul
+keycode 175 = nul nul nul
+ control keycode 175 = nul
+ shift control keycode 175 = nul
+ alt keycode 175 = nul
+ control alt keycode 175 = nul
+keycode 176 = nul nul nul
+ control keycode 176 = nul
+ shift control keycode 176 = nul
+ alt keycode 176 = nul
+ control alt keycode 176 = nul
+keycode 177 = nul nul nul
+ control keycode 177 = nul
+ shift control keycode 177 = nul
+ alt keycode 177 = nul
+ control alt keycode 177 = nul
+keycode 178 = nul nul nul
+ control keycode 178 = nul
+ shift control keycode 178 = nul
+ alt keycode 178 = nul
+ control alt keycode 178 = nul
+keycode 179 = nul nul nul
+ control keycode 179 = nul
+ shift control keycode 179 = nul
+ alt keycode 179 = nul
+ control alt keycode 179 = nul
+keycode 180 = nul nul nul
+ control keycode 180 = nul
+ shift control keycode 180 = nul
+ alt keycode 180 = nul
+ control alt keycode 180 = nul
+keycode 181 = nul nul nul
+ control keycode 181 = nul
+ shift control keycode 181 = nul
+ alt keycode 181 = nul
+ control alt keycode 181 = nul
+keycode 182 = nul nul nul
+ control keycode 182 = nul
+ shift control keycode 182 = nul
+ alt keycode 182 = nul
+ control alt keycode 182 = nul
+keycode 183 = nul nul nul
+ control keycode 183 = nul
+ shift control keycode 183 = nul
+ alt keycode 183 = nul
+ control alt keycode 183 = nul
+keycode 184 = nul nul nul
+ control keycode 184 = nul
+ shift control keycode 184 = nul
+ alt keycode 184 = nul
+ control alt keycode 184 = nul
+keycode 185 = nul nul nul
+ control keycode 185 = nul
+ shift control keycode 185 = nul
+ alt keycode 185 = nul
+ control alt keycode 185 = nul
+keycode 186 = nul nul nul
+ control keycode 186 = nul
+ shift control keycode 186 = nul
+ alt keycode 186 = nul
+ control alt keycode 186 = nul
+keycode 187 = nul nul nul
+ control keycode 187 = nul
+ shift control keycode 187 = nul
+ alt keycode 187 = nul
+ control alt keycode 187 = nul
+keycode 188 = nul nul nul
+ control keycode 188 = nul
+ shift control keycode 188 = nul
+ alt keycode 188 = nul
+ control alt keycode 188 = nul
+keycode 189 = nul nul nul
+ control keycode 189 = nul
+ shift control keycode 189 = nul
+ alt keycode 189 = nul
+ control alt keycode 189 = nul
+keycode 190 = nul nul nul
+ control keycode 190 = nul
+ shift control keycode 190 = nul
+ alt keycode 190 = nul
+ control alt keycode 190 = nul
+keycode 191 = nul nul nul
+ control keycode 191 = nul
+ shift control keycode 191 = nul
+ alt keycode 191 = nul
+ control alt keycode 191 = nul
+keycode 192 = nul nul nul
+ control keycode 192 = nul
+ shift control keycode 192 = nul
+ alt keycode 192 = nul
+ control alt keycode 192 = nul
+keycode 193 = nul nul nul
+ control keycode 193 = nul
+ shift control keycode 193 = nul
+ alt keycode 193 = nul
+ control alt keycode 193 = nul
+keycode 194 = nul nul nul
+ control keycode 194 = nul
+ shift control keycode 194 = nul
+ alt keycode 194 = nul
+ control alt keycode 194 = nul
+keycode 195 = nul nul nul
+ control keycode 195 = nul
+ shift control keycode 195 = nul
+ alt keycode 195 = nul
+ control alt keycode 195 = nul
+keycode 196 = nul nul nul
+ control keycode 196 = nul
+ shift control keycode 196 = nul
+ alt keycode 196 = nul
+ control alt keycode 196 = nul
+keycode 197 = nul nul nul
+ control keycode 197 = nul
+ shift control keycode 197 = nul
+ alt keycode 197 = nul
+ control alt keycode 197 = nul
+keycode 198 = nul nul nul
+ control keycode 198 = nul
+ shift control keycode 198 = nul
+ alt keycode 198 = nul
+ control alt keycode 198 = nul
+keycode 199 = nul nul nul
+ control keycode 199 = nul
+ shift control keycode 199 = nul
+ alt keycode 199 = nul
+ control alt keycode 199 = nul
+keycode 200 = nul nul nul
+ control keycode 200 = nul
+ shift control keycode 200 = nul
+ alt keycode 200 = nul
+ control alt keycode 200 = nul
+keycode 201 = nul nul nul
+ control keycode 201 = nul
+ shift control keycode 201 = nul
+ alt keycode 201 = nul
+ control alt keycode 201 = nul
+keycode 202 = nul nul nul
+ control keycode 202 = nul
+ shift control keycode 202 = nul
+ alt keycode 202 = nul
+ control alt keycode 202 = nul
+keycode 203 = nul nul nul
+ control keycode 203 = nul
+ shift control keycode 203 = nul
+ alt keycode 203 = nul
+ control alt keycode 203 = nul
+keycode 204 = nul nul nul
+ control keycode 204 = nul
+ shift control keycode 204 = nul
+ alt keycode 204 = nul
+ control alt keycode 204 = nul
+keycode 205 = nul nul nul
+ control keycode 205 = nul
+ shift control keycode 205 = nul
+ alt keycode 205 = nul
+ control alt keycode 205 = nul
+keycode 206 = nul nul nul
+ control keycode 206 = nul
+ shift control keycode 206 = nul
+ alt keycode 206 = nul
+ control alt keycode 206 = nul
+keycode 207 = nul nul nul
+ control keycode 207 = nul
+ shift control keycode 207 = nul
+ alt keycode 207 = nul
+ control alt keycode 207 = nul
+keycode 208 = nul nul nul
+ control keycode 208 = nul
+ shift control keycode 208 = nul
+ alt keycode 208 = nul
+ control alt keycode 208 = nul
+keycode 209 = nul nul nul
+ control keycode 209 = nul
+ shift control keycode 209 = nul
+ alt keycode 209 = nul
+ control alt keycode 209 = nul
+keycode 210 = nul nul nul
+ control keycode 210 = nul
+ shift control keycode 210 = nul
+ alt keycode 210 = nul
+ control alt keycode 210 = nul
+keycode 211 = nul nul nul
+ control keycode 211 = nul
+ shift control keycode 211 = nul
+ alt keycode 211 = nul
+ control alt keycode 211 = nul
+keycode 212 = nul nul nul
+ control keycode 212 = nul
+ shift control keycode 212 = nul
+ alt keycode 212 = nul
+ control alt keycode 212 = nul
+keycode 213 = nul nul nul
+ control keycode 213 = nul
+ shift control keycode 213 = nul
+ alt keycode 213 = nul
+ control alt keycode 213 = nul
+keycode 214 = nul nul nul
+ control keycode 214 = nul
+ shift control keycode 214 = nul
+ alt keycode 214 = nul
+ control alt keycode 214 = nul
+keycode 215 = nul nul nul
+ control keycode 215 = nul
+ shift control keycode 215 = nul
+ alt keycode 215 = nul
+ control alt keycode 215 = nul
+keycode 216 = nul nul nul
+ control keycode 216 = nul
+ shift control keycode 216 = nul
+ alt keycode 216 = nul
+ control alt keycode 216 = nul
+keycode 217 = nul nul nul
+ control keycode 217 = nul
+ shift control keycode 217 = nul
+ alt keycode 217 = nul
+ control alt keycode 217 = nul
+keycode 218 = nul nul nul
+ control keycode 218 = nul
+ shift control keycode 218 = nul
+ alt keycode 218 = nul
+ control alt keycode 218 = nul
+keycode 219 = nul nul nul
+ control keycode 219 = nul
+ shift control keycode 219 = nul
+ alt keycode 219 = nul
+ control alt keycode 219 = nul
+keycode 220 = nul nul nul
+ control keycode 220 = nul
+ shift control keycode 220 = nul
+ alt keycode 220 = nul
+ control alt keycode 220 = nul
+keycode 221 = nul nul nul
+ control keycode 221 = nul
+ shift control keycode 221 = nul
+ alt keycode 221 = nul
+ control alt keycode 221 = nul
+keycode 222 = nul nul nul
+ control keycode 222 = nul
+ shift control keycode 222 = nul
+ alt keycode 222 = nul
+ control alt keycode 222 = nul
+keycode 223 = nul nul nul
+ control keycode 223 = nul
+ shift control keycode 223 = nul
+ alt keycode 223 = nul
+ control alt keycode 223 = nul
+keycode 224 = nul nul nul
+ control keycode 224 = nul
+ shift control keycode 224 = nul
+ alt keycode 224 = nul
+ control alt keycode 224 = nul
+keycode 225 = nul nul nul
+ control keycode 225 = nul
+ shift control keycode 225 = nul
+ alt keycode 225 = nul
+ control alt keycode 225 = nul
+keycode 226 = nul nul nul
+ control keycode 226 = nul
+ shift control keycode 226 = nul
+ alt keycode 226 = nul
+ control alt keycode 226 = nul
+keycode 227 = nul nul nul
+ control keycode 227 = nul
+ shift control keycode 227 = nul
+ alt keycode 227 = nul
+ control alt keycode 227 = nul
+keycode 228 = nul nul nul
+ control keycode 228 = nul
+ shift control keycode 228 = nul
+ alt keycode 228 = nul
+ control alt keycode 228 = nul
+keycode 229 = nul nul nul
+ control keycode 229 = nul
+ shift control keycode 229 = nul
+ alt keycode 229 = nul
+ control alt keycode 229 = nul
+keycode 230 = nul nul nul
+ control keycode 230 = nul
+ shift control keycode 230 = nul
+ alt keycode 230 = nul
+ control alt keycode 230 = nul
+keycode 231 = nul nul nul
+ control keycode 231 = nul
+ shift control keycode 231 = nul
+ alt keycode 231 = nul
+ control alt keycode 231 = nul
+keycode 232 = nul nul nul
+ control keycode 232 = nul
+ shift control keycode 232 = nul
+ alt keycode 232 = nul
+ control alt keycode 232 = nul
+keycode 233 = nul nul nul
+ control keycode 233 = nul
+ shift control keycode 233 = nul
+ alt keycode 233 = nul
+ control alt keycode 233 = nul
+keycode 234 = nul nul nul
+ control keycode 234 = nul
+ shift control keycode 234 = nul
+ alt keycode 234 = nul
+ control alt keycode 234 = nul
+keycode 235 = nul nul nul
+ control keycode 235 = nul
+ shift control keycode 235 = nul
+ alt keycode 235 = nul
+ control alt keycode 235 = nul
+keycode 236 = nul nul nul
+ control keycode 236 = nul
+ shift control keycode 236 = nul
+ alt keycode 236 = nul
+ control alt keycode 236 = nul
+keycode 237 = nul nul nul
+ control keycode 237 = nul
+ shift control keycode 237 = nul
+ alt keycode 237 = nul
+ control alt keycode 237 = nul
+keycode 238 = nul nul nul
+ control keycode 238 = nul
+ shift control keycode 238 = nul
+ alt keycode 238 = nul
+ control alt keycode 238 = nul
+keycode 239 = nul nul nul
+ control keycode 239 = nul
+ shift control keycode 239 = nul
+ alt keycode 239 = nul
+ control alt keycode 239 = nul
+keycode 240 = nul nul nul
+ control keycode 240 = nul
+ shift control keycode 240 = nul
+ alt keycode 240 = nul
+ control alt keycode 240 = nul
+keycode 241 = nul nul nul
+ control keycode 241 = nul
+ shift control keycode 241 = nul
+ alt keycode 241 = nul
+ control alt keycode 241 = nul
+keycode 242 = nul nul nul
+ control keycode 242 = nul
+ shift control keycode 242 = nul
+ alt keycode 242 = nul
+ control alt keycode 242 = nul
+keycode 243 = nul nul nul
+ control keycode 243 = nul
+ shift control keycode 243 = nul
+ alt keycode 243 = nul
+ control alt keycode 243 = nul
+keycode 244 = nul nul nul
+ control keycode 244 = nul
+ shift control keycode 244 = nul
+ alt keycode 244 = nul
+ control alt keycode 244 = nul
+keycode 245 = nul nul nul
+ control keycode 245 = nul
+ shift control keycode 245 = nul
+ alt keycode 245 = nul
+ control alt keycode 245 = nul
+keycode 246 = nul nul nul
+ control keycode 246 = nul
+ shift control keycode 246 = nul
+ alt keycode 246 = nul
+ control alt keycode 246 = nul
+keycode 247 = nul nul nul
+ control keycode 247 = nul
+ shift control keycode 247 = nul
+ alt keycode 247 = nul
+ control alt keycode 247 = nul
+keycode 248 = nul nul nul
+ control keycode 248 = nul
+ shift control keycode 248 = nul
+ alt keycode 248 = nul
+ control alt keycode 248 = nul
+keycode 249 = nul nul nul
+ control keycode 249 = nul
+ shift control keycode 249 = nul
+ alt keycode 249 = nul
+ control alt keycode 249 = nul
+keycode 250 = nul nul nul
+ control keycode 250 = nul
+ shift control keycode 250 = nul
+ alt keycode 250 = nul
+ control alt keycode 250 = nul
+keycode 251 = nul nul nul
+ control keycode 251 = nul
+ shift control keycode 251 = nul
+ alt keycode 251 = nul
+ control alt keycode 251 = nul
+keycode 252 = nul nul nul
+ control keycode 252 = nul
+ shift control keycode 252 = nul
+ alt keycode 252 = nul
+ control alt keycode 252 = nul
+keycode 253 = nul nul nul
+ control keycode 253 = nul
+ shift control keycode 253 = nul
+ alt keycode 253 = nul
+ control alt keycode 253 = nul
+keycode 254 = nul nul nul
+ control keycode 254 = nul
+ shift control keycode 254 = nul
+ alt keycode 254 = nul
+ control alt keycode 254 = nul
+keycode 255 = nul nul nul
+ control keycode 255 = nul
+ shift control keycode 255 = nul
+ alt keycode 255 = nul
+ control alt keycode 255 = nul
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
+string Macro = "\033[M"
+string Pause = "\033[P"
+compose '`' 'A' to U+00c0
+compose '`' 'a' to U+00e0
+compose '\'' 'A' to U+00c1
+compose '\'' 'a' to U+00e1
+compose '^' 'A' to U+00c2
+compose '^' 'a' to U+00e2
+compose '~' 'A' to U+00c3
+compose '~' 'a' to U+00e3
+compose '"' 'A' to U+00c4
+compose '"' 'a' to U+00e4
+compose 'O' 'A' to U+00c5
+compose 'o' 'a' to U+00e5
+compose '0' 'A' to U+00c5
+compose '0' 'a' to U+00e5
+compose 'A' 'A' to U+00c5
+compose 'a' 'a' to U+00e5
+compose 'A' 'E' to U+00c6
+compose 'a' 'e' to U+00e6
+compose ',' 'C' to U+00c7
+compose ',' 'c' to U+00e7
+compose '`' 'E' to U+00c8
+compose '`' 'e' to U+00e8
+compose '\'' 'E' to U+00c9
+compose '\'' 'e' to U+00e9
+compose '^' 'E' to U+00ca
+compose '^' 'e' to U+00ea
+compose '"' 'E' to U+00cb
+compose '"' 'e' to U+00eb
+compose '`' 'I' to U+00cc
+compose '`' 'i' to U+00ec
+compose '\'' 'I' to U+00cd
+compose '\'' 'i' to U+00ed
+compose '^' 'I' to U+00ce
+compose '^' 'i' to U+00ee
+compose '"' 'I' to U+00cf
+compose '"' 'i' to U+00ef
+compose '-' 'D' to U+00d0
+compose '-' 'd' to U+00f0
+compose '~' 'N' to U+00d1
+compose '~' 'n' to U+00f1
+compose '`' 'O' to U+00d2
+compose '`' 'o' to U+00f2
+compose '\'' 'O' to U+00d3
+compose '\'' 'o' to U+00f3
+compose '^' 'O' to U+00d4
+compose '^' 'o' to U+00f4
+compose '~' 'O' to U+00d5
+compose '~' 'o' to U+00f5
+compose '"' 'O' to U+00d6
+compose '"' 'o' to U+00f6
+compose '/' 'O' to U+00d8
+compose '/' 'o' to U+00f8
+compose '`' 'U' to U+00d9
+compose '`' 'u' to U+00f9
+compose '\'' 'U' to U+00da
+compose '\'' 'u' to U+00fa
+compose '^' 'U' to U+00db
+compose '^' 'u' to U+00fb
+compose '"' 'U' to U+00dc
+compose '"' 'u' to U+00fc
+compose '\'' 'Y' to U+00dd
+compose '\'' 'y' to U+00fd
+compose 'T' 'H' to U+00de
+compose 't' 'h' to U+00fe
+compose 's' 's' to U+00df
+compose '"' 'y' to U+00ff
+compose 's' 'z' to U+00df
+compose 'i' 'j' to U+00ff
diff --git a/remote/modules/brazilian/data/opt/openslx/keymaps/brazilian_qwerty_keyboard_translation.map b/remote/modules/brazilian/data/opt/openslx/keymaps/brazilian_qwerty_keyboard_translation.map
new file mode 100644
index 00000000..abf384bd
--- /dev/null
+++ b/remote/modules/brazilian/data/opt/openslx/keymaps/brazilian_qwerty_keyboard_translation.map
@@ -0,0 +1,8500 @@
+keymaps 0-127
+keycode 1 = Escape
+ alt keycode 1 = Meta_Escape
+ shift alt keycode 1 = Meta_Escape
+ altgr alt keycode 1 = Meta_Escape
+ shift altgr alt keycode 1 = Meta_Escape
+ control alt keycode 1 = Meta_Escape
+ shift control alt keycode 1 = Meta_Escape
+ altgr control alt keycode 1 = Meta_Escape
+ shift altgr control alt keycode 1 = Meta_Escape
+ alt shiftl keycode 1 = Meta_Escape
+ shift alt shiftl keycode 1 = Meta_Escape
+ altgr alt shiftl keycode 1 = Meta_Escape
+ shift altgr alt shiftl keycode 1 = Meta_Escape
+ control alt shiftl keycode 1 = Meta_Escape
+ shift control alt shiftl keycode 1 = Meta_Escape
+ altgr control alt shiftl keycode 1 = Meta_Escape
+ shift altgr control alt shiftl keycode 1 = Meta_Escape
+ alt shiftr keycode 1 = Meta_Escape
+ shift alt shiftr keycode 1 = Meta_Escape
+ altgr alt shiftr keycode 1 = Meta_Escape
+ shift altgr alt shiftr keycode 1 = Meta_Escape
+ control alt shiftr keycode 1 = Meta_Escape
+ shift control alt shiftr keycode 1 = Meta_Escape
+ altgr control alt shiftr keycode 1 = Meta_Escape
+ shift altgr control alt shiftr keycode 1 = Meta_Escape
+ alt shiftl shiftr keycode 1 = Meta_Escape
+ shift alt shiftl shiftr keycode 1 = Meta_Escape
+ altgr alt shiftl shiftr keycode 1 = Meta_Escape
+ shift altgr alt shiftl shiftr keycode 1 = Meta_Escape
+ control alt shiftl shiftr keycode 1 = Meta_Escape
+ shift control alt shiftl shiftr keycode 1 = Meta_Escape
+ altgr control alt shiftl shiftr keycode 1 = Meta_Escape
+ shift altgr control alt shiftl shiftr keycode 1 = Meta_Escape
+ alt ctrll keycode 1 = Meta_Escape
+ shift alt ctrll keycode 1 = Meta_Escape
+ altgr alt ctrll keycode 1 = Meta_Escape
+ shift altgr alt ctrll keycode 1 = Meta_Escape
+ control alt ctrll keycode 1 = Meta_Escape
+ shift control alt ctrll keycode 1 = Meta_Escape
+ altgr control alt ctrll keycode 1 = Meta_Escape
+ shift altgr control alt ctrll keycode 1 = Meta_Escape
+ alt shiftl ctrll keycode 1 = Meta_Escape
+ shift alt shiftl ctrll keycode 1 = Meta_Escape
+ altgr alt shiftl ctrll keycode 1 = Meta_Escape
+ shift altgr alt shiftl ctrll keycode 1 = Meta_Escape
+ control alt shiftl ctrll keycode 1 = Meta_Escape
+ shift control alt shiftl ctrll keycode 1 = Meta_Escape
+ altgr control alt shiftl ctrll keycode 1 = Meta_Escape
+ shift altgr control alt shiftl ctrll keycode 1 = Meta_Escape
+ alt shiftr ctrll keycode 1 = Meta_Escape
+ shift alt shiftr ctrll keycode 1 = Meta_Escape
+ altgr alt shiftr ctrll keycode 1 = Meta_Escape
+ shift altgr alt shiftr ctrll keycode 1 = Meta_Escape
+ control alt shiftr ctrll keycode 1 = Meta_Escape
+ shift control alt shiftr ctrll keycode 1 = Meta_Escape
+ altgr control alt shiftr ctrll keycode 1 = Meta_Escape
+ shift altgr control alt shiftr ctrll keycode 1 = Meta_Escape
+ alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ shift alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ altgr alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ shift altgr alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ control alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ shift control alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ altgr control alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+ shift altgr control alt shiftl shiftr ctrll keycode 1 = Meta_Escape
+keycode 2 = one exclam onesuperior exclamdown
+ alt keycode 2 = Meta_one
+ shift alt keycode 2 = Meta_exclam
+ altgr alt keycode 2 = Meta_one
+ shift altgr alt keycode 2 = Meta_exclam
+ shiftl keycode 2 = one
+ shift shiftl keycode 2 = exclam
+ altgr shiftl keycode 2 = onesuperior
+ shift altgr shiftl keycode 2 = exclamdown
+ alt shiftl keycode 2 = Meta_one
+ shift alt shiftl keycode 2 = Meta_exclam
+ altgr alt shiftl keycode 2 = Meta_one
+ shift altgr alt shiftl keycode 2 = Meta_exclam
+ shiftr keycode 2 = one
+ shift shiftr keycode 2 = exclam
+ altgr shiftr keycode 2 = onesuperior
+ shift altgr shiftr keycode 2 = exclamdown
+ alt shiftr keycode 2 = Meta_one
+ shift alt shiftr keycode 2 = Meta_exclam
+ altgr alt shiftr keycode 2 = Meta_one
+ shift altgr alt shiftr keycode 2 = Meta_exclam
+ shiftl shiftr keycode 2 = one
+ shift shiftl shiftr keycode 2 = exclam
+ altgr shiftl shiftr keycode 2 = onesuperior
+ shift altgr shiftl shiftr keycode 2 = exclamdown
+ alt shiftl shiftr keycode 2 = Meta_one
+ shift alt shiftl shiftr keycode 2 = Meta_exclam
+ altgr alt shiftl shiftr keycode 2 = Meta_one
+ shift altgr alt shiftl shiftr keycode 2 = Meta_exclam
+ ctrll keycode 2 = one
+ shift ctrll keycode 2 = exclam
+ altgr ctrll keycode 2 = onesuperior
+ shift altgr ctrll keycode 2 = exclamdown
+ alt ctrll keycode 2 = Meta_one
+ shift alt ctrll keycode 2 = Meta_exclam
+ altgr alt ctrll keycode 2 = Meta_one
+ shift altgr alt ctrll keycode 2 = Meta_exclam
+ shiftl ctrll keycode 2 = one
+ shift shiftl ctrll keycode 2 = exclam
+ altgr shiftl ctrll keycode 2 = onesuperior
+ shift altgr shiftl ctrll keycode 2 = exclamdown
+ alt shiftl ctrll keycode 2 = Meta_one
+ shift alt shiftl ctrll keycode 2 = Meta_exclam
+ altgr alt shiftl ctrll keycode 2 = Meta_one
+ shift altgr alt shiftl ctrll keycode 2 = Meta_exclam
+ shiftr ctrll keycode 2 = one
+ shift shiftr ctrll keycode 2 = exclam
+ altgr shiftr ctrll keycode 2 = onesuperior
+ shift altgr shiftr ctrll keycode 2 = exclamdown
+ alt shiftr ctrll keycode 2 = Meta_one
+ shift alt shiftr ctrll keycode 2 = Meta_exclam
+ altgr alt shiftr ctrll keycode 2 = Meta_one
+ shift altgr alt shiftr ctrll keycode 2 = Meta_exclam
+ shiftl shiftr ctrll keycode 2 = one
+ shift shiftl shiftr ctrll keycode 2 = exclam
+ altgr shiftl shiftr ctrll keycode 2 = onesuperior
+ shift altgr shiftl shiftr ctrll keycode 2 = exclamdown
+ alt shiftl shiftr ctrll keycode 2 = Meta_one
+ shift alt shiftl shiftr ctrll keycode 2 = Meta_exclam
+ altgr alt shiftl shiftr ctrll keycode 2 = Meta_one
+ shift altgr alt shiftl shiftr ctrll keycode 2 = Meta_exclam
+keycode 3 = two
+ shift keycode 3 = at
+ altgr keycode 3 = twosuperior
+ shift altgr keycode 3 = onehalf
+ control keycode 3 = nul
+ shift control keycode 3 = nul
+ altgr control keycode 3 = nul
+ shift altgr control keycode 3 = nul
+ alt keycode 3 = Meta_two
+ shift alt keycode 3 = Meta_at
+ altgr alt keycode 3 = Meta_two
+ shift altgr alt keycode 3 = Meta_at
+ control alt keycode 3 = Meta_nul
+ shift control alt keycode 3 = Meta_nul
+ altgr control alt keycode 3 = Meta_nul
+ shift altgr control alt keycode 3 = Meta_nul
+ shift shiftl keycode 3 = at
+ altgr shiftl keycode 3 = twosuperior
+ shift altgr shiftl keycode 3 = onehalf
+ control shiftl keycode 3 = nul
+ shift control shiftl keycode 3 = nul
+ altgr control shiftl keycode 3 = nul
+ shift altgr control shiftl keycode 3 = nul
+ alt shiftl keycode 3 = Meta_two
+ shift alt shiftl keycode 3 = Meta_at
+ altgr alt shiftl keycode 3 = Meta_two
+ shift altgr alt shiftl keycode 3 = Meta_at
+ control alt shiftl keycode 3 = Meta_nul
+ shift control alt shiftl keycode 3 = Meta_nul
+ altgr control alt shiftl keycode 3 = Meta_nul
+ shift altgr control alt shiftl keycode 3 = Meta_nul
+ shift shiftr keycode 3 = at
+ altgr shiftr keycode 3 = twosuperior
+ shift altgr shiftr keycode 3 = onehalf
+ control shiftr keycode 3 = nul
+ shift control shiftr keycode 3 = nul
+ altgr control shiftr keycode 3 = nul
+ shift altgr control shiftr keycode 3 = nul
+ alt shiftr keycode 3 = Meta_two
+ shift alt shiftr keycode 3 = Meta_at
+ altgr alt shiftr keycode 3 = Meta_two
+ shift altgr alt shiftr keycode 3 = Meta_at
+ control alt shiftr keycode 3 = Meta_nul
+ shift control alt shiftr keycode 3 = Meta_nul
+ altgr control alt shiftr keycode 3 = Meta_nul
+ shift altgr control alt shiftr keycode 3 = Meta_nul
+ shift shiftl shiftr keycode 3 = at
+ altgr shiftl shiftr keycode 3 = twosuperior
+ shift altgr shiftl shiftr keycode 3 = onehalf
+ control shiftl shiftr keycode 3 = nul
+ shift control shiftl shiftr keycode 3 = nul
+ altgr control shiftl shiftr keycode 3 = nul
+ shift altgr control shiftl shiftr keycode 3 = nul
+ alt shiftl shiftr keycode 3 = Meta_two
+ shift alt shiftl shiftr keycode 3 = Meta_at
+ altgr alt shiftl shiftr keycode 3 = Meta_two
+ shift altgr alt shiftl shiftr keycode 3 = Meta_at
+ control alt shiftl shiftr keycode 3 = Meta_nul
+ shift control alt shiftl shiftr keycode 3 = Meta_nul
+ altgr control alt shiftl shiftr keycode 3 = Meta_nul
+ shift altgr control alt shiftl shiftr keycode 3 = Meta_nul
+ shift ctrll keycode 3 = at
+ altgr ctrll keycode 3 = twosuperior
+ shift altgr ctrll keycode 3 = onehalf
+ control ctrll keycode 3 = nul
+ shift control ctrll keycode 3 = nul
+ altgr control ctrll keycode 3 = nul
+ shift altgr control ctrll keycode 3 = nul
+ alt ctrll keycode 3 = Meta_two
+ shift alt ctrll keycode 3 = Meta_at
+ altgr alt ctrll keycode 3 = Meta_two
+ shift altgr alt ctrll keycode 3 = Meta_at
+ control alt ctrll keycode 3 = Meta_nul
+ shift control alt ctrll keycode 3 = Meta_nul
+ altgr control alt ctrll keycode 3 = Meta_nul
+ shift altgr control alt ctrll keycode 3 = Meta_nul
+ shift shiftl ctrll keycode 3 = at
+ altgr shiftl ctrll keycode 3 = twosuperior
+ shift altgr shiftl ctrll keycode 3 = onehalf
+ control shiftl ctrll keycode 3 = nul
+ shift control shiftl ctrll keycode 3 = nul
+ altgr control shiftl ctrll keycode 3 = nul
+ shift altgr control shiftl ctrll keycode 3 = nul
+ alt shiftl ctrll keycode 3 = Meta_two
+ shift alt shiftl ctrll keycode 3 = Meta_at
+ altgr alt shiftl ctrll keycode 3 = Meta_two
+ shift altgr alt shiftl ctrll keycode 3 = Meta_at
+ control alt shiftl ctrll keycode 3 = Meta_nul
+ shift control alt shiftl ctrll keycode 3 = Meta_nul
+ altgr control alt shiftl ctrll keycode 3 = Meta_nul
+ shift altgr control alt shiftl ctrll keycode 3 = Meta_nul
+ shift shiftr ctrll keycode 3 = at
+ altgr shiftr ctrll keycode 3 = twosuperior
+ shift altgr shiftr ctrll keycode 3 = onehalf
+ control shiftr ctrll keycode 3 = nul
+ shift control shiftr ctrll keycode 3 = nul
+ altgr control shiftr ctrll keycode 3 = nul
+ shift altgr control shiftr ctrll keycode 3 = nul
+ alt shiftr ctrll keycode 3 = Meta_two
+ shift alt shiftr ctrll keycode 3 = Meta_at
+ altgr alt shiftr ctrll keycode 3 = Meta_two
+ shift altgr alt shiftr ctrll keycode 3 = Meta_at
+ control alt shiftr ctrll keycode 3 = Meta_nul
+ shift control alt shiftr ctrll keycode 3 = Meta_nul
+ altgr control alt shiftr ctrll keycode 3 = Meta_nul
+ shift altgr control alt shiftr ctrll keycode 3 = Meta_nul
+ shift shiftl shiftr ctrll keycode 3 = at
+ altgr shiftl shiftr ctrll keycode 3 = twosuperior
+ shift altgr shiftl shiftr ctrll keycode 3 = onehalf
+ control shiftl shiftr ctrll keycode 3 = nul
+ shift control shiftl shiftr ctrll keycode 3 = nul
+ altgr control shiftl shiftr ctrll keycode 3 = nul
+ shift altgr control shiftl shiftr ctrll keycode 3 = nul
+ alt shiftl shiftr ctrll keycode 3 = Meta_two
+ shift alt shiftl shiftr ctrll keycode 3 = Meta_at
+ altgr alt shiftl shiftr ctrll keycode 3 = Meta_two
+ shift altgr alt shiftl shiftr ctrll keycode 3 = Meta_at
+ control alt shiftl shiftr ctrll keycode 3 = Meta_nul
+ shift control alt shiftl shiftr ctrll keycode 3 = Meta_nul
+ altgr control alt shiftl shiftr ctrll keycode 3 = Meta_nul
+ shift altgr control alt shiftl shiftr ctrll keycode 3 = Meta_nul
+keycode 4 = three
+ shift keycode 4 = numbersign
+ altgr keycode 4 = threesuperior
+ shift altgr keycode 4 = threequarters
+ control keycode 4 = Escape
+ shift control keycode 4 = Escape
+ altgr control keycode 4 = Escape
+ shift altgr control keycode 4 = Escape
+ alt keycode 4 = Meta_three
+ shift alt keycode 4 = Meta_numbersign
+ altgr alt keycode 4 = Meta_three
+ shift altgr alt keycode 4 = Meta_numbersign
+ control alt keycode 4 = Meta_Escape
+ shift control alt keycode 4 = Meta_Escape
+ altgr control alt keycode 4 = Meta_Escape
+ shift altgr control alt keycode 4 = Meta_Escape
+ shift shiftl keycode 4 = numbersign
+ altgr shiftl keycode 4 = threesuperior
+ shift altgr shiftl keycode 4 = threequarters
+ control shiftl keycode 4 = Escape
+ shift control shiftl keycode 4 = Escape
+ altgr control shiftl keycode 4 = Escape
+ shift altgr control shiftl keycode 4 = Escape
+ alt shiftl keycode 4 = Meta_three
+ shift alt shiftl keycode 4 = Meta_numbersign
+ altgr alt shiftl keycode 4 = Meta_three
+ shift altgr alt shiftl keycode 4 = Meta_numbersign
+ control alt shiftl keycode 4 = Meta_Escape
+ shift control alt shiftl keycode 4 = Meta_Escape
+ altgr control alt shiftl keycode 4 = Meta_Escape
+ shift altgr control alt shiftl keycode 4 = Meta_Escape
+ shift shiftr keycode 4 = numbersign
+ altgr shiftr keycode 4 = threesuperior
+ shift altgr shiftr keycode 4 = threequarters
+ control shiftr keycode 4 = Escape
+ shift control shiftr keycode 4 = Escape
+ altgr control shiftr keycode 4 = Escape
+ shift altgr control shiftr keycode 4 = Escape
+ alt shiftr keycode 4 = Meta_three
+ shift alt shiftr keycode 4 = Meta_numbersign
+ altgr alt shiftr keycode 4 = Meta_three
+ shift altgr alt shiftr keycode 4 = Meta_numbersign
+ control alt shiftr keycode 4 = Meta_Escape
+ shift control alt shiftr keycode 4 = Meta_Escape
+ altgr control alt shiftr keycode 4 = Meta_Escape
+ shift altgr control alt shiftr keycode 4 = Meta_Escape
+ shift shiftl shiftr keycode 4 = numbersign
+ altgr shiftl shiftr keycode 4 = threesuperior
+ shift altgr shiftl shiftr keycode 4 = threequarters
+ control shiftl shiftr keycode 4 = Escape
+ shift control shiftl shiftr keycode 4 = Escape
+ altgr control shiftl shiftr keycode 4 = Escape
+ shift altgr control shiftl shiftr keycode 4 = Escape
+ alt shiftl shiftr keycode 4 = Meta_three
+ shift alt shiftl shiftr keycode 4 = Meta_numbersign
+ altgr alt shiftl shiftr keycode 4 = Meta_three
+ shift altgr alt shiftl shiftr keycode 4 = Meta_numbersign
+ control alt shiftl shiftr keycode 4 = Meta_Escape
+ shift control alt shiftl shiftr keycode 4 = Meta_Escape
+ altgr control alt shiftl shiftr keycode 4 = Meta_Escape
+ shift altgr control alt shiftl shiftr keycode 4 = Meta_Escape
+ shift ctrll keycode 4 = numbersign
+ altgr ctrll keycode 4 = threesuperior
+ shift altgr ctrll keycode 4 = threequarters
+ control ctrll keycode 4 = Escape
+ shift control ctrll keycode 4 = Escape
+ altgr control ctrll keycode 4 = Escape
+ shift altgr control ctrll keycode 4 = Escape
+ alt ctrll keycode 4 = Meta_three
+ shift alt ctrll keycode 4 = Meta_numbersign
+ altgr alt ctrll keycode 4 = Meta_three
+ shift altgr alt ctrll keycode 4 = Meta_numbersign
+ control alt ctrll keycode 4 = Meta_Escape
+ shift control alt ctrll keycode 4 = Meta_Escape
+ altgr control alt ctrll keycode 4 = Meta_Escape
+ shift altgr control alt ctrll keycode 4 = Meta_Escape
+ shift shiftl ctrll keycode 4 = numbersign
+ altgr shiftl ctrll keycode 4 = threesuperior
+ shift altgr shiftl ctrll keycode 4 = threequarters
+ control shiftl ctrll keycode 4 = Escape
+ shift control shiftl ctrll keycode 4 = Escape
+ altgr control shiftl ctrll keycode 4 = Escape
+ shift altgr control shiftl ctrll keycode 4 = Escape
+ alt shiftl ctrll keycode 4 = Meta_three
+ shift alt shiftl ctrll keycode 4 = Meta_numbersign
+ altgr alt shiftl ctrll keycode 4 = Meta_three
+ shift altgr alt shiftl ctrll keycode 4 = Meta_numbersign
+ control alt shiftl ctrll keycode 4 = Meta_Escape
+ shift control alt shiftl ctrll keycode 4 = Meta_Escape
+ altgr control alt shiftl ctrll keycode 4 = Meta_Escape
+ shift altgr control alt shiftl ctrll keycode 4 = Meta_Escape
+ shift shiftr ctrll keycode 4 = numbersign
+ altgr shiftr ctrll keycode 4 = threesuperior
+ shift altgr shiftr ctrll keycode 4 = threequarters
+ control shiftr ctrll keycode 4 = Escape
+ shift control shiftr ctrll keycode 4 = Escape
+ altgr control shiftr ctrll keycode 4 = Escape
+ shift altgr control shiftr ctrll keycode 4 = Escape
+ alt shiftr ctrll keycode 4 = Meta_three
+ shift alt shiftr ctrll keycode 4 = Meta_numbersign
+ altgr alt shiftr ctrll keycode 4 = Meta_three
+ shift altgr alt shiftr ctrll keycode 4 = Meta_numbersign
+ control alt shiftr ctrll keycode 4 = Meta_Escape
+ shift control alt shiftr ctrll keycode 4 = Meta_Escape
+ altgr control alt shiftr ctrll keycode 4 = Meta_Escape
+ shift altgr control alt shiftr ctrll keycode 4 = Meta_Escape
+ shift shiftl shiftr ctrll keycode 4 = numbersign
+ altgr shiftl shiftr ctrll keycode 4 = threesuperior
+ shift altgr shiftl shiftr ctrll keycode 4 = threequarters
+ control shiftl shiftr ctrll keycode 4 = Escape
+ shift control shiftl shiftr ctrll keycode 4 = Escape
+ altgr control shiftl shiftr ctrll keycode 4 = Escape
+ shift altgr control shiftl shiftr ctrll keycode 4 = Escape
+ alt shiftl shiftr ctrll keycode 4 = Meta_three
+ shift alt shiftl shiftr ctrll keycode 4 = Meta_numbersign
+ altgr alt shiftl shiftr ctrll keycode 4 = Meta_three
+ shift altgr alt shiftl shiftr ctrll keycode 4 = Meta_numbersign
+ control alt shiftl shiftr ctrll keycode 4 = Meta_Escape
+ shift control alt shiftl shiftr ctrll keycode 4 = Meta_Escape
+ altgr control alt shiftl shiftr ctrll keycode 4 = Meta_Escape
+ shift altgr control alt shiftl shiftr ctrll keycode 4 = Meta_Escape
+keycode 5 = four
+ shift keycode 5 = dollar
+ altgr keycode 5 = sterling
+ shift altgr keycode 5 = onequarter
+ control keycode 5 = Control_backslash
+ shift control keycode 5 = Control_backslash
+ altgr control keycode 5 = Control_backslash
+ shift altgr control keycode 5 = Control_backslash
+ alt keycode 5 = Meta_four
+ shift alt keycode 5 = Meta_dollar
+ altgr alt keycode 5 = Meta_four
+ shift altgr alt keycode 5 = Meta_dollar
+ control alt keycode 5 = Meta_Control_backslash
+ shift control alt keycode 5 = Meta_Control_backslash
+ altgr control alt keycode 5 = Meta_Control_backslash
+ shift altgr control alt keycode 5 = Meta_Control_backslash
+ shift shiftl keycode 5 = dollar
+ altgr shiftl keycode 5 = sterling
+ shift altgr shiftl keycode 5 = onequarter
+ control shiftl keycode 5 = Control_backslash
+ shift control shiftl keycode 5 = Control_backslash
+ altgr control shiftl keycode 5 = Control_backslash
+ shift altgr control shiftl keycode 5 = Control_backslash
+ alt shiftl keycode 5 = Meta_four
+ shift alt shiftl keycode 5 = Meta_dollar
+ altgr alt shiftl keycode 5 = Meta_four
+ shift altgr alt shiftl keycode 5 = Meta_dollar
+ control alt shiftl keycode 5 = Meta_Control_backslash
+ shift control alt shiftl keycode 5 = Meta_Control_backslash
+ altgr control alt shiftl keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftl keycode 5 = Meta_Control_backslash
+ shift shiftr keycode 5 = dollar
+ altgr shiftr keycode 5 = sterling
+ shift altgr shiftr keycode 5 = onequarter
+ control shiftr keycode 5 = Control_backslash
+ shift control shiftr keycode 5 = Control_backslash
+ altgr control shiftr keycode 5 = Control_backslash
+ shift altgr control shiftr keycode 5 = Control_backslash
+ alt shiftr keycode 5 = Meta_four
+ shift alt shiftr keycode 5 = Meta_dollar
+ altgr alt shiftr keycode 5 = Meta_four
+ shift altgr alt shiftr keycode 5 = Meta_dollar
+ control alt shiftr keycode 5 = Meta_Control_backslash
+ shift control alt shiftr keycode 5 = Meta_Control_backslash
+ altgr control alt shiftr keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftr keycode 5 = Meta_Control_backslash
+ shift shiftl shiftr keycode 5 = dollar
+ altgr shiftl shiftr keycode 5 = sterling
+ shift altgr shiftl shiftr keycode 5 = onequarter
+ control shiftl shiftr keycode 5 = Control_backslash
+ shift control shiftl shiftr keycode 5 = Control_backslash
+ altgr control shiftl shiftr keycode 5 = Control_backslash
+ shift altgr control shiftl shiftr keycode 5 = Control_backslash
+ alt shiftl shiftr keycode 5 = Meta_four
+ shift alt shiftl shiftr keycode 5 = Meta_dollar
+ altgr alt shiftl shiftr keycode 5 = Meta_four
+ shift altgr alt shiftl shiftr keycode 5 = Meta_dollar
+ control alt shiftl shiftr keycode 5 = Meta_Control_backslash
+ shift control alt shiftl shiftr keycode 5 = Meta_Control_backslash
+ altgr control alt shiftl shiftr keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr keycode 5 = Meta_Control_backslash
+ shift ctrll keycode 5 = dollar
+ altgr ctrll keycode 5 = sterling
+ shift altgr ctrll keycode 5 = onequarter
+ control ctrll keycode 5 = Control_backslash
+ shift control ctrll keycode 5 = Control_backslash
+ altgr control ctrll keycode 5 = Control_backslash
+ shift altgr control ctrll keycode 5 = Control_backslash
+ alt ctrll keycode 5 = Meta_four
+ shift alt ctrll keycode 5 = Meta_dollar
+ altgr alt ctrll keycode 5 = Meta_four
+ shift altgr alt ctrll keycode 5 = Meta_dollar
+ control alt ctrll keycode 5 = Meta_Control_backslash
+ shift control alt ctrll keycode 5 = Meta_Control_backslash
+ altgr control alt ctrll keycode 5 = Meta_Control_backslash
+ shift altgr control alt ctrll keycode 5 = Meta_Control_backslash
+ shift shiftl ctrll keycode 5 = dollar
+ altgr shiftl ctrll keycode 5 = sterling
+ shift altgr shiftl ctrll keycode 5 = onequarter
+ control shiftl ctrll keycode 5 = Control_backslash
+ shift control shiftl ctrll keycode 5 = Control_backslash
+ altgr control shiftl ctrll keycode 5 = Control_backslash
+ shift altgr control shiftl ctrll keycode 5 = Control_backslash
+ alt shiftl ctrll keycode 5 = Meta_four
+ shift alt shiftl ctrll keycode 5 = Meta_dollar
+ altgr alt shiftl ctrll keycode 5 = Meta_four
+ shift altgr alt shiftl ctrll keycode 5 = Meta_dollar
+ control alt shiftl ctrll keycode 5 = Meta_Control_backslash
+ shift control alt shiftl ctrll keycode 5 = Meta_Control_backslash
+ altgr control alt shiftl ctrll keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftl ctrll keycode 5 = Meta_Control_backslash
+ shift shiftr ctrll keycode 5 = dollar
+ altgr shiftr ctrll keycode 5 = sterling
+ shift altgr shiftr ctrll keycode 5 = onequarter
+ control shiftr ctrll keycode 5 = Control_backslash
+ shift control shiftr ctrll keycode 5 = Control_backslash
+ altgr control shiftr ctrll keycode 5 = Control_backslash
+ shift altgr control shiftr ctrll keycode 5 = Control_backslash
+ alt shiftr ctrll keycode 5 = Meta_four
+ shift alt shiftr ctrll keycode 5 = Meta_dollar
+ altgr alt shiftr ctrll keycode 5 = Meta_four
+ shift altgr alt shiftr ctrll keycode 5 = Meta_dollar
+ control alt shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift control alt shiftr ctrll keycode 5 = Meta_Control_backslash
+ altgr control alt shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift shiftl shiftr ctrll keycode 5 = dollar
+ altgr shiftl shiftr ctrll keycode 5 = sterling
+ shift altgr shiftl shiftr ctrll keycode 5 = onequarter
+ control shiftl shiftr ctrll keycode 5 = Control_backslash
+ shift control shiftl shiftr ctrll keycode 5 = Control_backslash
+ altgr control shiftl shiftr ctrll keycode 5 = Control_backslash
+ shift altgr control shiftl shiftr ctrll keycode 5 = Control_backslash
+ alt shiftl shiftr ctrll keycode 5 = Meta_four
+ shift alt shiftl shiftr ctrll keycode 5 = Meta_dollar
+ altgr alt shiftl shiftr ctrll keycode 5 = Meta_four
+ shift altgr alt shiftl shiftr ctrll keycode 5 = Meta_dollar
+ control alt shiftl shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift control alt shiftl shiftr ctrll keycode 5 = Meta_Control_backslash
+ altgr control alt shiftl shiftr ctrll keycode 5 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr ctrll keycode 5 = Meta_Control_backslash
+keycode 6 = five
+ shift keycode 6 = percent
+ altgr keycode 6 = cent
+ shift altgr keycode 6 = U+215c
+ control keycode 6 = Control_bracketright
+ shift control keycode 6 = Control_bracketright
+ altgr control keycode 6 = Control_bracketright
+ shift altgr control keycode 6 = Control_bracketright
+ alt keycode 6 = Meta_five
+ shift alt keycode 6 = Meta_percent
+ altgr alt keycode 6 = Meta_five
+ shift altgr alt keycode 6 = Meta_percent
+ control alt keycode 6 = Meta_Control_bracketright
+ shift control alt keycode 6 = Meta_Control_bracketright
+ altgr control alt keycode 6 = Meta_Control_bracketright
+ shift altgr control alt keycode 6 = Meta_Control_bracketright
+ shift shiftl keycode 6 = percent
+ altgr shiftl keycode 6 = cent
+ shift altgr shiftl keycode 6 = U+215c
+ control shiftl keycode 6 = Control_bracketright
+ shift control shiftl keycode 6 = Control_bracketright
+ altgr control shiftl keycode 6 = Control_bracketright
+ shift altgr control shiftl keycode 6 = Control_bracketright
+ alt shiftl keycode 6 = Meta_five
+ shift alt shiftl keycode 6 = Meta_percent
+ altgr alt shiftl keycode 6 = Meta_five
+ shift altgr alt shiftl keycode 6 = Meta_percent
+ control alt shiftl keycode 6 = Meta_Control_bracketright
+ shift control alt shiftl keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftl keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftl keycode 6 = Meta_Control_bracketright
+ shift shiftr keycode 6 = percent
+ altgr shiftr keycode 6 = cent
+ shift altgr shiftr keycode 6 = U+215c
+ control shiftr keycode 6 = Control_bracketright
+ shift control shiftr keycode 6 = Control_bracketright
+ altgr control shiftr keycode 6 = Control_bracketright
+ shift altgr control shiftr keycode 6 = Control_bracketright
+ alt shiftr keycode 6 = Meta_five
+ shift alt shiftr keycode 6 = Meta_percent
+ altgr alt shiftr keycode 6 = Meta_five
+ shift altgr alt shiftr keycode 6 = Meta_percent
+ control alt shiftr keycode 6 = Meta_Control_bracketright
+ shift control alt shiftr keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftr keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftr keycode 6 = Meta_Control_bracketright
+ shift shiftl shiftr keycode 6 = percent
+ altgr shiftl shiftr keycode 6 = cent
+ shift altgr shiftl shiftr keycode 6 = U+215c
+ control shiftl shiftr keycode 6 = Control_bracketright
+ shift control shiftl shiftr keycode 6 = Control_bracketright
+ altgr control shiftl shiftr keycode 6 = Control_bracketright
+ shift altgr control shiftl shiftr keycode 6 = Control_bracketright
+ alt shiftl shiftr keycode 6 = Meta_five
+ shift alt shiftl shiftr keycode 6 = Meta_percent
+ altgr alt shiftl shiftr keycode 6 = Meta_five
+ shift altgr alt shiftl shiftr keycode 6 = Meta_percent
+ control alt shiftl shiftr keycode 6 = Meta_Control_bracketright
+ shift control alt shiftl shiftr keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr keycode 6 = Meta_Control_bracketright
+ shift ctrll keycode 6 = percent
+ altgr ctrll keycode 6 = cent
+ shift altgr ctrll keycode 6 = U+215c
+ control ctrll keycode 6 = Control_bracketright
+ shift control ctrll keycode 6 = Control_bracketright
+ altgr control ctrll keycode 6 = Control_bracketright
+ shift altgr control ctrll keycode 6 = Control_bracketright
+ alt ctrll keycode 6 = Meta_five
+ shift alt ctrll keycode 6 = Meta_percent
+ altgr alt ctrll keycode 6 = Meta_five
+ shift altgr alt ctrll keycode 6 = Meta_percent
+ control alt ctrll keycode 6 = Meta_Control_bracketright
+ shift control alt ctrll keycode 6 = Meta_Control_bracketright
+ altgr control alt ctrll keycode 6 = Meta_Control_bracketright
+ shift altgr control alt ctrll keycode 6 = Meta_Control_bracketright
+ shift shiftl ctrll keycode 6 = percent
+ altgr shiftl ctrll keycode 6 = cent
+ shift altgr shiftl ctrll keycode 6 = U+215c
+ control shiftl ctrll keycode 6 = Control_bracketright
+ shift control shiftl ctrll keycode 6 = Control_bracketright
+ altgr control shiftl ctrll keycode 6 = Control_bracketright
+ shift altgr control shiftl ctrll keycode 6 = Control_bracketright
+ alt shiftl ctrll keycode 6 = Meta_five
+ shift alt shiftl ctrll keycode 6 = Meta_percent
+ altgr alt shiftl ctrll keycode 6 = Meta_five
+ shift altgr alt shiftl ctrll keycode 6 = Meta_percent
+ control alt shiftl ctrll keycode 6 = Meta_Control_bracketright
+ shift control alt shiftl ctrll keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftl ctrll keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftl ctrll keycode 6 = Meta_Control_bracketright
+ shift shiftr ctrll keycode 6 = percent
+ altgr shiftr ctrll keycode 6 = cent
+ shift altgr shiftr ctrll keycode 6 = U+215c
+ control shiftr ctrll keycode 6 = Control_bracketright
+ shift control shiftr ctrll keycode 6 = Control_bracketright
+ altgr control shiftr ctrll keycode 6 = Control_bracketright
+ shift altgr control shiftr ctrll keycode 6 = Control_bracketright
+ alt shiftr ctrll keycode 6 = Meta_five
+ shift alt shiftr ctrll keycode 6 = Meta_percent
+ altgr alt shiftr ctrll keycode 6 = Meta_five
+ shift altgr alt shiftr ctrll keycode 6 = Meta_percent
+ control alt shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift control alt shiftr ctrll keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift shiftl shiftr ctrll keycode 6 = percent
+ altgr shiftl shiftr ctrll keycode 6 = cent
+ shift altgr shiftl shiftr ctrll keycode 6 = U+215c
+ control shiftl shiftr ctrll keycode 6 = Control_bracketright
+ shift control shiftl shiftr ctrll keycode 6 = Control_bracketright
+ altgr control shiftl shiftr ctrll keycode 6 = Control_bracketright
+ shift altgr control shiftl shiftr ctrll keycode 6 = Control_bracketright
+ alt shiftl shiftr ctrll keycode 6 = Meta_five
+ shift alt shiftl shiftr ctrll keycode 6 = Meta_percent
+ altgr alt shiftl shiftr ctrll keycode 6 = Meta_five
+ shift altgr alt shiftl shiftr ctrll keycode 6 = Meta_percent
+ control alt shiftl shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift control alt shiftl shiftr ctrll keycode 6 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr ctrll keycode 6 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr ctrll keycode 6 = Meta_Control_bracketright
+keycode 7 = six
+ shift keycode 7 = dead_diaeresis
+ altgr keycode 7 = notsign
+ shift altgr keycode 7 = diaeresis
+ control keycode 7 = Control_asciicircum
+ shift control keycode 7 = dead_diaeresis
+ altgr control keycode 7 = Control_asciicircum
+ shift altgr control keycode 7 = dead_diaeresis
+ alt keycode 7 = Meta_six
+ shift alt keycode 7 = dead_diaeresis
+ altgr alt keycode 7 = Meta_six
+ shift altgr alt keycode 7 = dead_diaeresis
+ control alt keycode 7 = Meta_Control_asciicircum
+ shift control alt keycode 7 = dead_diaeresis
+ altgr control alt keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt keycode 7 = dead_diaeresis
+ shift shiftl keycode 7 = dead_diaeresis
+ altgr shiftl keycode 7 = notsign
+ shift altgr shiftl keycode 7 = diaeresis
+ control shiftl keycode 7 = Control_asciicircum
+ shift control shiftl keycode 7 = dead_diaeresis
+ altgr control shiftl keycode 7 = Control_asciicircum
+ shift altgr control shiftl keycode 7 = dead_diaeresis
+ alt shiftl keycode 7 = Meta_six
+ shift alt shiftl keycode 7 = dead_diaeresis
+ altgr alt shiftl keycode 7 = Meta_six
+ shift altgr alt shiftl keycode 7 = dead_diaeresis
+ control alt shiftl keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftl keycode 7 = dead_diaeresis
+ altgr control alt shiftl keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftl keycode 7 = dead_diaeresis
+ shift shiftr keycode 7 = dead_diaeresis
+ altgr shiftr keycode 7 = notsign
+ shift altgr shiftr keycode 7 = diaeresis
+ control shiftr keycode 7 = Control_asciicircum
+ shift control shiftr keycode 7 = dead_diaeresis
+ altgr control shiftr keycode 7 = Control_asciicircum
+ shift altgr control shiftr keycode 7 = dead_diaeresis
+ alt shiftr keycode 7 = Meta_six
+ shift alt shiftr keycode 7 = dead_diaeresis
+ altgr alt shiftr keycode 7 = Meta_six
+ shift altgr alt shiftr keycode 7 = dead_diaeresis
+ control alt shiftr keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftr keycode 7 = dead_diaeresis
+ altgr control alt shiftr keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftr keycode 7 = dead_diaeresis
+ shift shiftl shiftr keycode 7 = dead_diaeresis
+ altgr shiftl shiftr keycode 7 = notsign
+ shift altgr shiftl shiftr keycode 7 = diaeresis
+ control shiftl shiftr keycode 7 = Control_asciicircum
+ shift control shiftl shiftr keycode 7 = dead_diaeresis
+ altgr control shiftl shiftr keycode 7 = Control_asciicircum
+ shift altgr control shiftl shiftr keycode 7 = dead_diaeresis
+ alt shiftl shiftr keycode 7 = Meta_six
+ shift alt shiftl shiftr keycode 7 = dead_diaeresis
+ altgr alt shiftl shiftr keycode 7 = Meta_six
+ shift altgr alt shiftl shiftr keycode 7 = dead_diaeresis
+ control alt shiftl shiftr keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftl shiftr keycode 7 = dead_diaeresis
+ altgr control alt shiftl shiftr keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftl shiftr keycode 7 = dead_diaeresis
+ shift ctrll keycode 7 = dead_diaeresis
+ altgr ctrll keycode 7 = notsign
+ shift altgr ctrll keycode 7 = diaeresis
+ control ctrll keycode 7 = Control_asciicircum
+ shift control ctrll keycode 7 = dead_diaeresis
+ altgr control ctrll keycode 7 = Control_asciicircum
+ shift altgr control ctrll keycode 7 = dead_diaeresis
+ alt ctrll keycode 7 = Meta_six
+ shift alt ctrll keycode 7 = dead_diaeresis
+ altgr alt ctrll keycode 7 = Meta_six
+ shift altgr alt ctrll keycode 7 = dead_diaeresis
+ control alt ctrll keycode 7 = Meta_Control_asciicircum
+ shift control alt ctrll keycode 7 = dead_diaeresis
+ altgr control alt ctrll keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt ctrll keycode 7 = dead_diaeresis
+ shift shiftl ctrll keycode 7 = dead_diaeresis
+ altgr shiftl ctrll keycode 7 = notsign
+ shift altgr shiftl ctrll keycode 7 = diaeresis
+ control shiftl ctrll keycode 7 = Control_asciicircum
+ shift control shiftl ctrll keycode 7 = dead_diaeresis
+ altgr control shiftl ctrll keycode 7 = Control_asciicircum
+ shift altgr control shiftl ctrll keycode 7 = dead_diaeresis
+ alt shiftl ctrll keycode 7 = Meta_six
+ shift alt shiftl ctrll keycode 7 = dead_diaeresis
+ altgr alt shiftl ctrll keycode 7 = Meta_six
+ shift altgr alt shiftl ctrll keycode 7 = dead_diaeresis
+ control alt shiftl ctrll keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftl ctrll keycode 7 = dead_diaeresis
+ altgr control alt shiftl ctrll keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftl ctrll keycode 7 = dead_diaeresis
+ shift shiftr ctrll keycode 7 = dead_diaeresis
+ altgr shiftr ctrll keycode 7 = notsign
+ shift altgr shiftr ctrll keycode 7 = diaeresis
+ control shiftr ctrll keycode 7 = Control_asciicircum
+ shift control shiftr ctrll keycode 7 = dead_diaeresis
+ altgr control shiftr ctrll keycode 7 = Control_asciicircum
+ shift altgr control shiftr ctrll keycode 7 = dead_diaeresis
+ alt shiftr ctrll keycode 7 = Meta_six
+ shift alt shiftr ctrll keycode 7 = dead_diaeresis
+ altgr alt shiftr ctrll keycode 7 = Meta_six
+ shift altgr alt shiftr ctrll keycode 7 = dead_diaeresis
+ control alt shiftr ctrll keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftr ctrll keycode 7 = dead_diaeresis
+ altgr control alt shiftr ctrll keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftr ctrll keycode 7 = dead_diaeresis
+ shift shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ altgr shiftl shiftr ctrll keycode 7 = notsign
+ shift altgr shiftl shiftr ctrll keycode 7 = diaeresis
+ control shiftl shiftr ctrll keycode 7 = Control_asciicircum
+ shift control shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ altgr control shiftl shiftr ctrll keycode 7 = Control_asciicircum
+ shift altgr control shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ alt shiftl shiftr ctrll keycode 7 = Meta_six
+ shift alt shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ altgr alt shiftl shiftr ctrll keycode 7 = Meta_six
+ shift altgr alt shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ control alt shiftl shiftr ctrll keycode 7 = Meta_Control_asciicircum
+ shift control alt shiftl shiftr ctrll keycode 7 = dead_diaeresis
+ altgr control alt shiftl shiftr ctrll keycode 7 = Meta_Control_asciicircum
+ shift altgr control alt shiftl shiftr ctrll keycode 7 = dead_diaeresis
+keycode 8 = seven
+ shift keycode 8 = ampersand
+ altgr keycode 8 = braceleft
+ shift altgr keycode 8 = U+215e
+ control keycode 8 = Control_underscore
+ shift control keycode 8 = Control_underscore
+ altgr control keycode 8 = Control_underscore
+ shift altgr control keycode 8 = Control_underscore
+ alt keycode 8 = Meta_seven
+ shift alt keycode 8 = Meta_ampersand
+ altgr alt keycode 8 = Meta_braceleft
+ shift altgr alt keycode 8 = Meta_braceleft
+ control alt keycode 8 = Meta_Control_underscore
+ shift control alt keycode 8 = Meta_Control_underscore
+ altgr control alt keycode 8 = Meta_Control_underscore
+ shift altgr control alt keycode 8 = Meta_Control_underscore
+ shift shiftl keycode 8 = ampersand
+ altgr shiftl keycode 8 = braceleft
+ shift altgr shiftl keycode 8 = U+215e
+ control shiftl keycode 8 = Control_underscore
+ shift control shiftl keycode 8 = Control_underscore
+ altgr control shiftl keycode 8 = Control_underscore
+ shift altgr control shiftl keycode 8 = Control_underscore
+ alt shiftl keycode 8 = Meta_seven
+ shift alt shiftl keycode 8 = Meta_ampersand
+ altgr alt shiftl keycode 8 = Meta_braceleft
+ shift altgr alt shiftl keycode 8 = Meta_braceleft
+ control alt shiftl keycode 8 = Meta_Control_underscore
+ shift control alt shiftl keycode 8 = Meta_Control_underscore
+ altgr control alt shiftl keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftl keycode 8 = Meta_Control_underscore
+ shift shiftr keycode 8 = ampersand
+ altgr shiftr keycode 8 = braceleft
+ shift altgr shiftr keycode 8 = U+215e
+ control shiftr keycode 8 = Control_underscore
+ shift control shiftr keycode 8 = Control_underscore
+ altgr control shiftr keycode 8 = Control_underscore
+ shift altgr control shiftr keycode 8 = Control_underscore
+ alt shiftr keycode 8 = Meta_seven
+ shift alt shiftr keycode 8 = Meta_ampersand
+ altgr alt shiftr keycode 8 = Meta_braceleft
+ shift altgr alt shiftr keycode 8 = Meta_braceleft
+ control alt shiftr keycode 8 = Meta_Control_underscore
+ shift control alt shiftr keycode 8 = Meta_Control_underscore
+ altgr control alt shiftr keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftr keycode 8 = Meta_Control_underscore
+ shift shiftl shiftr keycode 8 = ampersand
+ altgr shiftl shiftr keycode 8 = braceleft
+ shift altgr shiftl shiftr keycode 8 = U+215e
+ control shiftl shiftr keycode 8 = Control_underscore
+ shift control shiftl shiftr keycode 8 = Control_underscore
+ altgr control shiftl shiftr keycode 8 = Control_underscore
+ shift altgr control shiftl shiftr keycode 8 = Control_underscore
+ alt shiftl shiftr keycode 8 = Meta_seven
+ shift alt shiftl shiftr keycode 8 = Meta_ampersand
+ altgr alt shiftl shiftr keycode 8 = Meta_braceleft
+ shift altgr alt shiftl shiftr keycode 8 = Meta_braceleft
+ control alt shiftl shiftr keycode 8 = Meta_Control_underscore
+ shift control alt shiftl shiftr keycode 8 = Meta_Control_underscore
+ altgr control alt shiftl shiftr keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftl shiftr keycode 8 = Meta_Control_underscore
+ shift ctrll keycode 8 = ampersand
+ altgr ctrll keycode 8 = braceleft
+ shift altgr ctrll keycode 8 = U+215e
+ control ctrll keycode 8 = Control_underscore
+ shift control ctrll keycode 8 = Control_underscore
+ altgr control ctrll keycode 8 = Control_underscore
+ shift altgr control ctrll keycode 8 = Control_underscore
+ alt ctrll keycode 8 = Meta_seven
+ shift alt ctrll keycode 8 = Meta_ampersand
+ altgr alt ctrll keycode 8 = Meta_braceleft
+ shift altgr alt ctrll keycode 8 = Meta_braceleft
+ control alt ctrll keycode 8 = Meta_Control_underscore
+ shift control alt ctrll keycode 8 = Meta_Control_underscore
+ altgr control alt ctrll keycode 8 = Meta_Control_underscore
+ shift altgr control alt ctrll keycode 8 = Meta_Control_underscore
+ shift shiftl ctrll keycode 8 = ampersand
+ altgr shiftl ctrll keycode 8 = braceleft
+ shift altgr shiftl ctrll keycode 8 = U+215e
+ control shiftl ctrll keycode 8 = Control_underscore
+ shift control shiftl ctrll keycode 8 = Control_underscore
+ altgr control shiftl ctrll keycode 8 = Control_underscore
+ shift altgr control shiftl ctrll keycode 8 = Control_underscore
+ alt shiftl ctrll keycode 8 = Meta_seven
+ shift alt shiftl ctrll keycode 8 = Meta_ampersand
+ altgr alt shiftl ctrll keycode 8 = Meta_braceleft
+ shift altgr alt shiftl ctrll keycode 8 = Meta_braceleft
+ control alt shiftl ctrll keycode 8 = Meta_Control_underscore
+ shift control alt shiftl ctrll keycode 8 = Meta_Control_underscore
+ altgr control alt shiftl ctrll keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftl ctrll keycode 8 = Meta_Control_underscore
+ shift shiftr ctrll keycode 8 = ampersand
+ altgr shiftr ctrll keycode 8 = braceleft
+ shift altgr shiftr ctrll keycode 8 = U+215e
+ control shiftr ctrll keycode 8 = Control_underscore
+ shift control shiftr ctrll keycode 8 = Control_underscore
+ altgr control shiftr ctrll keycode 8 = Control_underscore
+ shift altgr control shiftr ctrll keycode 8 = Control_underscore
+ alt shiftr ctrll keycode 8 = Meta_seven
+ shift alt shiftr ctrll keycode 8 = Meta_ampersand
+ altgr alt shiftr ctrll keycode 8 = Meta_braceleft
+ shift altgr alt shiftr ctrll keycode 8 = Meta_braceleft
+ control alt shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift control alt shiftr ctrll keycode 8 = Meta_Control_underscore
+ altgr control alt shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift shiftl shiftr ctrll keycode 8 = ampersand
+ altgr shiftl shiftr ctrll keycode 8 = braceleft
+ shift altgr shiftl shiftr ctrll keycode 8 = U+215e
+ control shiftl shiftr ctrll keycode 8 = Control_underscore
+ shift control shiftl shiftr ctrll keycode 8 = Control_underscore
+ altgr control shiftl shiftr ctrll keycode 8 = Control_underscore
+ shift altgr control shiftl shiftr ctrll keycode 8 = Control_underscore
+ alt shiftl shiftr ctrll keycode 8 = Meta_seven
+ shift alt shiftl shiftr ctrll keycode 8 = Meta_ampersand
+ altgr alt shiftl shiftr ctrll keycode 8 = Meta_braceleft
+ shift altgr alt shiftl shiftr ctrll keycode 8 = Meta_braceleft
+ control alt shiftl shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift control alt shiftl shiftr ctrll keycode 8 = Meta_Control_underscore
+ altgr control alt shiftl shiftr ctrll keycode 8 = Meta_Control_underscore
+ shift altgr control alt shiftl shiftr ctrll keycode 8 = Meta_Control_underscore
+keycode 9 = eight
+ shift keycode 9 = asterisk
+ altgr keycode 9 = bracketleft
+ shift altgr keycode 9 = trademark
+ control keycode 9 = Delete
+ shift control keycode 9 = Delete
+ altgr control keycode 9 = Escape
+ shift altgr control keycode 9 = Escape
+ alt keycode 9 = Meta_eight
+ shift alt keycode 9 = Meta_asterisk
+ altgr alt keycode 9 = Meta_bracketleft
+ shift altgr alt keycode 9 = Meta_bracketleft
+ control alt keycode 9 = Meta_Delete
+ shift control alt keycode 9 = Meta_Delete
+ altgr control alt keycode 9 = Meta_Escape
+ shift altgr control alt keycode 9 = Meta_Escape
+ shift shiftl keycode 9 = asterisk
+ altgr shiftl keycode 9 = bracketleft
+ shift altgr shiftl keycode 9 = trademark
+ control shiftl keycode 9 = Delete
+ shift control shiftl keycode 9 = Delete
+ altgr control shiftl keycode 9 = Escape
+ shift altgr control shiftl keycode 9 = Escape
+ alt shiftl keycode 9 = Meta_eight
+ shift alt shiftl keycode 9 = Meta_asterisk
+ altgr alt shiftl keycode 9 = Meta_bracketleft
+ shift altgr alt shiftl keycode 9 = Meta_bracketleft
+ control alt shiftl keycode 9 = Meta_Delete
+ shift control alt shiftl keycode 9 = Meta_Delete
+ altgr control alt shiftl keycode 9 = Meta_Escape
+ shift altgr control alt shiftl keycode 9 = Meta_Escape
+ shift shiftr keycode 9 = asterisk
+ altgr shiftr keycode 9 = bracketleft
+ shift altgr shiftr keycode 9 = trademark
+ control shiftr keycode 9 = Delete
+ shift control shiftr keycode 9 = Delete
+ altgr control shiftr keycode 9 = Escape
+ shift altgr control shiftr keycode 9 = Escape
+ alt shiftr keycode 9 = Meta_eight
+ shift alt shiftr keycode 9 = Meta_asterisk
+ altgr alt shiftr keycode 9 = Meta_bracketleft
+ shift altgr alt shiftr keycode 9 = Meta_bracketleft
+ control alt shiftr keycode 9 = Meta_Delete
+ shift control alt shiftr keycode 9 = Meta_Delete
+ altgr control alt shiftr keycode 9 = Meta_Escape
+ shift altgr control alt shiftr keycode 9 = Meta_Escape
+ shift shiftl shiftr keycode 9 = asterisk
+ altgr shiftl shiftr keycode 9 = bracketleft
+ shift altgr shiftl shiftr keycode 9 = trademark
+ control shiftl shiftr keycode 9 = Delete
+ shift control shiftl shiftr keycode 9 = Delete
+ altgr control shiftl shiftr keycode 9 = Escape
+ shift altgr control shiftl shiftr keycode 9 = Escape
+ alt shiftl shiftr keycode 9 = Meta_eight
+ shift alt shiftl shiftr keycode 9 = Meta_asterisk
+ altgr alt shiftl shiftr keycode 9 = Meta_bracketleft
+ shift altgr alt shiftl shiftr keycode 9 = Meta_bracketleft
+ control alt shiftl shiftr keycode 9 = Meta_Delete
+ shift control alt shiftl shiftr keycode 9 = Meta_Delete
+ altgr control alt shiftl shiftr keycode 9 = Meta_Escape
+ shift altgr control alt shiftl shiftr keycode 9 = Meta_Escape
+ shift ctrll keycode 9 = asterisk
+ altgr ctrll keycode 9 = bracketleft
+ shift altgr ctrll keycode 9 = trademark
+ control ctrll keycode 9 = Delete
+ shift control ctrll keycode 9 = Delete
+ altgr control ctrll keycode 9 = Escape
+ shift altgr control ctrll keycode 9 = Escape
+ alt ctrll keycode 9 = Meta_eight
+ shift alt ctrll keycode 9 = Meta_asterisk
+ altgr alt ctrll keycode 9 = Meta_bracketleft
+ shift altgr alt ctrll keycode 9 = Meta_bracketleft
+ control alt ctrll keycode 9 = Meta_Delete
+ shift control alt ctrll keycode 9 = Meta_Delete
+ altgr control alt ctrll keycode 9 = Meta_Escape
+ shift altgr control alt ctrll keycode 9 = Meta_Escape
+ shift shiftl ctrll keycode 9 = asterisk
+ altgr shiftl ctrll keycode 9 = bracketleft
+ shift altgr shiftl ctrll keycode 9 = trademark
+ control shiftl ctrll keycode 9 = Delete
+ shift control shiftl ctrll keycode 9 = Delete
+ altgr control shiftl ctrll keycode 9 = Escape
+ shift altgr control shiftl ctrll keycode 9 = Escape
+ alt shiftl ctrll keycode 9 = Meta_eight
+ shift alt shiftl ctrll keycode 9 = Meta_asterisk
+ altgr alt shiftl ctrll keycode 9 = Meta_bracketleft
+ shift altgr alt shiftl ctrll keycode 9 = Meta_bracketleft
+ control alt shiftl ctrll keycode 9 = Meta_Delete
+ shift control alt shiftl ctrll keycode 9 = Meta_Delete
+ altgr control alt shiftl ctrll keycode 9 = Meta_Escape
+ shift altgr control alt shiftl ctrll keycode 9 = Meta_Escape
+ shift shiftr ctrll keycode 9 = asterisk
+ altgr shiftr ctrll keycode 9 = bracketleft
+ shift altgr shiftr ctrll keycode 9 = trademark
+ control shiftr ctrll keycode 9 = Delete
+ shift control shiftr ctrll keycode 9 = Delete
+ altgr control shiftr ctrll keycode 9 = Escape
+ shift altgr control shiftr ctrll keycode 9 = Escape
+ alt shiftr ctrll keycode 9 = Meta_eight
+ shift alt shiftr ctrll keycode 9 = Meta_asterisk
+ altgr alt shiftr ctrll keycode 9 = Meta_bracketleft
+ shift altgr alt shiftr ctrll keycode 9 = Meta_bracketleft
+ control alt shiftr ctrll keycode 9 = Meta_Delete
+ shift control alt shiftr ctrll keycode 9 = Meta_Delete
+ altgr control alt shiftr ctrll keycode 9 = Meta_Escape
+ shift altgr control alt shiftr ctrll keycode 9 = Meta_Escape
+ shift shiftl shiftr ctrll keycode 9 = asterisk
+ altgr shiftl shiftr ctrll keycode 9 = bracketleft
+ shift altgr shiftl shiftr ctrll keycode 9 = trademark
+ control shiftl shiftr ctrll keycode 9 = Delete
+ shift control shiftl shiftr ctrll keycode 9 = Delete
+ altgr control shiftl shiftr ctrll keycode 9 = Escape
+ shift altgr control shiftl shiftr ctrll keycode 9 = Escape
+ alt shiftl shiftr ctrll keycode 9 = Meta_eight
+ shift alt shiftl shiftr ctrll keycode 9 = Meta_asterisk
+ altgr alt shiftl shiftr ctrll keycode 9 = Meta_bracketleft
+ shift altgr alt shiftl shiftr ctrll keycode 9 = Meta_bracketleft
+ control alt shiftl shiftr ctrll keycode 9 = Meta_Delete
+ shift control alt shiftl shiftr ctrll keycode 9 = Meta_Delete
+ altgr control alt shiftl shiftr ctrll keycode 9 = Meta_Escape
+ shift altgr control alt shiftl shiftr ctrll keycode 9 = Meta_Escape
+keycode 10 = nine
+ shift keycode 10 = parenleft
+ altgr keycode 10 = bracketright
+ shift altgr keycode 10 = plusminus
+ control keycode 10 = Control_bracketright
+ shift control keycode 10 = Control_bracketright
+ altgr control keycode 10 = Control_bracketright
+ shift altgr control keycode 10 = Control_bracketright
+ alt keycode 10 = Meta_nine
+ shift alt keycode 10 = Meta_parenleft
+ altgr alt keycode 10 = Meta_bracketright
+ shift altgr alt keycode 10 = Meta_bracketright
+ control alt keycode 10 = Meta_Control_bracketright
+ shift control alt keycode 10 = Meta_Control_bracketright
+ altgr control alt keycode 10 = Meta_Control_bracketright
+ shift altgr control alt keycode 10 = Meta_Control_bracketright
+ shift shiftl keycode 10 = parenleft
+ altgr shiftl keycode 10 = bracketright
+ shift altgr shiftl keycode 10 = plusminus
+ control shiftl keycode 10 = Control_bracketright
+ shift control shiftl keycode 10 = Control_bracketright
+ altgr control shiftl keycode 10 = Control_bracketright
+ shift altgr control shiftl keycode 10 = Control_bracketright
+ alt shiftl keycode 10 = Meta_nine
+ shift alt shiftl keycode 10 = Meta_parenleft
+ altgr alt shiftl keycode 10 = Meta_bracketright
+ shift altgr alt shiftl keycode 10 = Meta_bracketright
+ control alt shiftl keycode 10 = Meta_Control_bracketright
+ shift control alt shiftl keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftl keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftl keycode 10 = Meta_Control_bracketright
+ shift shiftr keycode 10 = parenleft
+ altgr shiftr keycode 10 = bracketright
+ shift altgr shiftr keycode 10 = plusminus
+ control shiftr keycode 10 = Control_bracketright
+ shift control shiftr keycode 10 = Control_bracketright
+ altgr control shiftr keycode 10 = Control_bracketright
+ shift altgr control shiftr keycode 10 = Control_bracketright
+ alt shiftr keycode 10 = Meta_nine
+ shift alt shiftr keycode 10 = Meta_parenleft
+ altgr alt shiftr keycode 10 = Meta_bracketright
+ shift altgr alt shiftr keycode 10 = Meta_bracketright
+ control alt shiftr keycode 10 = Meta_Control_bracketright
+ shift control alt shiftr keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftr keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftr keycode 10 = Meta_Control_bracketright
+ shift shiftl shiftr keycode 10 = parenleft
+ altgr shiftl shiftr keycode 10 = bracketright
+ shift altgr shiftl shiftr keycode 10 = plusminus
+ control shiftl shiftr keycode 10 = Control_bracketright
+ shift control shiftl shiftr keycode 10 = Control_bracketright
+ altgr control shiftl shiftr keycode 10 = Control_bracketright
+ shift altgr control shiftl shiftr keycode 10 = Control_bracketright
+ alt shiftl shiftr keycode 10 = Meta_nine
+ shift alt shiftl shiftr keycode 10 = Meta_parenleft
+ altgr alt shiftl shiftr keycode 10 = Meta_bracketright
+ shift altgr alt shiftl shiftr keycode 10 = Meta_bracketright
+ control alt shiftl shiftr keycode 10 = Meta_Control_bracketright
+ shift control alt shiftl shiftr keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr keycode 10 = Meta_Control_bracketright
+ shift ctrll keycode 10 = parenleft
+ altgr ctrll keycode 10 = bracketright
+ shift altgr ctrll keycode 10 = plusminus
+ control ctrll keycode 10 = Control_bracketright
+ shift control ctrll keycode 10 = Control_bracketright
+ altgr control ctrll keycode 10 = Control_bracketright
+ shift altgr control ctrll keycode 10 = Control_bracketright
+ alt ctrll keycode 10 = Meta_nine
+ shift alt ctrll keycode 10 = Meta_parenleft
+ altgr alt ctrll keycode 10 = Meta_bracketright
+ shift altgr alt ctrll keycode 10 = Meta_bracketright
+ control alt ctrll keycode 10 = Meta_Control_bracketright
+ shift control alt ctrll keycode 10 = Meta_Control_bracketright
+ altgr control alt ctrll keycode 10 = Meta_Control_bracketright
+ shift altgr control alt ctrll keycode 10 = Meta_Control_bracketright
+ shift shiftl ctrll keycode 10 = parenleft
+ altgr shiftl ctrll keycode 10 = bracketright
+ shift altgr shiftl ctrll keycode 10 = plusminus
+ control shiftl ctrll keycode 10 = Control_bracketright
+ shift control shiftl ctrll keycode 10 = Control_bracketright
+ altgr control shiftl ctrll keycode 10 = Control_bracketright
+ shift altgr control shiftl ctrll keycode 10 = Control_bracketright
+ alt shiftl ctrll keycode 10 = Meta_nine
+ shift alt shiftl ctrll keycode 10 = Meta_parenleft
+ altgr alt shiftl ctrll keycode 10 = Meta_bracketright
+ shift altgr alt shiftl ctrll keycode 10 = Meta_bracketright
+ control alt shiftl ctrll keycode 10 = Meta_Control_bracketright
+ shift control alt shiftl ctrll keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftl ctrll keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftl ctrll keycode 10 = Meta_Control_bracketright
+ shift shiftr ctrll keycode 10 = parenleft
+ altgr shiftr ctrll keycode 10 = bracketright
+ shift altgr shiftr ctrll keycode 10 = plusminus
+ control shiftr ctrll keycode 10 = Control_bracketright
+ shift control shiftr ctrll keycode 10 = Control_bracketright
+ altgr control shiftr ctrll keycode 10 = Control_bracketright
+ shift altgr control shiftr ctrll keycode 10 = Control_bracketright
+ alt shiftr ctrll keycode 10 = Meta_nine
+ shift alt shiftr ctrll keycode 10 = Meta_parenleft
+ altgr alt shiftr ctrll keycode 10 = Meta_bracketright
+ shift altgr alt shiftr ctrll keycode 10 = Meta_bracketright
+ control alt shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift control alt shiftr ctrll keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift shiftl shiftr ctrll keycode 10 = parenleft
+ altgr shiftl shiftr ctrll keycode 10 = bracketright
+ shift altgr shiftl shiftr ctrll keycode 10 = plusminus
+ control shiftl shiftr ctrll keycode 10 = Control_bracketright
+ shift control shiftl shiftr ctrll keycode 10 = Control_bracketright
+ altgr control shiftl shiftr ctrll keycode 10 = Control_bracketright
+ shift altgr control shiftl shiftr ctrll keycode 10 = Control_bracketright
+ alt shiftl shiftr ctrll keycode 10 = Meta_nine
+ shift alt shiftl shiftr ctrll keycode 10 = Meta_parenleft
+ altgr alt shiftl shiftr ctrll keycode 10 = Meta_bracketright
+ shift altgr alt shiftl shiftr ctrll keycode 10 = Meta_bracketright
+ control alt shiftl shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift control alt shiftl shiftr ctrll keycode 10 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr ctrll keycode 10 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr ctrll keycode 10 = Meta_Control_bracketright
+keycode 11 = zero parenright braceright degree
+ alt keycode 11 = Meta_zero
+ shift alt keycode 11 = Meta_parenright
+ altgr alt keycode 11 = Meta_braceright
+ shift altgr alt keycode 11 = Meta_braceright
+ shiftl keycode 11 = zero
+ shift shiftl keycode 11 = parenright
+ altgr shiftl keycode 11 = braceright
+ shift altgr shiftl keycode 11 = degree
+ alt shiftl keycode 11 = Meta_zero
+ shift alt shiftl keycode 11 = Meta_parenright
+ altgr alt shiftl keycode 11 = Meta_braceright
+ shift altgr alt shiftl keycode 11 = Meta_braceright
+ shiftr keycode 11 = zero
+ shift shiftr keycode 11 = parenright
+ altgr shiftr keycode 11 = braceright
+ shift altgr shiftr keycode 11 = degree
+ alt shiftr keycode 11 = Meta_zero
+ shift alt shiftr keycode 11 = Meta_parenright
+ altgr alt shiftr keycode 11 = Meta_braceright
+ shift altgr alt shiftr keycode 11 = Meta_braceright
+ shiftl shiftr keycode 11 = zero
+ shift shiftl shiftr keycode 11 = parenright
+ altgr shiftl shiftr keycode 11 = braceright
+ shift altgr shiftl shiftr keycode 11 = degree
+ alt shiftl shiftr keycode 11 = Meta_zero
+ shift alt shiftl shiftr keycode 11 = Meta_parenright
+ altgr alt shiftl shiftr keycode 11 = Meta_braceright
+ shift altgr alt shiftl shiftr keycode 11 = Meta_braceright
+ ctrll keycode 11 = zero
+ shift ctrll keycode 11 = parenright
+ altgr ctrll keycode 11 = braceright
+ shift altgr ctrll keycode 11 = degree
+ alt ctrll keycode 11 = Meta_zero
+ shift alt ctrll keycode 11 = Meta_parenright
+ altgr alt ctrll keycode 11 = Meta_braceright
+ shift altgr alt ctrll keycode 11 = Meta_braceright
+ shiftl ctrll keycode 11 = zero
+ shift shiftl ctrll keycode 11 = parenright
+ altgr shiftl ctrll keycode 11 = braceright
+ shift altgr shiftl ctrll keycode 11 = degree
+ alt shiftl ctrll keycode 11 = Meta_zero
+ shift alt shiftl ctrll keycode 11 = Meta_parenright
+ altgr alt shiftl ctrll keycode 11 = Meta_braceright
+ shift altgr alt shiftl ctrll keycode 11 = Meta_braceright
+ shiftr ctrll keycode 11 = zero
+ shift shiftr ctrll keycode 11 = parenright
+ altgr shiftr ctrll keycode 11 = braceright
+ shift altgr shiftr ctrll keycode 11 = degree
+ alt shiftr ctrll keycode 11 = Meta_zero
+ shift alt shiftr ctrll keycode 11 = Meta_parenright
+ altgr alt shiftr ctrll keycode 11 = Meta_braceright
+ shift altgr alt shiftr ctrll keycode 11 = Meta_braceright
+ shiftl shiftr ctrll keycode 11 = zero
+ shift shiftl shiftr ctrll keycode 11 = parenright
+ altgr shiftl shiftr ctrll keycode 11 = braceright
+ shift altgr shiftl shiftr ctrll keycode 11 = degree
+ alt shiftl shiftr ctrll keycode 11 = Meta_zero
+ shift alt shiftl shiftr ctrll keycode 11 = Meta_parenright
+ altgr alt shiftl shiftr ctrll keycode 11 = Meta_braceright
+ shift altgr alt shiftl shiftr ctrll keycode 11 = Meta_braceright
+keycode 12 = minus
+ shift keycode 12 = underscore
+ altgr keycode 12 = backslash
+ shift altgr keycode 12 = questiondown
+ control keycode 12 = Control_underscore
+ shift control keycode 12 = Control_underscore
+ altgr control keycode 12 = Control_backslash
+ shift altgr control keycode 12 = Control_backslash
+ alt keycode 12 = Meta_minus
+ shift alt keycode 12 = Meta_underscore
+ altgr alt keycode 12 = Meta_backslash
+ shift altgr alt keycode 12 = Meta_backslash
+ control alt keycode 12 = Meta_Control_underscore
+ shift control alt keycode 12 = Meta_Control_underscore
+ altgr control alt keycode 12 = Meta_Control_backslash
+ shift altgr control alt keycode 12 = Meta_Control_backslash
+ shift shiftl keycode 12 = underscore
+ altgr shiftl keycode 12 = backslash
+ shift altgr shiftl keycode 12 = questiondown
+ control shiftl keycode 12 = Control_underscore
+ shift control shiftl keycode 12 = Control_underscore
+ altgr control shiftl keycode 12 = Control_backslash
+ shift altgr control shiftl keycode 12 = Control_backslash
+ alt shiftl keycode 12 = Meta_minus
+ shift alt shiftl keycode 12 = Meta_underscore
+ altgr alt shiftl keycode 12 = Meta_backslash
+ shift altgr alt shiftl keycode 12 = Meta_backslash
+ control alt shiftl keycode 12 = Meta_Control_underscore
+ shift control alt shiftl keycode 12 = Meta_Control_underscore
+ altgr control alt shiftl keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftl keycode 12 = Meta_Control_backslash
+ shift shiftr keycode 12 = underscore
+ altgr shiftr keycode 12 = backslash
+ shift altgr shiftr keycode 12 = questiondown
+ control shiftr keycode 12 = Control_underscore
+ shift control shiftr keycode 12 = Control_underscore
+ altgr control shiftr keycode 12 = Control_backslash
+ shift altgr control shiftr keycode 12 = Control_backslash
+ alt shiftr keycode 12 = Meta_minus
+ shift alt shiftr keycode 12 = Meta_underscore
+ altgr alt shiftr keycode 12 = Meta_backslash
+ shift altgr alt shiftr keycode 12 = Meta_backslash
+ control alt shiftr keycode 12 = Meta_Control_underscore
+ shift control alt shiftr keycode 12 = Meta_Control_underscore
+ altgr control alt shiftr keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftr keycode 12 = Meta_Control_backslash
+ shift shiftl shiftr keycode 12 = underscore
+ altgr shiftl shiftr keycode 12 = backslash
+ shift altgr shiftl shiftr keycode 12 = questiondown
+ control shiftl shiftr keycode 12 = Control_underscore
+ shift control shiftl shiftr keycode 12 = Control_underscore
+ altgr control shiftl shiftr keycode 12 = Control_backslash
+ shift altgr control shiftl shiftr keycode 12 = Control_backslash
+ alt shiftl shiftr keycode 12 = Meta_minus
+ shift alt shiftl shiftr keycode 12 = Meta_underscore
+ altgr alt shiftl shiftr keycode 12 = Meta_backslash
+ shift altgr alt shiftl shiftr keycode 12 = Meta_backslash
+ control alt shiftl shiftr keycode 12 = Meta_Control_underscore
+ shift control alt shiftl shiftr keycode 12 = Meta_Control_underscore
+ altgr control alt shiftl shiftr keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr keycode 12 = Meta_Control_backslash
+ shift ctrll keycode 12 = underscore
+ altgr ctrll keycode 12 = backslash
+ shift altgr ctrll keycode 12 = questiondown
+ control ctrll keycode 12 = Control_underscore
+ shift control ctrll keycode 12 = Control_underscore
+ altgr control ctrll keycode 12 = Control_backslash
+ shift altgr control ctrll keycode 12 = Control_backslash
+ alt ctrll keycode 12 = Meta_minus
+ shift alt ctrll keycode 12 = Meta_underscore
+ altgr alt ctrll keycode 12 = Meta_backslash
+ shift altgr alt ctrll keycode 12 = Meta_backslash
+ control alt ctrll keycode 12 = Meta_Control_underscore
+ shift control alt ctrll keycode 12 = Meta_Control_underscore
+ altgr control alt ctrll keycode 12 = Meta_Control_backslash
+ shift altgr control alt ctrll keycode 12 = Meta_Control_backslash
+ shift shiftl ctrll keycode 12 = underscore
+ altgr shiftl ctrll keycode 12 = backslash
+ shift altgr shiftl ctrll keycode 12 = questiondown
+ control shiftl ctrll keycode 12 = Control_underscore
+ shift control shiftl ctrll keycode 12 = Control_underscore
+ altgr control shiftl ctrll keycode 12 = Control_backslash
+ shift altgr control shiftl ctrll keycode 12 = Control_backslash
+ alt shiftl ctrll keycode 12 = Meta_minus
+ shift alt shiftl ctrll keycode 12 = Meta_underscore
+ altgr alt shiftl ctrll keycode 12 = Meta_backslash
+ shift altgr alt shiftl ctrll keycode 12 = Meta_backslash
+ control alt shiftl ctrll keycode 12 = Meta_Control_underscore
+ shift control alt shiftl ctrll keycode 12 = Meta_Control_underscore
+ altgr control alt shiftl ctrll keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftl ctrll keycode 12 = Meta_Control_backslash
+ shift shiftr ctrll keycode 12 = underscore
+ altgr shiftr ctrll keycode 12 = backslash
+ shift altgr shiftr ctrll keycode 12 = questiondown
+ control shiftr ctrll keycode 12 = Control_underscore
+ shift control shiftr ctrll keycode 12 = Control_underscore
+ altgr control shiftr ctrll keycode 12 = Control_backslash
+ shift altgr control shiftr ctrll keycode 12 = Control_backslash
+ alt shiftr ctrll keycode 12 = Meta_minus
+ shift alt shiftr ctrll keycode 12 = Meta_underscore
+ altgr alt shiftr ctrll keycode 12 = Meta_backslash
+ shift altgr alt shiftr ctrll keycode 12 = Meta_backslash
+ control alt shiftr ctrll keycode 12 = Meta_Control_underscore
+ shift control alt shiftr ctrll keycode 12 = Meta_Control_underscore
+ altgr control alt shiftr ctrll keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftr ctrll keycode 12 = Meta_Control_backslash
+ shift shiftl shiftr ctrll keycode 12 = underscore
+ altgr shiftl shiftr ctrll keycode 12 = backslash
+ shift altgr shiftl shiftr ctrll keycode 12 = questiondown
+ control shiftl shiftr ctrll keycode 12 = Control_underscore
+ shift control shiftl shiftr ctrll keycode 12 = Control_underscore
+ altgr control shiftl shiftr ctrll keycode 12 = Control_backslash
+ shift altgr control shiftl shiftr ctrll keycode 12 = Control_backslash
+ alt shiftl shiftr ctrll keycode 12 = Meta_minus
+ shift alt shiftl shiftr ctrll keycode 12 = Meta_underscore
+ altgr alt shiftl shiftr ctrll keycode 12 = Meta_backslash
+ shift altgr alt shiftl shiftr ctrll keycode 12 = Meta_backslash
+ control alt shiftl shiftr ctrll keycode 12 = Meta_Control_underscore
+ shift control alt shiftl shiftr ctrll keycode 12 = Meta_Control_underscore
+ altgr control alt shiftl shiftr ctrll keycode 12 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr ctrll keycode 12 = Meta_Control_backslash
+keycode 13 = equal
+ shift keycode 13 = plus
+ altgr keycode 13 = section
+ shift altgr keycode 13 = dead_cedilla
+ control keycode 13 = dead_cedilla
+ shift control keycode 13 = dead_cedilla
+ altgr control keycode 13 = dead_cedilla
+ shift altgr control keycode 13 = dead_cedilla
+ alt keycode 13 = Meta_equal
+ shift alt keycode 13 = Meta_plus
+ altgr alt keycode 13 = Meta_equal
+ shift altgr alt keycode 13 = dead_cedilla
+ control alt keycode 13 = dead_cedilla
+ shift control alt keycode 13 = dead_cedilla
+ altgr control alt keycode 13 = dead_cedilla
+ shift altgr control alt keycode 13 = dead_cedilla
+ shift shiftl keycode 13 = plus
+ altgr shiftl keycode 13 = section
+ shift altgr shiftl keycode 13 = dead_cedilla
+ control shiftl keycode 13 = dead_cedilla
+ shift control shiftl keycode 13 = dead_cedilla
+ altgr control shiftl keycode 13 = dead_cedilla
+ shift altgr control shiftl keycode 13 = dead_cedilla
+ alt shiftl keycode 13 = Meta_equal
+ shift alt shiftl keycode 13 = Meta_plus
+ altgr alt shiftl keycode 13 = Meta_equal
+ shift altgr alt shiftl keycode 13 = dead_cedilla
+ control alt shiftl keycode 13 = dead_cedilla
+ shift control alt shiftl keycode 13 = dead_cedilla
+ altgr control alt shiftl keycode 13 = dead_cedilla
+ shift altgr control alt shiftl keycode 13 = dead_cedilla
+ shift shiftr keycode 13 = plus
+ altgr shiftr keycode 13 = section
+ shift altgr shiftr keycode 13 = dead_cedilla
+ control shiftr keycode 13 = dead_cedilla
+ shift control shiftr keycode 13 = dead_cedilla
+ altgr control shiftr keycode 13 = dead_cedilla
+ shift altgr control shiftr keycode 13 = dead_cedilla
+ alt shiftr keycode 13 = Meta_equal
+ shift alt shiftr keycode 13 = Meta_plus
+ altgr alt shiftr keycode 13 = Meta_equal
+ shift altgr alt shiftr keycode 13 = dead_cedilla
+ control alt shiftr keycode 13 = dead_cedilla
+ shift control alt shiftr keycode 13 = dead_cedilla
+ altgr control alt shiftr keycode 13 = dead_cedilla
+ shift altgr control alt shiftr keycode 13 = dead_cedilla
+ shift shiftl shiftr keycode 13 = plus
+ altgr shiftl shiftr keycode 13 = section
+ shift altgr shiftl shiftr keycode 13 = dead_cedilla
+ control shiftl shiftr keycode 13 = dead_cedilla
+ shift control shiftl shiftr keycode 13 = dead_cedilla
+ altgr control shiftl shiftr keycode 13 = dead_cedilla
+ shift altgr control shiftl shiftr keycode 13 = dead_cedilla
+ alt shiftl shiftr keycode 13 = Meta_equal
+ shift alt shiftl shiftr keycode 13 = Meta_plus
+ altgr alt shiftl shiftr keycode 13 = Meta_equal
+ shift altgr alt shiftl shiftr keycode 13 = dead_cedilla
+ control alt shiftl shiftr keycode 13 = dead_cedilla
+ shift control alt shiftl shiftr keycode 13 = dead_cedilla
+ altgr control alt shiftl shiftr keycode 13 = dead_cedilla
+ shift altgr control alt shiftl shiftr keycode 13 = dead_cedilla
+ shift ctrll keycode 13 = plus
+ altgr ctrll keycode 13 = section
+ shift altgr ctrll keycode 13 = dead_cedilla
+ control ctrll keycode 13 = dead_cedilla
+ shift control ctrll keycode 13 = dead_cedilla
+ altgr control ctrll keycode 13 = dead_cedilla
+ shift altgr control ctrll keycode 13 = dead_cedilla
+ alt ctrll keycode 13 = Meta_equal
+ shift alt ctrll keycode 13 = Meta_plus
+ altgr alt ctrll keycode 13 = Meta_equal
+ shift altgr alt ctrll keycode 13 = dead_cedilla
+ control alt ctrll keycode 13 = dead_cedilla
+ shift control alt ctrll keycode 13 = dead_cedilla
+ altgr control alt ctrll keycode 13 = dead_cedilla
+ shift altgr control alt ctrll keycode 13 = dead_cedilla
+ shift shiftl ctrll keycode 13 = plus
+ altgr shiftl ctrll keycode 13 = section
+ shift altgr shiftl ctrll keycode 13 = dead_cedilla
+ control shiftl ctrll keycode 13 = dead_cedilla
+ shift control shiftl ctrll keycode 13 = dead_cedilla
+ altgr control shiftl ctrll keycode 13 = dead_cedilla
+ shift altgr control shiftl ctrll keycode 13 = dead_cedilla
+ alt shiftl ctrll keycode 13 = Meta_equal
+ shift alt shiftl ctrll keycode 13 = Meta_plus
+ altgr alt shiftl ctrll keycode 13 = Meta_equal
+ shift altgr alt shiftl ctrll keycode 13 = dead_cedilla
+ control alt shiftl ctrll keycode 13 = dead_cedilla
+ shift control alt shiftl ctrll keycode 13 = dead_cedilla
+ altgr control alt shiftl ctrll keycode 13 = dead_cedilla
+ shift altgr control alt shiftl ctrll keycode 13 = dead_cedilla
+ shift shiftr ctrll keycode 13 = plus
+ altgr shiftr ctrll keycode 13 = section
+ shift altgr shiftr ctrll keycode 13 = dead_cedilla
+ control shiftr ctrll keycode 13 = dead_cedilla
+ shift control shiftr ctrll keycode 13 = dead_cedilla
+ altgr control shiftr ctrll keycode 13 = dead_cedilla
+ shift altgr control shiftr ctrll keycode 13 = dead_cedilla
+ alt shiftr ctrll keycode 13 = Meta_equal
+ shift alt shiftr ctrll keycode 13 = Meta_plus
+ altgr alt shiftr ctrll keycode 13 = Meta_equal
+ shift altgr alt shiftr ctrll keycode 13 = dead_cedilla
+ control alt shiftr ctrll keycode 13 = dead_cedilla
+ shift control alt shiftr ctrll keycode 13 = dead_cedilla
+ altgr control alt shiftr ctrll keycode 13 = dead_cedilla
+ shift altgr control alt shiftr ctrll keycode 13 = dead_cedilla
+ shift shiftl shiftr ctrll keycode 13 = plus
+ altgr shiftl shiftr ctrll keycode 13 = section
+ shift altgr shiftl shiftr ctrll keycode 13 = dead_cedilla
+ control shiftl shiftr ctrll keycode 13 = dead_cedilla
+ shift control shiftl shiftr ctrll keycode 13 = dead_cedilla
+ altgr control shiftl shiftr ctrll keycode 13 = dead_cedilla
+ shift altgr control shiftl shiftr ctrll keycode 13 = dead_cedilla
+ alt shiftl shiftr ctrll keycode 13 = Meta_equal
+ shift alt shiftl shiftr ctrll keycode 13 = Meta_plus
+ altgr alt shiftl shiftr ctrll keycode 13 = Meta_equal
+ shift altgr alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+ control alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+ shift control alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+ altgr control alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+ shift altgr control alt shiftl shiftr ctrll keycode 13 = dead_cedilla
+keycode 14 = Delete
+ control keycode 14 = BackSpace
+ shift control keycode 14 = BackSpace
+ altgr control keycode 14 = BackSpace
+ shift altgr control keycode 14 = BackSpace
+ alt keycode 14 = Meta_Delete
+ shift alt keycode 14 = Meta_Delete
+ altgr alt keycode 14 = Meta_Delete
+ shift altgr alt keycode 14 = Meta_Delete
+ control alt keycode 14 = Meta_BackSpace
+ shift control alt keycode 14 = Meta_BackSpace
+ altgr control alt keycode 14 = Meta_BackSpace
+ shift altgr control alt keycode 14 = Meta_BackSpace
+ control shiftl keycode 14 = BackSpace
+ shift control shiftl keycode 14 = BackSpace
+ altgr control shiftl keycode 14 = BackSpace
+ shift altgr control shiftl keycode 14 = BackSpace
+ alt shiftl keycode 14 = Meta_Delete
+ shift alt shiftl keycode 14 = Meta_Delete
+ altgr alt shiftl keycode 14 = Meta_Delete
+ shift altgr alt shiftl keycode 14 = Meta_Delete
+ control alt shiftl keycode 14 = Meta_BackSpace
+ shift control alt shiftl keycode 14 = Meta_BackSpace
+ altgr control alt shiftl keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftl keycode 14 = Meta_BackSpace
+ control shiftr keycode 14 = BackSpace
+ shift control shiftr keycode 14 = BackSpace
+ altgr control shiftr keycode 14 = BackSpace
+ shift altgr control shiftr keycode 14 = BackSpace
+ alt shiftr keycode 14 = Meta_Delete
+ shift alt shiftr keycode 14 = Meta_Delete
+ altgr alt shiftr keycode 14 = Meta_Delete
+ shift altgr alt shiftr keycode 14 = Meta_Delete
+ control alt shiftr keycode 14 = Meta_BackSpace
+ shift control alt shiftr keycode 14 = Meta_BackSpace
+ altgr control alt shiftr keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftr keycode 14 = Meta_BackSpace
+ control shiftl shiftr keycode 14 = BackSpace
+ shift control shiftl shiftr keycode 14 = BackSpace
+ altgr control shiftl shiftr keycode 14 = BackSpace
+ shift altgr control shiftl shiftr keycode 14 = BackSpace
+ alt shiftl shiftr keycode 14 = Meta_Delete
+ shift alt shiftl shiftr keycode 14 = Meta_Delete
+ altgr alt shiftl shiftr keycode 14 = Meta_Delete
+ shift altgr alt shiftl shiftr keycode 14 = Meta_Delete
+ control alt shiftl shiftr keycode 14 = Meta_BackSpace
+ shift control alt shiftl shiftr keycode 14 = Meta_BackSpace
+ altgr control alt shiftl shiftr keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftl shiftr keycode 14 = Meta_BackSpace
+ control ctrll keycode 14 = BackSpace
+ shift control ctrll keycode 14 = BackSpace
+ altgr control ctrll keycode 14 = BackSpace
+ shift altgr control ctrll keycode 14 = BackSpace
+ alt ctrll keycode 14 = Meta_Delete
+ shift alt ctrll keycode 14 = Meta_Delete
+ altgr alt ctrll keycode 14 = Meta_Delete
+ shift altgr alt ctrll keycode 14 = Meta_Delete
+ control alt ctrll keycode 14 = Meta_BackSpace
+ shift control alt ctrll keycode 14 = Meta_BackSpace
+ altgr control alt ctrll keycode 14 = Meta_BackSpace
+ shift altgr control alt ctrll keycode 14 = Meta_BackSpace
+ control shiftl ctrll keycode 14 = BackSpace
+ shift control shiftl ctrll keycode 14 = BackSpace
+ altgr control shiftl ctrll keycode 14 = BackSpace
+ shift altgr control shiftl ctrll keycode 14 = BackSpace
+ alt shiftl ctrll keycode 14 = Meta_Delete
+ shift alt shiftl ctrll keycode 14 = Meta_Delete
+ altgr alt shiftl ctrll keycode 14 = Meta_Delete
+ shift altgr alt shiftl ctrll keycode 14 = Meta_Delete
+ control alt shiftl ctrll keycode 14 = Meta_BackSpace
+ shift control alt shiftl ctrll keycode 14 = Meta_BackSpace
+ altgr control alt shiftl ctrll keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftl ctrll keycode 14 = Meta_BackSpace
+ control shiftr ctrll keycode 14 = BackSpace
+ shift control shiftr ctrll keycode 14 = BackSpace
+ altgr control shiftr ctrll keycode 14 = BackSpace
+ shift altgr control shiftr ctrll keycode 14 = BackSpace
+ alt shiftr ctrll keycode 14 = Meta_Delete
+ shift alt shiftr ctrll keycode 14 = Meta_Delete
+ altgr alt shiftr ctrll keycode 14 = Meta_Delete
+ shift altgr alt shiftr ctrll keycode 14 = Meta_Delete
+ control alt shiftr ctrll keycode 14 = Meta_BackSpace
+ shift control alt shiftr ctrll keycode 14 = Meta_BackSpace
+ altgr control alt shiftr ctrll keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftr ctrll keycode 14 = Meta_BackSpace
+ control shiftl shiftr ctrll keycode 14 = BackSpace
+ shift control shiftl shiftr ctrll keycode 14 = BackSpace
+ altgr control shiftl shiftr ctrll keycode 14 = BackSpace
+ shift altgr control shiftl shiftr ctrll keycode 14 = BackSpace
+ alt shiftl shiftr ctrll keycode 14 = Meta_Delete
+ shift alt shiftl shiftr ctrll keycode 14 = Meta_Delete
+ altgr alt shiftl shiftr ctrll keycode 14 = Meta_Delete
+ shift altgr alt shiftl shiftr ctrll keycode 14 = Meta_Delete
+ control alt shiftl shiftr ctrll keycode 14 = Meta_BackSpace
+ shift control alt shiftl shiftr ctrll keycode 14 = Meta_BackSpace
+ altgr control alt shiftl shiftr ctrll keycode 14 = Meta_BackSpace
+ shift altgr control alt shiftl shiftr ctrll keycode 14 = Meta_BackSpace
+keycode 15 = Tab
+ alt keycode 15 = Meta_Tab
+ shift alt keycode 15 = Meta_Tab
+ altgr alt keycode 15 = Meta_Tab
+ shift altgr alt keycode 15 = Meta_Tab
+ control alt keycode 15 = Meta_Tab
+ shift control alt keycode 15 = Meta_Tab
+ altgr control alt keycode 15 = Meta_Tab
+ shift altgr control alt keycode 15 = Meta_Tab
+ alt shiftl keycode 15 = Meta_Tab
+ shift alt shiftl keycode 15 = Meta_Tab
+ altgr alt shiftl keycode 15 = Meta_Tab
+ shift altgr alt shiftl keycode 15 = Meta_Tab
+ control alt shiftl keycode 15 = Meta_Tab
+ shift control alt shiftl keycode 15 = Meta_Tab
+ altgr control alt shiftl keycode 15 = Meta_Tab
+ shift altgr control alt shiftl keycode 15 = Meta_Tab
+ alt shiftr keycode 15 = Meta_Tab
+ shift alt shiftr keycode 15 = Meta_Tab
+ altgr alt shiftr keycode 15 = Meta_Tab
+ shift altgr alt shiftr keycode 15 = Meta_Tab
+ control alt shiftr keycode 15 = Meta_Tab
+ shift control alt shiftr keycode 15 = Meta_Tab
+ altgr control alt shiftr keycode 15 = Meta_Tab
+ shift altgr control alt shiftr keycode 15 = Meta_Tab
+ alt shiftl shiftr keycode 15 = Meta_Tab
+ shift alt shiftl shiftr keycode 15 = Meta_Tab
+ altgr alt shiftl shiftr keycode 15 = Meta_Tab
+ shift altgr alt shiftl shiftr keycode 15 = Meta_Tab
+ control alt shiftl shiftr keycode 15 = Meta_Tab
+ shift control alt shiftl shiftr keycode 15 = Meta_Tab
+ altgr control alt shiftl shiftr keycode 15 = Meta_Tab
+ shift altgr control alt shiftl shiftr keycode 15 = Meta_Tab
+ alt ctrll keycode 15 = Meta_Tab
+ shift alt ctrll keycode 15 = Meta_Tab
+ altgr alt ctrll keycode 15 = Meta_Tab
+ shift altgr alt ctrll keycode 15 = Meta_Tab
+ control alt ctrll keycode 15 = Meta_Tab
+ shift control alt ctrll keycode 15 = Meta_Tab
+ altgr control alt ctrll keycode 15 = Meta_Tab
+ shift altgr control alt ctrll keycode 15 = Meta_Tab
+ alt shiftl ctrll keycode 15 = Meta_Tab
+ shift alt shiftl ctrll keycode 15 = Meta_Tab
+ altgr alt shiftl ctrll keycode 15 = Meta_Tab
+ shift altgr alt shiftl ctrll keycode 15 = Meta_Tab
+ control alt shiftl ctrll keycode 15 = Meta_Tab
+ shift control alt shiftl ctrll keycode 15 = Meta_Tab
+ altgr control alt shiftl ctrll keycode 15 = Meta_Tab
+ shift altgr control alt shiftl ctrll keycode 15 = Meta_Tab
+ alt shiftr ctrll keycode 15 = Meta_Tab
+ shift alt shiftr ctrll keycode 15 = Meta_Tab
+ altgr alt shiftr ctrll keycode 15 = Meta_Tab
+ shift altgr alt shiftr ctrll keycode 15 = Meta_Tab
+ control alt shiftr ctrll keycode 15 = Meta_Tab
+ shift control alt shiftr ctrll keycode 15 = Meta_Tab
+ altgr control alt shiftr ctrll keycode 15 = Meta_Tab
+ shift altgr control alt shiftr ctrll keycode 15 = Meta_Tab
+ alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ shift alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ altgr alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ shift altgr alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ control alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ shift control alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ altgr control alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+ shift altgr control alt shiftl shiftr ctrll keycode 15 = Meta_Tab
+keycode 16 = +q
+ shift keycode 16 = +Q
+ altgr keycode 16 = slash
+ shift altgr keycode 16 = slash
+ control keycode 16 = Control_q
+ shift control keycode 16 = Control_q
+ altgr control keycode 16 = Control_q
+ shift altgr control keycode 16 = Control_q
+ alt keycode 16 = Meta_q
+ shift alt keycode 16 = Meta_Q
+ altgr alt keycode 16 = Meta_slash
+ shift altgr alt keycode 16 = Meta_slash
+ control alt keycode 16 = Meta_Control_q
+ shift control alt keycode 16 = Meta_Control_q
+ altgr control alt keycode 16 = Meta_Control_q
+ shift altgr control alt keycode 16 = Meta_Control_q
+ shift shiftl keycode 16 = +Q
+ altgr shiftl keycode 16 = slash
+ shift altgr shiftl keycode 16 = slash
+ control shiftl keycode 16 = Control_q
+ shift control shiftl keycode 16 = Control_q
+ altgr control shiftl keycode 16 = Control_q
+ shift altgr control shiftl keycode 16 = Control_q
+ alt shiftl keycode 16 = Meta_q
+ shift alt shiftl keycode 16 = Meta_Q
+ altgr alt shiftl keycode 16 = Meta_slash
+ shift altgr alt shiftl keycode 16 = Meta_slash
+ control alt shiftl keycode 16 = Meta_Control_q
+ shift control alt shiftl keycode 16 = Meta_Control_q
+ altgr control alt shiftl keycode 16 = Meta_Control_q
+ shift altgr control alt shiftl keycode 16 = Meta_Control_q
+ shift shiftr keycode 16 = +Q
+ altgr shiftr keycode 16 = slash
+ shift altgr shiftr keycode 16 = slash
+ control shiftr keycode 16 = Control_q
+ shift control shiftr keycode 16 = Control_q
+ altgr control shiftr keycode 16 = Control_q
+ shift altgr control shiftr keycode 16 = Control_q
+ alt shiftr keycode 16 = Meta_q
+ shift alt shiftr keycode 16 = Meta_Q
+ altgr alt shiftr keycode 16 = Meta_slash
+ shift altgr alt shiftr keycode 16 = Meta_slash
+ control alt shiftr keycode 16 = Meta_Control_q
+ shift control alt shiftr keycode 16 = Meta_Control_q
+ altgr control alt shiftr keycode 16 = Meta_Control_q
+ shift altgr control alt shiftr keycode 16 = Meta_Control_q
+ shift shiftl shiftr keycode 16 = +Q
+ altgr shiftl shiftr keycode 16 = slash
+ shift altgr shiftl shiftr keycode 16 = slash
+ control shiftl shiftr keycode 16 = Control_q
+ shift control shiftl shiftr keycode 16 = Control_q
+ altgr control shiftl shiftr keycode 16 = Control_q
+ shift altgr control shiftl shiftr keycode 16 = Control_q
+ alt shiftl shiftr keycode 16 = Meta_q
+ shift alt shiftl shiftr keycode 16 = Meta_Q
+ altgr alt shiftl shiftr keycode 16 = Meta_slash
+ shift altgr alt shiftl shiftr keycode 16 = Meta_slash
+ control alt shiftl shiftr keycode 16 = Meta_Control_q
+ shift control alt shiftl shiftr keycode 16 = Meta_Control_q
+ altgr control alt shiftl shiftr keycode 16 = Meta_Control_q
+ shift altgr control alt shiftl shiftr keycode 16 = Meta_Control_q
+ ctrll keycode 16 = +Q
+ altgr ctrll keycode 16 = slash
+ shift altgr ctrll keycode 16 = slash
+ control ctrll keycode 16 = Control_q
+ shift control ctrll keycode 16 = Control_q
+ altgr control ctrll keycode 16 = Control_q
+ shift altgr control ctrll keycode 16 = Control_q
+ alt ctrll keycode 16 = Meta_q
+ shift alt ctrll keycode 16 = Meta_Q
+ altgr alt ctrll keycode 16 = Meta_slash
+ shift altgr alt ctrll keycode 16 = Meta_slash
+ control alt ctrll keycode 16 = Meta_Control_q
+ shift control alt ctrll keycode 16 = Meta_Control_q
+ altgr control alt ctrll keycode 16 = Meta_Control_q
+ shift altgr control alt ctrll keycode 16 = Meta_Control_q
+ shiftl ctrll keycode 16 = +Q
+ altgr shiftl ctrll keycode 16 = slash
+ shift altgr shiftl ctrll keycode 16 = slash
+ control shiftl ctrll keycode 16 = Control_q
+ shift control shiftl ctrll keycode 16 = Control_q
+ altgr control shiftl ctrll keycode 16 = Control_q
+ shift altgr control shiftl ctrll keycode 16 = Control_q
+ alt shiftl ctrll keycode 16 = Meta_q
+ shift alt shiftl ctrll keycode 16 = Meta_Q
+ altgr alt shiftl ctrll keycode 16 = Meta_slash
+ shift altgr alt shiftl ctrll keycode 16 = Meta_slash
+ control alt shiftl ctrll keycode 16 = Meta_Control_q
+ shift control alt shiftl ctrll keycode 16 = Meta_Control_q
+ altgr control alt shiftl ctrll keycode 16 = Meta_Control_q
+ shift altgr control alt shiftl ctrll keycode 16 = Meta_Control_q
+ shiftr ctrll keycode 16 = +Q
+ altgr shiftr ctrll keycode 16 = slash
+ shift altgr shiftr ctrll keycode 16 = slash
+ control shiftr ctrll keycode 16 = Control_q
+ shift control shiftr ctrll keycode 16 = Control_q
+ altgr control shiftr ctrll keycode 16 = Control_q
+ shift altgr control shiftr ctrll keycode 16 = Control_q
+ alt shiftr ctrll keycode 16 = Meta_q
+ shift alt shiftr ctrll keycode 16 = Meta_Q
+ altgr alt shiftr ctrll keycode 16 = Meta_slash
+ shift altgr alt shiftr ctrll keycode 16 = Meta_slash
+ control alt shiftr ctrll keycode 16 = Meta_Control_q
+ shift control alt shiftr ctrll keycode 16 = Meta_Control_q
+ altgr control alt shiftr ctrll keycode 16 = Meta_Control_q
+ shift altgr control alt shiftr ctrll keycode 16 = Meta_Control_q
+ shiftl shiftr ctrll keycode 16 = +Q
+ altgr shiftl shiftr ctrll keycode 16 = slash
+ shift altgr shiftl shiftr ctrll keycode 16 = slash
+ control shiftl shiftr ctrll keycode 16 = Control_q
+ shift control shiftl shiftr ctrll keycode 16 = Control_q
+ altgr control shiftl shiftr ctrll keycode 16 = Control_q
+ shift altgr control shiftl shiftr ctrll keycode 16 = Control_q
+ alt shiftl shiftr ctrll keycode 16 = Meta_q
+ shift alt shiftl shiftr ctrll keycode 16 = Meta_Q
+ altgr alt shiftl shiftr ctrll keycode 16 = Meta_slash
+ shift altgr alt shiftl shiftr ctrll keycode 16 = Meta_slash
+ control alt shiftl shiftr ctrll keycode 16 = Meta_Control_q
+ shift control alt shiftl shiftr ctrll keycode 16 = Meta_Control_q
+ altgr control alt shiftl shiftr ctrll keycode 16 = Meta_Control_q
+ shift altgr control alt shiftl shiftr ctrll keycode 16 = Meta_Control_q
+keycode 17 = +w
+ shift keycode 17 = +W
+ altgr keycode 17 = question
+ shift altgr keycode 17 = question
+ control keycode 17 = Control_w
+ shift control keycode 17 = Control_w
+ altgr control keycode 17 = Delete
+ shift altgr control keycode 17 = Delete
+ alt keycode 17 = Meta_w
+ shift alt keycode 17 = Meta_W
+ altgr alt keycode 17 = Meta_question
+ shift altgr alt keycode 17 = Meta_question
+ control alt keycode 17 = Meta_Control_w
+ shift control alt keycode 17 = Meta_Control_w
+ altgr control alt keycode 17 = Meta_Delete
+ shift altgr control alt keycode 17 = Meta_Delete
+ shift shiftl keycode 17 = +W
+ altgr shiftl keycode 17 = question
+ shift altgr shiftl keycode 17 = question
+ control shiftl keycode 17 = Control_w
+ shift control shiftl keycode 17 = Control_w
+ altgr control shiftl keycode 17 = Delete
+ shift altgr control shiftl keycode 17 = Delete
+ alt shiftl keycode 17 = Meta_w
+ shift alt shiftl keycode 17 = Meta_W
+ altgr alt shiftl keycode 17 = Meta_question
+ shift altgr alt shiftl keycode 17 = Meta_question
+ control alt shiftl keycode 17 = Meta_Control_w
+ shift control alt shiftl keycode 17 = Meta_Control_w
+ altgr control alt shiftl keycode 17 = Meta_Delete
+ shift altgr control alt shiftl keycode 17 = Meta_Delete
+ shift shiftr keycode 17 = +W
+ altgr shiftr keycode 17 = question
+ shift altgr shiftr keycode 17 = question
+ control shiftr keycode 17 = Control_w
+ shift control shiftr keycode 17 = Control_w
+ altgr control shiftr keycode 17 = Delete
+ shift altgr control shiftr keycode 17 = Delete
+ alt shiftr keycode 17 = Meta_w
+ shift alt shiftr keycode 17 = Meta_W
+ altgr alt shiftr keycode 17 = Meta_question
+ shift altgr alt shiftr keycode 17 = Meta_question
+ control alt shiftr keycode 17 = Meta_Control_w
+ shift control alt shiftr keycode 17 = Meta_Control_w
+ altgr control alt shiftr keycode 17 = Meta_Delete
+ shift altgr control alt shiftr keycode 17 = Meta_Delete
+ shift shiftl shiftr keycode 17 = +W
+ altgr shiftl shiftr keycode 17 = question
+ shift altgr shiftl shiftr keycode 17 = question
+ control shiftl shiftr keycode 17 = Control_w
+ shift control shiftl shiftr keycode 17 = Control_w
+ altgr control shiftl shiftr keycode 17 = Delete
+ shift altgr control shiftl shiftr keycode 17 = Delete
+ alt shiftl shiftr keycode 17 = Meta_w
+ shift alt shiftl shiftr keycode 17 = Meta_W
+ altgr alt shiftl shiftr keycode 17 = Meta_question
+ shift altgr alt shiftl shiftr keycode 17 = Meta_question
+ control alt shiftl shiftr keycode 17 = Meta_Control_w
+ shift control alt shiftl shiftr keycode 17 = Meta_Control_w
+ altgr control alt shiftl shiftr keycode 17 = Meta_Delete
+ shift altgr control alt shiftl shiftr keycode 17 = Meta_Delete
+ ctrll keycode 17 = +W
+ altgr ctrll keycode 17 = question
+ shift altgr ctrll keycode 17 = question
+ control ctrll keycode 17 = Control_w
+ shift control ctrll keycode 17 = Control_w
+ altgr control ctrll keycode 17 = Delete
+ shift altgr control ctrll keycode 17 = Delete
+ alt ctrll keycode 17 = Meta_w
+ shift alt ctrll keycode 17 = Meta_W
+ altgr alt ctrll keycode 17 = Meta_question
+ shift altgr alt ctrll keycode 17 = Meta_question
+ control alt ctrll keycode 17 = Meta_Control_w
+ shift control alt ctrll keycode 17 = Meta_Control_w
+ altgr control alt ctrll keycode 17 = Meta_Delete
+ shift altgr control alt ctrll keycode 17 = Meta_Delete
+ shiftl ctrll keycode 17 = +W
+ altgr shiftl ctrll keycode 17 = question
+ shift altgr shiftl ctrll keycode 17 = question
+ control shiftl ctrll keycode 17 = Control_w
+ shift control shiftl ctrll keycode 17 = Control_w
+ altgr control shiftl ctrll keycode 17 = Delete
+ shift altgr control shiftl ctrll keycode 17 = Delete
+ alt shiftl ctrll keycode 17 = Meta_w
+ shift alt shiftl ctrll keycode 17 = Meta_W
+ altgr alt shiftl ctrll keycode 17 = Meta_question
+ shift altgr alt shiftl ctrll keycode 17 = Meta_question
+ control alt shiftl ctrll keycode 17 = Meta_Control_w
+ shift control alt shiftl ctrll keycode 17 = Meta_Control_w
+ altgr control alt shiftl ctrll keycode 17 = Meta_Delete
+ shift altgr control alt shiftl ctrll keycode 17 = Meta_Delete
+ shiftr ctrll keycode 17 = +W
+ altgr shiftr ctrll keycode 17 = question
+ shift altgr shiftr ctrll keycode 17 = question
+ control shiftr ctrll keycode 17 = Control_w
+ shift control shiftr ctrll keycode 17 = Control_w
+ altgr control shiftr ctrll keycode 17 = Delete
+ shift altgr control shiftr ctrll keycode 17 = Delete
+ alt shiftr ctrll keycode 17 = Meta_w
+ shift alt shiftr ctrll keycode 17 = Meta_W
+ altgr alt shiftr ctrll keycode 17 = Meta_question
+ shift altgr alt shiftr ctrll keycode 17 = Meta_question
+ control alt shiftr ctrll keycode 17 = Meta_Control_w
+ shift control alt shiftr ctrll keycode 17 = Meta_Control_w
+ altgr control alt shiftr ctrll keycode 17 = Meta_Delete
+ shift altgr control alt shiftr ctrll keycode 17 = Meta_Delete
+ shiftl shiftr ctrll keycode 17 = +W
+ altgr shiftl shiftr ctrll keycode 17 = question
+ shift altgr shiftl shiftr ctrll keycode 17 = question
+ control shiftl shiftr ctrll keycode 17 = Control_w
+ shift control shiftl shiftr ctrll keycode 17 = Control_w
+ altgr control shiftl shiftr ctrll keycode 17 = Delete
+ shift altgr control shiftl shiftr ctrll keycode 17 = Delete
+ alt shiftl shiftr ctrll keycode 17 = Meta_w
+ shift alt shiftl shiftr ctrll keycode 17 = Meta_W
+ altgr alt shiftl shiftr ctrll keycode 17 = Meta_question
+ shift altgr alt shiftl shiftr ctrll keycode 17 = Meta_question
+ control alt shiftl shiftr ctrll keycode 17 = Meta_Control_w
+ shift control alt shiftl shiftr ctrll keycode 17 = Meta_Control_w
+ altgr control alt shiftl shiftr ctrll keycode 17 = Meta_Delete
+ shift altgr control alt shiftl shiftr ctrll keycode 17 = Meta_Delete
+keycode 18 = +e
+ shift keycode 18 = +E
+ altgr keycode 18 = euro
+ shift altgr keycode 18 = euro
+ control keycode 18 = Control_e
+ shift control keycode 18 = Control_e
+ altgr control keycode 18 = Control_e
+ shift altgr control keycode 18 = Control_e
+ alt keycode 18 = Meta_e
+ shift alt keycode 18 = Meta_E
+ altgr alt keycode 18 = Meta_e
+ shift altgr alt keycode 18 = Meta_E
+ control alt keycode 18 = Meta_Control_e
+ shift control alt keycode 18 = Meta_Control_e
+ altgr control alt keycode 18 = Meta_Control_e
+ shift altgr control alt keycode 18 = Meta_Control_e
+ shift shiftl keycode 18 = +E
+ altgr shiftl keycode 18 = euro
+ shift altgr shiftl keycode 18 = euro
+ control shiftl keycode 18 = Control_e
+ shift control shiftl keycode 18 = Control_e
+ altgr control shiftl keycode 18 = Control_e
+ shift altgr control shiftl keycode 18 = Control_e
+ alt shiftl keycode 18 = Meta_e
+ shift alt shiftl keycode 18 = Meta_E
+ altgr alt shiftl keycode 18 = Meta_e
+ shift altgr alt shiftl keycode 18 = Meta_E
+ control alt shiftl keycode 18 = Meta_Control_e
+ shift control alt shiftl keycode 18 = Meta_Control_e
+ altgr control alt shiftl keycode 18 = Meta_Control_e
+ shift altgr control alt shiftl keycode 18 = Meta_Control_e
+ shift shiftr keycode 18 = +E
+ altgr shiftr keycode 18 = euro
+ shift altgr shiftr keycode 18 = euro
+ control shiftr keycode 18 = Control_e
+ shift control shiftr keycode 18 = Control_e
+ altgr control shiftr keycode 18 = Control_e
+ shift altgr control shiftr keycode 18 = Control_e
+ alt shiftr keycode 18 = Meta_e
+ shift alt shiftr keycode 18 = Meta_E
+ altgr alt shiftr keycode 18 = Meta_e
+ shift altgr alt shiftr keycode 18 = Meta_E
+ control alt shiftr keycode 18 = Meta_Control_e
+ shift control alt shiftr keycode 18 = Meta_Control_e
+ altgr control alt shiftr keycode 18 = Meta_Control_e
+ shift altgr control alt shiftr keycode 18 = Meta_Control_e
+ shift shiftl shiftr keycode 18 = +E
+ altgr shiftl shiftr keycode 18 = euro
+ shift altgr shiftl shiftr keycode 18 = euro
+ control shiftl shiftr keycode 18 = Control_e
+ shift control shiftl shiftr keycode 18 = Control_e
+ altgr control shiftl shiftr keycode 18 = Control_e
+ shift altgr control shiftl shiftr keycode 18 = Control_e
+ alt shiftl shiftr keycode 18 = Meta_e
+ shift alt shiftl shiftr keycode 18 = Meta_E
+ altgr alt shiftl shiftr keycode 18 = Meta_e
+ shift altgr alt shiftl shiftr keycode 18 = Meta_E
+ control alt shiftl shiftr keycode 18 = Meta_Control_e
+ shift control alt shiftl shiftr keycode 18 = Meta_Control_e
+ altgr control alt shiftl shiftr keycode 18 = Meta_Control_e
+ shift altgr control alt shiftl shiftr keycode 18 = Meta_Control_e
+ ctrll keycode 18 = +E
+ altgr ctrll keycode 18 = euro
+ shift altgr ctrll keycode 18 = euro
+ control ctrll keycode 18 = Control_e
+ shift control ctrll keycode 18 = Control_e
+ altgr control ctrll keycode 18 = Control_e
+ shift altgr control ctrll keycode 18 = Control_e
+ alt ctrll keycode 18 = Meta_e
+ shift alt ctrll keycode 18 = Meta_E
+ altgr alt ctrll keycode 18 = Meta_e
+ shift altgr alt ctrll keycode 18 = Meta_E
+ control alt ctrll keycode 18 = Meta_Control_e
+ shift control alt ctrll keycode 18 = Meta_Control_e
+ altgr control alt ctrll keycode 18 = Meta_Control_e
+ shift altgr control alt ctrll keycode 18 = Meta_Control_e
+ shiftl ctrll keycode 18 = +E
+ altgr shiftl ctrll keycode 18 = euro
+ shift altgr shiftl ctrll keycode 18 = euro
+ control shiftl ctrll keycode 18 = Control_e
+ shift control shiftl ctrll keycode 18 = Control_e
+ altgr control shiftl ctrll keycode 18 = Control_e
+ shift altgr control shiftl ctrll keycode 18 = Control_e
+ alt shiftl ctrll keycode 18 = Meta_e
+ shift alt shiftl ctrll keycode 18 = Meta_E
+ altgr alt shiftl ctrll keycode 18 = Meta_e
+ shift altgr alt shiftl ctrll keycode 18 = Meta_E
+ control alt shiftl ctrll keycode 18 = Meta_Control_e
+ shift control alt shiftl ctrll keycode 18 = Meta_Control_e
+ altgr control alt shiftl ctrll keycode 18 = Meta_Control_e
+ shift altgr control alt shiftl ctrll keycode 18 = Meta_Control_e
+ shiftr ctrll keycode 18 = +E
+ altgr shiftr ctrll keycode 18 = euro
+ shift altgr shiftr ctrll keycode 18 = euro
+ control shiftr ctrll keycode 18 = Control_e
+ shift control shiftr ctrll keycode 18 = Control_e
+ altgr control shiftr ctrll keycode 18 = Control_e
+ shift altgr control shiftr ctrll keycode 18 = Control_e
+ alt shiftr ctrll keycode 18 = Meta_e
+ shift alt shiftr ctrll keycode 18 = Meta_E
+ altgr alt shiftr ctrll keycode 18 = Meta_e
+ shift altgr alt shiftr ctrll keycode 18 = Meta_E
+ control alt shiftr ctrll keycode 18 = Meta_Control_e
+ shift control alt shiftr ctrll keycode 18 = Meta_Control_e
+ altgr control alt shiftr ctrll keycode 18 = Meta_Control_e
+ shift altgr control alt shiftr ctrll keycode 18 = Meta_Control_e
+ shiftl shiftr ctrll keycode 18 = +E
+ altgr shiftl shiftr ctrll keycode 18 = euro
+ shift altgr shiftl shiftr ctrll keycode 18 = euro
+ control shiftl shiftr ctrll keycode 18 = Control_e
+ shift control shiftl shiftr ctrll keycode 18 = Control_e
+ altgr control shiftl shiftr ctrll keycode 18 = Control_e
+ shift altgr control shiftl shiftr ctrll keycode 18 = Control_e
+ alt shiftl shiftr ctrll keycode 18 = Meta_e
+ shift alt shiftl shiftr ctrll keycode 18 = Meta_E
+ altgr alt shiftl shiftr ctrll keycode 18 = Meta_e
+ shift altgr alt shiftl shiftr ctrll keycode 18 = Meta_E
+ control alt shiftl shiftr ctrll keycode 18 = Meta_Control_e
+ shift control alt shiftl shiftr ctrll keycode 18 = Meta_Control_e
+ altgr control alt shiftl shiftr ctrll keycode 18 = Meta_Control_e
+ shift altgr control alt shiftl shiftr ctrll keycode 18 = Meta_Control_e
+keycode 19 = +r
+ shift keycode 19 = +R
+ altgr keycode 19 = registered
+ shift altgr keycode 19 = registered
+ control keycode 19 = Control_r
+ shift control keycode 19 = Control_r
+ altgr control keycode 19 = Control_r
+ shift altgr control keycode 19 = Control_r
+ alt keycode 19 = Meta_r
+ shift alt keycode 19 = Meta_R
+ altgr alt keycode 19 = Meta_r
+ shift altgr alt keycode 19 = Meta_R
+ control alt keycode 19 = Meta_Control_r
+ shift control alt keycode 19 = Meta_Control_r
+ altgr control alt keycode 19 = Meta_Control_r
+ shift altgr control alt keycode 19 = Meta_Control_r
+ shift shiftl keycode 19 = +R
+ altgr shiftl keycode 19 = registered
+ shift altgr shiftl keycode 19 = registered
+ control shiftl keycode 19 = Control_r
+ shift control shiftl keycode 19 = Control_r
+ altgr control shiftl keycode 19 = Control_r
+ shift altgr control shiftl keycode 19 = Control_r
+ alt shiftl keycode 19 = Meta_r
+ shift alt shiftl keycode 19 = Meta_R
+ altgr alt shiftl keycode 19 = Meta_r
+ shift altgr alt shiftl keycode 19 = Meta_R
+ control alt shiftl keycode 19 = Meta_Control_r
+ shift control alt shiftl keycode 19 = Meta_Control_r
+ altgr control alt shiftl keycode 19 = Meta_Control_r
+ shift altgr control alt shiftl keycode 19 = Meta_Control_r
+ shift shiftr keycode 19 = +R
+ altgr shiftr keycode 19 = registered
+ shift altgr shiftr keycode 19 = registered
+ control shiftr keycode 19 = Control_r
+ shift control shiftr keycode 19 = Control_r
+ altgr control shiftr keycode 19 = Control_r
+ shift altgr control shiftr keycode 19 = Control_r
+ alt shiftr keycode 19 = Meta_r
+ shift alt shiftr keycode 19 = Meta_R
+ altgr alt shiftr keycode 19 = Meta_r
+ shift altgr alt shiftr keycode 19 = Meta_R
+ control alt shiftr keycode 19 = Meta_Control_r
+ shift control alt shiftr keycode 19 = Meta_Control_r
+ altgr control alt shiftr keycode 19 = Meta_Control_r
+ shift altgr control alt shiftr keycode 19 = Meta_Control_r
+ shift shiftl shiftr keycode 19 = +R
+ altgr shiftl shiftr keycode 19 = registered
+ shift altgr shiftl shiftr keycode 19 = registered
+ control shiftl shiftr keycode 19 = Control_r
+ shift control shiftl shiftr keycode 19 = Control_r
+ altgr control shiftl shiftr keycode 19 = Control_r
+ shift altgr control shiftl shiftr keycode 19 = Control_r
+ alt shiftl shiftr keycode 19 = Meta_r
+ shift alt shiftl shiftr keycode 19 = Meta_R
+ altgr alt shiftl shiftr keycode 19 = Meta_r
+ shift altgr alt shiftl shiftr keycode 19 = Meta_R
+ control alt shiftl shiftr keycode 19 = Meta_Control_r
+ shift control alt shiftl shiftr keycode 19 = Meta_Control_r
+ altgr control alt shiftl shiftr keycode 19 = Meta_Control_r
+ shift altgr control alt shiftl shiftr keycode 19 = Meta_Control_r
+ ctrll keycode 19 = +R
+ altgr ctrll keycode 19 = registered
+ shift altgr ctrll keycode 19 = registered
+ control ctrll keycode 19 = Control_r
+ shift control ctrll keycode 19 = Control_r
+ altgr control ctrll keycode 19 = Control_r
+ shift altgr control ctrll keycode 19 = Control_r
+ alt ctrll keycode 19 = Meta_r
+ shift alt ctrll keycode 19 = Meta_R
+ altgr alt ctrll keycode 19 = Meta_r
+ shift altgr alt ctrll keycode 19 = Meta_R
+ control alt ctrll keycode 19 = Meta_Control_r
+ shift control alt ctrll keycode 19 = Meta_Control_r
+ altgr control alt ctrll keycode 19 = Meta_Control_r
+ shift altgr control alt ctrll keycode 19 = Meta_Control_r
+ shiftl ctrll keycode 19 = +R
+ altgr shiftl ctrll keycode 19 = registered
+ shift altgr shiftl ctrll keycode 19 = registered
+ control shiftl ctrll keycode 19 = Control_r
+ shift control shiftl ctrll keycode 19 = Control_r
+ altgr control shiftl ctrll keycode 19 = Control_r
+ shift altgr control shiftl ctrll keycode 19 = Control_r
+ alt shiftl ctrll keycode 19 = Meta_r
+ shift alt shiftl ctrll keycode 19 = Meta_R
+ altgr alt shiftl ctrll keycode 19 = Meta_r
+ shift altgr alt shiftl ctrll keycode 19 = Meta_R
+ control alt shiftl ctrll keycode 19 = Meta_Control_r
+ shift control alt shiftl ctrll keycode 19 = Meta_Control_r
+ altgr control alt shiftl ctrll keycode 19 = Meta_Control_r
+ shift altgr control alt shiftl ctrll keycode 19 = Meta_Control_r
+ shiftr ctrll keycode 19 = +R
+ altgr shiftr ctrll keycode 19 = registered
+ shift altgr shiftr ctrll keycode 19 = registered
+ control shiftr ctrll keycode 19 = Control_r
+ shift control shiftr ctrll keycode 19 = Control_r
+ altgr control shiftr ctrll keycode 19 = Control_r
+ shift altgr control shiftr ctrll keycode 19 = Control_r
+ alt shiftr ctrll keycode 19 = Meta_r
+ shift alt shiftr ctrll keycode 19 = Meta_R
+ altgr alt shiftr ctrll keycode 19 = Meta_r
+ shift altgr alt shiftr ctrll keycode 19 = Meta_R
+ control alt shiftr ctrll keycode 19 = Meta_Control_r
+ shift control alt shiftr ctrll keycode 19 = Meta_Control_r
+ altgr control alt shiftr ctrll keycode 19 = Meta_Control_r
+ shift altgr control alt shiftr ctrll keycode 19 = Meta_Control_r
+ shiftl shiftr ctrll keycode 19 = +R
+ altgr shiftl shiftr ctrll keycode 19 = registered
+ shift altgr shiftl shiftr ctrll keycode 19 = registered
+ control shiftl shiftr ctrll keycode 19 = Control_r
+ shift control shiftl shiftr ctrll keycode 19 = Control_r
+ altgr control shiftl shiftr ctrll keycode 19 = Control_r
+ shift altgr control shiftl shiftr ctrll keycode 19 = Control_r
+ alt shiftl shiftr ctrll keycode 19 = Meta_r
+ shift alt shiftl shiftr ctrll keycode 19 = Meta_R
+ altgr alt shiftl shiftr ctrll keycode 19 = Meta_r
+ shift altgr alt shiftl shiftr ctrll keycode 19 = Meta_R
+ control alt shiftl shiftr ctrll keycode 19 = Meta_Control_r
+ shift control alt shiftl shiftr ctrll keycode 19 = Meta_Control_r
+ altgr control alt shiftl shiftr ctrll keycode 19 = Meta_Control_r
+ shift altgr control alt shiftl shiftr ctrll keycode 19 = Meta_Control_r
+keycode 20 = +t
+ shift keycode 20 = +T
+ altgr keycode 20 = tslash
+ shift altgr keycode 20 = Tslash
+ control keycode 20 = Control_t
+ shift control keycode 20 = Control_t
+ altgr control keycode 20 = Control_t
+ shift altgr control keycode 20 = Control_t
+ alt keycode 20 = Meta_t
+ shift alt keycode 20 = Meta_T
+ altgr alt keycode 20 = Meta_t
+ shift altgr alt keycode 20 = Meta_T
+ control alt keycode 20 = Meta_Control_t
+ shift control alt keycode 20 = Meta_Control_t
+ altgr control alt keycode 20 = Meta_Control_t
+ shift altgr control alt keycode 20 = Meta_Control_t
+ shift shiftl keycode 20 = +T
+ altgr shiftl keycode 20 = tslash
+ shift altgr shiftl keycode 20 = Tslash
+ control shiftl keycode 20 = Control_t
+ shift control shiftl keycode 20 = Control_t
+ altgr control shiftl keycode 20 = Control_t
+ shift altgr control shiftl keycode 20 = Control_t
+ alt shiftl keycode 20 = Meta_t
+ shift alt shiftl keycode 20 = Meta_T
+ altgr alt shiftl keycode 20 = Meta_t
+ shift altgr alt shiftl keycode 20 = Meta_T
+ control alt shiftl keycode 20 = Meta_Control_t
+ shift control alt shiftl keycode 20 = Meta_Control_t
+ altgr control alt shiftl keycode 20 = Meta_Control_t
+ shift altgr control alt shiftl keycode 20 = Meta_Control_t
+ shift shiftr keycode 20 = +T
+ altgr shiftr keycode 20 = tslash
+ shift altgr shiftr keycode 20 = Tslash
+ control shiftr keycode 20 = Control_t
+ shift control shiftr keycode 20 = Control_t
+ altgr control shiftr keycode 20 = Control_t
+ shift altgr control shiftr keycode 20 = Control_t
+ alt shiftr keycode 20 = Meta_t
+ shift alt shiftr keycode 20 = Meta_T
+ altgr alt shiftr keycode 20 = Meta_t
+ shift altgr alt shiftr keycode 20 = Meta_T
+ control alt shiftr keycode 20 = Meta_Control_t
+ shift control alt shiftr keycode 20 = Meta_Control_t
+ altgr control alt shiftr keycode 20 = Meta_Control_t
+ shift altgr control alt shiftr keycode 20 = Meta_Control_t
+ shift shiftl shiftr keycode 20 = +T
+ altgr shiftl shiftr keycode 20 = tslash
+ shift altgr shiftl shiftr keycode 20 = Tslash
+ control shiftl shiftr keycode 20 = Control_t
+ shift control shiftl shiftr keycode 20 = Control_t
+ altgr control shiftl shiftr keycode 20 = Control_t
+ shift altgr control shiftl shiftr keycode 20 = Control_t
+ alt shiftl shiftr keycode 20 = Meta_t
+ shift alt shiftl shiftr keycode 20 = Meta_T
+ altgr alt shiftl shiftr keycode 20 = Meta_t
+ shift altgr alt shiftl shiftr keycode 20 = Meta_T
+ control alt shiftl shiftr keycode 20 = Meta_Control_t
+ shift control alt shiftl shiftr keycode 20 = Meta_Control_t
+ altgr control alt shiftl shiftr keycode 20 = Meta_Control_t
+ shift altgr control alt shiftl shiftr keycode 20 = Meta_Control_t
+ ctrll keycode 20 = +T
+ altgr ctrll keycode 20 = Tslash
+ shift altgr ctrll keycode 20 = tslash
+ control ctrll keycode 20 = Control_t
+ shift control ctrll keycode 20 = Control_t
+ altgr control ctrll keycode 20 = Control_t
+ shift altgr control ctrll keycode 20 = Control_t
+ alt ctrll keycode 20 = Meta_t
+ shift alt ctrll keycode 20 = Meta_T
+ altgr alt ctrll keycode 20 = Meta_t
+ shift altgr alt ctrll keycode 20 = Meta_T
+ control alt ctrll keycode 20 = Meta_Control_t
+ shift control alt ctrll keycode 20 = Meta_Control_t
+ altgr control alt ctrll keycode 20 = Meta_Control_t
+ shift altgr control alt ctrll keycode 20 = Meta_Control_t
+ shiftl ctrll keycode 20 = +T
+ altgr shiftl ctrll keycode 20 = Tslash
+ shift altgr shiftl ctrll keycode 20 = tslash
+ control shiftl ctrll keycode 20 = Control_t
+ shift control shiftl ctrll keycode 20 = Control_t
+ altgr control shiftl ctrll keycode 20 = Control_t
+ shift altgr control shiftl ctrll keycode 20 = Control_t
+ alt shiftl ctrll keycode 20 = Meta_t
+ shift alt shiftl ctrll keycode 20 = Meta_T
+ altgr alt shiftl ctrll keycode 20 = Meta_t
+ shift altgr alt shiftl ctrll keycode 20 = Meta_T
+ control alt shiftl ctrll keycode 20 = Meta_Control_t
+ shift control alt shiftl ctrll keycode 20 = Meta_Control_t
+ altgr control alt shiftl ctrll keycode 20 = Meta_Control_t
+ shift altgr control alt shiftl ctrll keycode 20 = Meta_Control_t
+ shiftr ctrll keycode 20 = +T
+ altgr shiftr ctrll keycode 20 = Tslash
+ shift altgr shiftr ctrll keycode 20 = tslash
+ control shiftr ctrll keycode 20 = Control_t
+ shift control shiftr ctrll keycode 20 = Control_t
+ altgr control shiftr ctrll keycode 20 = Control_t
+ shift altgr control shiftr ctrll keycode 20 = Control_t
+ alt shiftr ctrll keycode 20 = Meta_t
+ shift alt shiftr ctrll keycode 20 = Meta_T
+ altgr alt shiftr ctrll keycode 20 = Meta_t
+ shift altgr alt shiftr ctrll keycode 20 = Meta_T
+ control alt shiftr ctrll keycode 20 = Meta_Control_t
+ shift control alt shiftr ctrll keycode 20 = Meta_Control_t
+ altgr control alt shiftr ctrll keycode 20 = Meta_Control_t
+ shift altgr control alt shiftr ctrll keycode 20 = Meta_Control_t
+ shiftl shiftr ctrll keycode 20 = +T
+ altgr shiftl shiftr ctrll keycode 20 = Tslash
+ shift altgr shiftl shiftr ctrll keycode 20 = tslash
+ control shiftl shiftr ctrll keycode 20 = Control_t
+ shift control shiftl shiftr ctrll keycode 20 = Control_t
+ altgr control shiftl shiftr ctrll keycode 20 = Control_t
+ shift altgr control shiftl shiftr ctrll keycode 20 = Control_t
+ alt shiftl shiftr ctrll keycode 20 = Meta_t
+ shift alt shiftl shiftr ctrll keycode 20 = Meta_T
+ altgr alt shiftl shiftr ctrll keycode 20 = Meta_t
+ shift altgr alt shiftl shiftr ctrll keycode 20 = Meta_T
+ control alt shiftl shiftr ctrll keycode 20 = Meta_Control_t
+ shift control alt shiftl shiftr ctrll keycode 20 = Meta_Control_t
+ altgr control alt shiftl shiftr ctrll keycode 20 = Meta_Control_t
+ shift altgr control alt shiftl shiftr ctrll keycode 20 = Meta_Control_t
+keycode 21 = +y
+ shift keycode 21 = +Y
+ altgr keycode 21 = U+2190
+ shift altgr keycode 21 = yen
+ control keycode 21 = Control_y
+ shift control keycode 21 = Control_y
+ altgr control keycode 21 = Control_y
+ shift altgr control keycode 21 = Control_y
+ alt keycode 21 = Meta_y
+ shift alt keycode 21 = Meta_Y
+ altgr alt keycode 21 = Meta_y
+ shift altgr alt keycode 21 = Meta_Y
+ control alt keycode 21 = Meta_Control_y
+ shift control alt keycode 21 = Meta_Control_y
+ altgr control alt keycode 21 = Meta_Control_y
+ shift altgr control alt keycode 21 = Meta_Control_y
+ shift shiftl keycode 21 = +Y
+ altgr shiftl keycode 21 = U+2190
+ shift altgr shiftl keycode 21 = yen
+ control shiftl keycode 21 = Control_y
+ shift control shiftl keycode 21 = Control_y
+ altgr control shiftl keycode 21 = Control_y
+ shift altgr control shiftl keycode 21 = Control_y
+ alt shiftl keycode 21 = Meta_y
+ shift alt shiftl keycode 21 = Meta_Y
+ altgr alt shiftl keycode 21 = Meta_y
+ shift altgr alt shiftl keycode 21 = Meta_Y
+ control alt shiftl keycode 21 = Meta_Control_y
+ shift control alt shiftl keycode 21 = Meta_Control_y
+ altgr control alt shiftl keycode 21 = Meta_Control_y
+ shift altgr control alt shiftl keycode 21 = Meta_Control_y
+ shift shiftr keycode 21 = +Y
+ altgr shiftr keycode 21 = U+2190
+ shift altgr shiftr keycode 21 = yen
+ control shiftr keycode 21 = Control_y
+ shift control shiftr keycode 21 = Control_y
+ altgr control shiftr keycode 21 = Control_y
+ shift altgr control shiftr keycode 21 = Control_y
+ alt shiftr keycode 21 = Meta_y
+ shift alt shiftr keycode 21 = Meta_Y
+ altgr alt shiftr keycode 21 = Meta_y
+ shift altgr alt shiftr keycode 21 = Meta_Y
+ control alt shiftr keycode 21 = Meta_Control_y
+ shift control alt shiftr keycode 21 = Meta_Control_y
+ altgr control alt shiftr keycode 21 = Meta_Control_y
+ shift altgr control alt shiftr keycode 21 = Meta_Control_y
+ shift shiftl shiftr keycode 21 = +Y
+ altgr shiftl shiftr keycode 21 = U+2190
+ shift altgr shiftl shiftr keycode 21 = yen
+ control shiftl shiftr keycode 21 = Control_y
+ shift control shiftl shiftr keycode 21 = Control_y
+ altgr control shiftl shiftr keycode 21 = Control_y
+ shift altgr control shiftl shiftr keycode 21 = Control_y
+ alt shiftl shiftr keycode 21 = Meta_y
+ shift alt shiftl shiftr keycode 21 = Meta_Y
+ altgr alt shiftl shiftr keycode 21 = Meta_y
+ shift altgr alt shiftl shiftr keycode 21 = Meta_Y
+ control alt shiftl shiftr keycode 21 = Meta_Control_y
+ shift control alt shiftl shiftr keycode 21 = Meta_Control_y
+ altgr control alt shiftl shiftr keycode 21 = Meta_Control_y
+ shift altgr control alt shiftl shiftr keycode 21 = Meta_Control_y
+ ctrll keycode 21 = +Y
+ altgr ctrll keycode 21 = U+2190
+ shift altgr ctrll keycode 21 = yen
+ control ctrll keycode 21 = Control_y
+ shift control ctrll keycode 21 = Control_y
+ altgr control ctrll keycode 21 = Control_y
+ shift altgr control ctrll keycode 21 = Control_y
+ alt ctrll keycode 21 = Meta_y
+ shift alt ctrll keycode 21 = Meta_Y
+ altgr alt ctrll keycode 21 = Meta_y
+ shift altgr alt ctrll keycode 21 = Meta_Y
+ control alt ctrll keycode 21 = Meta_Control_y
+ shift control alt ctrll keycode 21 = Meta_Control_y
+ altgr control alt ctrll keycode 21 = Meta_Control_y
+ shift altgr control alt ctrll keycode 21 = Meta_Control_y
+ shiftl ctrll keycode 21 = +Y
+ altgr shiftl ctrll keycode 21 = U+2190
+ shift altgr shiftl ctrll keycode 21 = yen
+ control shiftl ctrll keycode 21 = Control_y
+ shift control shiftl ctrll keycode 21 = Control_y
+ altgr control shiftl ctrll keycode 21 = Control_y
+ shift altgr control shiftl ctrll keycode 21 = Control_y
+ alt shiftl ctrll keycode 21 = Meta_y
+ shift alt shiftl ctrll keycode 21 = Meta_Y
+ altgr alt shiftl ctrll keycode 21 = Meta_y
+ shift altgr alt shiftl ctrll keycode 21 = Meta_Y
+ control alt shiftl ctrll keycode 21 = Meta_Control_y
+ shift control alt shiftl ctrll keycode 21 = Meta_Control_y
+ altgr control alt shiftl ctrll keycode 21 = Meta_Control_y
+ shift altgr control alt shiftl ctrll keycode 21 = Meta_Control_y
+ shiftr ctrll keycode 21 = +Y
+ altgr shiftr ctrll keycode 21 = U+2190
+ shift altgr shiftr ctrll keycode 21 = yen
+ control shiftr ctrll keycode 21 = Control_y
+ shift control shiftr ctrll keycode 21 = Control_y
+ altgr control shiftr ctrll keycode 21 = Control_y
+ shift altgr control shiftr ctrll keycode 21 = Control_y
+ alt shiftr ctrll keycode 21 = Meta_y
+ shift alt shiftr ctrll keycode 21 = Meta_Y
+ altgr alt shiftr ctrll keycode 21 = Meta_y
+ shift altgr alt shiftr ctrll keycode 21 = Meta_Y
+ control alt shiftr ctrll keycode 21 = Meta_Control_y
+ shift control alt shiftr ctrll keycode 21 = Meta_Control_y
+ altgr control alt shiftr ctrll keycode 21 = Meta_Control_y
+ shift altgr control alt shiftr ctrll keycode 21 = Meta_Control_y
+ shiftl shiftr ctrll keycode 21 = +Y
+ altgr shiftl shiftr ctrll keycode 21 = U+2190
+ shift altgr shiftl shiftr ctrll keycode 21 = yen
+ control shiftl shiftr ctrll keycode 21 = Control_y
+ shift control shiftl shiftr ctrll keycode 21 = Control_y
+ altgr control shiftl shiftr ctrll keycode 21 = Control_y
+ shift altgr control shiftl shiftr ctrll keycode 21 = Control_y
+ alt shiftl shiftr ctrll keycode 21 = Meta_y
+ shift alt shiftl shiftr ctrll keycode 21 = Meta_Y
+ altgr alt shiftl shiftr ctrll keycode 21 = Meta_y
+ shift altgr alt shiftl shiftr ctrll keycode 21 = Meta_Y
+ control alt shiftl shiftr ctrll keycode 21 = Meta_Control_y
+ shift control alt shiftl shiftr ctrll keycode 21 = Meta_Control_y
+ altgr control alt shiftl shiftr ctrll keycode 21 = Meta_Control_y
+ shift altgr control alt shiftl shiftr ctrll keycode 21 = Meta_Control_y
+keycode 22 = +u
+ shift keycode 22 = +U
+ altgr keycode 22 = U+2193
+ shift altgr keycode 22 = U+2191
+ control keycode 22 = Control_u
+ shift control keycode 22 = Control_u
+ altgr control keycode 22 = Control_u
+ shift altgr control keycode 22 = Control_u
+ alt keycode 22 = Meta_u
+ shift alt keycode 22 = Meta_U
+ altgr alt keycode 22 = Meta_u
+ shift altgr alt keycode 22 = Meta_U
+ control alt keycode 22 = Meta_Control_u
+ shift control alt keycode 22 = Meta_Control_u
+ altgr control alt keycode 22 = Meta_Control_u
+ shift altgr control alt keycode 22 = Meta_Control_u
+ shift shiftl keycode 22 = +U
+ altgr shiftl keycode 22 = U+2193
+ shift altgr shiftl keycode 22 = U+2191
+ control shiftl keycode 22 = Control_u
+ shift control shiftl keycode 22 = Control_u
+ altgr control shiftl keycode 22 = Control_u
+ shift altgr control shiftl keycode 22 = Control_u
+ alt shiftl keycode 22 = Meta_u
+ shift alt shiftl keycode 22 = Meta_U
+ altgr alt shiftl keycode 22 = Meta_u
+ shift altgr alt shiftl keycode 22 = Meta_U
+ control alt shiftl keycode 22 = Meta_Control_u
+ shift control alt shiftl keycode 22 = Meta_Control_u
+ altgr control alt shiftl keycode 22 = Meta_Control_u
+ shift altgr control alt shiftl keycode 22 = Meta_Control_u
+ shift shiftr keycode 22 = +U
+ altgr shiftr keycode 22 = U+2193
+ shift altgr shiftr keycode 22 = U+2191
+ control shiftr keycode 22 = Control_u
+ shift control shiftr keycode 22 = Control_u
+ altgr control shiftr keycode 22 = Control_u
+ shift altgr control shiftr keycode 22 = Control_u
+ alt shiftr keycode 22 = Meta_u
+ shift alt shiftr keycode 22 = Meta_U
+ altgr alt shiftr keycode 22 = Meta_u
+ shift altgr alt shiftr keycode 22 = Meta_U
+ control alt shiftr keycode 22 = Meta_Control_u
+ shift control alt shiftr keycode 22 = Meta_Control_u
+ altgr control alt shiftr keycode 22 = Meta_Control_u
+ shift altgr control alt shiftr keycode 22 = Meta_Control_u
+ shift shiftl shiftr keycode 22 = +U
+ altgr shiftl shiftr keycode 22 = U+2193
+ shift altgr shiftl shiftr keycode 22 = U+2191
+ control shiftl shiftr keycode 22 = Control_u
+ shift control shiftl shiftr keycode 22 = Control_u
+ altgr control shiftl shiftr keycode 22 = Control_u
+ shift altgr control shiftl shiftr keycode 22 = Control_u
+ alt shiftl shiftr keycode 22 = Meta_u
+ shift alt shiftl shiftr keycode 22 = Meta_U
+ altgr alt shiftl shiftr keycode 22 = Meta_u
+ shift altgr alt shiftl shiftr keycode 22 = Meta_U
+ control alt shiftl shiftr keycode 22 = Meta_Control_u
+ shift control alt shiftl shiftr keycode 22 = Meta_Control_u
+ altgr control alt shiftl shiftr keycode 22 = Meta_Control_u
+ shift altgr control alt shiftl shiftr keycode 22 = Meta_Control_u
+ ctrll keycode 22 = +U
+ altgr ctrll keycode 22 = U+2193
+ shift altgr ctrll keycode 22 = U+2191
+ control ctrll keycode 22 = Control_u
+ shift control ctrll keycode 22 = Control_u
+ altgr control ctrll keycode 22 = Control_u
+ shift altgr control ctrll keycode 22 = Control_u
+ alt ctrll keycode 22 = Meta_u
+ shift alt ctrll keycode 22 = Meta_U
+ altgr alt ctrll keycode 22 = Meta_u
+ shift altgr alt ctrll keycode 22 = Meta_U
+ control alt ctrll keycode 22 = Meta_Control_u
+ shift control alt ctrll keycode 22 = Meta_Control_u
+ altgr control alt ctrll keycode 22 = Meta_Control_u
+ shift altgr control alt ctrll keycode 22 = Meta_Control_u
+ shiftl ctrll keycode 22 = +U
+ altgr shiftl ctrll keycode 22 = U+2193
+ shift altgr shiftl ctrll keycode 22 = U+2191
+ control shiftl ctrll keycode 22 = Control_u
+ shift control shiftl ctrll keycode 22 = Control_u
+ altgr control shiftl ctrll keycode 22 = Control_u
+ shift altgr control shiftl ctrll keycode 22 = Control_u
+ alt shiftl ctrll keycode 22 = Meta_u
+ shift alt shiftl ctrll keycode 22 = Meta_U
+ altgr alt shiftl ctrll keycode 22 = Meta_u
+ shift altgr alt shiftl ctrll keycode 22 = Meta_U
+ control alt shiftl ctrll keycode 22 = Meta_Control_u
+ shift control alt shiftl ctrll keycode 22 = Meta_Control_u
+ altgr control alt shiftl ctrll keycode 22 = Meta_Control_u
+ shift altgr control alt shiftl ctrll keycode 22 = Meta_Control_u
+ shiftr ctrll keycode 22 = +U
+ altgr shiftr ctrll keycode 22 = U+2193
+ shift altgr shiftr ctrll keycode 22 = U+2191
+ control shiftr ctrll keycode 22 = Control_u
+ shift control shiftr ctrll keycode 22 = Control_u
+ altgr control shiftr ctrll keycode 22 = Control_u
+ shift altgr control shiftr ctrll keycode 22 = Control_u
+ alt shiftr ctrll keycode 22 = Meta_u
+ shift alt shiftr ctrll keycode 22 = Meta_U
+ altgr alt shiftr ctrll keycode 22 = Meta_u
+ shift altgr alt shiftr ctrll keycode 22 = Meta_U
+ control alt shiftr ctrll keycode 22 = Meta_Control_u
+ shift control alt shiftr ctrll keycode 22 = Meta_Control_u
+ altgr control alt shiftr ctrll keycode 22 = Meta_Control_u
+ shift altgr control alt shiftr ctrll keycode 22 = Meta_Control_u
+ shiftl shiftr ctrll keycode 22 = +U
+ altgr shiftl shiftr ctrll keycode 22 = U+2193
+ shift altgr shiftl shiftr ctrll keycode 22 = U+2191
+ control shiftl shiftr ctrll keycode 22 = Control_u
+ shift control shiftl shiftr ctrll keycode 22 = Control_u
+ altgr control shiftl shiftr ctrll keycode 22 = Control_u
+ shift altgr control shiftl shiftr ctrll keycode 22 = Control_u
+ alt shiftl shiftr ctrll keycode 22 = Meta_u
+ shift alt shiftl shiftr ctrll keycode 22 = Meta_U
+ altgr alt shiftl shiftr ctrll keycode 22 = Meta_u
+ shift altgr alt shiftl shiftr ctrll keycode 22 = Meta_U
+ control alt shiftl shiftr ctrll keycode 22 = Meta_Control_u
+ shift control alt shiftl shiftr ctrll keycode 22 = Meta_Control_u
+ altgr control alt shiftl shiftr ctrll keycode 22 = Meta_Control_u
+ shift altgr control alt shiftl shiftr ctrll keycode 22 = Meta_Control_u
+keycode 23 = +i
+ shift keycode 23 = +I
+ altgr keycode 23 = U+2192
+ shift altgr keycode 23 = idotless
+ control keycode 23 = Tab
+ shift control keycode 23 = Tab
+ altgr control keycode 23 = Tab
+ shift altgr control keycode 23 = Tab
+ alt keycode 23 = Meta_i
+ shift alt keycode 23 = Meta_I
+ altgr alt keycode 23 = Meta_i
+ shift altgr alt keycode 23 = Meta_I
+ control alt keycode 23 = Meta_Tab
+ shift control alt keycode 23 = Meta_Tab
+ altgr control alt keycode 23 = Meta_Tab
+ shift altgr control alt keycode 23 = Meta_Tab
+ shift shiftl keycode 23 = +I
+ altgr shiftl keycode 23 = U+2192
+ shift altgr shiftl keycode 23 = idotless
+ control shiftl keycode 23 = Tab
+ shift control shiftl keycode 23 = Tab
+ altgr control shiftl keycode 23 = Tab
+ shift altgr control shiftl keycode 23 = Tab
+ alt shiftl keycode 23 = Meta_i
+ shift alt shiftl keycode 23 = Meta_I
+ altgr alt shiftl keycode 23 = Meta_i
+ shift altgr alt shiftl keycode 23 = Meta_I
+ control alt shiftl keycode 23 = Meta_Tab
+ shift control alt shiftl keycode 23 = Meta_Tab
+ altgr control alt shiftl keycode 23 = Meta_Tab
+ shift altgr control alt shiftl keycode 23 = Meta_Tab
+ shift shiftr keycode 23 = +I
+ altgr shiftr keycode 23 = U+2192
+ shift altgr shiftr keycode 23 = idotless
+ control shiftr keycode 23 = Tab
+ shift control shiftr keycode 23 = Tab
+ altgr control shiftr keycode 23 = Tab
+ shift altgr control shiftr keycode 23 = Tab
+ alt shiftr keycode 23 = Meta_i
+ shift alt shiftr keycode 23 = Meta_I
+ altgr alt shiftr keycode 23 = Meta_i
+ shift altgr alt shiftr keycode 23 = Meta_I
+ control alt shiftr keycode 23 = Meta_Tab
+ shift control alt shiftr keycode 23 = Meta_Tab
+ altgr control alt shiftr keycode 23 = Meta_Tab
+ shift altgr control alt shiftr keycode 23 = Meta_Tab
+ shift shiftl shiftr keycode 23 = +I
+ altgr shiftl shiftr keycode 23 = U+2192
+ shift altgr shiftl shiftr keycode 23 = idotless
+ control shiftl shiftr keycode 23 = Tab
+ shift control shiftl shiftr keycode 23 = Tab
+ altgr control shiftl shiftr keycode 23 = Tab
+ shift altgr control shiftl shiftr keycode 23 = Tab
+ alt shiftl shiftr keycode 23 = Meta_i
+ shift alt shiftl shiftr keycode 23 = Meta_I
+ altgr alt shiftl shiftr keycode 23 = Meta_i
+ shift altgr alt shiftl shiftr keycode 23 = Meta_I
+ control alt shiftl shiftr keycode 23 = Meta_Tab
+ shift control alt shiftl shiftr keycode 23 = Meta_Tab
+ altgr control alt shiftl shiftr keycode 23 = Meta_Tab
+ shift altgr control alt shiftl shiftr keycode 23 = Meta_Tab
+ ctrll keycode 23 = +I
+ altgr ctrll keycode 23 = U+2192
+ shift altgr ctrll keycode 23 = +I
+ control ctrll keycode 23 = Tab
+ shift control ctrll keycode 23 = Tab
+ altgr control ctrll keycode 23 = Tab
+ shift altgr control ctrll keycode 23 = Tab
+ alt ctrll keycode 23 = Meta_i
+ shift alt ctrll keycode 23 = Meta_I
+ altgr alt ctrll keycode 23 = Meta_i
+ shift altgr alt ctrll keycode 23 = Meta_I
+ control alt ctrll keycode 23 = Meta_Tab
+ shift control alt ctrll keycode 23 = Meta_Tab
+ altgr control alt ctrll keycode 23 = Meta_Tab
+ shift altgr control alt ctrll keycode 23 = Meta_Tab
+ shiftl ctrll keycode 23 = +I
+ altgr shiftl ctrll keycode 23 = U+2192
+ shift altgr shiftl ctrll keycode 23 = +I
+ control shiftl ctrll keycode 23 = Tab
+ shift control shiftl ctrll keycode 23 = Tab
+ altgr control shiftl ctrll keycode 23 = Tab
+ shift altgr control shiftl ctrll keycode 23 = Tab
+ alt shiftl ctrll keycode 23 = Meta_i
+ shift alt shiftl ctrll keycode 23 = Meta_I
+ altgr alt shiftl ctrll keycode 23 = Meta_i
+ shift altgr alt shiftl ctrll keycode 23 = Meta_I
+ control alt shiftl ctrll keycode 23 = Meta_Tab
+ shift control alt shiftl ctrll keycode 23 = Meta_Tab
+ altgr control alt shiftl ctrll keycode 23 = Meta_Tab
+ shift altgr control alt shiftl ctrll keycode 23 = Meta_Tab
+ shiftr ctrll keycode 23 = +I
+ altgr shiftr ctrll keycode 23 = U+2192
+ shift altgr shiftr ctrll keycode 23 = +I
+ control shiftr ctrll keycode 23 = Tab
+ shift control shiftr ctrll keycode 23 = Tab
+ altgr control shiftr ctrll keycode 23 = Tab
+ shift altgr control shiftr ctrll keycode 23 = Tab
+ alt shiftr ctrll keycode 23 = Meta_i
+ shift alt shiftr ctrll keycode 23 = Meta_I
+ altgr alt shiftr ctrll keycode 23 = Meta_i
+ shift altgr alt shiftr ctrll keycode 23 = Meta_I
+ control alt shiftr ctrll keycode 23 = Meta_Tab
+ shift control alt shiftr ctrll keycode 23 = Meta_Tab
+ altgr control alt shiftr ctrll keycode 23 = Meta_Tab
+ shift altgr control alt shiftr ctrll keycode 23 = Meta_Tab
+ shiftl shiftr ctrll keycode 23 = +I
+ altgr shiftl shiftr ctrll keycode 23 = U+2192
+ shift altgr shiftl shiftr ctrll keycode 23 = +I
+ control shiftl shiftr ctrll keycode 23 = Tab
+ shift control shiftl shiftr ctrll keycode 23 = Tab
+ altgr control shiftl shiftr ctrll keycode 23 = Tab
+ shift altgr control shiftl shiftr ctrll keycode 23 = Tab
+ alt shiftl shiftr ctrll keycode 23 = Meta_i
+ shift alt shiftl shiftr ctrll keycode 23 = Meta_I
+ altgr alt shiftl shiftr ctrll keycode 23 = Meta_i
+ shift altgr alt shiftl shiftr ctrll keycode 23 = Meta_I
+ control alt shiftl shiftr ctrll keycode 23 = Meta_Tab
+ shift control alt shiftl shiftr ctrll keycode 23 = Meta_Tab
+ altgr control alt shiftl shiftr ctrll keycode 23 = Meta_Tab
+ shift altgr control alt shiftl shiftr ctrll keycode 23 = Meta_Tab
+keycode 24 = +o
+ shift keycode 24 = +O
+ altgr keycode 24 = +oslash
+ shift altgr keycode 24 = +Ooblique
+ control keycode 24 = Control_o
+ shift control keycode 24 = Control_o
+ altgr control keycode 24 = Control_o
+ shift altgr control keycode 24 = Control_o
+ alt keycode 24 = Meta_o
+ shift alt keycode 24 = Meta_O
+ altgr alt keycode 24 = Meta_o
+ shift altgr alt keycode 24 = Meta_O
+ control alt keycode 24 = Meta_Control_o
+ shift control alt keycode 24 = Meta_Control_o
+ altgr control alt keycode 24 = Meta_Control_o
+ shift altgr control alt keycode 24 = Meta_Control_o
+ shift shiftl keycode 24 = +O
+ altgr shiftl keycode 24 = +oslash
+ shift altgr shiftl keycode 24 = +Ooblique
+ control shiftl keycode 24 = Control_o
+ shift control shiftl keycode 24 = Control_o
+ altgr control shiftl keycode 24 = Control_o
+ shift altgr control shiftl keycode 24 = Control_o
+ alt shiftl keycode 24 = Meta_o
+ shift alt shiftl keycode 24 = Meta_O
+ altgr alt shiftl keycode 24 = Meta_o
+ shift altgr alt shiftl keycode 24 = Meta_O
+ control alt shiftl keycode 24 = Meta_Control_o
+ shift control alt shiftl keycode 24 = Meta_Control_o
+ altgr control alt shiftl keycode 24 = Meta_Control_o
+ shift altgr control alt shiftl keycode 24 = Meta_Control_o
+ shift shiftr keycode 24 = +O
+ altgr shiftr keycode 24 = +oslash
+ shift altgr shiftr keycode 24 = +Ooblique
+ control shiftr keycode 24 = Control_o
+ shift control shiftr keycode 24 = Control_o
+ altgr control shiftr keycode 24 = Control_o
+ shift altgr control shiftr keycode 24 = Control_o
+ alt shiftr keycode 24 = Meta_o
+ shift alt shiftr keycode 24 = Meta_O
+ altgr alt shiftr keycode 24 = Meta_o
+ shift altgr alt shiftr keycode 24 = Meta_O
+ control alt shiftr keycode 24 = Meta_Control_o
+ shift control alt shiftr keycode 24 = Meta_Control_o
+ altgr control alt shiftr keycode 24 = Meta_Control_o
+ shift altgr control alt shiftr keycode 24 = Meta_Control_o
+ shift shiftl shiftr keycode 24 = +O
+ altgr shiftl shiftr keycode 24 = +oslash
+ shift altgr shiftl shiftr keycode 24 = +Ooblique
+ control shiftl shiftr keycode 24 = Control_o
+ shift control shiftl shiftr keycode 24 = Control_o
+ altgr control shiftl shiftr keycode 24 = Control_o
+ shift altgr control shiftl shiftr keycode 24 = Control_o
+ alt shiftl shiftr keycode 24 = Meta_o
+ shift alt shiftl shiftr keycode 24 = Meta_O
+ altgr alt shiftl shiftr keycode 24 = Meta_o
+ shift altgr alt shiftl shiftr keycode 24 = Meta_O
+ control alt shiftl shiftr keycode 24 = Meta_Control_o
+ shift control alt shiftl shiftr keycode 24 = Meta_Control_o
+ altgr control alt shiftl shiftr keycode 24 = Meta_Control_o
+ shift altgr control alt shiftl shiftr keycode 24 = Meta_Control_o
+ ctrll keycode 24 = +O
+ altgr ctrll keycode 24 = +Ooblique
+ shift altgr ctrll keycode 24 = +oslash
+ control ctrll keycode 24 = Control_o
+ shift control ctrll keycode 24 = Control_o
+ altgr control ctrll keycode 24 = Control_o
+ shift altgr control ctrll keycode 24 = Control_o
+ alt ctrll keycode 24 = Meta_o
+ shift alt ctrll keycode 24 = Meta_O
+ altgr alt ctrll keycode 24 = Meta_o
+ shift altgr alt ctrll keycode 24 = Meta_O
+ control alt ctrll keycode 24 = Meta_Control_o
+ shift control alt ctrll keycode 24 = Meta_Control_o
+ altgr control alt ctrll keycode 24 = Meta_Control_o
+ shift altgr control alt ctrll keycode 24 = Meta_Control_o
+ shiftl ctrll keycode 24 = +O
+ altgr shiftl ctrll keycode 24 = +Ooblique
+ shift altgr shiftl ctrll keycode 24 = +oslash
+ control shiftl ctrll keycode 24 = Control_o
+ shift control shiftl ctrll keycode 24 = Control_o
+ altgr control shiftl ctrll keycode 24 = Control_o
+ shift altgr control shiftl ctrll keycode 24 = Control_o
+ alt shiftl ctrll keycode 24 = Meta_o
+ shift alt shiftl ctrll keycode 24 = Meta_O
+ altgr alt shiftl ctrll keycode 24 = Meta_o
+ shift altgr alt shiftl ctrll keycode 24 = Meta_O
+ control alt shiftl ctrll keycode 24 = Meta_Control_o
+ shift control alt shiftl ctrll keycode 24 = Meta_Control_o
+ altgr control alt shiftl ctrll keycode 24 = Meta_Control_o
+ shift altgr control alt shiftl ctrll keycode 24 = Meta_Control_o
+ shiftr ctrll keycode 24 = +O
+ altgr shiftr ctrll keycode 24 = +Ooblique
+ shift altgr shiftr ctrll keycode 24 = +oslash
+ control shiftr ctrll keycode 24 = Control_o
+ shift control shiftr ctrll keycode 24 = Control_o
+ altgr control shiftr ctrll keycode 24 = Control_o
+ shift altgr control shiftr ctrll keycode 24 = Control_o
+ alt shiftr ctrll keycode 24 = Meta_o
+ shift alt shiftr ctrll keycode 24 = Meta_O
+ altgr alt shiftr ctrll keycode 24 = Meta_o
+ shift altgr alt shiftr ctrll keycode 24 = Meta_O
+ control alt shiftr ctrll keycode 24 = Meta_Control_o
+ shift control alt shiftr ctrll keycode 24 = Meta_Control_o
+ altgr control alt shiftr ctrll keycode 24 = Meta_Control_o
+ shift altgr control alt shiftr ctrll keycode 24 = Meta_Control_o
+ shiftl shiftr ctrll keycode 24 = +O
+ altgr shiftl shiftr ctrll keycode 24 = +Ooblique
+ shift altgr shiftl shiftr ctrll keycode 24 = +oslash
+ control shiftl shiftr ctrll keycode 24 = Control_o
+ shift control shiftl shiftr ctrll keycode 24 = Control_o
+ altgr control shiftl shiftr ctrll keycode 24 = Control_o
+ shift altgr control shiftl shiftr ctrll keycode 24 = Control_o
+ alt shiftl shiftr ctrll keycode 24 = Meta_o
+ shift alt shiftl shiftr ctrll keycode 24 = Meta_O
+ altgr alt shiftl shiftr ctrll keycode 24 = Meta_o
+ shift altgr alt shiftl shiftr ctrll keycode 24 = Meta_O
+ control alt shiftl shiftr ctrll keycode 24 = Meta_Control_o
+ shift control alt shiftl shiftr ctrll keycode 24 = Meta_Control_o
+ altgr control alt shiftl shiftr ctrll keycode 24 = Meta_Control_o
+ shift altgr control alt shiftl shiftr ctrll keycode 24 = Meta_Control_o
+keycode 25 = +p
+ shift keycode 25 = +P
+ altgr keycode 25 = +thorn
+ shift altgr keycode 25 = +THORN
+ control keycode 25 = Control_p
+ shift control keycode 25 = Control_p
+ altgr control keycode 25 = Control_p
+ shift altgr control keycode 25 = Control_p
+ alt keycode 25 = Meta_p
+ shift alt keycode 25 = Meta_P
+ altgr alt keycode 25 = Meta_p
+ shift altgr alt keycode 25 = Meta_P
+ control alt keycode 25 = Meta_Control_p
+ shift control alt keycode 25 = Meta_Control_p
+ altgr control alt keycode 25 = Meta_Control_p
+ shift altgr control alt keycode 25 = Meta_Control_p
+ shift shiftl keycode 25 = +P
+ altgr shiftl keycode 25 = +thorn
+ shift altgr shiftl keycode 25 = +THORN
+ control shiftl keycode 25 = Control_p
+ shift control shiftl keycode 25 = Control_p
+ altgr control shiftl keycode 25 = Control_p
+ shift altgr control shiftl keycode 25 = Control_p
+ alt shiftl keycode 25 = Meta_p
+ shift alt shiftl keycode 25 = Meta_P
+ altgr alt shiftl keycode 25 = Meta_p
+ shift altgr alt shiftl keycode 25 = Meta_P
+ control alt shiftl keycode 25 = Meta_Control_p
+ shift control alt shiftl keycode 25 = Meta_Control_p
+ altgr control alt shiftl keycode 25 = Meta_Control_p
+ shift altgr control alt shiftl keycode 25 = Meta_Control_p
+ shift shiftr keycode 25 = +P
+ altgr shiftr keycode 25 = +thorn
+ shift altgr shiftr keycode 25 = +THORN
+ control shiftr keycode 25 = Control_p
+ shift control shiftr keycode 25 = Control_p
+ altgr control shiftr keycode 25 = Control_p
+ shift altgr control shiftr keycode 25 = Control_p
+ alt shiftr keycode 25 = Meta_p
+ shift alt shiftr keycode 25 = Meta_P
+ altgr alt shiftr keycode 25 = Meta_p
+ shift altgr alt shiftr keycode 25 = Meta_P
+ control alt shiftr keycode 25 = Meta_Control_p
+ shift control alt shiftr keycode 25 = Meta_Control_p
+ altgr control alt shiftr keycode 25 = Meta_Control_p
+ shift altgr control alt shiftr keycode 25 = Meta_Control_p
+ shift shiftl shiftr keycode 25 = +P
+ altgr shiftl shiftr keycode 25 = +thorn
+ shift altgr shiftl shiftr keycode 25 = +THORN
+ control shiftl shiftr keycode 25 = Control_p
+ shift control shiftl shiftr keycode 25 = Control_p
+ altgr control shiftl shiftr keycode 25 = Control_p
+ shift altgr control shiftl shiftr keycode 25 = Control_p
+ alt shiftl shiftr keycode 25 = Meta_p
+ shift alt shiftl shiftr keycode 25 = Meta_P
+ altgr alt shiftl shiftr keycode 25 = Meta_p
+ shift altgr alt shiftl shiftr keycode 25 = Meta_P
+ control alt shiftl shiftr keycode 25 = Meta_Control_p
+ shift control alt shiftl shiftr keycode 25 = Meta_Control_p
+ altgr control alt shiftl shiftr keycode 25 = Meta_Control_p
+ shift altgr control alt shiftl shiftr keycode 25 = Meta_Control_p
+ ctrll keycode 25 = +P
+ altgr ctrll keycode 25 = +THORN
+ shift altgr ctrll keycode 25 = +thorn
+ control ctrll keycode 25 = Control_p
+ shift control ctrll keycode 25 = Control_p
+ altgr control ctrll keycode 25 = Control_p
+ shift altgr control ctrll keycode 25 = Control_p
+ alt ctrll keycode 25 = Meta_p
+ shift alt ctrll keycode 25 = Meta_P
+ altgr alt ctrll keycode 25 = Meta_p
+ shift altgr alt ctrll keycode 25 = Meta_P
+ control alt ctrll keycode 25 = Meta_Control_p
+ shift control alt ctrll keycode 25 = Meta_Control_p
+ altgr control alt ctrll keycode 25 = Meta_Control_p
+ shift altgr control alt ctrll keycode 25 = Meta_Control_p
+ shiftl ctrll keycode 25 = +P
+ altgr shiftl ctrll keycode 25 = +THORN
+ shift altgr shiftl ctrll keycode 25 = +thorn
+ control shiftl ctrll keycode 25 = Control_p
+ shift control shiftl ctrll keycode 25 = Control_p
+ altgr control shiftl ctrll keycode 25 = Control_p
+ shift altgr control shiftl ctrll keycode 25 = Control_p
+ alt shiftl ctrll keycode 25 = Meta_p
+ shift alt shiftl ctrll keycode 25 = Meta_P
+ altgr alt shiftl ctrll keycode 25 = Meta_p
+ shift altgr alt shiftl ctrll keycode 25 = Meta_P
+ control alt shiftl ctrll keycode 25 = Meta_Control_p
+ shift control alt shiftl ctrll keycode 25 = Meta_Control_p
+ altgr control alt shiftl ctrll keycode 25 = Meta_Control_p
+ shift altgr control alt shiftl ctrll keycode 25 = Meta_Control_p
+ shiftr ctrll keycode 25 = +P
+ altgr shiftr ctrll keycode 25 = +THORN
+ shift altgr shiftr ctrll keycode 25 = +thorn
+ control shiftr ctrll keycode 25 = Control_p
+ shift control shiftr ctrll keycode 25 = Control_p
+ altgr control shiftr ctrll keycode 25 = Control_p
+ shift altgr control shiftr ctrll keycode 25 = Control_p
+ alt shiftr ctrll keycode 25 = Meta_p
+ shift alt shiftr ctrll keycode 25 = Meta_P
+ altgr alt shiftr ctrll keycode 25 = Meta_p
+ shift altgr alt shiftr ctrll keycode 25 = Meta_P
+ control alt shiftr ctrll keycode 25 = Meta_Control_p
+ shift control alt shiftr ctrll keycode 25 = Meta_Control_p
+ altgr control alt shiftr ctrll keycode 25 = Meta_Control_p
+ shift altgr control alt shiftr ctrll keycode 25 = Meta_Control_p
+ shiftl shiftr ctrll keycode 25 = +P
+ altgr shiftl shiftr ctrll keycode 25 = +THORN
+ shift altgr shiftl shiftr ctrll keycode 25 = +thorn
+ control shiftl shiftr ctrll keycode 25 = Control_p
+ shift control shiftl shiftr ctrll keycode 25 = Control_p
+ altgr control shiftl shiftr ctrll keycode 25 = Control_p
+ shift altgr control shiftl shiftr ctrll keycode 25 = Control_p
+ alt shiftl shiftr ctrll keycode 25 = Meta_p
+ shift alt shiftl shiftr ctrll keycode 25 = Meta_P
+ altgr alt shiftl shiftr ctrll keycode 25 = Meta_p
+ shift altgr alt shiftl shiftr ctrll keycode 25 = Meta_P
+ control alt shiftl shiftr ctrll keycode 25 = Meta_Control_p
+ shift control alt shiftl shiftr ctrll keycode 25 = Meta_Control_p
+ altgr control alt shiftl shiftr ctrll keycode 25 = Meta_Control_p
+ shift altgr control alt shiftl shiftr ctrll keycode 25 = Meta_Control_p
+keycode 26 = dead_acute
+ shift keycode 26 = dead_grave
+ altgr keycode 26 = apostrophe
+ shift altgr keycode 26 = grave
+ shift control keycode 26 = dead_grave
+ altgr control keycode 26 = Control_g
+ shift altgr control keycode 26 = nul
+ shift alt keycode 26 = dead_grave
+ altgr alt keycode 26 = Meta_apostrophe
+ shift altgr alt keycode 26 = Meta_grave
+ shift control alt keycode 26 = dead_grave
+ altgr control alt keycode 26 = Meta_Control_g
+ shift altgr control alt keycode 26 = Meta_nul
+ shift shiftl keycode 26 = dead_grave
+ altgr shiftl keycode 26 = apostrophe
+ shift altgr shiftl keycode 26 = grave
+ shift control shiftl keycode 26 = dead_grave
+ altgr control shiftl keycode 26 = Control_g
+ shift altgr control shiftl keycode 26 = nul
+ shift alt shiftl keycode 26 = dead_grave
+ altgr alt shiftl keycode 26 = Meta_apostrophe
+ shift altgr alt shiftl keycode 26 = Meta_grave
+ shift control alt shiftl keycode 26 = dead_grave
+ altgr control alt shiftl keycode 26 = Meta_Control_g
+ shift altgr control alt shiftl keycode 26 = Meta_nul
+ shift shiftr keycode 26 = dead_grave
+ altgr shiftr keycode 26 = apostrophe
+ shift altgr shiftr keycode 26 = grave
+ shift control shiftr keycode 26 = dead_grave
+ altgr control shiftr keycode 26 = Control_g
+ shift altgr control shiftr keycode 26 = nul
+ shift alt shiftr keycode 26 = dead_grave
+ altgr alt shiftr keycode 26 = Meta_apostrophe
+ shift altgr alt shiftr keycode 26 = Meta_grave
+ shift control alt shiftr keycode 26 = dead_grave
+ altgr control alt shiftr keycode 26 = Meta_Control_g
+ shift altgr control alt shiftr keycode 26 = Meta_nul
+ shift shiftl shiftr keycode 26 = dead_grave
+ altgr shiftl shiftr keycode 26 = apostrophe
+ shift altgr shiftl shiftr keycode 26 = grave
+ shift control shiftl shiftr keycode 26 = dead_grave
+ altgr control shiftl shiftr keycode 26 = Control_g
+ shift altgr control shiftl shiftr keycode 26 = nul
+ shift alt shiftl shiftr keycode 26 = dead_grave
+ altgr alt shiftl shiftr keycode 26 = Meta_apostrophe
+ shift altgr alt shiftl shiftr keycode 26 = Meta_grave
+ shift control alt shiftl shiftr keycode 26 = dead_grave
+ altgr control alt shiftl shiftr keycode 26 = Meta_Control_g
+ shift altgr control alt shiftl shiftr keycode 26 = Meta_nul
+ shift ctrll keycode 26 = dead_grave
+ altgr ctrll keycode 26 = apostrophe
+ shift altgr ctrll keycode 26 = grave
+ shift control ctrll keycode 26 = dead_grave
+ altgr control ctrll keycode 26 = Control_g
+ shift altgr control ctrll keycode 26 = nul
+ shift alt ctrll keycode 26 = dead_grave
+ altgr alt ctrll keycode 26 = Meta_apostrophe
+ shift altgr alt ctrll keycode 26 = Meta_grave
+ shift control alt ctrll keycode 26 = dead_grave
+ altgr control alt ctrll keycode 26 = Meta_Control_g
+ shift altgr control alt ctrll keycode 26 = Meta_nul
+ shift shiftl ctrll keycode 26 = dead_grave
+ altgr shiftl ctrll keycode 26 = apostrophe
+ shift altgr shiftl ctrll keycode 26 = grave
+ shift control shiftl ctrll keycode 26 = dead_grave
+ altgr control shiftl ctrll keycode 26 = Control_g
+ shift altgr control shiftl ctrll keycode 26 = nul
+ shift alt shiftl ctrll keycode 26 = dead_grave
+ altgr alt shiftl ctrll keycode 26 = Meta_apostrophe
+ shift altgr alt shiftl ctrll keycode 26 = Meta_grave
+ shift control alt shiftl ctrll keycode 26 = dead_grave
+ altgr control alt shiftl ctrll keycode 26 = Meta_Control_g
+ shift altgr control alt shiftl ctrll keycode 26 = Meta_nul
+ shift shiftr ctrll keycode 26 = dead_grave
+ altgr shiftr ctrll keycode 26 = apostrophe
+ shift altgr shiftr ctrll keycode 26 = grave
+ shift control shiftr ctrll keycode 26 = dead_grave
+ altgr control shiftr ctrll keycode 26 = Control_g
+ shift altgr control shiftr ctrll keycode 26 = nul
+ shift alt shiftr ctrll keycode 26 = dead_grave
+ altgr alt shiftr ctrll keycode 26 = Meta_apostrophe
+ shift altgr alt shiftr ctrll keycode 26 = Meta_grave
+ shift control alt shiftr ctrll keycode 26 = dead_grave
+ altgr control alt shiftr ctrll keycode 26 = Meta_Control_g
+ shift altgr control alt shiftr ctrll keycode 26 = Meta_nul
+ shift shiftl shiftr ctrll keycode 26 = dead_grave
+ altgr shiftl shiftr ctrll keycode 26 = apostrophe
+ shift altgr shiftl shiftr ctrll keycode 26 = grave
+ shift control shiftl shiftr ctrll keycode 26 = dead_grave
+ altgr control shiftl shiftr ctrll keycode 26 = Control_g
+ shift altgr control shiftl shiftr ctrll keycode 26 = nul
+ shift alt shiftl shiftr ctrll keycode 26 = dead_grave
+ altgr alt shiftl shiftr ctrll keycode 26 = Meta_apostrophe
+ shift altgr alt shiftl shiftr ctrll keycode 26 = Meta_grave
+ shift control alt shiftl shiftr ctrll keycode 26 = dead_grave
+ altgr control alt shiftl shiftr ctrll keycode 26 = Meta_Control_g
+ shift altgr control alt shiftl shiftr ctrll keycode 26 = Meta_nul
+keycode 27 = bracketleft
+ shift keycode 27 = braceleft
+ altgr keycode 27 = +ordfeminine
+ shift altgr keycode 27 = underscore
+ control keycode 27 = Escape
+ shift control keycode 27 = Escape
+ altgr control keycode 27 = Escape
+ shift altgr control keycode 27 = Control_underscore
+ alt keycode 27 = Meta_bracketleft
+ shift alt keycode 27 = Meta_braceleft
+ altgr alt keycode 27 = Meta_bracketleft
+ shift altgr alt keycode 27 = Meta_underscore
+ control alt keycode 27 = Meta_Escape
+ shift control alt keycode 27 = Meta_Escape
+ altgr control alt keycode 27 = Meta_Escape
+ shift altgr control alt keycode 27 = Meta_Control_underscore
+ shift shiftl keycode 27 = braceleft
+ altgr shiftl keycode 27 = +ordfeminine
+ shift altgr shiftl keycode 27 = underscore
+ control shiftl keycode 27 = Escape
+ shift control shiftl keycode 27 = Escape
+ altgr control shiftl keycode 27 = Escape
+ shift altgr control shiftl keycode 27 = Control_underscore
+ alt shiftl keycode 27 = Meta_bracketleft
+ shift alt shiftl keycode 27 = Meta_braceleft
+ altgr alt shiftl keycode 27 = Meta_bracketleft
+ shift altgr alt shiftl keycode 27 = Meta_underscore
+ control alt shiftl keycode 27 = Meta_Escape
+ shift control alt shiftl keycode 27 = Meta_Escape
+ altgr control alt shiftl keycode 27 = Meta_Escape
+ shift altgr control alt shiftl keycode 27 = Meta_Control_underscore
+ shift shiftr keycode 27 = braceleft
+ altgr shiftr keycode 27 = +ordfeminine
+ shift altgr shiftr keycode 27 = underscore
+ control shiftr keycode 27 = Escape
+ shift control shiftr keycode 27 = Escape
+ altgr control shiftr keycode 27 = Escape
+ shift altgr control shiftr keycode 27 = Control_underscore
+ alt shiftr keycode 27 = Meta_bracketleft
+ shift alt shiftr keycode 27 = Meta_braceleft
+ altgr alt shiftr keycode 27 = Meta_bracketleft
+ shift altgr alt shiftr keycode 27 = Meta_underscore
+ control alt shiftr keycode 27 = Meta_Escape
+ shift control alt shiftr keycode 27 = Meta_Escape
+ altgr control alt shiftr keycode 27 = Meta_Escape
+ shift altgr control alt shiftr keycode 27 = Meta_Control_underscore
+ shift shiftl shiftr keycode 27 = braceleft
+ altgr shiftl shiftr keycode 27 = +ordfeminine
+ shift altgr shiftl shiftr keycode 27 = underscore
+ control shiftl shiftr keycode 27 = Escape
+ shift control shiftl shiftr keycode 27 = Escape
+ altgr control shiftl shiftr keycode 27 = Escape
+ shift altgr control shiftl shiftr keycode 27 = Control_underscore
+ alt shiftl shiftr keycode 27 = Meta_bracketleft
+ shift alt shiftl shiftr keycode 27 = Meta_braceleft
+ altgr alt shiftl shiftr keycode 27 = Meta_bracketleft
+ shift altgr alt shiftl shiftr keycode 27 = Meta_underscore
+ control alt shiftl shiftr keycode 27 = Meta_Escape
+ shift control alt shiftl shiftr keycode 27 = Meta_Escape
+ altgr control alt shiftl shiftr keycode 27 = Meta_Escape
+ shift altgr control alt shiftl shiftr keycode 27 = Meta_Control_underscore
+ shift ctrll keycode 27 = braceleft
+ altgr ctrll keycode 27 = +ordfeminine
+ shift altgr ctrll keycode 27 = underscore
+ control ctrll keycode 27 = Escape
+ shift control ctrll keycode 27 = Escape
+ altgr control ctrll keycode 27 = Escape
+ shift altgr control ctrll keycode 27 = Control_underscore
+ alt ctrll keycode 27 = Meta_bracketleft
+ shift alt ctrll keycode 27 = Meta_braceleft
+ altgr alt ctrll keycode 27 = Meta_bracketleft
+ shift altgr alt ctrll keycode 27 = Meta_underscore
+ control alt ctrll keycode 27 = Meta_Escape
+ shift control alt ctrll keycode 27 = Meta_Escape
+ altgr control alt ctrll keycode 27 = Meta_Escape
+ shift altgr control alt ctrll keycode 27 = Meta_Control_underscore
+ shift shiftl ctrll keycode 27 = braceleft
+ altgr shiftl ctrll keycode 27 = +ordfeminine
+ shift altgr shiftl ctrll keycode 27 = underscore
+ control shiftl ctrll keycode 27 = Escape
+ shift control shiftl ctrll keycode 27 = Escape
+ altgr control shiftl ctrll keycode 27 = Escape
+ shift altgr control shiftl ctrll keycode 27 = Control_underscore
+ alt shiftl ctrll keycode 27 = Meta_bracketleft
+ shift alt shiftl ctrll keycode 27 = Meta_braceleft
+ altgr alt shiftl ctrll keycode 27 = Meta_bracketleft
+ shift altgr alt shiftl ctrll keycode 27 = Meta_underscore
+ control alt shiftl ctrll keycode 27 = Meta_Escape
+ shift control alt shiftl ctrll keycode 27 = Meta_Escape
+ altgr control alt shiftl ctrll keycode 27 = Meta_Escape
+ shift altgr control alt shiftl ctrll keycode 27 = Meta_Control_underscore
+ shift shiftr ctrll keycode 27 = braceleft
+ altgr shiftr ctrll keycode 27 = +ordfeminine
+ shift altgr shiftr ctrll keycode 27 = underscore
+ control shiftr ctrll keycode 27 = Escape
+ shift control shiftr ctrll keycode 27 = Escape
+ altgr control shiftr ctrll keycode 27 = Escape
+ shift altgr control shiftr ctrll keycode 27 = Control_underscore
+ alt shiftr ctrll keycode 27 = Meta_bracketleft
+ shift alt shiftr ctrll keycode 27 = Meta_braceleft
+ altgr alt shiftr ctrll keycode 27 = Meta_bracketleft
+ shift altgr alt shiftr ctrll keycode 27 = Meta_underscore
+ control alt shiftr ctrll keycode 27 = Meta_Escape
+ shift control alt shiftr ctrll keycode 27 = Meta_Escape
+ altgr control alt shiftr ctrll keycode 27 = Meta_Escape
+ shift altgr control alt shiftr ctrll keycode 27 = Meta_Control_underscore
+ shift shiftl shiftr ctrll keycode 27 = braceleft
+ altgr shiftl shiftr ctrll keycode 27 = +ordfeminine
+ shift altgr shiftl shiftr ctrll keycode 27 = underscore
+ control shiftl shiftr ctrll keycode 27 = Escape
+ shift control shiftl shiftr ctrll keycode 27 = Escape
+ altgr control shiftl shiftr ctrll keycode 27 = Escape
+ shift altgr control shiftl shiftr ctrll keycode 27 = Control_underscore
+ alt shiftl shiftr ctrll keycode 27 = Meta_bracketleft
+ shift alt shiftl shiftr ctrll keycode 27 = Meta_braceleft
+ altgr alt shiftl shiftr ctrll keycode 27 = Meta_bracketleft
+ shift altgr alt shiftl shiftr ctrll keycode 27 = Meta_underscore
+ control alt shiftl shiftr ctrll keycode 27 = Meta_Escape
+ shift control alt shiftl shiftr ctrll keycode 27 = Meta_Escape
+ altgr control alt shiftl shiftr ctrll keycode 27 = Meta_Escape
+ shift altgr control alt shiftl shiftr ctrll keycode 27 = Meta_Control_underscore
+keycode 28 = Return
+ control keycode 28 = Control_m
+ shift control keycode 28 = Control_m
+ altgr control keycode 28 = Control_m
+ shift altgr control keycode 28 = Control_m
+ alt keycode 28 = Meta_Control_m
+ shift alt keycode 28 = Meta_Control_m
+ altgr alt keycode 28 = Meta_Control_m
+ shift altgr alt keycode 28 = Meta_Control_m
+ control alt keycode 28 = Meta_Control_m
+ shift control alt keycode 28 = Meta_Control_m
+ altgr control alt keycode 28 = Meta_Control_m
+ shift altgr control alt keycode 28 = Meta_Control_m
+ control shiftl keycode 28 = Control_m
+ shift control shiftl keycode 28 = Control_m
+ altgr control shiftl keycode 28 = Control_m
+ shift altgr control shiftl keycode 28 = Control_m
+ alt shiftl keycode 28 = Meta_Control_m
+ shift alt shiftl keycode 28 = Meta_Control_m
+ altgr alt shiftl keycode 28 = Meta_Control_m
+ shift altgr alt shiftl keycode 28 = Meta_Control_m
+ control alt shiftl keycode 28 = Meta_Control_m
+ shift control alt shiftl keycode 28 = Meta_Control_m
+ altgr control alt shiftl keycode 28 = Meta_Control_m
+ shift altgr control alt shiftl keycode 28 = Meta_Control_m
+ control shiftr keycode 28 = Control_m
+ shift control shiftr keycode 28 = Control_m
+ altgr control shiftr keycode 28 = Control_m
+ shift altgr control shiftr keycode 28 = Control_m
+ alt shiftr keycode 28 = Meta_Control_m
+ shift alt shiftr keycode 28 = Meta_Control_m
+ altgr alt shiftr keycode 28 = Meta_Control_m
+ shift altgr alt shiftr keycode 28 = Meta_Control_m
+ control alt shiftr keycode 28 = Meta_Control_m
+ shift control alt shiftr keycode 28 = Meta_Control_m
+ altgr control alt shiftr keycode 28 = Meta_Control_m
+ shift altgr control alt shiftr keycode 28 = Meta_Control_m
+ control shiftl shiftr keycode 28 = Control_m
+ shift control shiftl shiftr keycode 28 = Control_m
+ altgr control shiftl shiftr keycode 28 = Control_m
+ shift altgr control shiftl shiftr keycode 28 = Control_m
+ alt shiftl shiftr keycode 28 = Meta_Control_m
+ shift alt shiftl shiftr keycode 28 = Meta_Control_m
+ altgr alt shiftl shiftr keycode 28 = Meta_Control_m
+ shift altgr alt shiftl shiftr keycode 28 = Meta_Control_m
+ control alt shiftl shiftr keycode 28 = Meta_Control_m
+ shift control alt shiftl shiftr keycode 28 = Meta_Control_m
+ altgr control alt shiftl shiftr keycode 28 = Meta_Control_m
+ shift altgr control alt shiftl shiftr keycode 28 = Meta_Control_m
+ control ctrll keycode 28 = Control_m
+ shift control ctrll keycode 28 = Control_m
+ altgr control ctrll keycode 28 = Control_m
+ shift altgr control ctrll keycode 28 = Control_m
+ alt ctrll keycode 28 = Meta_Control_m
+ shift alt ctrll keycode 28 = Meta_Control_m
+ altgr alt ctrll keycode 28 = Meta_Control_m
+ shift altgr alt ctrll keycode 28 = Meta_Control_m
+ control alt ctrll keycode 28 = Meta_Control_m
+ shift control alt ctrll keycode 28 = Meta_Control_m
+ altgr control alt ctrll keycode 28 = Meta_Control_m
+ shift altgr control alt ctrll keycode 28 = Meta_Control_m
+ control shiftl ctrll keycode 28 = Control_m
+ shift control shiftl ctrll keycode 28 = Control_m
+ altgr control shiftl ctrll keycode 28 = Control_m
+ shift altgr control shiftl ctrll keycode 28 = Control_m
+ alt shiftl ctrll keycode 28 = Meta_Control_m
+ shift alt shiftl ctrll keycode 28 = Meta_Control_m
+ altgr alt shiftl ctrll keycode 28 = Meta_Control_m
+ shift altgr alt shiftl ctrll keycode 28 = Meta_Control_m
+ control alt shiftl ctrll keycode 28 = Meta_Control_m
+ shift control alt shiftl ctrll keycode 28 = Meta_Control_m
+ altgr control alt shiftl ctrll keycode 28 = Meta_Control_m
+ shift altgr control alt shiftl ctrll keycode 28 = Meta_Control_m
+ control shiftr ctrll keycode 28 = Control_m
+ shift control shiftr ctrll keycode 28 = Control_m
+ altgr control shiftr ctrll keycode 28 = Control_m
+ shift altgr control shiftr ctrll keycode 28 = Control_m
+ alt shiftr ctrll keycode 28 = Meta_Control_m
+ shift alt shiftr ctrll keycode 28 = Meta_Control_m
+ altgr alt shiftr ctrll keycode 28 = Meta_Control_m
+ shift altgr alt shiftr ctrll keycode 28 = Meta_Control_m
+ control alt shiftr ctrll keycode 28 = Meta_Control_m
+ shift control alt shiftr ctrll keycode 28 = Meta_Control_m
+ altgr control alt shiftr ctrll keycode 28 = Meta_Control_m
+ shift altgr control alt shiftr ctrll keycode 28 = Meta_Control_m
+ control shiftl shiftr ctrll keycode 28 = Control_m
+ shift control shiftl shiftr ctrll keycode 28 = Control_m
+ altgr control shiftl shiftr ctrll keycode 28 = Control_m
+ shift altgr control shiftl shiftr ctrll keycode 28 = Control_m
+ alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ shift alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ altgr alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ shift altgr alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ control alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ shift control alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ altgr control alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+ shift altgr control alt shiftl shiftr ctrll keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 30 = +a
+ shift keycode 30 = +A
+ altgr keycode 30 = +ae
+ shift altgr keycode 30 = +AE
+ control keycode 30 = Control_a
+ shift control keycode 30 = Control_a
+ altgr control keycode 30 = Control_a
+ shift altgr control keycode 30 = Control_a
+ alt keycode 30 = Meta_a
+ shift alt keycode 30 = Meta_A
+ altgr alt keycode 30 = Meta_a
+ shift altgr alt keycode 30 = Meta_A
+ control alt keycode 30 = Meta_Control_a
+ shift control alt keycode 30 = Meta_Control_a
+ altgr control alt keycode 30 = Meta_Control_a
+ shift altgr control alt keycode 30 = Meta_Control_a
+ shift shiftl keycode 30 = +A
+ altgr shiftl keycode 30 = +ae
+ shift altgr shiftl keycode 30 = +AE
+ control shiftl keycode 30 = Control_a
+ shift control shiftl keycode 30 = Control_a
+ altgr control shiftl keycode 30 = Control_a
+ shift altgr control shiftl keycode 30 = Control_a
+ alt shiftl keycode 30 = Meta_a
+ shift alt shiftl keycode 30 = Meta_A
+ altgr alt shiftl keycode 30 = Meta_a
+ shift altgr alt shiftl keycode 30 = Meta_A
+ control alt shiftl keycode 30 = Meta_Control_a
+ shift control alt shiftl keycode 30 = Meta_Control_a
+ altgr control alt shiftl keycode 30 = Meta_Control_a
+ shift altgr control alt shiftl keycode 30 = Meta_Control_a
+ shift shiftr keycode 30 = +A
+ altgr shiftr keycode 30 = +ae
+ shift altgr shiftr keycode 30 = +AE
+ control shiftr keycode 30 = Control_a
+ shift control shiftr keycode 30 = Control_a
+ altgr control shiftr keycode 30 = Control_a
+ shift altgr control shiftr keycode 30 = Control_a
+ alt shiftr keycode 30 = Meta_a
+ shift alt shiftr keycode 30 = Meta_A
+ altgr alt shiftr keycode 30 = Meta_a
+ shift altgr alt shiftr keycode 30 = Meta_A
+ control alt shiftr keycode 30 = Meta_Control_a
+ shift control alt shiftr keycode 30 = Meta_Control_a
+ altgr control alt shiftr keycode 30 = Meta_Control_a
+ shift altgr control alt shiftr keycode 30 = Meta_Control_a
+ shift shiftl shiftr keycode 30 = +A
+ altgr shiftl shiftr keycode 30 = +ae
+ shift altgr shiftl shiftr keycode 30 = +AE
+ control shiftl shiftr keycode 30 = Control_a
+ shift control shiftl shiftr keycode 30 = Control_a
+ altgr control shiftl shiftr keycode 30 = Control_a
+ shift altgr control shiftl shiftr keycode 30 = Control_a
+ alt shiftl shiftr keycode 30 = Meta_a
+ shift alt shiftl shiftr keycode 30 = Meta_A
+ altgr alt shiftl shiftr keycode 30 = Meta_a
+ shift altgr alt shiftl shiftr keycode 30 = Meta_A
+ control alt shiftl shiftr keycode 30 = Meta_Control_a
+ shift control alt shiftl shiftr keycode 30 = Meta_Control_a
+ altgr control alt shiftl shiftr keycode 30 = Meta_Control_a
+ shift altgr control alt shiftl shiftr keycode 30 = Meta_Control_a
+ ctrll keycode 30 = +A
+ altgr ctrll keycode 30 = +AE
+ shift altgr ctrll keycode 30 = +ae
+ control ctrll keycode 30 = Control_a
+ shift control ctrll keycode 30 = Control_a
+ altgr control ctrll keycode 30 = Control_a
+ shift altgr control ctrll keycode 30 = Control_a
+ alt ctrll keycode 30 = Meta_a
+ shift alt ctrll keycode 30 = Meta_A
+ altgr alt ctrll keycode 30 = Meta_a
+ shift altgr alt ctrll keycode 30 = Meta_A
+ control alt ctrll keycode 30 = Meta_Control_a
+ shift control alt ctrll keycode 30 = Meta_Control_a
+ altgr control alt ctrll keycode 30 = Meta_Control_a
+ shift altgr control alt ctrll keycode 30 = Meta_Control_a
+ shiftl ctrll keycode 30 = +A
+ altgr shiftl ctrll keycode 30 = +AE
+ shift altgr shiftl ctrll keycode 30 = +ae
+ control shiftl ctrll keycode 30 = Control_a
+ shift control shiftl ctrll keycode 30 = Control_a
+ altgr control shiftl ctrll keycode 30 = Control_a
+ shift altgr control shiftl ctrll keycode 30 = Control_a
+ alt shiftl ctrll keycode 30 = Meta_a
+ shift alt shiftl ctrll keycode 30 = Meta_A
+ altgr alt shiftl ctrll keycode 30 = Meta_a
+ shift altgr alt shiftl ctrll keycode 30 = Meta_A
+ control alt shiftl ctrll keycode 30 = Meta_Control_a
+ shift control alt shiftl ctrll keycode 30 = Meta_Control_a
+ altgr control alt shiftl ctrll keycode 30 = Meta_Control_a
+ shift altgr control alt shiftl ctrll keycode 30 = Meta_Control_a
+ shiftr ctrll keycode 30 = +A
+ altgr shiftr ctrll keycode 30 = +AE
+ shift altgr shiftr ctrll keycode 30 = +ae
+ control shiftr ctrll keycode 30 = Control_a
+ shift control shiftr ctrll keycode 30 = Control_a
+ altgr control shiftr ctrll keycode 30 = Control_a
+ shift altgr control shiftr ctrll keycode 30 = Control_a
+ alt shiftr ctrll keycode 30 = Meta_a
+ shift alt shiftr ctrll keycode 30 = Meta_A
+ altgr alt shiftr ctrll keycode 30 = Meta_a
+ shift altgr alt shiftr ctrll keycode 30 = Meta_A
+ control alt shiftr ctrll keycode 30 = Meta_Control_a
+ shift control alt shiftr ctrll keycode 30 = Meta_Control_a
+ altgr control alt shiftr ctrll keycode 30 = Meta_Control_a
+ shift altgr control alt shiftr ctrll keycode 30 = Meta_Control_a
+ shiftl shiftr ctrll keycode 30 = +A
+ altgr shiftl shiftr ctrll keycode 30 = +AE
+ shift altgr shiftl shiftr ctrll keycode 30 = +ae
+ control shiftl shiftr ctrll keycode 30 = Control_a
+ shift control shiftl shiftr ctrll keycode 30 = Control_a
+ altgr control shiftl shiftr ctrll keycode 30 = Control_a
+ shift altgr control shiftl shiftr ctrll keycode 30 = Control_a
+ alt shiftl shiftr ctrll keycode 30 = Meta_a
+ shift alt shiftl shiftr ctrll keycode 30 = Meta_A
+ altgr alt shiftl shiftr ctrll keycode 30 = Meta_a
+ shift altgr alt shiftl shiftr ctrll keycode 30 = Meta_A
+ control alt shiftl shiftr ctrll keycode 30 = Meta_Control_a
+ shift control alt shiftl shiftr ctrll keycode 30 = Meta_Control_a
+ altgr control alt shiftl shiftr ctrll keycode 30 = Meta_Control_a
+ shift altgr control alt shiftl shiftr ctrll keycode 30 = Meta_Control_a
+keycode 31 = +s
+ shift keycode 31 = +S
+ altgr keycode 31 = +ssharp
+ shift altgr keycode 31 = section
+ control keycode 31 = Control_s
+ shift control keycode 31 = Control_s
+ altgr control keycode 31 = Control_s
+ shift altgr control keycode 31 = Control_s
+ alt keycode 31 = Meta_s
+ shift alt keycode 31 = Meta_S
+ altgr alt keycode 31 = Meta_s
+ shift altgr alt keycode 31 = Meta_S
+ control alt keycode 31 = Meta_Control_s
+ shift control alt keycode 31 = Meta_Control_s
+ altgr control alt keycode 31 = Meta_Control_s
+ shift altgr control alt keycode 31 = Meta_Control_s
+ shift shiftl keycode 31 = +S
+ altgr shiftl keycode 31 = +ssharp
+ shift altgr shiftl keycode 31 = section
+ control shiftl keycode 31 = Control_s
+ shift control shiftl keycode 31 = Control_s
+ altgr control shiftl keycode 31 = Control_s
+ shift altgr control shiftl keycode 31 = Control_s
+ alt shiftl keycode 31 = Meta_s
+ shift alt shiftl keycode 31 = Meta_S
+ altgr alt shiftl keycode 31 = Meta_s
+ shift altgr alt shiftl keycode 31 = Meta_S
+ control alt shiftl keycode 31 = Meta_Control_s
+ shift control alt shiftl keycode 31 = Meta_Control_s
+ altgr control alt shiftl keycode 31 = Meta_Control_s
+ shift altgr control alt shiftl keycode 31 = Meta_Control_s
+ shift shiftr keycode 31 = +S
+ altgr shiftr keycode 31 = +ssharp
+ shift altgr shiftr keycode 31 = section
+ control shiftr keycode 31 = Control_s
+ shift control shiftr keycode 31 = Control_s
+ altgr control shiftr keycode 31 = Control_s
+ shift altgr control shiftr keycode 31 = Control_s
+ alt shiftr keycode 31 = Meta_s
+ shift alt shiftr keycode 31 = Meta_S
+ altgr alt shiftr keycode 31 = Meta_s
+ shift altgr alt shiftr keycode 31 = Meta_S
+ control alt shiftr keycode 31 = Meta_Control_s
+ shift control alt shiftr keycode 31 = Meta_Control_s
+ altgr control alt shiftr keycode 31 = Meta_Control_s
+ shift altgr control alt shiftr keycode 31 = Meta_Control_s
+ shift shiftl shiftr keycode 31 = +S
+ altgr shiftl shiftr keycode 31 = +ssharp
+ shift altgr shiftl shiftr keycode 31 = section
+ control shiftl shiftr keycode 31 = Control_s
+ shift control shiftl shiftr keycode 31 = Control_s
+ altgr control shiftl shiftr keycode 31 = Control_s
+ shift altgr control shiftl shiftr keycode 31 = Control_s
+ alt shiftl shiftr keycode 31 = Meta_s
+ shift alt shiftl shiftr keycode 31 = Meta_S
+ altgr alt shiftl shiftr keycode 31 = Meta_s
+ shift altgr alt shiftl shiftr keycode 31 = Meta_S
+ control alt shiftl shiftr keycode 31 = Meta_Control_s
+ shift control alt shiftl shiftr keycode 31 = Meta_Control_s
+ altgr control alt shiftl shiftr keycode 31 = Meta_Control_s
+ shift altgr control alt shiftl shiftr keycode 31 = Meta_Control_s
+ ctrll keycode 31 = +S
+ altgr ctrll keycode 31 = +S
+ shift altgr ctrll keycode 31 = section
+ control ctrll keycode 31 = Control_s
+ shift control ctrll keycode 31 = Control_s
+ altgr control ctrll keycode 31 = Control_s
+ shift altgr control ctrll keycode 31 = Control_s
+ alt ctrll keycode 31 = Meta_s
+ shift alt ctrll keycode 31 = Meta_S
+ altgr alt ctrll keycode 31 = Meta_s
+ shift altgr alt ctrll keycode 31 = Meta_S
+ control alt ctrll keycode 31 = Meta_Control_s
+ shift control alt ctrll keycode 31 = Meta_Control_s
+ altgr control alt ctrll keycode 31 = Meta_Control_s
+ shift altgr control alt ctrll keycode 31 = Meta_Control_s
+ shiftl ctrll keycode 31 = +S
+ altgr shiftl ctrll keycode 31 = +S
+ shift altgr shiftl ctrll keycode 31 = section
+ control shiftl ctrll keycode 31 = Control_s
+ shift control shiftl ctrll keycode 31 = Control_s
+ altgr control shiftl ctrll keycode 31 = Control_s
+ shift altgr control shiftl ctrll keycode 31 = Control_s
+ alt shiftl ctrll keycode 31 = Meta_s
+ shift alt shiftl ctrll keycode 31 = Meta_S
+ altgr alt shiftl ctrll keycode 31 = Meta_s
+ shift altgr alt shiftl ctrll keycode 31 = Meta_S
+ control alt shiftl ctrll keycode 31 = Meta_Control_s
+ shift control alt shiftl ctrll keycode 31 = Meta_Control_s
+ altgr control alt shiftl ctrll keycode 31 = Meta_Control_s
+ shift altgr control alt shiftl ctrll keycode 31 = Meta_Control_s
+ shiftr ctrll keycode 31 = +S
+ altgr shiftr ctrll keycode 31 = +S
+ shift altgr shiftr ctrll keycode 31 = section
+ control shiftr ctrll keycode 31 = Control_s
+ shift control shiftr ctrll keycode 31 = Control_s
+ altgr control shiftr ctrll keycode 31 = Control_s
+ shift altgr control shiftr ctrll keycode 31 = Control_s
+ alt shiftr ctrll keycode 31 = Meta_s
+ shift alt shiftr ctrll keycode 31 = Meta_S
+ altgr alt shiftr ctrll keycode 31 = Meta_s
+ shift altgr alt shiftr ctrll keycode 31 = Meta_S
+ control alt shiftr ctrll keycode 31 = Meta_Control_s
+ shift control alt shiftr ctrll keycode 31 = Meta_Control_s
+ altgr control alt shiftr ctrll keycode 31 = Meta_Control_s
+ shift altgr control alt shiftr ctrll keycode 31 = Meta_Control_s
+ shiftl shiftr ctrll keycode 31 = +S
+ altgr shiftl shiftr ctrll keycode 31 = +S
+ shift altgr shiftl shiftr ctrll keycode 31 = section
+ control shiftl shiftr ctrll keycode 31 = Control_s
+ shift control shiftl shiftr ctrll keycode 31 = Control_s
+ altgr control shiftl shiftr ctrll keycode 31 = Control_s
+ shift altgr control shiftl shiftr ctrll keycode 31 = Control_s
+ alt shiftl shiftr ctrll keycode 31 = Meta_s
+ shift alt shiftl shiftr ctrll keycode 31 = Meta_S
+ altgr alt shiftl shiftr ctrll keycode 31 = Meta_s
+ shift altgr alt shiftl shiftr ctrll keycode 31 = Meta_S
+ control alt shiftl shiftr ctrll keycode 31 = Meta_Control_s
+ shift control alt shiftl shiftr ctrll keycode 31 = Meta_Control_s
+ altgr control alt shiftl shiftr ctrll keycode 31 = Meta_Control_s
+ shift altgr control alt shiftl shiftr ctrll keycode 31 = Meta_Control_s
+keycode 32 = +d
+ shift keycode 32 = +D
+ altgr keycode 32 = +eth
+ shift altgr keycode 32 = +ETH
+ control keycode 32 = Control_d
+ shift control keycode 32 = Control_d
+ altgr control keycode 32 = Control_d
+ shift altgr control keycode 32 = Control_d
+ alt keycode 32 = Meta_d
+ shift alt keycode 32 = Meta_D
+ altgr alt keycode 32 = Meta_d
+ shift altgr alt keycode 32 = Meta_D
+ control alt keycode 32 = Meta_Control_d
+ shift control alt keycode 32 = Meta_Control_d
+ altgr control alt keycode 32 = Meta_Control_d
+ shift altgr control alt keycode 32 = Meta_Control_d
+ shift shiftl keycode 32 = +D
+ altgr shiftl keycode 32 = +eth
+ shift altgr shiftl keycode 32 = +ETH
+ control shiftl keycode 32 = Control_d
+ shift control shiftl keycode 32 = Control_d
+ altgr control shiftl keycode 32 = Control_d
+ shift altgr control shiftl keycode 32 = Control_d
+ alt shiftl keycode 32 = Meta_d
+ shift alt shiftl keycode 32 = Meta_D
+ altgr alt shiftl keycode 32 = Meta_d
+ shift altgr alt shiftl keycode 32 = Meta_D
+ control alt shiftl keycode 32 = Meta_Control_d
+ shift control alt shiftl keycode 32 = Meta_Control_d
+ altgr control alt shiftl keycode 32 = Meta_Control_d
+ shift altgr control alt shiftl keycode 32 = Meta_Control_d
+ shift shiftr keycode 32 = +D
+ altgr shiftr keycode 32 = +eth
+ shift altgr shiftr keycode 32 = +ETH
+ control shiftr keycode 32 = Control_d
+ shift control shiftr keycode 32 = Control_d
+ altgr control shiftr keycode 32 = Control_d
+ shift altgr control shiftr keycode 32 = Control_d
+ alt shiftr keycode 32 = Meta_d
+ shift alt shiftr keycode 32 = Meta_D
+ altgr alt shiftr keycode 32 = Meta_d
+ shift altgr alt shiftr keycode 32 = Meta_D
+ control alt shiftr keycode 32 = Meta_Control_d
+ shift control alt shiftr keycode 32 = Meta_Control_d
+ altgr control alt shiftr keycode 32 = Meta_Control_d
+ shift altgr control alt shiftr keycode 32 = Meta_Control_d
+ shift shiftl shiftr keycode 32 = +D
+ altgr shiftl shiftr keycode 32 = +eth
+ shift altgr shiftl shiftr keycode 32 = +ETH
+ control shiftl shiftr keycode 32 = Control_d
+ shift control shiftl shiftr keycode 32 = Control_d
+ altgr control shiftl shiftr keycode 32 = Control_d
+ shift altgr control shiftl shiftr keycode 32 = Control_d
+ alt shiftl shiftr keycode 32 = Meta_d
+ shift alt shiftl shiftr keycode 32 = Meta_D
+ altgr alt shiftl shiftr keycode 32 = Meta_d
+ shift altgr alt shiftl shiftr keycode 32 = Meta_D
+ control alt shiftl shiftr keycode 32 = Meta_Control_d
+ shift control alt shiftl shiftr keycode 32 = Meta_Control_d
+ altgr control alt shiftl shiftr keycode 32 = Meta_Control_d
+ shift altgr control alt shiftl shiftr keycode 32 = Meta_Control_d
+ ctrll keycode 32 = +D
+ altgr ctrll keycode 32 = +ETH
+ shift altgr ctrll keycode 32 = +eth
+ control ctrll keycode 32 = Control_d
+ shift control ctrll keycode 32 = Control_d
+ altgr control ctrll keycode 32 = Control_d
+ shift altgr control ctrll keycode 32 = Control_d
+ alt ctrll keycode 32 = Meta_d
+ shift alt ctrll keycode 32 = Meta_D
+ altgr alt ctrll keycode 32 = Meta_d
+ shift altgr alt ctrll keycode 32 = Meta_D
+ control alt ctrll keycode 32 = Meta_Control_d
+ shift control alt ctrll keycode 32 = Meta_Control_d
+ altgr control alt ctrll keycode 32 = Meta_Control_d
+ shift altgr control alt ctrll keycode 32 = Meta_Control_d
+ shiftl ctrll keycode 32 = +D
+ altgr shiftl ctrll keycode 32 = +ETH
+ shift altgr shiftl ctrll keycode 32 = +eth
+ control shiftl ctrll keycode 32 = Control_d
+ shift control shiftl ctrll keycode 32 = Control_d
+ altgr control shiftl ctrll keycode 32 = Control_d
+ shift altgr control shiftl ctrll keycode 32 = Control_d
+ alt shiftl ctrll keycode 32 = Meta_d
+ shift alt shiftl ctrll keycode 32 = Meta_D
+ altgr alt shiftl ctrll keycode 32 = Meta_d
+ shift altgr alt shiftl ctrll keycode 32 = Meta_D
+ control alt shiftl ctrll keycode 32 = Meta_Control_d
+ shift control alt shiftl ctrll keycode 32 = Meta_Control_d
+ altgr control alt shiftl ctrll keycode 32 = Meta_Control_d
+ shift altgr control alt shiftl ctrll keycode 32 = Meta_Control_d
+ shiftr ctrll keycode 32 = +D
+ altgr shiftr ctrll keycode 32 = +ETH
+ shift altgr shiftr ctrll keycode 32 = +eth
+ control shiftr ctrll keycode 32 = Control_d
+ shift control shiftr ctrll keycode 32 = Control_d
+ altgr control shiftr ctrll keycode 32 = Control_d
+ shift altgr control shiftr ctrll keycode 32 = Control_d
+ alt shiftr ctrll keycode 32 = Meta_d
+ shift alt shiftr ctrll keycode 32 = Meta_D
+ altgr alt shiftr ctrll keycode 32 = Meta_d
+ shift altgr alt shiftr ctrll keycode 32 = Meta_D
+ control alt shiftr ctrll keycode 32 = Meta_Control_d
+ shift control alt shiftr ctrll keycode 32 = Meta_Control_d
+ altgr control alt shiftr ctrll keycode 32 = Meta_Control_d
+ shift altgr control alt shiftr ctrll keycode 32 = Meta_Control_d
+ shiftl shiftr ctrll keycode 32 = +D
+ altgr shiftl shiftr ctrll keycode 32 = +ETH
+ shift altgr shiftl shiftr ctrll keycode 32 = +eth
+ control shiftl shiftr ctrll keycode 32 = Control_d
+ shift control shiftl shiftr ctrll keycode 32 = Control_d
+ altgr control shiftl shiftr ctrll keycode 32 = Control_d
+ shift altgr control shiftl shiftr ctrll keycode 32 = Control_d
+ alt shiftl shiftr ctrll keycode 32 = Meta_d
+ shift alt shiftl shiftr ctrll keycode 32 = Meta_D
+ altgr alt shiftl shiftr ctrll keycode 32 = Meta_d
+ shift altgr alt shiftl shiftr ctrll keycode 32 = Meta_D
+ control alt shiftl shiftr ctrll keycode 32 = Meta_Control_d
+ shift control alt shiftl shiftr ctrll keycode 32 = Meta_Control_d
+ altgr control alt shiftl shiftr ctrll keycode 32 = Meta_Control_d
+ shift altgr control alt shiftl shiftr ctrll keycode 32 = Meta_Control_d
+keycode 33 = +f
+ shift keycode 33 = +F
+ altgr keycode 33 = dstroke
+ shift altgr keycode 33 = +ordfeminine
+ control keycode 33 = Control_f
+ shift control keycode 33 = Control_f
+ altgr control keycode 33 = Control_f
+ shift altgr control keycode 33 = Control_f
+ alt keycode 33 = Meta_f
+ shift alt keycode 33 = Meta_F
+ altgr alt keycode 33 = Meta_f
+ shift altgr alt keycode 33 = Meta_F
+ control alt keycode 33 = Meta_Control_f
+ shift control alt keycode 33 = Meta_Control_f
+ altgr control alt keycode 33 = Meta_Control_f
+ shift altgr control alt keycode 33 = Meta_Control_f
+ shift shiftl keycode 33 = +F
+ altgr shiftl keycode 33 = dstroke
+ shift altgr shiftl keycode 33 = +ordfeminine
+ control shiftl keycode 33 = Control_f
+ shift control shiftl keycode 33 = Control_f
+ altgr control shiftl keycode 33 = Control_f
+ shift altgr control shiftl keycode 33 = Control_f
+ alt shiftl keycode 33 = Meta_f
+ shift alt shiftl keycode 33 = Meta_F
+ altgr alt shiftl keycode 33 = Meta_f
+ shift altgr alt shiftl keycode 33 = Meta_F
+ control alt shiftl keycode 33 = Meta_Control_f
+ shift control alt shiftl keycode 33 = Meta_Control_f
+ altgr control alt shiftl keycode 33 = Meta_Control_f
+ shift altgr control alt shiftl keycode 33 = Meta_Control_f
+ shift shiftr keycode 33 = +F
+ altgr shiftr keycode 33 = dstroke
+ shift altgr shiftr keycode 33 = +ordfeminine
+ control shiftr keycode 33 = Control_f
+ shift control shiftr keycode 33 = Control_f
+ altgr control shiftr keycode 33 = Control_f
+ shift altgr control shiftr keycode 33 = Control_f
+ alt shiftr keycode 33 = Meta_f
+ shift alt shiftr keycode 33 = Meta_F
+ altgr alt shiftr keycode 33 = Meta_f
+ shift altgr alt shiftr keycode 33 = Meta_F
+ control alt shiftr keycode 33 = Meta_Control_f
+ shift control alt shiftr keycode 33 = Meta_Control_f
+ altgr control alt shiftr keycode 33 = Meta_Control_f
+ shift altgr control alt shiftr keycode 33 = Meta_Control_f
+ shift shiftl shiftr keycode 33 = +F
+ altgr shiftl shiftr keycode 33 = dstroke
+ shift altgr shiftl shiftr keycode 33 = +ordfeminine
+ control shiftl shiftr keycode 33 = Control_f
+ shift control shiftl shiftr keycode 33 = Control_f
+ altgr control shiftl shiftr keycode 33 = Control_f
+ shift altgr control shiftl shiftr keycode 33 = Control_f
+ alt shiftl shiftr keycode 33 = Meta_f
+ shift alt shiftl shiftr keycode 33 = Meta_F
+ altgr alt shiftl shiftr keycode 33 = Meta_f
+ shift altgr alt shiftl shiftr keycode 33 = Meta_F
+ control alt shiftl shiftr keycode 33 = Meta_Control_f
+ shift control alt shiftl shiftr keycode 33 = Meta_Control_f
+ altgr control alt shiftl shiftr keycode 33 = Meta_Control_f
+ shift altgr control alt shiftl shiftr keycode 33 = Meta_Control_f
+ ctrll keycode 33 = +F
+ altgr ctrll keycode 33 = Dstroke
+ shift altgr ctrll keycode 33 = +ordfeminine
+ control ctrll keycode 33 = Control_f
+ shift control ctrll keycode 33 = Control_f
+ altgr control ctrll keycode 33 = Control_f
+ shift altgr control ctrll keycode 33 = Control_f
+ alt ctrll keycode 33 = Meta_f
+ shift alt ctrll keycode 33 = Meta_F
+ altgr alt ctrll keycode 33 = Meta_f
+ shift altgr alt ctrll keycode 33 = Meta_F
+ control alt ctrll keycode 33 = Meta_Control_f
+ shift control alt ctrll keycode 33 = Meta_Control_f
+ altgr control alt ctrll keycode 33 = Meta_Control_f
+ shift altgr control alt ctrll keycode 33 = Meta_Control_f
+ shiftl ctrll keycode 33 = +F
+ altgr shiftl ctrll keycode 33 = Dstroke
+ shift altgr shiftl ctrll keycode 33 = +ordfeminine
+ control shiftl ctrll keycode 33 = Control_f
+ shift control shiftl ctrll keycode 33 = Control_f
+ altgr control shiftl ctrll keycode 33 = Control_f
+ shift altgr control shiftl ctrll keycode 33 = Control_f
+ alt shiftl ctrll keycode 33 = Meta_f
+ shift alt shiftl ctrll keycode 33 = Meta_F
+ altgr alt shiftl ctrll keycode 33 = Meta_f
+ shift altgr alt shiftl ctrll keycode 33 = Meta_F
+ control alt shiftl ctrll keycode 33 = Meta_Control_f
+ shift control alt shiftl ctrll keycode 33 = Meta_Control_f
+ altgr control alt shiftl ctrll keycode 33 = Meta_Control_f
+ shift altgr control alt shiftl ctrll keycode 33 = Meta_Control_f
+ shiftr ctrll keycode 33 = +F
+ altgr shiftr ctrll keycode 33 = Dstroke
+ shift altgr shiftr ctrll keycode 33 = +ordfeminine
+ control shiftr ctrll keycode 33 = Control_f
+ shift control shiftr ctrll keycode 33 = Control_f
+ altgr control shiftr ctrll keycode 33 = Control_f
+ shift altgr control shiftr ctrll keycode 33 = Control_f
+ alt shiftr ctrll keycode 33 = Meta_f
+ shift alt shiftr ctrll keycode 33 = Meta_F
+ altgr alt shiftr ctrll keycode 33 = Meta_f
+ shift altgr alt shiftr ctrll keycode 33 = Meta_F
+ control alt shiftr ctrll keycode 33 = Meta_Control_f
+ shift control alt shiftr ctrll keycode 33 = Meta_Control_f
+ altgr control alt shiftr ctrll keycode 33 = Meta_Control_f
+ shift altgr control alt shiftr ctrll keycode 33 = Meta_Control_f
+ shiftl shiftr ctrll keycode 33 = +F
+ altgr shiftl shiftr ctrll keycode 33 = Dstroke
+ shift altgr shiftl shiftr ctrll keycode 33 = +ordfeminine
+ control shiftl shiftr ctrll keycode 33 = Control_f
+ shift control shiftl shiftr ctrll keycode 33 = Control_f
+ altgr control shiftl shiftr ctrll keycode 33 = Control_f
+ shift altgr control shiftl shiftr ctrll keycode 33 = Control_f
+ alt shiftl shiftr ctrll keycode 33 = Meta_f
+ shift alt shiftl shiftr ctrll keycode 33 = Meta_F
+ altgr alt shiftl shiftr ctrll keycode 33 = Meta_f
+ shift altgr alt shiftl shiftr ctrll keycode 33 = Meta_F
+ control alt shiftl shiftr ctrll keycode 33 = Meta_Control_f
+ shift control alt shiftl shiftr ctrll keycode 33 = Meta_Control_f
+ altgr control alt shiftl shiftr ctrll keycode 33 = Meta_Control_f
+ shift altgr control alt shiftl shiftr ctrll keycode 33 = Meta_Control_f
+keycode 34 = +g
+ shift keycode 34 = +G
+ altgr keycode 34 = eng
+ shift altgr keycode 34 = ENG
+ control keycode 34 = Control_g
+ shift control keycode 34 = Control_g
+ altgr control keycode 34 = Control_g
+ shift altgr control keycode 34 = Control_g
+ alt keycode 34 = Meta_g
+ shift alt keycode 34 = Meta_G
+ altgr alt keycode 34 = Meta_g
+ shift altgr alt keycode 34 = Meta_G
+ control alt keycode 34 = Meta_Control_g
+ shift control alt keycode 34 = Meta_Control_g
+ altgr control alt keycode 34 = Meta_Control_g
+ shift altgr control alt keycode 34 = Meta_Control_g
+ shift shiftl keycode 34 = +G
+ altgr shiftl keycode 34 = eng
+ shift altgr shiftl keycode 34 = ENG
+ control shiftl keycode 34 = Control_g
+ shift control shiftl keycode 34 = Control_g
+ altgr control shiftl keycode 34 = Control_g
+ shift altgr control shiftl keycode 34 = Control_g
+ alt shiftl keycode 34 = Meta_g
+ shift alt shiftl keycode 34 = Meta_G
+ altgr alt shiftl keycode 34 = Meta_g
+ shift altgr alt shiftl keycode 34 = Meta_G
+ control alt shiftl keycode 34 = Meta_Control_g
+ shift control alt shiftl keycode 34 = Meta_Control_g
+ altgr control alt shiftl keycode 34 = Meta_Control_g
+ shift altgr control alt shiftl keycode 34 = Meta_Control_g
+ shift shiftr keycode 34 = +G
+ altgr shiftr keycode 34 = eng
+ shift altgr shiftr keycode 34 = ENG
+ control shiftr keycode 34 = Control_g
+ shift control shiftr keycode 34 = Control_g
+ altgr control shiftr keycode 34 = Control_g
+ shift altgr control shiftr keycode 34 = Control_g
+ alt shiftr keycode 34 = Meta_g
+ shift alt shiftr keycode 34 = Meta_G
+ altgr alt shiftr keycode 34 = Meta_g
+ shift altgr alt shiftr keycode 34 = Meta_G
+ control alt shiftr keycode 34 = Meta_Control_g
+ shift control alt shiftr keycode 34 = Meta_Control_g
+ altgr control alt shiftr keycode 34 = Meta_Control_g
+ shift altgr control alt shiftr keycode 34 = Meta_Control_g
+ shift shiftl shiftr keycode 34 = +G
+ altgr shiftl shiftr keycode 34 = eng
+ shift altgr shiftl shiftr keycode 34 = ENG
+ control shiftl shiftr keycode 34 = Control_g
+ shift control shiftl shiftr keycode 34 = Control_g
+ altgr control shiftl shiftr keycode 34 = Control_g
+ shift altgr control shiftl shiftr keycode 34 = Control_g
+ alt shiftl shiftr keycode 34 = Meta_g
+ shift alt shiftl shiftr keycode 34 = Meta_G
+ altgr alt shiftl shiftr keycode 34 = Meta_g
+ shift altgr alt shiftl shiftr keycode 34 = Meta_G
+ control alt shiftl shiftr keycode 34 = Meta_Control_g
+ shift control alt shiftl shiftr keycode 34 = Meta_Control_g
+ altgr control alt shiftl shiftr keycode 34 = Meta_Control_g
+ shift altgr control alt shiftl shiftr keycode 34 = Meta_Control_g
+ ctrll keycode 34 = +G
+ altgr ctrll keycode 34 = ENG
+ shift altgr ctrll keycode 34 = eng
+ control ctrll keycode 34 = Control_g
+ shift control ctrll keycode 34 = Control_g
+ altgr control ctrll keycode 34 = Control_g
+ shift altgr control ctrll keycode 34 = Control_g
+ alt ctrll keycode 34 = Meta_g
+ shift alt ctrll keycode 34 = Meta_G
+ altgr alt ctrll keycode 34 = Meta_g
+ shift altgr alt ctrll keycode 34 = Meta_G
+ control alt ctrll keycode 34 = Meta_Control_g
+ shift control alt ctrll keycode 34 = Meta_Control_g
+ altgr control alt ctrll keycode 34 = Meta_Control_g
+ shift altgr control alt ctrll keycode 34 = Meta_Control_g
+ shiftl ctrll keycode 34 = +G
+ altgr shiftl ctrll keycode 34 = ENG
+ shift altgr shiftl ctrll keycode 34 = eng
+ control shiftl ctrll keycode 34 = Control_g
+ shift control shiftl ctrll keycode 34 = Control_g
+ altgr control shiftl ctrll keycode 34 = Control_g
+ shift altgr control shiftl ctrll keycode 34 = Control_g
+ alt shiftl ctrll keycode 34 = Meta_g
+ shift alt shiftl ctrll keycode 34 = Meta_G
+ altgr alt shiftl ctrll keycode 34 = Meta_g
+ shift altgr alt shiftl ctrll keycode 34 = Meta_G
+ control alt shiftl ctrll keycode 34 = Meta_Control_g
+ shift control alt shiftl ctrll keycode 34 = Meta_Control_g
+ altgr control alt shiftl ctrll keycode 34 = Meta_Control_g
+ shift altgr control alt shiftl ctrll keycode 34 = Meta_Control_g
+ shiftr ctrll keycode 34 = +G
+ altgr shiftr ctrll keycode 34 = ENG
+ shift altgr shiftr ctrll keycode 34 = eng
+ control shiftr ctrll keycode 34 = Control_g
+ shift control shiftr ctrll keycode 34 = Control_g
+ altgr control shiftr ctrll keycode 34 = Control_g
+ shift altgr control shiftr ctrll keycode 34 = Control_g
+ alt shiftr ctrll keycode 34 = Meta_g
+ shift alt shiftr ctrll keycode 34 = Meta_G
+ altgr alt shiftr ctrll keycode 34 = Meta_g
+ shift altgr alt shiftr ctrll keycode 34 = Meta_G
+ control alt shiftr ctrll keycode 34 = Meta_Control_g
+ shift control alt shiftr ctrll keycode 34 = Meta_Control_g
+ altgr control alt shiftr ctrll keycode 34 = Meta_Control_g
+ shift altgr control alt shiftr ctrll keycode 34 = Meta_Control_g
+ shiftl shiftr ctrll keycode 34 = +G
+ altgr shiftl shiftr ctrll keycode 34 = ENG
+ shift altgr shiftl shiftr ctrll keycode 34 = eng
+ control shiftl shiftr ctrll keycode 34 = Control_g
+ shift control shiftl shiftr ctrll keycode 34 = Control_g
+ altgr control shiftl shiftr ctrll keycode 34 = Control_g
+ shift altgr control shiftl shiftr ctrll keycode 34 = Control_g
+ alt shiftl shiftr ctrll keycode 34 = Meta_g
+ shift alt shiftl shiftr ctrll keycode 34 = Meta_G
+ altgr alt shiftl shiftr ctrll keycode 34 = Meta_g
+ shift altgr alt shiftl shiftr ctrll keycode 34 = Meta_G
+ control alt shiftl shiftr ctrll keycode 34 = Meta_Control_g
+ shift control alt shiftl shiftr ctrll keycode 34 = Meta_Control_g
+ altgr control alt shiftl shiftr ctrll keycode 34 = Meta_Control_g
+ shift altgr control alt shiftl shiftr ctrll keycode 34 = Meta_Control_g
+keycode 35 = +h
+ shift keycode 35 = +H
+ altgr keycode 35 = hstroke
+ shift altgr keycode 35 = Hstroke
+ control keycode 35 = BackSpace
+ shift control keycode 35 = BackSpace
+ altgr control keycode 35 = BackSpace
+ shift altgr control keycode 35 = BackSpace
+ alt keycode 35 = Meta_h
+ shift alt keycode 35 = Meta_H
+ altgr alt keycode 35 = Meta_h
+ shift altgr alt keycode 35 = Meta_H
+ control alt keycode 35 = Meta_BackSpace
+ shift control alt keycode 35 = Meta_BackSpace
+ altgr control alt keycode 35 = Meta_BackSpace
+ shift altgr control alt keycode 35 = Meta_BackSpace
+ shift shiftl keycode 35 = +H
+ altgr shiftl keycode 35 = hstroke
+ shift altgr shiftl keycode 35 = Hstroke
+ control shiftl keycode 35 = BackSpace
+ shift control shiftl keycode 35 = BackSpace
+ altgr control shiftl keycode 35 = BackSpace
+ shift altgr control shiftl keycode 35 = BackSpace
+ alt shiftl keycode 35 = Meta_h
+ shift alt shiftl keycode 35 = Meta_H
+ altgr alt shiftl keycode 35 = Meta_h
+ shift altgr alt shiftl keycode 35 = Meta_H
+ control alt shiftl keycode 35 = Meta_BackSpace
+ shift control alt shiftl keycode 35 = Meta_BackSpace
+ altgr control alt shiftl keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftl keycode 35 = Meta_BackSpace
+ shift shiftr keycode 35 = +H
+ altgr shiftr keycode 35 = hstroke
+ shift altgr shiftr keycode 35 = Hstroke
+ control shiftr keycode 35 = BackSpace
+ shift control shiftr keycode 35 = BackSpace
+ altgr control shiftr keycode 35 = BackSpace
+ shift altgr control shiftr keycode 35 = BackSpace
+ alt shiftr keycode 35 = Meta_h
+ shift alt shiftr keycode 35 = Meta_H
+ altgr alt shiftr keycode 35 = Meta_h
+ shift altgr alt shiftr keycode 35 = Meta_H
+ control alt shiftr keycode 35 = Meta_BackSpace
+ shift control alt shiftr keycode 35 = Meta_BackSpace
+ altgr control alt shiftr keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftr keycode 35 = Meta_BackSpace
+ shift shiftl shiftr keycode 35 = +H
+ altgr shiftl shiftr keycode 35 = hstroke
+ shift altgr shiftl shiftr keycode 35 = Hstroke
+ control shiftl shiftr keycode 35 = BackSpace
+ shift control shiftl shiftr keycode 35 = BackSpace
+ altgr control shiftl shiftr keycode 35 = BackSpace
+ shift altgr control shiftl shiftr keycode 35 = BackSpace
+ alt shiftl shiftr keycode 35 = Meta_h
+ shift alt shiftl shiftr keycode 35 = Meta_H
+ altgr alt shiftl shiftr keycode 35 = Meta_h
+ shift altgr alt shiftl shiftr keycode 35 = Meta_H
+ control alt shiftl shiftr keycode 35 = Meta_BackSpace
+ shift control alt shiftl shiftr keycode 35 = Meta_BackSpace
+ altgr control alt shiftl shiftr keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftl shiftr keycode 35 = Meta_BackSpace
+ ctrll keycode 35 = +H
+ altgr ctrll keycode 35 = Hstroke
+ shift altgr ctrll keycode 35 = hstroke
+ control ctrll keycode 35 = BackSpace
+ shift control ctrll keycode 35 = BackSpace
+ altgr control ctrll keycode 35 = BackSpace
+ shift altgr control ctrll keycode 35 = BackSpace
+ alt ctrll keycode 35 = Meta_h
+ shift alt ctrll keycode 35 = Meta_H
+ altgr alt ctrll keycode 35 = Meta_h
+ shift altgr alt ctrll keycode 35 = Meta_H
+ control alt ctrll keycode 35 = Meta_BackSpace
+ shift control alt ctrll keycode 35 = Meta_BackSpace
+ altgr control alt ctrll keycode 35 = Meta_BackSpace
+ shift altgr control alt ctrll keycode 35 = Meta_BackSpace
+ shiftl ctrll keycode 35 = +H
+ altgr shiftl ctrll keycode 35 = Hstroke
+ shift altgr shiftl ctrll keycode 35 = hstroke
+ control shiftl ctrll keycode 35 = BackSpace
+ shift control shiftl ctrll keycode 35 = BackSpace
+ altgr control shiftl ctrll keycode 35 = BackSpace
+ shift altgr control shiftl ctrll keycode 35 = BackSpace
+ alt shiftl ctrll keycode 35 = Meta_h
+ shift alt shiftl ctrll keycode 35 = Meta_H
+ altgr alt shiftl ctrll keycode 35 = Meta_h
+ shift altgr alt shiftl ctrll keycode 35 = Meta_H
+ control alt shiftl ctrll keycode 35 = Meta_BackSpace
+ shift control alt shiftl ctrll keycode 35 = Meta_BackSpace
+ altgr control alt shiftl ctrll keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftl ctrll keycode 35 = Meta_BackSpace
+ shiftr ctrll keycode 35 = +H
+ altgr shiftr ctrll keycode 35 = Hstroke
+ shift altgr shiftr ctrll keycode 35 = hstroke
+ control shiftr ctrll keycode 35 = BackSpace
+ shift control shiftr ctrll keycode 35 = BackSpace
+ altgr control shiftr ctrll keycode 35 = BackSpace
+ shift altgr control shiftr ctrll keycode 35 = BackSpace
+ alt shiftr ctrll keycode 35 = Meta_h
+ shift alt shiftr ctrll keycode 35 = Meta_H
+ altgr alt shiftr ctrll keycode 35 = Meta_h
+ shift altgr alt shiftr ctrll keycode 35 = Meta_H
+ control alt shiftr ctrll keycode 35 = Meta_BackSpace
+ shift control alt shiftr ctrll keycode 35 = Meta_BackSpace
+ altgr control alt shiftr ctrll keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftr ctrll keycode 35 = Meta_BackSpace
+ shiftl shiftr ctrll keycode 35 = +H
+ altgr shiftl shiftr ctrll keycode 35 = Hstroke
+ shift altgr shiftl shiftr ctrll keycode 35 = hstroke
+ control shiftl shiftr ctrll keycode 35 = BackSpace
+ shift control shiftl shiftr ctrll keycode 35 = BackSpace
+ altgr control shiftl shiftr ctrll keycode 35 = BackSpace
+ shift altgr control shiftl shiftr ctrll keycode 35 = BackSpace
+ alt shiftl shiftr ctrll keycode 35 = Meta_h
+ shift alt shiftl shiftr ctrll keycode 35 = Meta_H
+ altgr alt shiftl shiftr ctrll keycode 35 = Meta_h
+ shift altgr alt shiftl shiftr ctrll keycode 35 = Meta_H
+ control alt shiftl shiftr ctrll keycode 35 = Meta_BackSpace
+ shift control alt shiftl shiftr ctrll keycode 35 = Meta_BackSpace
+ altgr control alt shiftl shiftr ctrll keycode 35 = Meta_BackSpace
+ shift altgr control alt shiftl shiftr ctrll keycode 35 = Meta_BackSpace
+keycode 36 = +j
+ shift keycode 36 = +J
+ altgr keycode 36 = U+0309
+ shift altgr keycode 36 = U+031b
+ control keycode 36 = Linefeed
+ shift control keycode 36 = Linefeed
+ altgr control keycode 36 = Linefeed
+ shift altgr control keycode 36 = Linefeed
+ alt keycode 36 = Meta_j
+ shift alt keycode 36 = Meta_J
+ altgr alt keycode 36 = Meta_j
+ shift altgr alt keycode 36 = Meta_J
+ control alt keycode 36 = Meta_Linefeed
+ shift control alt keycode 36 = Meta_Linefeed
+ altgr control alt keycode 36 = Meta_Linefeed
+ shift altgr control alt keycode 36 = Meta_Linefeed
+ shift shiftl keycode 36 = +J
+ altgr shiftl keycode 36 = U+0309
+ shift altgr shiftl keycode 36 = U+031b
+ control shiftl keycode 36 = Linefeed
+ shift control shiftl keycode 36 = Linefeed
+ altgr control shiftl keycode 36 = Linefeed
+ shift altgr control shiftl keycode 36 = Linefeed
+ alt shiftl keycode 36 = Meta_j
+ shift alt shiftl keycode 36 = Meta_J
+ altgr alt shiftl keycode 36 = Meta_j
+ shift altgr alt shiftl keycode 36 = Meta_J
+ control alt shiftl keycode 36 = Meta_Linefeed
+ shift control alt shiftl keycode 36 = Meta_Linefeed
+ altgr control alt shiftl keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftl keycode 36 = Meta_Linefeed
+ shift shiftr keycode 36 = +J
+ altgr shiftr keycode 36 = U+0309
+ shift altgr shiftr keycode 36 = U+031b
+ control shiftr keycode 36 = Linefeed
+ shift control shiftr keycode 36 = Linefeed
+ altgr control shiftr keycode 36 = Linefeed
+ shift altgr control shiftr keycode 36 = Linefeed
+ alt shiftr keycode 36 = Meta_j
+ shift alt shiftr keycode 36 = Meta_J
+ altgr alt shiftr keycode 36 = Meta_j
+ shift altgr alt shiftr keycode 36 = Meta_J
+ control alt shiftr keycode 36 = Meta_Linefeed
+ shift control alt shiftr keycode 36 = Meta_Linefeed
+ altgr control alt shiftr keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftr keycode 36 = Meta_Linefeed
+ shift shiftl shiftr keycode 36 = +J
+ altgr shiftl shiftr keycode 36 = U+0309
+ shift altgr shiftl shiftr keycode 36 = U+031b
+ control shiftl shiftr keycode 36 = Linefeed
+ shift control shiftl shiftr keycode 36 = Linefeed
+ altgr control shiftl shiftr keycode 36 = Linefeed
+ shift altgr control shiftl shiftr keycode 36 = Linefeed
+ alt shiftl shiftr keycode 36 = Meta_j
+ shift alt shiftl shiftr keycode 36 = Meta_J
+ altgr alt shiftl shiftr keycode 36 = Meta_j
+ shift altgr alt shiftl shiftr keycode 36 = Meta_J
+ control alt shiftl shiftr keycode 36 = Meta_Linefeed
+ shift control alt shiftl shiftr keycode 36 = Meta_Linefeed
+ altgr control alt shiftl shiftr keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftl shiftr keycode 36 = Meta_Linefeed
+ ctrll keycode 36 = +J
+ altgr ctrll keycode 36 = U+0309
+ shift altgr ctrll keycode 36 = U+031b
+ control ctrll keycode 36 = Linefeed
+ shift control ctrll keycode 36 = Linefeed
+ altgr control ctrll keycode 36 = Linefeed
+ shift altgr control ctrll keycode 36 = Linefeed
+ alt ctrll keycode 36 = Meta_j
+ shift alt ctrll keycode 36 = Meta_J
+ altgr alt ctrll keycode 36 = Meta_j
+ shift altgr alt ctrll keycode 36 = Meta_J
+ control alt ctrll keycode 36 = Meta_Linefeed
+ shift control alt ctrll keycode 36 = Meta_Linefeed
+ altgr control alt ctrll keycode 36 = Meta_Linefeed
+ shift altgr control alt ctrll keycode 36 = Meta_Linefeed
+ shiftl ctrll keycode 36 = +J
+ altgr shiftl ctrll keycode 36 = U+0309
+ shift altgr shiftl ctrll keycode 36 = U+031b
+ control shiftl ctrll keycode 36 = Linefeed
+ shift control shiftl ctrll keycode 36 = Linefeed
+ altgr control shiftl ctrll keycode 36 = Linefeed
+ shift altgr control shiftl ctrll keycode 36 = Linefeed
+ alt shiftl ctrll keycode 36 = Meta_j
+ shift alt shiftl ctrll keycode 36 = Meta_J
+ altgr alt shiftl ctrll keycode 36 = Meta_j
+ shift altgr alt shiftl ctrll keycode 36 = Meta_J
+ control alt shiftl ctrll keycode 36 = Meta_Linefeed
+ shift control alt shiftl ctrll keycode 36 = Meta_Linefeed
+ altgr control alt shiftl ctrll keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftl ctrll keycode 36 = Meta_Linefeed
+ shiftr ctrll keycode 36 = +J
+ altgr shiftr ctrll keycode 36 = U+0309
+ shift altgr shiftr ctrll keycode 36 = U+031b
+ control shiftr ctrll keycode 36 = Linefeed
+ shift control shiftr ctrll keycode 36 = Linefeed
+ altgr control shiftr ctrll keycode 36 = Linefeed
+ shift altgr control shiftr ctrll keycode 36 = Linefeed
+ alt shiftr ctrll keycode 36 = Meta_j
+ shift alt shiftr ctrll keycode 36 = Meta_J
+ altgr alt shiftr ctrll keycode 36 = Meta_j
+ shift altgr alt shiftr ctrll keycode 36 = Meta_J
+ control alt shiftr ctrll keycode 36 = Meta_Linefeed
+ shift control alt shiftr ctrll keycode 36 = Meta_Linefeed
+ altgr control alt shiftr ctrll keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftr ctrll keycode 36 = Meta_Linefeed
+ shiftl shiftr ctrll keycode 36 = +J
+ altgr shiftl shiftr ctrll keycode 36 = U+0309
+ shift altgr shiftl shiftr ctrll keycode 36 = U+031b
+ control shiftl shiftr ctrll keycode 36 = Linefeed
+ shift control shiftl shiftr ctrll keycode 36 = Linefeed
+ altgr control shiftl shiftr ctrll keycode 36 = Linefeed
+ shift altgr control shiftl shiftr ctrll keycode 36 = Linefeed
+ alt shiftl shiftr ctrll keycode 36 = Meta_j
+ shift alt shiftl shiftr ctrll keycode 36 = Meta_J
+ altgr alt shiftl shiftr ctrll keycode 36 = Meta_j
+ shift altgr alt shiftl shiftr ctrll keycode 36 = Meta_J
+ control alt shiftl shiftr ctrll keycode 36 = Meta_Linefeed
+ shift control alt shiftl shiftr ctrll keycode 36 = Meta_Linefeed
+ altgr control alt shiftl shiftr ctrll keycode 36 = Meta_Linefeed
+ shift altgr control alt shiftl shiftr ctrll keycode 36 = Meta_Linefeed
+keycode 37 = +k
+ shift keycode 37 = +K
+ altgr keycode 37 = kra
+ shift altgr keycode 37 = ampersand
+ control keycode 37 = Control_k
+ shift control keycode 37 = Control_k
+ altgr control keycode 37 = Control_k
+ shift altgr control keycode 37 = Control_k
+ alt keycode 37 = Meta_k
+ shift alt keycode 37 = Meta_K
+ altgr alt keycode 37 = Meta_k
+ shift altgr alt keycode 37 = Meta_ampersand
+ control alt keycode 37 = Meta_Control_k
+ shift control alt keycode 37 = Meta_Control_k
+ altgr control alt keycode 37 = Meta_Control_k
+ shift altgr control alt keycode 37 = Meta_Control_k
+ shift shiftl keycode 37 = +K
+ altgr shiftl keycode 37 = kra
+ shift altgr shiftl keycode 37 = ampersand
+ control shiftl keycode 37 = Control_k
+ shift control shiftl keycode 37 = Control_k
+ altgr control shiftl keycode 37 = Control_k
+ shift altgr control shiftl keycode 37 = Control_k
+ alt shiftl keycode 37 = Meta_k
+ shift alt shiftl keycode 37 = Meta_K
+ altgr alt shiftl keycode 37 = Meta_k
+ shift altgr alt shiftl keycode 37 = Meta_ampersand
+ control alt shiftl keycode 37 = Meta_Control_k
+ shift control alt shiftl keycode 37 = Meta_Control_k
+ altgr control alt shiftl keycode 37 = Meta_Control_k
+ shift altgr control alt shiftl keycode 37 = Meta_Control_k
+ shift shiftr keycode 37 = +K
+ altgr shiftr keycode 37 = kra
+ shift altgr shiftr keycode 37 = ampersand
+ control shiftr keycode 37 = Control_k
+ shift control shiftr keycode 37 = Control_k
+ altgr control shiftr keycode 37 = Control_k
+ shift altgr control shiftr keycode 37 = Control_k
+ alt shiftr keycode 37 = Meta_k
+ shift alt shiftr keycode 37 = Meta_K
+ altgr alt shiftr keycode 37 = Meta_k
+ shift altgr alt shiftr keycode 37 = Meta_ampersand
+ control alt shiftr keycode 37 = Meta_Control_k
+ shift control alt shiftr keycode 37 = Meta_Control_k
+ altgr control alt shiftr keycode 37 = Meta_Control_k
+ shift altgr control alt shiftr keycode 37 = Meta_Control_k
+ shift shiftl shiftr keycode 37 = +K
+ altgr shiftl shiftr keycode 37 = kra
+ shift altgr shiftl shiftr keycode 37 = ampersand
+ control shiftl shiftr keycode 37 = Control_k
+ shift control shiftl shiftr keycode 37 = Control_k
+ altgr control shiftl shiftr keycode 37 = Control_k
+ shift altgr control shiftl shiftr keycode 37 = Control_k
+ alt shiftl shiftr keycode 37 = Meta_k
+ shift alt shiftl shiftr keycode 37 = Meta_K
+ altgr alt shiftl shiftr keycode 37 = Meta_k
+ shift altgr alt shiftl shiftr keycode 37 = Meta_ampersand
+ control alt shiftl shiftr keycode 37 = Meta_Control_k
+ shift control alt shiftl shiftr keycode 37 = Meta_Control_k
+ altgr control alt shiftl shiftr keycode 37 = Meta_Control_k
+ shift altgr control alt shiftl shiftr keycode 37 = Meta_Control_k
+ ctrll keycode 37 = +K
+ altgr ctrll keycode 37 = kra
+ shift altgr ctrll keycode 37 = ampersand
+ control ctrll keycode 37 = Control_k
+ shift control ctrll keycode 37 = Control_k
+ altgr control ctrll keycode 37 = Control_k
+ shift altgr control ctrll keycode 37 = Control_k
+ alt ctrll keycode 37 = Meta_k
+ shift alt ctrll keycode 37 = Meta_K
+ altgr alt ctrll keycode 37 = Meta_k
+ shift altgr alt ctrll keycode 37 = Meta_ampersand
+ control alt ctrll keycode 37 = Meta_Control_k
+ shift control alt ctrll keycode 37 = Meta_Control_k
+ altgr control alt ctrll keycode 37 = Meta_Control_k
+ shift altgr control alt ctrll keycode 37 = Meta_Control_k
+ shiftl ctrll keycode 37 = +K
+ altgr shiftl ctrll keycode 37 = kra
+ shift altgr shiftl ctrll keycode 37 = ampersand
+ control shiftl ctrll keycode 37 = Control_k
+ shift control shiftl ctrll keycode 37 = Control_k
+ altgr control shiftl ctrll keycode 37 = Control_k
+ shift altgr control shiftl ctrll keycode 37 = Control_k
+ alt shiftl ctrll keycode 37 = Meta_k
+ shift alt shiftl ctrll keycode 37 = Meta_K
+ altgr alt shiftl ctrll keycode 37 = Meta_k
+ shift altgr alt shiftl ctrll keycode 37 = Meta_ampersand
+ control alt shiftl ctrll keycode 37 = Meta_Control_k
+ shift control alt shiftl ctrll keycode 37 = Meta_Control_k
+ altgr control alt shiftl ctrll keycode 37 = Meta_Control_k
+ shift altgr control alt shiftl ctrll keycode 37 = Meta_Control_k
+ shiftr ctrll keycode 37 = +K
+ altgr shiftr ctrll keycode 37 = kra
+ shift altgr shiftr ctrll keycode 37 = ampersand
+ control shiftr ctrll keycode 37 = Control_k
+ shift control shiftr ctrll keycode 37 = Control_k
+ altgr control shiftr ctrll keycode 37 = Control_k
+ shift altgr control shiftr ctrll keycode 37 = Control_k
+ alt shiftr ctrll keycode 37 = Meta_k
+ shift alt shiftr ctrll keycode 37 = Meta_K
+ altgr alt shiftr ctrll keycode 37 = Meta_k
+ shift altgr alt shiftr ctrll keycode 37 = Meta_ampersand
+ control alt shiftr ctrll keycode 37 = Meta_Control_k
+ shift control alt shiftr ctrll keycode 37 = Meta_Control_k
+ altgr control alt shiftr ctrll keycode 37 = Meta_Control_k
+ shift altgr control alt shiftr ctrll keycode 37 = Meta_Control_k
+ shiftl shiftr ctrll keycode 37 = +K
+ altgr shiftl shiftr ctrll keycode 37 = kra
+ shift altgr shiftl shiftr ctrll keycode 37 = ampersand
+ control shiftl shiftr ctrll keycode 37 = Control_k
+ shift control shiftl shiftr ctrll keycode 37 = Control_k
+ altgr control shiftl shiftr ctrll keycode 37 = Control_k
+ shift altgr control shiftl shiftr ctrll keycode 37 = Control_k
+ alt shiftl shiftr ctrll keycode 37 = Meta_k
+ shift alt shiftl shiftr ctrll keycode 37 = Meta_K
+ altgr alt shiftl shiftr ctrll keycode 37 = Meta_k
+ shift altgr alt shiftl shiftr ctrll keycode 37 = Meta_ampersand
+ control alt shiftl shiftr ctrll keycode 37 = Meta_Control_k
+ shift control alt shiftl shiftr ctrll keycode 37 = Meta_Control_k
+ altgr control alt shiftl shiftr ctrll keycode 37 = Meta_Control_k
+ shift altgr control alt shiftl shiftr ctrll keycode 37 = Meta_Control_k
+keycode 38 = +l
+ shift keycode 38 = +L
+ altgr keycode 38 = lstroke
+ shift altgr keycode 38 = Lstroke
+ control keycode 38 = Control_l
+ shift control keycode 38 = Control_l
+ altgr control keycode 38 = Control_l
+ shift altgr control keycode 38 = Control_l
+ alt keycode 38 = Meta_l
+ shift alt keycode 38 = Meta_L
+ altgr alt keycode 38 = Meta_l
+ shift altgr alt keycode 38 = Meta_L
+ control alt keycode 38 = Meta_Control_l
+ shift control alt keycode 38 = Meta_Control_l
+ altgr control alt keycode 38 = Meta_Control_l
+ shift altgr control alt keycode 38 = Meta_Control_l
+ shift shiftl keycode 38 = +L
+ altgr shiftl keycode 38 = lstroke
+ shift altgr shiftl keycode 38 = Lstroke
+ control shiftl keycode 38 = Control_l
+ shift control shiftl keycode 38 = Control_l
+ altgr control shiftl keycode 38 = Control_l
+ shift altgr control shiftl keycode 38 = Control_l
+ alt shiftl keycode 38 = Meta_l
+ shift alt shiftl keycode 38 = Meta_L
+ altgr alt shiftl keycode 38 = Meta_l
+ shift altgr alt shiftl keycode 38 = Meta_L
+ control alt shiftl keycode 38 = Meta_Control_l
+ shift control alt shiftl keycode 38 = Meta_Control_l
+ altgr control alt shiftl keycode 38 = Meta_Control_l
+ shift altgr control alt shiftl keycode 38 = Meta_Control_l
+ shift shiftr keycode 38 = +L
+ altgr shiftr keycode 38 = lstroke
+ shift altgr shiftr keycode 38 = Lstroke
+ control shiftr keycode 38 = Control_l
+ shift control shiftr keycode 38 = Control_l
+ altgr control shiftr keycode 38 = Control_l
+ shift altgr control shiftr keycode 38 = Control_l
+ alt shiftr keycode 38 = Meta_l
+ shift alt shiftr keycode 38 = Meta_L
+ altgr alt shiftr keycode 38 = Meta_l
+ shift altgr alt shiftr keycode 38 = Meta_L
+ control alt shiftr keycode 38 = Meta_Control_l
+ shift control alt shiftr keycode 38 = Meta_Control_l
+ altgr control alt shiftr keycode 38 = Meta_Control_l
+ shift altgr control alt shiftr keycode 38 = Meta_Control_l
+ shift shiftl shiftr keycode 38 = +L
+ altgr shiftl shiftr keycode 38 = lstroke
+ shift altgr shiftl shiftr keycode 38 = Lstroke
+ control shiftl shiftr keycode 38 = Control_l
+ shift control shiftl shiftr keycode 38 = Control_l
+ altgr control shiftl shiftr keycode 38 = Control_l
+ shift altgr control shiftl shiftr keycode 38 = Control_l
+ alt shiftl shiftr keycode 38 = Meta_l
+ shift alt shiftl shiftr keycode 38 = Meta_L
+ altgr alt shiftl shiftr keycode 38 = Meta_l
+ shift altgr alt shiftl shiftr keycode 38 = Meta_L
+ control alt shiftl shiftr keycode 38 = Meta_Control_l
+ shift control alt shiftl shiftr keycode 38 = Meta_Control_l
+ altgr control alt shiftl shiftr keycode 38 = Meta_Control_l
+ shift altgr control alt shiftl shiftr keycode 38 = Meta_Control_l
+ ctrll keycode 38 = +L
+ altgr ctrll keycode 38 = Lstroke
+ shift altgr ctrll keycode 38 = lstroke
+ control ctrll keycode 38 = Control_l
+ shift control ctrll keycode 38 = Control_l
+ altgr control ctrll keycode 38 = Control_l
+ shift altgr control ctrll keycode 38 = Control_l
+ alt ctrll keycode 38 = Meta_l
+ shift alt ctrll keycode 38 = Meta_L
+ altgr alt ctrll keycode 38 = Meta_l
+ shift altgr alt ctrll keycode 38 = Meta_L
+ control alt ctrll keycode 38 = Meta_Control_l
+ shift control alt ctrll keycode 38 = Meta_Control_l
+ altgr control alt ctrll keycode 38 = Meta_Control_l
+ shift altgr control alt ctrll keycode 38 = Meta_Control_l
+ shiftl ctrll keycode 38 = +L
+ altgr shiftl ctrll keycode 38 = Lstroke
+ shift altgr shiftl ctrll keycode 38 = lstroke
+ control shiftl ctrll keycode 38 = Control_l
+ shift control shiftl ctrll keycode 38 = Control_l
+ altgr control shiftl ctrll keycode 38 = Control_l
+ shift altgr control shiftl ctrll keycode 38 = Control_l
+ alt shiftl ctrll keycode 38 = Meta_l
+ shift alt shiftl ctrll keycode 38 = Meta_L
+ altgr alt shiftl ctrll keycode 38 = Meta_l
+ shift altgr alt shiftl ctrll keycode 38 = Meta_L
+ control alt shiftl ctrll keycode 38 = Meta_Control_l
+ shift control alt shiftl ctrll keycode 38 = Meta_Control_l
+ altgr control alt shiftl ctrll keycode 38 = Meta_Control_l
+ shift altgr control alt shiftl ctrll keycode 38 = Meta_Control_l
+ shiftr ctrll keycode 38 = +L
+ altgr shiftr ctrll keycode 38 = Lstroke
+ shift altgr shiftr ctrll keycode 38 = lstroke
+ control shiftr ctrll keycode 38 = Control_l
+ shift control shiftr ctrll keycode 38 = Control_l
+ altgr control shiftr ctrll keycode 38 = Control_l
+ shift altgr control shiftr ctrll keycode 38 = Control_l
+ alt shiftr ctrll keycode 38 = Meta_l
+ shift alt shiftr ctrll keycode 38 = Meta_L
+ altgr alt shiftr ctrll keycode 38 = Meta_l
+ shift altgr alt shiftr ctrll keycode 38 = Meta_L
+ control alt shiftr ctrll keycode 38 = Meta_Control_l
+ shift control alt shiftr ctrll keycode 38 = Meta_Control_l
+ altgr control alt shiftr ctrll keycode 38 = Meta_Control_l
+ shift altgr control alt shiftr ctrll keycode 38 = Meta_Control_l
+ shiftl shiftr ctrll keycode 38 = +L
+ altgr shiftl shiftr ctrll keycode 38 = Lstroke
+ shift altgr shiftl shiftr ctrll keycode 38 = lstroke
+ control shiftl shiftr ctrll keycode 38 = Control_l
+ shift control shiftl shiftr ctrll keycode 38 = Control_l
+ altgr control shiftl shiftr ctrll keycode 38 = Control_l
+ shift altgr control shiftl shiftr ctrll keycode 38 = Control_l
+ alt shiftl shiftr ctrll keycode 38 = Meta_l
+ shift alt shiftl shiftr ctrll keycode 38 = Meta_L
+ altgr alt shiftl shiftr ctrll keycode 38 = Meta_l
+ shift altgr alt shiftl shiftr ctrll keycode 38 = Meta_L
+ control alt shiftl shiftr ctrll keycode 38 = Meta_Control_l
+ shift control alt shiftl shiftr ctrll keycode 38 = Meta_Control_l
+ altgr control alt shiftl shiftr ctrll keycode 38 = Meta_Control_l
+ shift altgr control alt shiftl shiftr ctrll keycode 38 = Meta_Control_l
+keycode 39 = +ccedilla
+ shift keycode 39 = +Ccedilla
+ altgr keycode 39 = dead_acute
+ shift altgr keycode 39 = dead_tilde
+ control keycode 39 = dead_acute
+ shift control keycode 39 = dead_tilde
+ altgr control keycode 39 = dead_acute
+ shift altgr control keycode 39 = dead_tilde
+ alt keycode 39 = dead_acute
+ shift alt keycode 39 = dead_tilde
+ altgr alt keycode 39 = dead_acute
+ shift altgr alt keycode 39 = dead_tilde
+ control alt keycode 39 = dead_acute
+ shift control alt keycode 39 = dead_tilde
+ altgr control alt keycode 39 = dead_acute
+ shift altgr control alt keycode 39 = dead_tilde
+ shift shiftl keycode 39 = +Ccedilla
+ altgr shiftl keycode 39 = dead_acute
+ shift altgr shiftl keycode 39 = dead_tilde
+ control shiftl keycode 39 = dead_acute
+ shift control shiftl keycode 39 = dead_tilde
+ altgr control shiftl keycode 39 = dead_acute
+ shift altgr control shiftl keycode 39 = dead_tilde
+ alt shiftl keycode 39 = dead_acute
+ shift alt shiftl keycode 39 = dead_tilde
+ altgr alt shiftl keycode 39 = dead_acute
+ shift altgr alt shiftl keycode 39 = dead_tilde
+ control alt shiftl keycode 39 = dead_acute
+ shift control alt shiftl keycode 39 = dead_tilde
+ altgr control alt shiftl keycode 39 = dead_acute
+ shift altgr control alt shiftl keycode 39 = dead_tilde
+ shift shiftr keycode 39 = +Ccedilla
+ altgr shiftr keycode 39 = dead_acute
+ shift altgr shiftr keycode 39 = dead_tilde
+ control shiftr keycode 39 = dead_acute
+ shift control shiftr keycode 39 = dead_tilde
+ altgr control shiftr keycode 39 = dead_acute
+ shift altgr control shiftr keycode 39 = dead_tilde
+ alt shiftr keycode 39 = dead_acute
+ shift alt shiftr keycode 39 = dead_tilde
+ altgr alt shiftr keycode 39 = dead_acute
+ shift altgr alt shiftr keycode 39 = dead_tilde
+ control alt shiftr keycode 39 = dead_acute
+ shift control alt shiftr keycode 39 = dead_tilde
+ altgr control alt shiftr keycode 39 = dead_acute
+ shift altgr control alt shiftr keycode 39 = dead_tilde
+ shift shiftl shiftr keycode 39 = +Ccedilla
+ altgr shiftl shiftr keycode 39 = dead_acute
+ shift altgr shiftl shiftr keycode 39 = dead_tilde
+ control shiftl shiftr keycode 39 = dead_acute
+ shift control shiftl shiftr keycode 39 = dead_tilde
+ altgr control shiftl shiftr keycode 39 = dead_acute
+ shift altgr control shiftl shiftr keycode 39 = dead_tilde
+ alt shiftl shiftr keycode 39 = dead_acute
+ shift alt shiftl shiftr keycode 39 = dead_tilde
+ altgr alt shiftl shiftr keycode 39 = dead_acute
+ shift altgr alt shiftl shiftr keycode 39 = dead_tilde
+ control alt shiftl shiftr keycode 39 = dead_acute
+ shift control alt shiftl shiftr keycode 39 = dead_tilde
+ altgr control alt shiftl shiftr keycode 39 = dead_acute
+ shift altgr control alt shiftl shiftr keycode 39 = dead_tilde
+ ctrll keycode 39 = +Ccedilla
+ altgr ctrll keycode 39 = dead_acute
+ shift altgr ctrll keycode 39 = dead_tilde
+ control ctrll keycode 39 = dead_acute
+ shift control ctrll keycode 39 = dead_tilde
+ altgr control ctrll keycode 39 = dead_acute
+ shift altgr control ctrll keycode 39 = dead_tilde
+ alt ctrll keycode 39 = dead_acute
+ shift alt ctrll keycode 39 = dead_tilde
+ altgr alt ctrll keycode 39 = dead_acute
+ shift altgr alt ctrll keycode 39 = dead_tilde
+ control alt ctrll keycode 39 = dead_acute
+ shift control alt ctrll keycode 39 = dead_tilde
+ altgr control alt ctrll keycode 39 = dead_acute
+ shift altgr control alt ctrll keycode 39 = dead_tilde
+ shiftl ctrll keycode 39 = +Ccedilla
+ altgr shiftl ctrll keycode 39 = dead_acute
+ shift altgr shiftl ctrll keycode 39 = dead_tilde
+ control shiftl ctrll keycode 39 = dead_acute
+ shift control shiftl ctrll keycode 39 = dead_tilde
+ altgr control shiftl ctrll keycode 39 = dead_acute
+ shift altgr control shiftl ctrll keycode 39 = dead_tilde
+ alt shiftl ctrll keycode 39 = dead_acute
+ shift alt shiftl ctrll keycode 39 = dead_tilde
+ altgr alt shiftl ctrll keycode 39 = dead_acute
+ shift altgr alt shiftl ctrll keycode 39 = dead_tilde
+ control alt shiftl ctrll keycode 39 = dead_acute
+ shift control alt shiftl ctrll keycode 39 = dead_tilde
+ altgr control alt shiftl ctrll keycode 39 = dead_acute
+ shift altgr control alt shiftl ctrll keycode 39 = dead_tilde
+ shiftr ctrll keycode 39 = +Ccedilla
+ altgr shiftr ctrll keycode 39 = dead_acute
+ shift altgr shiftr ctrll keycode 39 = dead_tilde
+ control shiftr ctrll keycode 39 = dead_acute
+ shift control shiftr ctrll keycode 39 = dead_tilde
+ altgr control shiftr ctrll keycode 39 = dead_acute
+ shift altgr control shiftr ctrll keycode 39 = dead_tilde
+ alt shiftr ctrll keycode 39 = dead_acute
+ shift alt shiftr ctrll keycode 39 = dead_tilde
+ altgr alt shiftr ctrll keycode 39 = dead_acute
+ shift altgr alt shiftr ctrll keycode 39 = dead_tilde
+ control alt shiftr ctrll keycode 39 = dead_acute
+ shift control alt shiftr ctrll keycode 39 = dead_tilde
+ altgr control alt shiftr ctrll keycode 39 = dead_acute
+ shift altgr control alt shiftr ctrll keycode 39 = dead_tilde
+ shiftl shiftr ctrll keycode 39 = +Ccedilla
+ altgr shiftl shiftr ctrll keycode 39 = dead_acute
+ shift altgr shiftl shiftr ctrll keycode 39 = dead_tilde
+ control shiftl shiftr ctrll keycode 39 = dead_acute
+ shift control shiftl shiftr ctrll keycode 39 = dead_tilde
+ altgr control shiftl shiftr ctrll keycode 39 = dead_acute
+ shift altgr control shiftl shiftr ctrll keycode 39 = dead_tilde
+ alt shiftl shiftr ctrll keycode 39 = dead_acute
+ shift alt shiftl shiftr ctrll keycode 39 = dead_tilde
+ altgr alt shiftl shiftr ctrll keycode 39 = dead_acute
+ shift altgr alt shiftl shiftr ctrll keycode 39 = dead_tilde
+ control alt shiftl shiftr ctrll keycode 39 = dead_acute
+ shift control alt shiftl shiftr ctrll keycode 39 = dead_tilde
+ altgr control alt shiftl shiftr ctrll keycode 39 = dead_acute
+ shift altgr control alt shiftl shiftr ctrll keycode 39 = dead_tilde
+keycode 40 = dead_tilde
+ shift keycode 40 = dead_circumflex
+ altgr keycode 40 = asciitilde
+ shift altgr keycode 40 = asciicircum
+ shift control keycode 40 = dead_circumflex
+ shift altgr control keycode 40 = Control_asciicircum
+ shift alt keycode 40 = dead_circumflex
+ altgr alt keycode 40 = Meta_asciitilde
+ shift altgr alt keycode 40 = Meta_asciicircum
+ shift control alt keycode 40 = dead_circumflex
+ shift altgr control alt keycode 40 = Meta_Control_asciicircum
+ shift shiftl keycode 40 = dead_circumflex
+ altgr shiftl keycode 40 = asciitilde
+ shift altgr shiftl keycode 40 = asciicircum
+ shift control shiftl keycode 40 = dead_circumflex
+ shift altgr control shiftl keycode 40 = Control_asciicircum
+ shift alt shiftl keycode 40 = dead_circumflex
+ altgr alt shiftl keycode 40 = Meta_asciitilde
+ shift altgr alt shiftl keycode 40 = Meta_asciicircum
+ shift control alt shiftl keycode 40 = dead_circumflex
+ shift altgr control alt shiftl keycode 40 = Meta_Control_asciicircum
+ shift shiftr keycode 40 = dead_circumflex
+ altgr shiftr keycode 40 = asciitilde
+ shift altgr shiftr keycode 40 = asciicircum
+ shift control shiftr keycode 40 = dead_circumflex
+ shift altgr control shiftr keycode 40 = Control_asciicircum
+ shift alt shiftr keycode 40 = dead_circumflex
+ altgr alt shiftr keycode 40 = Meta_asciitilde
+ shift altgr alt shiftr keycode 40 = Meta_asciicircum
+ shift control alt shiftr keycode 40 = dead_circumflex
+ shift altgr control alt shiftr keycode 40 = Meta_Control_asciicircum
+ shift shiftl shiftr keycode 40 = dead_circumflex
+ altgr shiftl shiftr keycode 40 = asciitilde
+ shift altgr shiftl shiftr keycode 40 = asciicircum
+ shift control shiftl shiftr keycode 40 = dead_circumflex
+ shift altgr control shiftl shiftr keycode 40 = Control_asciicircum
+ shift alt shiftl shiftr keycode 40 = dead_circumflex
+ altgr alt shiftl shiftr keycode 40 = Meta_asciitilde
+ shift altgr alt shiftl shiftr keycode 40 = Meta_asciicircum
+ shift control alt shiftl shiftr keycode 40 = dead_circumflex
+ shift altgr control alt shiftl shiftr keycode 40 = Meta_Control_asciicircum
+ shift ctrll keycode 40 = dead_circumflex
+ altgr ctrll keycode 40 = asciitilde
+ shift altgr ctrll keycode 40 = asciicircum
+ shift control ctrll keycode 40 = dead_circumflex
+ shift altgr control ctrll keycode 40 = Control_asciicircum
+ shift alt ctrll keycode 40 = dead_circumflex
+ altgr alt ctrll keycode 40 = Meta_asciitilde
+ shift altgr alt ctrll keycode 40 = Meta_asciicircum
+ shift control alt ctrll keycode 40 = dead_circumflex
+ shift altgr control alt ctrll keycode 40 = Meta_Control_asciicircum
+ shift shiftl ctrll keycode 40 = dead_circumflex
+ altgr shiftl ctrll keycode 40 = asciitilde
+ shift altgr shiftl ctrll keycode 40 = asciicircum
+ shift control shiftl ctrll keycode 40 = dead_circumflex
+ shift altgr control shiftl ctrll keycode 40 = Control_asciicircum
+ shift alt shiftl ctrll keycode 40 = dead_circumflex
+ altgr alt shiftl ctrll keycode 40 = Meta_asciitilde
+ shift altgr alt shiftl ctrll keycode 40 = Meta_asciicircum
+ shift control alt shiftl ctrll keycode 40 = dead_circumflex
+ shift altgr control alt shiftl ctrll keycode 40 = Meta_Control_asciicircum
+ shift shiftr ctrll keycode 40 = dead_circumflex
+ altgr shiftr ctrll keycode 40 = asciitilde
+ shift altgr shiftr ctrll keycode 40 = asciicircum
+ shift control shiftr ctrll keycode 40 = dead_circumflex
+ shift altgr control shiftr ctrll keycode 40 = Control_asciicircum
+ shift alt shiftr ctrll keycode 40 = dead_circumflex
+ altgr alt shiftr ctrll keycode 40 = Meta_asciitilde
+ shift altgr alt shiftr ctrll keycode 40 = Meta_asciicircum
+ shift control alt shiftr ctrll keycode 40 = dead_circumflex
+ shift altgr control alt shiftr ctrll keycode 40 = Meta_Control_asciicircum
+ shift shiftl shiftr ctrll keycode 40 = dead_circumflex
+ altgr shiftl shiftr ctrll keycode 40 = asciitilde
+ shift altgr shiftl shiftr ctrll keycode 40 = asciicircum
+ shift control shiftl shiftr ctrll keycode 40 = dead_circumflex
+ shift altgr control shiftl shiftr ctrll keycode 40 = Control_asciicircum
+ shift alt shiftl shiftr ctrll keycode 40 = dead_circumflex
+ altgr alt shiftl shiftr ctrll keycode 40 = Meta_asciitilde
+ shift altgr alt shiftl shiftr ctrll keycode 40 = Meta_asciicircum
+ shift control alt shiftl shiftr ctrll keycode 40 = dead_circumflex
+ shift altgr control alt shiftl shiftr ctrll keycode 40 = Meta_Control_asciicircum
+keycode 41 = apostrophe
+ shift keycode 41 = quotedbl
+ altgr keycode 41 = notsign
+ shift altgr keycode 41 = notsign
+ control keycode 41 = Control_g
+ shift control keycode 41 = Control_g
+ altgr control keycode 41 = Control_g
+ shift altgr control keycode 41 = Control_g
+ alt keycode 41 = Meta_apostrophe
+ shift alt keycode 41 = Meta_quotedbl
+ altgr alt keycode 41 = Meta_apostrophe
+ shift altgr alt keycode 41 = Meta_quotedbl
+ control alt keycode 41 = Meta_Control_g
+ shift control alt keycode 41 = Meta_Control_g
+ altgr control alt keycode 41 = Meta_Control_g
+ shift altgr control alt keycode 41 = Meta_Control_g
+ shift shiftl keycode 41 = quotedbl
+ altgr shiftl keycode 41 = notsign
+ shift altgr shiftl keycode 41 = notsign
+ control shiftl keycode 41 = Control_g
+ shift control shiftl keycode 41 = Control_g
+ altgr control shiftl keycode 41 = Control_g
+ shift altgr control shiftl keycode 41 = Control_g
+ alt shiftl keycode 41 = Meta_apostrophe
+ shift alt shiftl keycode 41 = Meta_quotedbl
+ altgr alt shiftl keycode 41 = Meta_apostrophe
+ shift altgr alt shiftl keycode 41 = Meta_quotedbl
+ control alt shiftl keycode 41 = Meta_Control_g
+ shift control alt shiftl keycode 41 = Meta_Control_g
+ altgr control alt shiftl keycode 41 = Meta_Control_g
+ shift altgr control alt shiftl keycode 41 = Meta_Control_g
+ shift shiftr keycode 41 = quotedbl
+ altgr shiftr keycode 41 = notsign
+ shift altgr shiftr keycode 41 = notsign
+ control shiftr keycode 41 = Control_g
+ shift control shiftr keycode 41 = Control_g
+ altgr control shiftr keycode 41 = Control_g
+ shift altgr control shiftr keycode 41 = Control_g
+ alt shiftr keycode 41 = Meta_apostrophe
+ shift alt shiftr keycode 41 = Meta_quotedbl
+ altgr alt shiftr keycode 41 = Meta_apostrophe
+ shift altgr alt shiftr keycode 41 = Meta_quotedbl
+ control alt shiftr keycode 41 = Meta_Control_g
+ shift control alt shiftr keycode 41 = Meta_Control_g
+ altgr control alt shiftr keycode 41 = Meta_Control_g
+ shift altgr control alt shiftr keycode 41 = Meta_Control_g
+ shift shiftl shiftr keycode 41 = quotedbl
+ altgr shiftl shiftr keycode 41 = notsign
+ shift altgr shiftl shiftr keycode 41 = notsign
+ control shiftl shiftr keycode 41 = Control_g
+ shift control shiftl shiftr keycode 41 = Control_g
+ altgr control shiftl shiftr keycode 41 = Control_g
+ shift altgr control shiftl shiftr keycode 41 = Control_g
+ alt shiftl shiftr keycode 41 = Meta_apostrophe
+ shift alt shiftl shiftr keycode 41 = Meta_quotedbl
+ altgr alt shiftl shiftr keycode 41 = Meta_apostrophe
+ shift altgr alt shiftl shiftr keycode 41 = Meta_quotedbl
+ control alt shiftl shiftr keycode 41 = Meta_Control_g
+ shift control alt shiftl shiftr keycode 41 = Meta_Control_g
+ altgr control alt shiftl shiftr keycode 41 = Meta_Control_g
+ shift altgr control alt shiftl shiftr keycode 41 = Meta_Control_g
+ shift ctrll keycode 41 = quotedbl
+ altgr ctrll keycode 41 = notsign
+ shift altgr ctrll keycode 41 = notsign
+ control ctrll keycode 41 = Control_g
+ shift control ctrll keycode 41 = Control_g
+ altgr control ctrll keycode 41 = Control_g
+ shift altgr control ctrll keycode 41 = Control_g
+ alt ctrll keycode 41 = Meta_apostrophe
+ shift alt ctrll keycode 41 = Meta_quotedbl
+ altgr alt ctrll keycode 41 = Meta_apostrophe
+ shift altgr alt ctrll keycode 41 = Meta_quotedbl
+ control alt ctrll keycode 41 = Meta_Control_g
+ shift control alt ctrll keycode 41 = Meta_Control_g
+ altgr control alt ctrll keycode 41 = Meta_Control_g
+ shift altgr control alt ctrll keycode 41 = Meta_Control_g
+ shift shiftl ctrll keycode 41 = quotedbl
+ altgr shiftl ctrll keycode 41 = notsign
+ shift altgr shiftl ctrll keycode 41 = notsign
+ control shiftl ctrll keycode 41 = Control_g
+ shift control shiftl ctrll keycode 41 = Control_g
+ altgr control shiftl ctrll keycode 41 = Control_g
+ shift altgr control shiftl ctrll keycode 41 = Control_g
+ alt shiftl ctrll keycode 41 = Meta_apostrophe
+ shift alt shiftl ctrll keycode 41 = Meta_quotedbl
+ altgr alt shiftl ctrll keycode 41 = Meta_apostrophe
+ shift altgr alt shiftl ctrll keycode 41 = Meta_quotedbl
+ control alt shiftl ctrll keycode 41 = Meta_Control_g
+ shift control alt shiftl ctrll keycode 41 = Meta_Control_g
+ altgr control alt shiftl ctrll keycode 41 = Meta_Control_g
+ shift altgr control alt shiftl ctrll keycode 41 = Meta_Control_g
+ shift shiftr ctrll keycode 41 = quotedbl
+ altgr shiftr ctrll keycode 41 = notsign
+ shift altgr shiftr ctrll keycode 41 = notsign
+ control shiftr ctrll keycode 41 = Control_g
+ shift control shiftr ctrll keycode 41 = Control_g
+ altgr control shiftr ctrll keycode 41 = Control_g
+ shift altgr control shiftr ctrll keycode 41 = Control_g
+ alt shiftr ctrll keycode 41 = Meta_apostrophe
+ shift alt shiftr ctrll keycode 41 = Meta_quotedbl
+ altgr alt shiftr ctrll keycode 41 = Meta_apostrophe
+ shift altgr alt shiftr ctrll keycode 41 = Meta_quotedbl
+ control alt shiftr ctrll keycode 41 = Meta_Control_g
+ shift control alt shiftr ctrll keycode 41 = Meta_Control_g
+ altgr control alt shiftr ctrll keycode 41 = Meta_Control_g
+ shift altgr control alt shiftr ctrll keycode 41 = Meta_Control_g
+ shift shiftl shiftr ctrll keycode 41 = quotedbl
+ altgr shiftl shiftr ctrll keycode 41 = notsign
+ shift altgr shiftl shiftr ctrll keycode 41 = notsign
+ control shiftl shiftr ctrll keycode 41 = Control_g
+ shift control shiftl shiftr ctrll keycode 41 = Control_g
+ altgr control shiftl shiftr ctrll keycode 41 = Control_g
+ shift altgr control shiftl shiftr ctrll keycode 41 = Control_g
+ alt shiftl shiftr ctrll keycode 41 = Meta_apostrophe
+ shift alt shiftl shiftr ctrll keycode 41 = Meta_quotedbl
+ altgr alt shiftl shiftr ctrll keycode 41 = Meta_apostrophe
+ shift altgr alt shiftl shiftr ctrll keycode 41 = Meta_quotedbl
+ control alt shiftl shiftr ctrll keycode 41 = Meta_Control_g
+ shift control alt shiftl shiftr ctrll keycode 41 = Meta_Control_g
+ altgr control alt shiftl shiftr ctrll keycode 41 = Meta_Control_g
+ shift altgr control alt shiftl shiftr ctrll keycode 41 = Meta_Control_g
+keycode 42 = Shift
+keycode 43 = bracketright
+ shift keycode 43 = braceright
+ altgr keycode 43 = +masculine
+ shift altgr keycode 43 = +masculine
+ control keycode 43 = Control_bracketright
+ shift control keycode 43 = Control_bracketright
+ altgr control keycode 43 = Control_bracketright
+ shift altgr control keycode 43 = Control_bracketright
+ alt keycode 43 = Meta_bracketright
+ shift alt keycode 43 = Meta_braceright
+ altgr alt keycode 43 = Meta_bracketright
+ shift altgr alt keycode 43 = Meta_braceright
+ control alt keycode 43 = Meta_Control_bracketright
+ shift control alt keycode 43 = Meta_Control_bracketright
+ altgr control alt keycode 43 = Meta_Control_bracketright
+ shift altgr control alt keycode 43 = Meta_Control_bracketright
+ shift shiftl keycode 43 = braceright
+ altgr shiftl keycode 43 = +masculine
+ shift altgr shiftl keycode 43 = +masculine
+ control shiftl keycode 43 = Control_bracketright
+ shift control shiftl keycode 43 = Control_bracketright
+ altgr control shiftl keycode 43 = Control_bracketright
+ shift altgr control shiftl keycode 43 = Control_bracketright
+ alt shiftl keycode 43 = Meta_bracketright
+ shift alt shiftl keycode 43 = Meta_braceright
+ altgr alt shiftl keycode 43 = Meta_bracketright
+ shift altgr alt shiftl keycode 43 = Meta_braceright
+ control alt shiftl keycode 43 = Meta_Control_bracketright
+ shift control alt shiftl keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftl keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftl keycode 43 = Meta_Control_bracketright
+ shift shiftr keycode 43 = braceright
+ altgr shiftr keycode 43 = +masculine
+ shift altgr shiftr keycode 43 = +masculine
+ control shiftr keycode 43 = Control_bracketright
+ shift control shiftr keycode 43 = Control_bracketright
+ altgr control shiftr keycode 43 = Control_bracketright
+ shift altgr control shiftr keycode 43 = Control_bracketright
+ alt shiftr keycode 43 = Meta_bracketright
+ shift alt shiftr keycode 43 = Meta_braceright
+ altgr alt shiftr keycode 43 = Meta_bracketright
+ shift altgr alt shiftr keycode 43 = Meta_braceright
+ control alt shiftr keycode 43 = Meta_Control_bracketright
+ shift control alt shiftr keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftr keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftr keycode 43 = Meta_Control_bracketright
+ shift shiftl shiftr keycode 43 = braceright
+ altgr shiftl shiftr keycode 43 = +masculine
+ shift altgr shiftl shiftr keycode 43 = +masculine
+ control shiftl shiftr keycode 43 = Control_bracketright
+ shift control shiftl shiftr keycode 43 = Control_bracketright
+ altgr control shiftl shiftr keycode 43 = Control_bracketright
+ shift altgr control shiftl shiftr keycode 43 = Control_bracketright
+ alt shiftl shiftr keycode 43 = Meta_bracketright
+ shift alt shiftl shiftr keycode 43 = Meta_braceright
+ altgr alt shiftl shiftr keycode 43 = Meta_bracketright
+ shift altgr alt shiftl shiftr keycode 43 = Meta_braceright
+ control alt shiftl shiftr keycode 43 = Meta_Control_bracketright
+ shift control alt shiftl shiftr keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr keycode 43 = Meta_Control_bracketright
+ shift ctrll keycode 43 = braceright
+ altgr ctrll keycode 43 = +masculine
+ shift altgr ctrll keycode 43 = +masculine
+ control ctrll keycode 43 = Control_bracketright
+ shift control ctrll keycode 43 = Control_bracketright
+ altgr control ctrll keycode 43 = Control_bracketright
+ shift altgr control ctrll keycode 43 = Control_bracketright
+ alt ctrll keycode 43 = Meta_bracketright
+ shift alt ctrll keycode 43 = Meta_braceright
+ altgr alt ctrll keycode 43 = Meta_bracketright
+ shift altgr alt ctrll keycode 43 = Meta_braceright
+ control alt ctrll keycode 43 = Meta_Control_bracketright
+ shift control alt ctrll keycode 43 = Meta_Control_bracketright
+ altgr control alt ctrll keycode 43 = Meta_Control_bracketright
+ shift altgr control alt ctrll keycode 43 = Meta_Control_bracketright
+ shift shiftl ctrll keycode 43 = braceright
+ altgr shiftl ctrll keycode 43 = +masculine
+ shift altgr shiftl ctrll keycode 43 = +masculine
+ control shiftl ctrll keycode 43 = Control_bracketright
+ shift control shiftl ctrll keycode 43 = Control_bracketright
+ altgr control shiftl ctrll keycode 43 = Control_bracketright
+ shift altgr control shiftl ctrll keycode 43 = Control_bracketright
+ alt shiftl ctrll keycode 43 = Meta_bracketright
+ shift alt shiftl ctrll keycode 43 = Meta_braceright
+ altgr alt shiftl ctrll keycode 43 = Meta_bracketright
+ shift altgr alt shiftl ctrll keycode 43 = Meta_braceright
+ control alt shiftl ctrll keycode 43 = Meta_Control_bracketright
+ shift control alt shiftl ctrll keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftl ctrll keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftl ctrll keycode 43 = Meta_Control_bracketright
+ shift shiftr ctrll keycode 43 = braceright
+ altgr shiftr ctrll keycode 43 = +masculine
+ shift altgr shiftr ctrll keycode 43 = +masculine
+ control shiftr ctrll keycode 43 = Control_bracketright
+ shift control shiftr ctrll keycode 43 = Control_bracketright
+ altgr control shiftr ctrll keycode 43 = Control_bracketright
+ shift altgr control shiftr ctrll keycode 43 = Control_bracketright
+ alt shiftr ctrll keycode 43 = Meta_bracketright
+ shift alt shiftr ctrll keycode 43 = Meta_braceright
+ altgr alt shiftr ctrll keycode 43 = Meta_bracketright
+ shift altgr alt shiftr ctrll keycode 43 = Meta_braceright
+ control alt shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift control alt shiftr ctrll keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift shiftl shiftr ctrll keycode 43 = braceright
+ altgr shiftl shiftr ctrll keycode 43 = +masculine
+ shift altgr shiftl shiftr ctrll keycode 43 = +masculine
+ control shiftl shiftr ctrll keycode 43 = Control_bracketright
+ shift control shiftl shiftr ctrll keycode 43 = Control_bracketright
+ altgr control shiftl shiftr ctrll keycode 43 = Control_bracketright
+ shift altgr control shiftl shiftr ctrll keycode 43 = Control_bracketright
+ alt shiftl shiftr ctrll keycode 43 = Meta_bracketright
+ shift alt shiftl shiftr ctrll keycode 43 = Meta_braceright
+ altgr alt shiftl shiftr ctrll keycode 43 = Meta_bracketright
+ shift altgr alt shiftl shiftr ctrll keycode 43 = Meta_braceright
+ control alt shiftl shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift control alt shiftl shiftr ctrll keycode 43 = Meta_Control_bracketright
+ altgr control alt shiftl shiftr ctrll keycode 43 = Meta_Control_bracketright
+ shift altgr control alt shiftl shiftr ctrll keycode 43 = Meta_Control_bracketright
+keycode 44 = +z
+ shift keycode 44 = +Z
+ altgr keycode 44 = guillemotleft
+ shift altgr keycode 44 = less
+ control keycode 44 = Control_z
+ shift control keycode 44 = Control_z
+ altgr control keycode 44 = Control_z
+ shift altgr control keycode 44 = Control_z
+ alt keycode 44 = Meta_z
+ shift alt keycode 44 = Meta_Z
+ altgr alt keycode 44 = Meta_z
+ shift altgr alt keycode 44 = Meta_less
+ control alt keycode 44 = Meta_Control_z
+ shift control alt keycode 44 = Meta_Control_z
+ altgr control alt keycode 44 = Meta_Control_z
+ shift altgr control alt keycode 44 = Meta_Control_z
+ shift shiftl keycode 44 = +Z
+ altgr shiftl keycode 44 = guillemotleft
+ shift altgr shiftl keycode 44 = less
+ control shiftl keycode 44 = Control_z
+ shift control shiftl keycode 44 = Control_z
+ altgr control shiftl keycode 44 = Control_z
+ shift altgr control shiftl keycode 44 = Control_z
+ alt shiftl keycode 44 = Meta_z
+ shift alt shiftl keycode 44 = Meta_Z
+ altgr alt shiftl keycode 44 = Meta_z
+ shift altgr alt shiftl keycode 44 = Meta_less
+ control alt shiftl keycode 44 = Meta_Control_z
+ shift control alt shiftl keycode 44 = Meta_Control_z
+ altgr control alt shiftl keycode 44 = Meta_Control_z
+ shift altgr control alt shiftl keycode 44 = Meta_Control_z
+ shift shiftr keycode 44 = +Z
+ altgr shiftr keycode 44 = guillemotleft
+ shift altgr shiftr keycode 44 = less
+ control shiftr keycode 44 = Control_z
+ shift control shiftr keycode 44 = Control_z
+ altgr control shiftr keycode 44 = Control_z
+ shift altgr control shiftr keycode 44 = Control_z
+ alt shiftr keycode 44 = Meta_z
+ shift alt shiftr keycode 44 = Meta_Z
+ altgr alt shiftr keycode 44 = Meta_z
+ shift altgr alt shiftr keycode 44 = Meta_less
+ control alt shiftr keycode 44 = Meta_Control_z
+ shift control alt shiftr keycode 44 = Meta_Control_z
+ altgr control alt shiftr keycode 44 = Meta_Control_z
+ shift altgr control alt shiftr keycode 44 = Meta_Control_z
+ shift shiftl shiftr keycode 44 = +Z
+ altgr shiftl shiftr keycode 44 = guillemotleft
+ shift altgr shiftl shiftr keycode 44 = less
+ control shiftl shiftr keycode 44 = Control_z
+ shift control shiftl shiftr keycode 44 = Control_z
+ altgr control shiftl shiftr keycode 44 = Control_z
+ shift altgr control shiftl shiftr keycode 44 = Control_z
+ alt shiftl shiftr keycode 44 = Meta_z
+ shift alt shiftl shiftr keycode 44 = Meta_Z
+ altgr alt shiftl shiftr keycode 44 = Meta_z
+ shift altgr alt shiftl shiftr keycode 44 = Meta_less
+ control alt shiftl shiftr keycode 44 = Meta_Control_z
+ shift control alt shiftl shiftr keycode 44 = Meta_Control_z
+ altgr control alt shiftl shiftr keycode 44 = Meta_Control_z
+ shift altgr control alt shiftl shiftr keycode 44 = Meta_Control_z
+ ctrll keycode 44 = +Z
+ altgr ctrll keycode 44 = guillemotleft
+ shift altgr ctrll keycode 44 = less
+ control ctrll keycode 44 = Control_z
+ shift control ctrll keycode 44 = Control_z
+ altgr control ctrll keycode 44 = Control_z
+ shift altgr control ctrll keycode 44 = Control_z
+ alt ctrll keycode 44 = Meta_z
+ shift alt ctrll keycode 44 = Meta_Z
+ altgr alt ctrll keycode 44 = Meta_z
+ shift altgr alt ctrll keycode 44 = Meta_less
+ control alt ctrll keycode 44 = Meta_Control_z
+ shift control alt ctrll keycode 44 = Meta_Control_z
+ altgr control alt ctrll keycode 44 = Meta_Control_z
+ shift altgr control alt ctrll keycode 44 = Meta_Control_z
+ shiftl ctrll keycode 44 = +Z
+ altgr shiftl ctrll keycode 44 = guillemotleft
+ shift altgr shiftl ctrll keycode 44 = less
+ control shiftl ctrll keycode 44 = Control_z
+ shift control shiftl ctrll keycode 44 = Control_z
+ altgr control shiftl ctrll keycode 44 = Control_z
+ shift altgr control shiftl ctrll keycode 44 = Control_z
+ alt shiftl ctrll keycode 44 = Meta_z
+ shift alt shiftl ctrll keycode 44 = Meta_Z
+ altgr alt shiftl ctrll keycode 44 = Meta_z
+ shift altgr alt shiftl ctrll keycode 44 = Meta_less
+ control alt shiftl ctrll keycode 44 = Meta_Control_z
+ shift control alt shiftl ctrll keycode 44 = Meta_Control_z
+ altgr control alt shiftl ctrll keycode 44 = Meta_Control_z
+ shift altgr control alt shiftl ctrll keycode 44 = Meta_Control_z
+ shiftr ctrll keycode 44 = +Z
+ altgr shiftr ctrll keycode 44 = guillemotleft
+ shift altgr shiftr ctrll keycode 44 = less
+ control shiftr ctrll keycode 44 = Control_z
+ shift control shiftr ctrll keycode 44 = Control_z
+ altgr control shiftr ctrll keycode 44 = Control_z
+ shift altgr control shiftr ctrll keycode 44 = Control_z
+ alt shiftr ctrll keycode 44 = Meta_z
+ shift alt shiftr ctrll keycode 44 = Meta_Z
+ altgr alt shiftr ctrll keycode 44 = Meta_z
+ shift altgr alt shiftr ctrll keycode 44 = Meta_less
+ control alt shiftr ctrll keycode 44 = Meta_Control_z
+ shift control alt shiftr ctrll keycode 44 = Meta_Control_z
+ altgr control alt shiftr ctrll keycode 44 = Meta_Control_z
+ shift altgr control alt shiftr ctrll keycode 44 = Meta_Control_z
+ shiftl shiftr ctrll keycode 44 = +Z
+ altgr shiftl shiftr ctrll keycode 44 = guillemotleft
+ shift altgr shiftl shiftr ctrll keycode 44 = less
+ control shiftl shiftr ctrll keycode 44 = Control_z
+ shift control shiftl shiftr ctrll keycode 44 = Control_z
+ altgr control shiftl shiftr ctrll keycode 44 = Control_z
+ shift altgr control shiftl shiftr ctrll keycode 44 = Control_z
+ alt shiftl shiftr ctrll keycode 44 = Meta_z
+ shift alt shiftl shiftr ctrll keycode 44 = Meta_Z
+ altgr alt shiftl shiftr ctrll keycode 44 = Meta_z
+ shift altgr alt shiftl shiftr ctrll keycode 44 = Meta_less
+ control alt shiftl shiftr ctrll keycode 44 = Meta_Control_z
+ shift control alt shiftl shiftr ctrll keycode 44 = Meta_Control_z
+ altgr control alt shiftl shiftr ctrll keycode 44 = Meta_Control_z
+ shift altgr control alt shiftl shiftr ctrll keycode 44 = Meta_Control_z
+keycode 45 = +x
+ shift keycode 45 = +X
+ altgr keycode 45 = guillemotright
+ shift altgr keycode 45 = greater
+ control keycode 45 = Control_x
+ shift control keycode 45 = Control_x
+ altgr control keycode 45 = Control_x
+ shift altgr control keycode 45 = Control_x
+ alt keycode 45 = Meta_x
+ shift alt keycode 45 = Meta_X
+ altgr alt keycode 45 = Meta_x
+ shift altgr alt keycode 45 = Meta_greater
+ control alt keycode 45 = Meta_Control_x
+ shift control alt keycode 45 = Meta_Control_x
+ altgr control alt keycode 45 = Meta_Control_x
+ shift altgr control alt keycode 45 = Meta_Control_x
+ shift shiftl keycode 45 = +X
+ altgr shiftl keycode 45 = guillemotright
+ shift altgr shiftl keycode 45 = greater
+ control shiftl keycode 45 = Control_x
+ shift control shiftl keycode 45 = Control_x
+ altgr control shiftl keycode 45 = Control_x
+ shift altgr control shiftl keycode 45 = Control_x
+ alt shiftl keycode 45 = Meta_x
+ shift alt shiftl keycode 45 = Meta_X
+ altgr alt shiftl keycode 45 = Meta_x
+ shift altgr alt shiftl keycode 45 = Meta_greater
+ control alt shiftl keycode 45 = Meta_Control_x
+ shift control alt shiftl keycode 45 = Meta_Control_x
+ altgr control alt shiftl keycode 45 = Meta_Control_x
+ shift altgr control alt shiftl keycode 45 = Meta_Control_x
+ shift shiftr keycode 45 = +X
+ altgr shiftr keycode 45 = guillemotright
+ shift altgr shiftr keycode 45 = greater
+ control shiftr keycode 45 = Control_x
+ shift control shiftr keycode 45 = Control_x
+ altgr control shiftr keycode 45 = Control_x
+ shift altgr control shiftr keycode 45 = Control_x
+ alt shiftr keycode 45 = Meta_x
+ shift alt shiftr keycode 45 = Meta_X
+ altgr alt shiftr keycode 45 = Meta_x
+ shift altgr alt shiftr keycode 45 = Meta_greater
+ control alt shiftr keycode 45 = Meta_Control_x
+ shift control alt shiftr keycode 45 = Meta_Control_x
+ altgr control alt shiftr keycode 45 = Meta_Control_x
+ shift altgr control alt shiftr keycode 45 = Meta_Control_x
+ shift shiftl shiftr keycode 45 = +X
+ altgr shiftl shiftr keycode 45 = guillemotright
+ shift altgr shiftl shiftr keycode 45 = greater
+ control shiftl shiftr keycode 45 = Control_x
+ shift control shiftl shiftr keycode 45 = Control_x
+ altgr control shiftl shiftr keycode 45 = Control_x
+ shift altgr control shiftl shiftr keycode 45 = Control_x
+ alt shiftl shiftr keycode 45 = Meta_x
+ shift alt shiftl shiftr keycode 45 = Meta_X
+ altgr alt shiftl shiftr keycode 45 = Meta_x
+ shift altgr alt shiftl shiftr keycode 45 = Meta_greater
+ control alt shiftl shiftr keycode 45 = Meta_Control_x
+ shift control alt shiftl shiftr keycode 45 = Meta_Control_x
+ altgr control alt shiftl shiftr keycode 45 = Meta_Control_x
+ shift altgr control alt shiftl shiftr keycode 45 = Meta_Control_x
+ ctrll keycode 45 = +X
+ altgr ctrll keycode 45 = guillemotright
+ shift altgr ctrll keycode 45 = greater
+ control ctrll keycode 45 = Control_x
+ shift control ctrll keycode 45 = Control_x
+ altgr control ctrll keycode 45 = Control_x
+ shift altgr control ctrll keycode 45 = Control_x
+ alt ctrll keycode 45 = Meta_x
+ shift alt ctrll keycode 45 = Meta_X
+ altgr alt ctrll keycode 45 = Meta_x
+ shift altgr alt ctrll keycode 45 = Meta_greater
+ control alt ctrll keycode 45 = Meta_Control_x
+ shift control alt ctrll keycode 45 = Meta_Control_x
+ altgr control alt ctrll keycode 45 = Meta_Control_x
+ shift altgr control alt ctrll keycode 45 = Meta_Control_x
+ shiftl ctrll keycode 45 = +X
+ altgr shiftl ctrll keycode 45 = guillemotright
+ shift altgr shiftl ctrll keycode 45 = greater
+ control shiftl ctrll keycode 45 = Control_x
+ shift control shiftl ctrll keycode 45 = Control_x
+ altgr control shiftl ctrll keycode 45 = Control_x
+ shift altgr control shiftl ctrll keycode 45 = Control_x
+ alt shiftl ctrll keycode 45 = Meta_x
+ shift alt shiftl ctrll keycode 45 = Meta_X
+ altgr alt shiftl ctrll keycode 45 = Meta_x
+ shift altgr alt shiftl ctrll keycode 45 = Meta_greater
+ control alt shiftl ctrll keycode 45 = Meta_Control_x
+ shift control alt shiftl ctrll keycode 45 = Meta_Control_x
+ altgr control alt shiftl ctrll keycode 45 = Meta_Control_x
+ shift altgr control alt shiftl ctrll keycode 45 = Meta_Control_x
+ shiftr ctrll keycode 45 = +X
+ altgr shiftr ctrll keycode 45 = guillemotright
+ shift altgr shiftr ctrll keycode 45 = greater
+ control shiftr ctrll keycode 45 = Control_x
+ shift control shiftr ctrll keycode 45 = Control_x
+ altgr control shiftr ctrll keycode 45 = Control_x
+ shift altgr control shiftr ctrll keycode 45 = Control_x
+ alt shiftr ctrll keycode 45 = Meta_x
+ shift alt shiftr ctrll keycode 45 = Meta_X
+ altgr alt shiftr ctrll keycode 45 = Meta_x
+ shift altgr alt shiftr ctrll keycode 45 = Meta_greater
+ control alt shiftr ctrll keycode 45 = Meta_Control_x
+ shift control alt shiftr ctrll keycode 45 = Meta_Control_x
+ altgr control alt shiftr ctrll keycode 45 = Meta_Control_x
+ shift altgr control alt shiftr ctrll keycode 45 = Meta_Control_x
+ shiftl shiftr ctrll keycode 45 = +X
+ altgr shiftl shiftr ctrll keycode 45 = guillemotright
+ shift altgr shiftl shiftr ctrll keycode 45 = greater
+ control shiftl shiftr ctrll keycode 45 = Control_x
+ shift control shiftl shiftr ctrll keycode 45 = Control_x
+ altgr control shiftl shiftr ctrll keycode 45 = Control_x
+ shift altgr control shiftl shiftr ctrll keycode 45 = Control_x
+ alt shiftl shiftr ctrll keycode 45 = Meta_x
+ shift alt shiftl shiftr ctrll keycode 45 = Meta_X
+ altgr alt shiftl shiftr ctrll keycode 45 = Meta_x
+ shift altgr alt shiftl shiftr ctrll keycode 45 = Meta_greater
+ control alt shiftl shiftr ctrll keycode 45 = Meta_Control_x
+ shift control alt shiftl shiftr ctrll keycode 45 = Meta_Control_x
+ altgr control alt shiftl shiftr ctrll keycode 45 = Meta_Control_x
+ shift altgr control alt shiftl shiftr ctrll keycode 45 = Meta_Control_x
+keycode 46 = +c
+ shift keycode 46 = +C
+ altgr keycode 46 = copyright
+ shift altgr keycode 46 = copyright
+ control keycode 46 = Control_c
+ shift control keycode 46 = Control_c
+ altgr control keycode 46 = Control_c
+ shift altgr control keycode 46 = Control_c
+ alt keycode 46 = Meta_c
+ shift alt keycode 46 = Meta_C
+ altgr alt keycode 46 = Meta_c
+ shift altgr alt keycode 46 = Meta_C
+ control alt keycode 46 = Meta_Control_c
+ shift control alt keycode 46 = Meta_Control_c
+ altgr control alt keycode 46 = Meta_Control_c
+ shift altgr control alt keycode 46 = Meta_Control_c
+ shift shiftl keycode 46 = +C
+ altgr shiftl keycode 46 = copyright
+ shift altgr shiftl keycode 46 = copyright
+ control shiftl keycode 46 = Control_c
+ shift control shiftl keycode 46 = Control_c
+ altgr control shiftl keycode 46 = Control_c
+ shift altgr control shiftl keycode 46 = Control_c
+ alt shiftl keycode 46 = Meta_c
+ shift alt shiftl keycode 46 = Meta_C
+ altgr alt shiftl keycode 46 = Meta_c
+ shift altgr alt shiftl keycode 46 = Meta_C
+ control alt shiftl keycode 46 = Meta_Control_c
+ shift control alt shiftl keycode 46 = Meta_Control_c
+ altgr control alt shiftl keycode 46 = Meta_Control_c
+ shift altgr control alt shiftl keycode 46 = Meta_Control_c
+ shift shiftr keycode 46 = +C
+ altgr shiftr keycode 46 = copyright
+ shift altgr shiftr keycode 46 = copyright
+ control shiftr keycode 46 = Control_c
+ shift control shiftr keycode 46 = Control_c
+ altgr control shiftr keycode 46 = Control_c
+ shift altgr control shiftr keycode 46 = Control_c
+ alt shiftr keycode 46 = Meta_c
+ shift alt shiftr keycode 46 = Meta_C
+ altgr alt shiftr keycode 46 = Meta_c
+ shift altgr alt shiftr keycode 46 = Meta_C
+ control alt shiftr keycode 46 = Meta_Control_c
+ shift control alt shiftr keycode 46 = Meta_Control_c
+ altgr control alt shiftr keycode 46 = Meta_Control_c
+ shift altgr control alt shiftr keycode 46 = Meta_Control_c
+ shift shiftl shiftr keycode 46 = +C
+ altgr shiftl shiftr keycode 46 = copyright
+ shift altgr shiftl shiftr keycode 46 = copyright
+ control shiftl shiftr keycode 46 = Control_c
+ shift control shiftl shiftr keycode 46 = Control_c
+ altgr control shiftl shiftr keycode 46 = Control_c
+ shift altgr control shiftl shiftr keycode 46 = Control_c
+ alt shiftl shiftr keycode 46 = Meta_c
+ shift alt shiftl shiftr keycode 46 = Meta_C
+ altgr alt shiftl shiftr keycode 46 = Meta_c
+ shift altgr alt shiftl shiftr keycode 46 = Meta_C
+ control alt shiftl shiftr keycode 46 = Meta_Control_c
+ shift control alt shiftl shiftr keycode 46 = Meta_Control_c
+ altgr control alt shiftl shiftr keycode 46 = Meta_Control_c
+ shift altgr control alt shiftl shiftr keycode 46 = Meta_Control_c
+ ctrll keycode 46 = +C
+ altgr ctrll keycode 46 = copyright
+ shift altgr ctrll keycode 46 = copyright
+ control ctrll keycode 46 = Control_c
+ shift control ctrll keycode 46 = Control_c
+ altgr control ctrll keycode 46 = Control_c
+ shift altgr control ctrll keycode 46 = Control_c
+ alt ctrll keycode 46 = Meta_c
+ shift alt ctrll keycode 46 = Meta_C
+ altgr alt ctrll keycode 46 = Meta_c
+ shift altgr alt ctrll keycode 46 = Meta_C
+ control alt ctrll keycode 46 = Meta_Control_c
+ shift control alt ctrll keycode 46 = Meta_Control_c
+ altgr control alt ctrll keycode 46 = Meta_Control_c
+ shift altgr control alt ctrll keycode 46 = Meta_Control_c
+ shiftl ctrll keycode 46 = +C
+ altgr shiftl ctrll keycode 46 = copyright
+ shift altgr shiftl ctrll keycode 46 = copyright
+ control shiftl ctrll keycode 46 = Control_c
+ shift control shiftl ctrll keycode 46 = Control_c
+ altgr control shiftl ctrll keycode 46 = Control_c
+ shift altgr control shiftl ctrll keycode 46 = Control_c
+ alt shiftl ctrll keycode 46 = Meta_c
+ shift alt shiftl ctrll keycode 46 = Meta_C
+ altgr alt shiftl ctrll keycode 46 = Meta_c
+ shift altgr alt shiftl ctrll keycode 46 = Meta_C
+ control alt shiftl ctrll keycode 46 = Meta_Control_c
+ shift control alt shiftl ctrll keycode 46 = Meta_Control_c
+ altgr control alt shiftl ctrll keycode 46 = Meta_Control_c
+ shift altgr control alt shiftl ctrll keycode 46 = Meta_Control_c
+ shiftr ctrll keycode 46 = +C
+ altgr shiftr ctrll keycode 46 = copyright
+ shift altgr shiftr ctrll keycode 46 = copyright
+ control shiftr ctrll keycode 46 = Control_c
+ shift control shiftr ctrll keycode 46 = Control_c
+ altgr control shiftr ctrll keycode 46 = Control_c
+ shift altgr control shiftr ctrll keycode 46 = Control_c
+ alt shiftr ctrll keycode 46 = Meta_c
+ shift alt shiftr ctrll keycode 46 = Meta_C
+ altgr alt shiftr ctrll keycode 46 = Meta_c
+ shift altgr alt shiftr ctrll keycode 46 = Meta_C
+ control alt shiftr ctrll keycode 46 = Meta_Control_c
+ shift control alt shiftr ctrll keycode 46 = Meta_Control_c
+ altgr control alt shiftr ctrll keycode 46 = Meta_Control_c
+ shift altgr control alt shiftr ctrll keycode 46 = Meta_Control_c
+ shiftl shiftr ctrll keycode 46 = +C
+ altgr shiftl shiftr ctrll keycode 46 = copyright
+ shift altgr shiftl shiftr ctrll keycode 46 = copyright
+ control shiftl shiftr ctrll keycode 46 = Control_c
+ shift control shiftl shiftr ctrll keycode 46 = Control_c
+ altgr control shiftl shiftr ctrll keycode 46 = Control_c
+ shift altgr control shiftl shiftr ctrll keycode 46 = Control_c
+ alt shiftl shiftr ctrll keycode 46 = Meta_c
+ shift alt shiftl shiftr ctrll keycode 46 = Meta_C
+ altgr alt shiftl shiftr ctrll keycode 46 = Meta_c
+ shift altgr alt shiftl shiftr ctrll keycode 46 = Meta_C
+ control alt shiftl shiftr ctrll keycode 46 = Meta_Control_c
+ shift control alt shiftl shiftr ctrll keycode 46 = Meta_Control_c
+ altgr control alt shiftl shiftr ctrll keycode 46 = Meta_Control_c
+ shift altgr control alt shiftl shiftr ctrll keycode 46 = Meta_Control_c
+keycode 47 = +v
+ shift keycode 47 = +V
+ altgr keycode 47 = U+201c
+ shift altgr keycode 47 = U+2018
+ control keycode 47 = Control_v
+ shift control keycode 47 = Control_v
+ altgr control keycode 47 = Control_v
+ shift altgr control keycode 47 = Control_v
+ alt keycode 47 = Meta_v
+ shift alt keycode 47 = Meta_V
+ altgr alt keycode 47 = Meta_v
+ shift altgr alt keycode 47 = Meta_V
+ control alt keycode 47 = Meta_Control_v
+ shift control alt keycode 47 = Meta_Control_v
+ altgr control alt keycode 47 = Meta_Control_v
+ shift altgr control alt keycode 47 = Meta_Control_v
+ shift shiftl keycode 47 = +V
+ altgr shiftl keycode 47 = U+201c
+ shift altgr shiftl keycode 47 = U+2018
+ control shiftl keycode 47 = Control_v
+ shift control shiftl keycode 47 = Control_v
+ altgr control shiftl keycode 47 = Control_v
+ shift altgr control shiftl keycode 47 = Control_v
+ alt shiftl keycode 47 = Meta_v
+ shift alt shiftl keycode 47 = Meta_V
+ altgr alt shiftl keycode 47 = Meta_v
+ shift altgr alt shiftl keycode 47 = Meta_V
+ control alt shiftl keycode 47 = Meta_Control_v
+ shift control alt shiftl keycode 47 = Meta_Control_v
+ altgr control alt shiftl keycode 47 = Meta_Control_v
+ shift altgr control alt shiftl keycode 47 = Meta_Control_v
+ shift shiftr keycode 47 = +V
+ altgr shiftr keycode 47 = U+201c
+ shift altgr shiftr keycode 47 = U+2018
+ control shiftr keycode 47 = Control_v
+ shift control shiftr keycode 47 = Control_v
+ altgr control shiftr keycode 47 = Control_v
+ shift altgr control shiftr keycode 47 = Control_v
+ alt shiftr keycode 47 = Meta_v
+ shift alt shiftr keycode 47 = Meta_V
+ altgr alt shiftr keycode 47 = Meta_v
+ shift altgr alt shiftr keycode 47 = Meta_V
+ control alt shiftr keycode 47 = Meta_Control_v
+ shift control alt shiftr keycode 47 = Meta_Control_v
+ altgr control alt shiftr keycode 47 = Meta_Control_v
+ shift altgr control alt shiftr keycode 47 = Meta_Control_v
+ shift shiftl shiftr keycode 47 = +V
+ altgr shiftl shiftr keycode 47 = U+201c
+ shift altgr shiftl shiftr keycode 47 = U+2018
+ control shiftl shiftr keycode 47 = Control_v
+ shift control shiftl shiftr keycode 47 = Control_v
+ altgr control shiftl shiftr keycode 47 = Control_v
+ shift altgr control shiftl shiftr keycode 47 = Control_v
+ alt shiftl shiftr keycode 47 = Meta_v
+ shift alt shiftl shiftr keycode 47 = Meta_V
+ altgr alt shiftl shiftr keycode 47 = Meta_v
+ shift altgr alt shiftl shiftr keycode 47 = Meta_V
+ control alt shiftl shiftr keycode 47 = Meta_Control_v
+ shift control alt shiftl shiftr keycode 47 = Meta_Control_v
+ altgr control alt shiftl shiftr keycode 47 = Meta_Control_v
+ shift altgr control alt shiftl shiftr keycode 47 = Meta_Control_v
+ ctrll keycode 47 = +V
+ altgr ctrll keycode 47 = U+201c
+ shift altgr ctrll keycode 47 = U+2018
+ control ctrll keycode 47 = Control_v
+ shift control ctrll keycode 47 = Control_v
+ altgr control ctrll keycode 47 = Control_v
+ shift altgr control ctrll keycode 47 = Control_v
+ alt ctrll keycode 47 = Meta_v
+ shift alt ctrll keycode 47 = Meta_V
+ altgr alt ctrll keycode 47 = Meta_v
+ shift altgr alt ctrll keycode 47 = Meta_V
+ control alt ctrll keycode 47 = Meta_Control_v
+ shift control alt ctrll keycode 47 = Meta_Control_v
+ altgr control alt ctrll keycode 47 = Meta_Control_v
+ shift altgr control alt ctrll keycode 47 = Meta_Control_v
+ shiftl ctrll keycode 47 = +V
+ altgr shiftl ctrll keycode 47 = U+201c
+ shift altgr shiftl ctrll keycode 47 = U+2018
+ control shiftl ctrll keycode 47 = Control_v
+ shift control shiftl ctrll keycode 47 = Control_v
+ altgr control shiftl ctrll keycode 47 = Control_v
+ shift altgr control shiftl ctrll keycode 47 = Control_v
+ alt shiftl ctrll keycode 47 = Meta_v
+ shift alt shiftl ctrll keycode 47 = Meta_V
+ altgr alt shiftl ctrll keycode 47 = Meta_v
+ shift altgr alt shiftl ctrll keycode 47 = Meta_V
+ control alt shiftl ctrll keycode 47 = Meta_Control_v
+ shift control alt shiftl ctrll keycode 47 = Meta_Control_v
+ altgr control alt shiftl ctrll keycode 47 = Meta_Control_v
+ shift altgr control alt shiftl ctrll keycode 47 = Meta_Control_v
+ shiftr ctrll keycode 47 = +V
+ altgr shiftr ctrll keycode 47 = U+201c
+ shift altgr shiftr ctrll keycode 47 = U+2018
+ control shiftr ctrll keycode 47 = Control_v
+ shift control shiftr ctrll keycode 47 = Control_v
+ altgr control shiftr ctrll keycode 47 = Control_v
+ shift altgr control shiftr ctrll keycode 47 = Control_v
+ alt shiftr ctrll keycode 47 = Meta_v
+ shift alt shiftr ctrll keycode 47 = Meta_V
+ altgr alt shiftr ctrll keycode 47 = Meta_v
+ shift altgr alt shiftr ctrll keycode 47 = Meta_V
+ control alt shiftr ctrll keycode 47 = Meta_Control_v
+ shift control alt shiftr ctrll keycode 47 = Meta_Control_v
+ altgr control alt shiftr ctrll keycode 47 = Meta_Control_v
+ shift altgr control alt shiftr ctrll keycode 47 = Meta_Control_v
+ shiftl shiftr ctrll keycode 47 = +V
+ altgr shiftl shiftr ctrll keycode 47 = U+201c
+ shift altgr shiftl shiftr ctrll keycode 47 = U+2018
+ control shiftl shiftr ctrll keycode 47 = Control_v
+ shift control shiftl shiftr ctrll keycode 47 = Control_v
+ altgr control shiftl shiftr ctrll keycode 47 = Control_v
+ shift altgr control shiftl shiftr ctrll keycode 47 = Control_v
+ alt shiftl shiftr ctrll keycode 47 = Meta_v
+ shift alt shiftl shiftr ctrll keycode 47 = Meta_V
+ altgr alt shiftl shiftr ctrll keycode 47 = Meta_v
+ shift altgr alt shiftl shiftr ctrll keycode 47 = Meta_V
+ control alt shiftl shiftr ctrll keycode 47 = Meta_Control_v
+ shift control alt shiftl shiftr ctrll keycode 47 = Meta_Control_v
+ altgr control alt shiftl shiftr ctrll keycode 47 = Meta_Control_v
+ shift altgr control alt shiftl shiftr ctrll keycode 47 = Meta_Control_v
+keycode 48 = +b
+ shift keycode 48 = +B
+ altgr keycode 48 = U+201d
+ shift altgr keycode 48 = U+2019
+ control keycode 48 = Control_b
+ shift control keycode 48 = Control_b
+ altgr control keycode 48 = Control_b
+ shift altgr control keycode 48 = Control_b
+ alt keycode 48 = Meta_b
+ shift alt keycode 48 = Meta_B
+ altgr alt keycode 48 = Meta_b
+ shift altgr alt keycode 48 = Meta_B
+ control alt keycode 48 = Meta_Control_b
+ shift control alt keycode 48 = Meta_Control_b
+ altgr control alt keycode 48 = Meta_Control_b
+ shift altgr control alt keycode 48 = Meta_Control_b
+ shift shiftl keycode 48 = +B
+ altgr shiftl keycode 48 = U+201d
+ shift altgr shiftl keycode 48 = U+2019
+ control shiftl keycode 48 = Control_b
+ shift control shiftl keycode 48 = Control_b
+ altgr control shiftl keycode 48 = Control_b
+ shift altgr control shiftl keycode 48 = Control_b
+ alt shiftl keycode 48 = Meta_b
+ shift alt shiftl keycode 48 = Meta_B
+ altgr alt shiftl keycode 48 = Meta_b
+ shift altgr alt shiftl keycode 48 = Meta_B
+ control alt shiftl keycode 48 = Meta_Control_b
+ shift control alt shiftl keycode 48 = Meta_Control_b
+ altgr control alt shiftl keycode 48 = Meta_Control_b
+ shift altgr control alt shiftl keycode 48 = Meta_Control_b
+ shift shiftr keycode 48 = +B
+ altgr shiftr keycode 48 = U+201d
+ shift altgr shiftr keycode 48 = U+2019
+ control shiftr keycode 48 = Control_b
+ shift control shiftr keycode 48 = Control_b
+ altgr control shiftr keycode 48 = Control_b
+ shift altgr control shiftr keycode 48 = Control_b
+ alt shiftr keycode 48 = Meta_b
+ shift alt shiftr keycode 48 = Meta_B
+ altgr alt shiftr keycode 48 = Meta_b
+ shift altgr alt shiftr keycode 48 = Meta_B
+ control alt shiftr keycode 48 = Meta_Control_b
+ shift control alt shiftr keycode 48 = Meta_Control_b
+ altgr control alt shiftr keycode 48 = Meta_Control_b
+ shift altgr control alt shiftr keycode 48 = Meta_Control_b
+ shift shiftl shiftr keycode 48 = +B
+ altgr shiftl shiftr keycode 48 = U+201d
+ shift altgr shiftl shiftr keycode 48 = U+2019
+ control shiftl shiftr keycode 48 = Control_b
+ shift control shiftl shiftr keycode 48 = Control_b
+ altgr control shiftl shiftr keycode 48 = Control_b
+ shift altgr control shiftl shiftr keycode 48 = Control_b
+ alt shiftl shiftr keycode 48 = Meta_b
+ shift alt shiftl shiftr keycode 48 = Meta_B
+ altgr alt shiftl shiftr keycode 48 = Meta_b
+ shift altgr alt shiftl shiftr keycode 48 = Meta_B
+ control alt shiftl shiftr keycode 48 = Meta_Control_b
+ shift control alt shiftl shiftr keycode 48 = Meta_Control_b
+ altgr control alt shiftl shiftr keycode 48 = Meta_Control_b
+ shift altgr control alt shiftl shiftr keycode 48 = Meta_Control_b
+ ctrll keycode 48 = +B
+ altgr ctrll keycode 48 = U+201d
+ shift altgr ctrll keycode 48 = U+2019
+ control ctrll keycode 48 = Control_b
+ shift control ctrll keycode 48 = Control_b
+ altgr control ctrll keycode 48 = Control_b
+ shift altgr control ctrll keycode 48 = Control_b
+ alt ctrll keycode 48 = Meta_b
+ shift alt ctrll keycode 48 = Meta_B
+ altgr alt ctrll keycode 48 = Meta_b
+ shift altgr alt ctrll keycode 48 = Meta_B
+ control alt ctrll keycode 48 = Meta_Control_b
+ shift control alt ctrll keycode 48 = Meta_Control_b
+ altgr control alt ctrll keycode 48 = Meta_Control_b
+ shift altgr control alt ctrll keycode 48 = Meta_Control_b
+ shiftl ctrll keycode 48 = +B
+ altgr shiftl ctrll keycode 48 = U+201d
+ shift altgr shiftl ctrll keycode 48 = U+2019
+ control shiftl ctrll keycode 48 = Control_b
+ shift control shiftl ctrll keycode 48 = Control_b
+ altgr control shiftl ctrll keycode 48 = Control_b
+ shift altgr control shiftl ctrll keycode 48 = Control_b
+ alt shiftl ctrll keycode 48 = Meta_b
+ shift alt shiftl ctrll keycode 48 = Meta_B
+ altgr alt shiftl ctrll keycode 48 = Meta_b
+ shift altgr alt shiftl ctrll keycode 48 = Meta_B
+ control alt shiftl ctrll keycode 48 = Meta_Control_b
+ shift control alt shiftl ctrll keycode 48 = Meta_Control_b
+ altgr control alt shiftl ctrll keycode 48 = Meta_Control_b
+ shift altgr control alt shiftl ctrll keycode 48 = Meta_Control_b
+ shiftr ctrll keycode 48 = +B
+ altgr shiftr ctrll keycode 48 = U+201d
+ shift altgr shiftr ctrll keycode 48 = U+2019
+ control shiftr ctrll keycode 48 = Control_b
+ shift control shiftr ctrll keycode 48 = Control_b
+ altgr control shiftr ctrll keycode 48 = Control_b
+ shift altgr control shiftr ctrll keycode 48 = Control_b
+ alt shiftr ctrll keycode 48 = Meta_b
+ shift alt shiftr ctrll keycode 48 = Meta_B
+ altgr alt shiftr ctrll keycode 48 = Meta_b
+ shift altgr alt shiftr ctrll keycode 48 = Meta_B
+ control alt shiftr ctrll keycode 48 = Meta_Control_b
+ shift control alt shiftr ctrll keycode 48 = Meta_Control_b
+ altgr control alt shiftr ctrll keycode 48 = Meta_Control_b
+ shift altgr control alt shiftr ctrll keycode 48 = Meta_Control_b
+ shiftl shiftr ctrll keycode 48 = +B
+ altgr shiftl shiftr ctrll keycode 48 = U+201d
+ shift altgr shiftl shiftr ctrll keycode 48 = U+2019
+ control shiftl shiftr ctrll keycode 48 = Control_b
+ shift control shiftl shiftr ctrll keycode 48 = Control_b
+ altgr control shiftl shiftr ctrll keycode 48 = Control_b
+ shift altgr control shiftl shiftr ctrll keycode 48 = Control_b
+ alt shiftl shiftr ctrll keycode 48 = Meta_b
+ shift alt shiftl shiftr ctrll keycode 48 = Meta_B
+ altgr alt shiftl shiftr ctrll keycode 48 = Meta_b
+ shift altgr alt shiftl shiftr ctrll keycode 48 = Meta_B
+ control alt shiftl shiftr ctrll keycode 48 = Meta_Control_b
+ shift control alt shiftl shiftr ctrll keycode 48 = Meta_Control_b
+ altgr control alt shiftl shiftr ctrll keycode 48 = Meta_Control_b
+ shift altgr control alt shiftl shiftr ctrll keycode 48 = Meta_Control_b
+keycode 49 = +n
+ shift keycode 49 = +N
+ shift altgr keycode 49 = +N
+ control keycode 49 = Control_n
+ shift control keycode 49 = Control_n
+ altgr control keycode 49 = Control_n
+ shift altgr control keycode 49 = Control_n
+ alt keycode 49 = Meta_n
+ shift alt keycode 49 = Meta_N
+ altgr alt keycode 49 = Meta_n
+ shift altgr alt keycode 49 = Meta_N
+ control alt keycode 49 = Meta_Control_n
+ shift control alt keycode 49 = Meta_Control_n
+ altgr control alt keycode 49 = Meta_Control_n
+ shift altgr control alt keycode 49 = Meta_Control_n
+ shift shiftl keycode 49 = +N
+ shift altgr shiftl keycode 49 = +N
+ control shiftl keycode 49 = Control_n
+ shift control shiftl keycode 49 = Control_n
+ altgr control shiftl keycode 49 = Control_n
+ shift altgr control shiftl keycode 49 = Control_n
+ alt shiftl keycode 49 = Meta_n
+ shift alt shiftl keycode 49 = Meta_N
+ altgr alt shiftl keycode 49 = Meta_n
+ shift altgr alt shiftl keycode 49 = Meta_N
+ control alt shiftl keycode 49 = Meta_Control_n
+ shift control alt shiftl keycode 49 = Meta_Control_n
+ altgr control alt shiftl keycode 49 = Meta_Control_n
+ shift altgr control alt shiftl keycode 49 = Meta_Control_n
+ shift shiftr keycode 49 = +N
+ shift altgr shiftr keycode 49 = +N
+ control shiftr keycode 49 = Control_n
+ shift control shiftr keycode 49 = Control_n
+ altgr control shiftr keycode 49 = Control_n
+ shift altgr control shiftr keycode 49 = Control_n
+ alt shiftr keycode 49 = Meta_n
+ shift alt shiftr keycode 49 = Meta_N
+ altgr alt shiftr keycode 49 = Meta_n
+ shift altgr alt shiftr keycode 49 = Meta_N
+ control alt shiftr keycode 49 = Meta_Control_n
+ shift control alt shiftr keycode 49 = Meta_Control_n
+ altgr control alt shiftr keycode 49 = Meta_Control_n
+ shift altgr control alt shiftr keycode 49 = Meta_Control_n
+ shift shiftl shiftr keycode 49 = +N
+ shift altgr shiftl shiftr keycode 49 = +N
+ control shiftl shiftr keycode 49 = Control_n
+ shift control shiftl shiftr keycode 49 = Control_n
+ altgr control shiftl shiftr keycode 49 = Control_n
+ shift altgr control shiftl shiftr keycode 49 = Control_n
+ alt shiftl shiftr keycode 49 = Meta_n
+ shift alt shiftl shiftr keycode 49 = Meta_N
+ altgr alt shiftl shiftr keycode 49 = Meta_n
+ shift altgr alt shiftl shiftr keycode 49 = Meta_N
+ control alt shiftl shiftr keycode 49 = Meta_Control_n
+ shift control alt shiftl shiftr keycode 49 = Meta_Control_n
+ altgr control alt shiftl shiftr keycode 49 = Meta_Control_n
+ shift altgr control alt shiftl shiftr keycode 49 = Meta_Control_n
+ ctrll keycode 49 = +N
+ altgr ctrll keycode 49 = +N
+ control ctrll keycode 49 = Control_n
+ shift control ctrll keycode 49 = Control_n
+ altgr control ctrll keycode 49 = Control_n
+ shift altgr control ctrll keycode 49 = Control_n
+ alt ctrll keycode 49 = Meta_n
+ shift alt ctrll keycode 49 = Meta_N
+ altgr alt ctrll keycode 49 = Meta_n
+ shift altgr alt ctrll keycode 49 = Meta_N
+ control alt ctrll keycode 49 = Meta_Control_n
+ shift control alt ctrll keycode 49 = Meta_Control_n
+ altgr control alt ctrll keycode 49 = Meta_Control_n
+ shift altgr control alt ctrll keycode 49 = Meta_Control_n
+ shiftl ctrll keycode 49 = +N
+ altgr shiftl ctrll keycode 49 = +N
+ control shiftl ctrll keycode 49 = Control_n
+ shift control shiftl ctrll keycode 49 = Control_n
+ altgr control shiftl ctrll keycode 49 = Control_n
+ shift altgr control shiftl ctrll keycode 49 = Control_n
+ alt shiftl ctrll keycode 49 = Meta_n
+ shift alt shiftl ctrll keycode 49 = Meta_N
+ altgr alt shiftl ctrll keycode 49 = Meta_n
+ shift altgr alt shiftl ctrll keycode 49 = Meta_N
+ control alt shiftl ctrll keycode 49 = Meta_Control_n
+ shift control alt shiftl ctrll keycode 49 = Meta_Control_n
+ altgr control alt shiftl ctrll keycode 49 = Meta_Control_n
+ shift altgr control alt shiftl ctrll keycode 49 = Meta_Control_n
+ shiftr ctrll keycode 49 = +N
+ altgr shiftr ctrll keycode 49 = +N
+ control shiftr ctrll keycode 49 = Control_n
+ shift control shiftr ctrll keycode 49 = Control_n
+ altgr control shiftr ctrll keycode 49 = Control_n
+ shift altgr control shiftr ctrll keycode 49 = Control_n
+ alt shiftr ctrll keycode 49 = Meta_n
+ shift alt shiftr ctrll keycode 49 = Meta_N
+ altgr alt shiftr ctrll keycode 49 = Meta_n
+ shift altgr alt shiftr ctrll keycode 49 = Meta_N
+ control alt shiftr ctrll keycode 49 = Meta_Control_n
+ shift control alt shiftr ctrll keycode 49 = Meta_Control_n
+ altgr control alt shiftr ctrll keycode 49 = Meta_Control_n
+ shift altgr control alt shiftr ctrll keycode 49 = Meta_Control_n
+ shiftl shiftr ctrll keycode 49 = +N
+ altgr shiftl shiftr ctrll keycode 49 = +N
+ control shiftl shiftr ctrll keycode 49 = Control_n
+ shift control shiftl shiftr ctrll keycode 49 = Control_n
+ altgr control shiftl shiftr ctrll keycode 49 = Control_n
+ shift altgr control shiftl shiftr ctrll keycode 49 = Control_n
+ alt shiftl shiftr ctrll keycode 49 = Meta_n
+ shift alt shiftl shiftr ctrll keycode 49 = Meta_N
+ altgr alt shiftl shiftr ctrll keycode 49 = Meta_n
+ shift altgr alt shiftl shiftr ctrll keycode 49 = Meta_N
+ control alt shiftl shiftr ctrll keycode 49 = Meta_Control_n
+ shift control alt shiftl shiftr ctrll keycode 49 = Meta_Control_n
+ altgr control alt shiftl shiftr ctrll keycode 49 = Meta_Control_n
+ shift altgr control alt shiftl shiftr ctrll keycode 49 = Meta_Control_n
+keycode 50 = +m
+ shift keycode 50 = +M
+ altgr keycode 50 = +mu
+ shift altgr keycode 50 = +mu
+ control keycode 50 = Control_m
+ shift control keycode 50 = Control_m
+ altgr control keycode 50 = Control_m
+ shift altgr control keycode 50 = Control_m
+ alt keycode 50 = Meta_m
+ shift alt keycode 50 = Meta_M
+ altgr alt keycode 50 = Meta_m
+ shift altgr alt keycode 50 = Meta_M
+ control alt keycode 50 = Meta_Control_m
+ shift control alt keycode 50 = Meta_Control_m
+ altgr control alt keycode 50 = Meta_Control_m
+ shift altgr control alt keycode 50 = Meta_Control_m
+ shift shiftl keycode 50 = +M
+ altgr shiftl keycode 50 = +mu
+ shift altgr shiftl keycode 50 = +mu
+ control shiftl keycode 50 = Control_m
+ shift control shiftl keycode 50 = Control_m
+ altgr control shiftl keycode 50 = Control_m
+ shift altgr control shiftl keycode 50 = Control_m
+ alt shiftl keycode 50 = Meta_m
+ shift alt shiftl keycode 50 = Meta_M
+ altgr alt shiftl keycode 50 = Meta_m
+ shift altgr alt shiftl keycode 50 = Meta_M
+ control alt shiftl keycode 50 = Meta_Control_m
+ shift control alt shiftl keycode 50 = Meta_Control_m
+ altgr control alt shiftl keycode 50 = Meta_Control_m
+ shift altgr control alt shiftl keycode 50 = Meta_Control_m
+ shift shiftr keycode 50 = +M
+ altgr shiftr keycode 50 = +mu
+ shift altgr shiftr keycode 50 = +mu
+ control shiftr keycode 50 = Control_m
+ shift control shiftr keycode 50 = Control_m
+ altgr control shiftr keycode 50 = Control_m
+ shift altgr control shiftr keycode 50 = Control_m
+ alt shiftr keycode 50 = Meta_m
+ shift alt shiftr keycode 50 = Meta_M
+ altgr alt shiftr keycode 50 = Meta_m
+ shift altgr alt shiftr keycode 50 = Meta_M
+ control alt shiftr keycode 50 = Meta_Control_m
+ shift control alt shiftr keycode 50 = Meta_Control_m
+ altgr control alt shiftr keycode 50 = Meta_Control_m
+ shift altgr control alt shiftr keycode 50 = Meta_Control_m
+ shift shiftl shiftr keycode 50 = +M
+ altgr shiftl shiftr keycode 50 = +mu
+ shift altgr shiftl shiftr keycode 50 = +mu
+ control shiftl shiftr keycode 50 = Control_m
+ shift control shiftl shiftr keycode 50 = Control_m
+ altgr control shiftl shiftr keycode 50 = Control_m
+ shift altgr control shiftl shiftr keycode 50 = Control_m
+ alt shiftl shiftr keycode 50 = Meta_m
+ shift alt shiftl shiftr keycode 50 = Meta_M
+ altgr alt shiftl shiftr keycode 50 = Meta_m
+ shift altgr alt shiftl shiftr keycode 50 = Meta_M
+ control alt shiftl shiftr keycode 50 = Meta_Control_m
+ shift control alt shiftl shiftr keycode 50 = Meta_Control_m
+ altgr control alt shiftl shiftr keycode 50 = Meta_Control_m
+ shift altgr control alt shiftl shiftr keycode 50 = Meta_Control_m
+ ctrll keycode 50 = +M
+ altgr ctrll keycode 50 = Mu
+ shift altgr ctrll keycode 50 = Mu
+ control ctrll keycode 50 = Control_m
+ shift control ctrll keycode 50 = Control_m
+ altgr control ctrll keycode 50 = Control_m
+ shift altgr control ctrll keycode 50 = Control_m
+ alt ctrll keycode 50 = Meta_m
+ shift alt ctrll keycode 50 = Meta_M
+ altgr alt ctrll keycode 50 = Meta_m
+ shift altgr alt ctrll keycode 50 = Meta_M
+ control alt ctrll keycode 50 = Meta_Control_m
+ shift control alt ctrll keycode 50 = Meta_Control_m
+ altgr control alt ctrll keycode 50 = Meta_Control_m
+ shift altgr control alt ctrll keycode 50 = Meta_Control_m
+ shiftl ctrll keycode 50 = +M
+ altgr shiftl ctrll keycode 50 = Mu
+ shift altgr shiftl ctrll keycode 50 = Mu
+ control shiftl ctrll keycode 50 = Control_m
+ shift control shiftl ctrll keycode 50 = Control_m
+ altgr control shiftl ctrll keycode 50 = Control_m
+ shift altgr control shiftl ctrll keycode 50 = Control_m
+ alt shiftl ctrll keycode 50 = Meta_m
+ shift alt shiftl ctrll keycode 50 = Meta_M
+ altgr alt shiftl ctrll keycode 50 = Meta_m
+ shift altgr alt shiftl ctrll keycode 50 = Meta_M
+ control alt shiftl ctrll keycode 50 = Meta_Control_m
+ shift control alt shiftl ctrll keycode 50 = Meta_Control_m
+ altgr control alt shiftl ctrll keycode 50 = Meta_Control_m
+ shift altgr control alt shiftl ctrll keycode 50 = Meta_Control_m
+ shiftr ctrll keycode 50 = +M
+ altgr shiftr ctrll keycode 50 = Mu
+ shift altgr shiftr ctrll keycode 50 = Mu
+ control shiftr ctrll keycode 50 = Control_m
+ shift control shiftr ctrll keycode 50 = Control_m
+ altgr control shiftr ctrll keycode 50 = Control_m
+ shift altgr control shiftr ctrll keycode 50 = Control_m
+ alt shiftr ctrll keycode 50 = Meta_m
+ shift alt shiftr ctrll keycode 50 = Meta_M
+ altgr alt shiftr ctrll keycode 50 = Meta_m
+ shift altgr alt shiftr ctrll keycode 50 = Meta_M
+ control alt shiftr ctrll keycode 50 = Meta_Control_m
+ shift control alt shiftr ctrll keycode 50 = Meta_Control_m
+ altgr control alt shiftr ctrll keycode 50 = Meta_Control_m
+ shift altgr control alt shiftr ctrll keycode 50 = Meta_Control_m
+ shiftl shiftr ctrll keycode 50 = +M
+ altgr shiftl shiftr ctrll keycode 50 = Mu
+ shift altgr shiftl shiftr ctrll keycode 50 = Mu
+ control shiftl shiftr ctrll keycode 50 = Control_m
+ shift control shiftl shiftr ctrll keycode 50 = Control_m
+ altgr control shiftl shiftr ctrll keycode 50 = Control_m
+ shift altgr control shiftl shiftr ctrll keycode 50 = Control_m
+ alt shiftl shiftr ctrll keycode 50 = Meta_m
+ shift alt shiftl shiftr ctrll keycode 50 = Meta_M
+ altgr alt shiftl shiftr ctrll keycode 50 = Meta_m
+ shift altgr alt shiftl shiftr ctrll keycode 50 = Meta_M
+ control alt shiftl shiftr ctrll keycode 50 = Meta_Control_m
+ shift control alt shiftl shiftr ctrll keycode 50 = Meta_Control_m
+ altgr control alt shiftl shiftr ctrll keycode 50 = Meta_Control_m
+ shift altgr control alt shiftl shiftr ctrll keycode 50 = Meta_Control_m
+keycode 51 = comma less U+2500 multiply
+ alt keycode 51 = Meta_comma
+ shift alt keycode 51 = Meta_less
+ altgr alt keycode 51 = Meta_comma
+ shift altgr alt keycode 51 = Meta_less
+ shiftl keycode 51 = comma
+ shift shiftl keycode 51 = less
+ altgr shiftl keycode 51 = U+2500
+ shift altgr shiftl keycode 51 = multiply
+ alt shiftl keycode 51 = Meta_comma
+ shift alt shiftl keycode 51 = Meta_less
+ altgr alt shiftl keycode 51 = Meta_comma
+ shift altgr alt shiftl keycode 51 = Meta_less
+ shiftr keycode 51 = comma
+ shift shiftr keycode 51 = less
+ altgr shiftr keycode 51 = U+2500
+ shift altgr shiftr keycode 51 = multiply
+ alt shiftr keycode 51 = Meta_comma
+ shift alt shiftr keycode 51 = Meta_less
+ altgr alt shiftr keycode 51 = Meta_comma
+ shift altgr alt shiftr keycode 51 = Meta_less
+ shiftl shiftr keycode 51 = comma
+ shift shiftl shiftr keycode 51 = less
+ altgr shiftl shiftr keycode 51 = U+2500
+ shift altgr shiftl shiftr keycode 51 = multiply
+ alt shiftl shiftr keycode 51 = Meta_comma
+ shift alt shiftl shiftr keycode 51 = Meta_less
+ altgr alt shiftl shiftr keycode 51 = Meta_comma
+ shift altgr alt shiftl shiftr keycode 51 = Meta_less
+ ctrll keycode 51 = comma
+ shift ctrll keycode 51 = less
+ altgr ctrll keycode 51 = U+2500
+ shift altgr ctrll keycode 51 = multiply
+ alt ctrll keycode 51 = Meta_comma
+ shift alt ctrll keycode 51 = Meta_less
+ altgr alt ctrll keycode 51 = Meta_comma
+ shift altgr alt ctrll keycode 51 = Meta_less
+ shiftl ctrll keycode 51 = comma
+ shift shiftl ctrll keycode 51 = less
+ altgr shiftl ctrll keycode 51 = U+2500
+ shift altgr shiftl ctrll keycode 51 = multiply
+ alt shiftl ctrll keycode 51 = Meta_comma
+ shift alt shiftl ctrll keycode 51 = Meta_less
+ altgr alt shiftl ctrll keycode 51 = Meta_comma
+ shift altgr alt shiftl ctrll keycode 51 = Meta_less
+ shiftr ctrll keycode 51 = comma
+ shift shiftr ctrll keycode 51 = less
+ altgr shiftr ctrll keycode 51 = U+2500
+ shift altgr shiftr ctrll keycode 51 = multiply
+ alt shiftr ctrll keycode 51 = Meta_comma
+ shift alt shiftr ctrll keycode 51 = Meta_less
+ altgr alt shiftr ctrll keycode 51 = Meta_comma
+ shift altgr alt shiftr ctrll keycode 51 = Meta_less
+ shiftl shiftr ctrll keycode 51 = comma
+ shift shiftl shiftr ctrll keycode 51 = less
+ altgr shiftl shiftr ctrll keycode 51 = U+2500
+ shift altgr shiftl shiftr ctrll keycode 51 = multiply
+ alt shiftl shiftr ctrll keycode 51 = Meta_comma
+ shift alt shiftl shiftr ctrll keycode 51 = Meta_less
+ altgr alt shiftl shiftr ctrll keycode 51 = Meta_comma
+ shift altgr alt shiftl shiftr ctrll keycode 51 = Meta_less
+keycode 52 = period
+ shift keycode 52 = greater
+ altgr keycode 52 = periodcentered
+ shift altgr keycode 52 = division
+ control keycode 52 = Compose
+ shift control keycode 52 = Compose
+ altgr control keycode 52 = Compose
+ shift altgr control keycode 52 = Compose
+ alt keycode 52 = Meta_period
+ shift alt keycode 52 = Meta_greater
+ altgr alt keycode 52 = Meta_period
+ shift altgr alt keycode 52 = Meta_greater
+ control alt keycode 52 = Compose
+ shift control alt keycode 52 = Compose
+ altgr control alt keycode 52 = Compose
+ shift altgr control alt keycode 52 = Compose
+ shift shiftl keycode 52 = greater
+ altgr shiftl keycode 52 = periodcentered
+ shift altgr shiftl keycode 52 = division
+ control shiftl keycode 52 = Compose
+ shift control shiftl keycode 52 = Compose
+ altgr control shiftl keycode 52 = Compose
+ shift altgr control shiftl keycode 52 = Compose
+ alt shiftl keycode 52 = Meta_period
+ shift alt shiftl keycode 52 = Meta_greater
+ altgr alt shiftl keycode 52 = Meta_period
+ shift altgr alt shiftl keycode 52 = Meta_greater
+ control alt shiftl keycode 52 = Compose
+ shift control alt shiftl keycode 52 = Compose
+ altgr control alt shiftl keycode 52 = Compose
+ shift altgr control alt shiftl keycode 52 = Compose
+ shift shiftr keycode 52 = greater
+ altgr shiftr keycode 52 = periodcentered
+ shift altgr shiftr keycode 52 = division
+ control shiftr keycode 52 = Compose
+ shift control shiftr keycode 52 = Compose
+ altgr control shiftr keycode 52 = Compose
+ shift altgr control shiftr keycode 52 = Compose
+ alt shiftr keycode 52 = Meta_period
+ shift alt shiftr keycode 52 = Meta_greater
+ altgr alt shiftr keycode 52 = Meta_period
+ shift altgr alt shiftr keycode 52 = Meta_greater
+ control alt shiftr keycode 52 = Compose
+ shift control alt shiftr keycode 52 = Compose
+ altgr control alt shiftr keycode 52 = Compose
+ shift altgr control alt shiftr keycode 52 = Compose
+ shift shiftl shiftr keycode 52 = greater
+ altgr shiftl shiftr keycode 52 = periodcentered
+ shift altgr shiftl shiftr keycode 52 = division
+ control shiftl shiftr keycode 52 = Compose
+ shift control shiftl shiftr keycode 52 = Compose
+ altgr control shiftl shiftr keycode 52 = Compose
+ shift altgr control shiftl shiftr keycode 52 = Compose
+ alt shiftl shiftr keycode 52 = Meta_period
+ shift alt shiftl shiftr keycode 52 = Meta_greater
+ altgr alt shiftl shiftr keycode 52 = Meta_period
+ shift altgr alt shiftl shiftr keycode 52 = Meta_greater
+ control alt shiftl shiftr keycode 52 = Compose
+ shift control alt shiftl shiftr keycode 52 = Compose
+ altgr control alt shiftl shiftr keycode 52 = Compose
+ shift altgr control alt shiftl shiftr keycode 52 = Compose
+ shift ctrll keycode 52 = greater
+ altgr ctrll keycode 52 = periodcentered
+ shift altgr ctrll keycode 52 = division
+ control ctrll keycode 52 = Compose
+ shift control ctrll keycode 52 = Compose
+ altgr control ctrll keycode 52 = Compose
+ shift altgr control ctrll keycode 52 = Compose
+ alt ctrll keycode 52 = Meta_period
+ shift alt ctrll keycode 52 = Meta_greater
+ altgr alt ctrll keycode 52 = Meta_period
+ shift altgr alt ctrll keycode 52 = Meta_greater
+ control alt ctrll keycode 52 = Compose
+ shift control alt ctrll keycode 52 = Compose
+ altgr control alt ctrll keycode 52 = Compose
+ shift altgr control alt ctrll keycode 52 = Compose
+ shift shiftl ctrll keycode 52 = greater
+ altgr shiftl ctrll keycode 52 = periodcentered
+ shift altgr shiftl ctrll keycode 52 = division
+ control shiftl ctrll keycode 52 = Compose
+ shift control shiftl ctrll keycode 52 = Compose
+ altgr control shiftl ctrll keycode 52 = Compose
+ shift altgr control shiftl ctrll keycode 52 = Compose
+ alt shiftl ctrll keycode 52 = Meta_period
+ shift alt shiftl ctrll keycode 52 = Meta_greater
+ altgr alt shiftl ctrll keycode 52 = Meta_period
+ shift altgr alt shiftl ctrll keycode 52 = Meta_greater
+ control alt shiftl ctrll keycode 52 = Compose
+ shift control alt shiftl ctrll keycode 52 = Compose
+ altgr control alt shiftl ctrll keycode 52 = Compose
+ shift altgr control alt shiftl ctrll keycode 52 = Compose
+ shift shiftr ctrll keycode 52 = greater
+ altgr shiftr ctrll keycode 52 = periodcentered
+ shift altgr shiftr ctrll keycode 52 = division
+ control shiftr ctrll keycode 52 = Compose
+ shift control shiftr ctrll keycode 52 = Compose
+ altgr control shiftr ctrll keycode 52 = Compose
+ shift altgr control shiftr ctrll keycode 52 = Compose
+ alt shiftr ctrll keycode 52 = Meta_period
+ shift alt shiftr ctrll keycode 52 = Meta_greater
+ altgr alt shiftr ctrll keycode 52 = Meta_period
+ shift altgr alt shiftr ctrll keycode 52 = Meta_greater
+ control alt shiftr ctrll keycode 52 = Compose
+ shift control alt shiftr ctrll keycode 52 = Compose
+ altgr control alt shiftr ctrll keycode 52 = Compose
+ shift altgr control alt shiftr ctrll keycode 52 = Compose
+ shift shiftl shiftr ctrll keycode 52 = greater
+ altgr shiftl shiftr ctrll keycode 52 = periodcentered
+ shift altgr shiftl shiftr ctrll keycode 52 = division
+ control shiftl shiftr ctrll keycode 52 = Compose
+ shift control shiftl shiftr ctrll keycode 52 = Compose
+ altgr control shiftl shiftr ctrll keycode 52 = Compose
+ shift altgr control shiftl shiftr ctrll keycode 52 = Compose
+ alt shiftl shiftr ctrll keycode 52 = Meta_period
+ shift alt shiftl shiftr ctrll keycode 52 = Meta_greater
+ altgr alt shiftl shiftr ctrll keycode 52 = Meta_period
+ shift altgr alt shiftl shiftr ctrll keycode 52 = Meta_greater
+ control alt shiftl shiftr ctrll keycode 52 = Compose
+ shift control alt shiftl shiftr ctrll keycode 52 = Compose
+ altgr control alt shiftl shiftr ctrll keycode 52 = Compose
+ shift altgr control alt shiftl shiftr ctrll keycode 52 = Compose
+keycode 53 = semicolon
+ shift keycode 53 = colon
+ altgr keycode 53 = U+0323
+ shift altgr keycode 53 = period
+ control keycode 53 = Compose
+ shift control keycode 53 = Compose
+ altgr control keycode 53 = Compose
+ shift altgr control keycode 53 = Compose
+ alt keycode 53 = Meta_semicolon
+ shift alt keycode 53 = Meta_colon
+ altgr alt keycode 53 = Meta_semicolon
+ shift altgr alt keycode 53 = Meta_period
+ control alt keycode 53 = Compose
+ shift control alt keycode 53 = Compose
+ altgr control alt keycode 53 = Compose
+ shift altgr control alt keycode 53 = Compose
+ shift shiftl keycode 53 = colon
+ altgr shiftl keycode 53 = U+0323
+ shift altgr shiftl keycode 53 = period
+ control shiftl keycode 53 = Compose
+ shift control shiftl keycode 53 = Compose
+ altgr control shiftl keycode 53 = Compose
+ shift altgr control shiftl keycode 53 = Compose
+ alt shiftl keycode 53 = Meta_semicolon
+ shift alt shiftl keycode 53 = Meta_colon
+ altgr alt shiftl keycode 53 = Meta_semicolon
+ shift altgr alt shiftl keycode 53 = Meta_period
+ control alt shiftl keycode 53 = Compose
+ shift control alt shiftl keycode 53 = Compose
+ altgr control alt shiftl keycode 53 = Compose
+ shift altgr control alt shiftl keycode 53 = Compose
+ shift shiftr keycode 53 = colon
+ altgr shiftr keycode 53 = U+0323
+ shift altgr shiftr keycode 53 = period
+ control shiftr keycode 53 = Compose
+ shift control shiftr keycode 53 = Compose
+ altgr control shiftr keycode 53 = Compose
+ shift altgr control shiftr keycode 53 = Compose
+ alt shiftr keycode 53 = Meta_semicolon
+ shift alt shiftr keycode 53 = Meta_colon
+ altgr alt shiftr keycode 53 = Meta_semicolon
+ shift altgr alt shiftr keycode 53 = Meta_period
+ control alt shiftr keycode 53 = Compose
+ shift control alt shiftr keycode 53 = Compose
+ altgr control alt shiftr keycode 53 = Compose
+ shift altgr control alt shiftr keycode 53 = Compose
+ shift shiftl shiftr keycode 53 = colon
+ altgr shiftl shiftr keycode 53 = U+0323
+ shift altgr shiftl shiftr keycode 53 = period
+ control shiftl shiftr keycode 53 = Compose
+ shift control shiftl shiftr keycode 53 = Compose
+ altgr control shiftl shiftr keycode 53 = Compose
+ shift altgr control shiftl shiftr keycode 53 = Compose
+ alt shiftl shiftr keycode 53 = Meta_semicolon
+ shift alt shiftl shiftr keycode 53 = Meta_colon
+ altgr alt shiftl shiftr keycode 53 = Meta_semicolon
+ shift altgr alt shiftl shiftr keycode 53 = Meta_period
+ control alt shiftl shiftr keycode 53 = Compose
+ shift control alt shiftl shiftr keycode 53 = Compose
+ altgr control alt shiftl shiftr keycode 53 = Compose
+ shift altgr control alt shiftl shiftr keycode 53 = Compose
+ shift ctrll keycode 53 = colon
+ altgr ctrll keycode 53 = U+0323
+ shift altgr ctrll keycode 53 = period
+ control ctrll keycode 53 = Compose
+ shift control ctrll keycode 53 = Compose
+ altgr control ctrll keycode 53 = Compose
+ shift altgr control ctrll keycode 53 = Compose
+ alt ctrll keycode 53 = Meta_semicolon
+ shift alt ctrll keycode 53 = Meta_colon
+ altgr alt ctrll keycode 53 = Meta_semicolon
+ shift altgr alt ctrll keycode 53 = Meta_period
+ control alt ctrll keycode 53 = Compose
+ shift control alt ctrll keycode 53 = Compose
+ altgr control alt ctrll keycode 53 = Compose
+ shift altgr control alt ctrll keycode 53 = Compose
+ shift shiftl ctrll keycode 53 = colon
+ altgr shiftl ctrll keycode 53 = U+0323
+ shift altgr shiftl ctrll keycode 53 = period
+ control shiftl ctrll keycode 53 = Compose
+ shift control shiftl ctrll keycode 53 = Compose
+ altgr control shiftl ctrll keycode 53 = Compose
+ shift altgr control shiftl ctrll keycode 53 = Compose
+ alt shiftl ctrll keycode 53 = Meta_semicolon
+ shift alt shiftl ctrll keycode 53 = Meta_colon
+ altgr alt shiftl ctrll keycode 53 = Meta_semicolon
+ shift altgr alt shiftl ctrll keycode 53 = Meta_period
+ control alt shiftl ctrll keycode 53 = Compose
+ shift control alt shiftl ctrll keycode 53 = Compose
+ altgr control alt shiftl ctrll keycode 53 = Compose
+ shift altgr control alt shiftl ctrll keycode 53 = Compose
+ shift shiftr ctrll keycode 53 = colon
+ altgr shiftr ctrll keycode 53 = U+0323
+ shift altgr shiftr ctrll keycode 53 = period
+ control shiftr ctrll keycode 53 = Compose
+ shift control shiftr ctrll keycode 53 = Compose
+ altgr control shiftr ctrll keycode 53 = Compose
+ shift altgr control shiftr ctrll keycode 53 = Compose
+ alt shiftr ctrll keycode 53 = Meta_semicolon
+ shift alt shiftr ctrll keycode 53 = Meta_colon
+ altgr alt shiftr ctrll keycode 53 = Meta_semicolon
+ shift altgr alt shiftr ctrll keycode 53 = Meta_period
+ control alt shiftr ctrll keycode 53 = Compose
+ shift control alt shiftr ctrll keycode 53 = Compose
+ altgr control alt shiftr ctrll keycode 53 = Compose
+ shift altgr control alt shiftr ctrll keycode 53 = Compose
+ shift shiftl shiftr ctrll keycode 53 = colon
+ altgr shiftl shiftr ctrll keycode 53 = U+0323
+ shift altgr shiftl shiftr ctrll keycode 53 = period
+ control shiftl shiftr ctrll keycode 53 = Compose
+ shift control shiftl shiftr ctrll keycode 53 = Compose
+ altgr control shiftl shiftr ctrll keycode 53 = Compose
+ shift altgr control shiftl shiftr ctrll keycode 53 = Compose
+ alt shiftl shiftr ctrll keycode 53 = Meta_semicolon
+ shift alt shiftl shiftr ctrll keycode 53 = Meta_colon
+ altgr alt shiftl shiftr ctrll keycode 53 = Meta_semicolon
+ shift altgr alt shiftl shiftr ctrll keycode 53 = Meta_period
+ control alt shiftl shiftr ctrll keycode 53 = Compose
+ shift control alt shiftl shiftr ctrll keycode 53 = Compose
+ altgr control alt shiftl shiftr ctrll keycode 53 = Compose
+ shift altgr control alt shiftl shiftr ctrll keycode 53 = Compose
+keycode 54 = Shift
+keycode 55 = KP_Multiply
+ altgr keycode 55 = Hex_C
+ shift alt keycode 55 = Hex_C
+ altgr shiftl keycode 55 = Hex_C
+ shift alt shiftl keycode 55 = Hex_C
+ altgr shiftr keycode 55 = Hex_C
+ shift alt shiftr keycode 55 = Hex_C
+ altgr shiftl shiftr keycode 55 = Hex_C
+ shift alt shiftl shiftr keycode 55 = Hex_C
+ altgr ctrll keycode 55 = Hex_C
+ shift alt ctrll keycode 55 = Hex_C
+ altgr shiftl ctrll keycode 55 = Hex_C
+ shift alt shiftl ctrll keycode 55 = Hex_C
+ altgr shiftr ctrll keycode 55 = Hex_C
+ shift alt shiftr ctrll keycode 55 = Hex_C
+ altgr shiftl shiftr ctrll keycode 55 = Hex_C
+ shift alt shiftl shiftr ctrll keycode 55 = Hex_C
+keycode 56 = Alt
+keycode 57 = space
+ control keycode 57 = nul
+ shift control keycode 57 = nul
+ altgr control keycode 57 = nul
+ shift altgr control keycode 57 = nul
+ alt keycode 57 = Meta_space
+ shift alt keycode 57 = Meta_space
+ altgr alt keycode 57 = Meta_space
+ shift altgr alt keycode 57 = Meta_space
+ control alt keycode 57 = Meta_nul
+ shift control alt keycode 57 = Meta_nul
+ altgr control alt keycode 57 = Meta_nul
+ shift altgr control alt keycode 57 = Meta_nul
+ control shiftl keycode 57 = nul
+ shift control shiftl keycode 57 = nul
+ altgr control shiftl keycode 57 = nul
+ shift altgr control shiftl keycode 57 = nul
+ alt shiftl keycode 57 = Meta_space
+ shift alt shiftl keycode 57 = Meta_space
+ altgr alt shiftl keycode 57 = Meta_space
+ shift altgr alt shiftl keycode 57 = Meta_space
+ control alt shiftl keycode 57 = Meta_nul
+ shift control alt shiftl keycode 57 = Meta_nul
+ altgr control alt shiftl keycode 57 = Meta_nul
+ shift altgr control alt shiftl keycode 57 = Meta_nul
+ control shiftr keycode 57 = nul
+ shift control shiftr keycode 57 = nul
+ altgr control shiftr keycode 57 = nul
+ shift altgr control shiftr keycode 57 = nul
+ alt shiftr keycode 57 = Meta_space
+ shift alt shiftr keycode 57 = Meta_space
+ altgr alt shiftr keycode 57 = Meta_space
+ shift altgr alt shiftr keycode 57 = Meta_space
+ control alt shiftr keycode 57 = Meta_nul
+ shift control alt shiftr keycode 57 = Meta_nul
+ altgr control alt shiftr keycode 57 = Meta_nul
+ shift altgr control alt shiftr keycode 57 = Meta_nul
+ control shiftl shiftr keycode 57 = nul
+ shift control shiftl shiftr keycode 57 = nul
+ altgr control shiftl shiftr keycode 57 = nul
+ shift altgr control shiftl shiftr keycode 57 = nul
+ alt shiftl shiftr keycode 57 = Meta_space
+ shift alt shiftl shiftr keycode 57 = Meta_space
+ altgr alt shiftl shiftr keycode 57 = Meta_space
+ shift altgr alt shiftl shiftr keycode 57 = Meta_space
+ control alt shiftl shiftr keycode 57 = Meta_nul
+ shift control alt shiftl shiftr keycode 57 = Meta_nul
+ altgr control alt shiftl shiftr keycode 57 = Meta_nul
+ shift altgr control alt shiftl shiftr keycode 57 = Meta_nul
+ control ctrll keycode 57 = nul
+ shift control ctrll keycode 57 = nul
+ altgr control ctrll keycode 57 = nul
+ shift altgr control ctrll keycode 57 = nul
+ alt ctrll keycode 57 = Meta_space
+ shift alt ctrll keycode 57 = Meta_space
+ altgr alt ctrll keycode 57 = Meta_space
+ shift altgr alt ctrll keycode 57 = Meta_space
+ control alt ctrll keycode 57 = Meta_nul
+ shift control alt ctrll keycode 57 = Meta_nul
+ altgr control alt ctrll keycode 57 = Meta_nul
+ shift altgr control alt ctrll keycode 57 = Meta_nul
+ control shiftl ctrll keycode 57 = nul
+ shift control shiftl ctrll keycode 57 = nul
+ altgr control shiftl ctrll keycode 57 = nul
+ shift altgr control shiftl ctrll keycode 57 = nul
+ alt shiftl ctrll keycode 57 = Meta_space
+ shift alt shiftl ctrll keycode 57 = Meta_space
+ altgr alt shiftl ctrll keycode 57 = Meta_space
+ shift altgr alt shiftl ctrll keycode 57 = Meta_space
+ control alt shiftl ctrll keycode 57 = Meta_nul
+ shift control alt shiftl ctrll keycode 57 = Meta_nul
+ altgr control alt shiftl ctrll keycode 57 = Meta_nul
+ shift altgr control alt shiftl ctrll keycode 57 = Meta_nul
+ control shiftr ctrll keycode 57 = nul
+ shift control shiftr ctrll keycode 57 = nul
+ altgr control shiftr ctrll keycode 57 = nul
+ shift altgr control shiftr ctrll keycode 57 = nul
+ alt shiftr ctrll keycode 57 = Meta_space
+ shift alt shiftr ctrll keycode 57 = Meta_space
+ altgr alt shiftr ctrll keycode 57 = Meta_space
+ shift altgr alt shiftr ctrll keycode 57 = Meta_space
+ control alt shiftr ctrll keycode 57 = Meta_nul
+ shift control alt shiftr ctrll keycode 57 = Meta_nul
+ altgr control alt shiftr ctrll keycode 57 = Meta_nul
+ shift altgr control alt shiftr ctrll keycode 57 = Meta_nul
+ control shiftl shiftr ctrll keycode 57 = nul
+ shift control shiftl shiftr ctrll keycode 57 = nul
+ altgr control shiftl shiftr ctrll keycode 57 = nul
+ shift altgr control shiftl shiftr ctrll keycode 57 = nul
+ alt shiftl shiftr ctrll keycode 57 = Meta_space
+ shift alt shiftl shiftr ctrll keycode 57 = Meta_space
+ altgr alt shiftl shiftr ctrll keycode 57 = Meta_space
+ shift altgr alt shiftl shiftr ctrll keycode 57 = Meta_space
+ control alt shiftl shiftr ctrll keycode 57 = Meta_nul
+ shift control alt shiftl shiftr ctrll keycode 57 = Meta_nul
+ altgr control alt shiftl shiftr ctrll keycode 57 = Meta_nul
+ shift altgr control alt shiftl shiftr ctrll keycode 57 = Meta_nul
+keycode 58 = CtrlL_Lock
+keycode 59 = F1
+ shift keycode 59 = F13
+ altgr keycode 59 = Console_13
+ shift altgr keycode 59 = Console_25
+ control keycode 59 = F25
+ shift control keycode 59 = F37
+ altgr control keycode 59 = Console_13
+ shift altgr control keycode 59 = Console_25
+ alt keycode 59 = Console_1
+ shift alt keycode 59 = Console_13
+ control alt keycode 59 = Console_1
+ shift control alt keycode 59 = Console_13
+ shift shiftl keycode 59 = F13
+ altgr shiftl keycode 59 = Console_13
+ shift altgr shiftl keycode 59 = Console_25
+ control shiftl keycode 59 = F25
+ shift control shiftl keycode 59 = F37
+ altgr control shiftl keycode 59 = Console_13
+ shift altgr control shiftl keycode 59 = Console_25
+ alt shiftl keycode 59 = Console_1
+ shift alt shiftl keycode 59 = Console_13
+ control alt shiftl keycode 59 = Console_1
+ shift control alt shiftl keycode 59 = Console_13
+ shift shiftr keycode 59 = F13
+ altgr shiftr keycode 59 = Console_13
+ shift altgr shiftr keycode 59 = Console_25
+ control shiftr keycode 59 = F25
+ shift control shiftr keycode 59 = F37
+ altgr control shiftr keycode 59 = Console_13
+ shift altgr control shiftr keycode 59 = Console_25
+ alt shiftr keycode 59 = Console_1
+ shift alt shiftr keycode 59 = Console_13
+ control alt shiftr keycode 59 = Console_1
+ shift control alt shiftr keycode 59 = Console_13
+ shift shiftl shiftr keycode 59 = F13
+ altgr shiftl shiftr keycode 59 = Console_13
+ shift altgr shiftl shiftr keycode 59 = Console_25
+ control shiftl shiftr keycode 59 = F25
+ shift control shiftl shiftr keycode 59 = F37
+ altgr control shiftl shiftr keycode 59 = Console_13
+ shift altgr control shiftl shiftr keycode 59 = Console_25
+ alt shiftl shiftr keycode 59 = Console_1
+ shift alt shiftl shiftr keycode 59 = Console_13
+ control alt shiftl shiftr keycode 59 = Console_1
+ shift control alt shiftl shiftr keycode 59 = Console_13
+ shift ctrll keycode 59 = F13
+ altgr ctrll keycode 59 = Console_13
+ shift altgr ctrll keycode 59 = Console_25
+ control ctrll keycode 59 = F25
+ shift control ctrll keycode 59 = F37
+ altgr control ctrll keycode 59 = Console_13
+ shift altgr control ctrll keycode 59 = Console_25
+ alt ctrll keycode 59 = Console_1
+ shift alt ctrll keycode 59 = Console_13
+ control alt ctrll keycode 59 = Console_1
+ shift control alt ctrll keycode 59 = Console_13
+ shift shiftl ctrll keycode 59 = F13
+ altgr shiftl ctrll keycode 59 = Console_13
+ shift altgr shiftl ctrll keycode 59 = Console_25
+ control shiftl ctrll keycode 59 = F25
+ shift control shiftl ctrll keycode 59 = F37
+ altgr control shiftl ctrll keycode 59 = Console_13
+ shift altgr control shiftl ctrll keycode 59 = Console_25
+ alt shiftl ctrll keycode 59 = Console_1
+ shift alt shiftl ctrll keycode 59 = Console_13
+ control alt shiftl ctrll keycode 59 = Console_1
+ shift control alt shiftl ctrll keycode 59 = Console_13
+ shift shiftr ctrll keycode 59 = F13
+ altgr shiftr ctrll keycode 59 = Console_13
+ shift altgr shiftr ctrll keycode 59 = Console_25
+ control shiftr ctrll keycode 59 = F25
+ shift control shiftr ctrll keycode 59 = F37
+ altgr control shiftr ctrll keycode 59 = Console_13
+ shift altgr control shiftr ctrll keycode 59 = Console_25
+ alt shiftr ctrll keycode 59 = Console_1
+ shift alt shiftr ctrll keycode 59 = Console_13
+ control alt shiftr ctrll keycode 59 = Console_1
+ shift control alt shiftr ctrll keycode 59 = Console_13
+ shift shiftl shiftr ctrll keycode 59 = F13
+ altgr shiftl shiftr ctrll keycode 59 = Console_13
+ shift altgr shiftl shiftr ctrll keycode 59 = Console_25
+ control shiftl shiftr ctrll keycode 59 = F25
+ shift control shiftl shiftr ctrll keycode 59 = F37
+ altgr control shiftl shiftr ctrll keycode 59 = Console_13
+ shift altgr control shiftl shiftr ctrll keycode 59 = Console_25
+ alt shiftl shiftr ctrll keycode 59 = Console_1
+ shift alt shiftl shiftr ctrll keycode 59 = Console_13
+ control alt shiftl shiftr ctrll keycode 59 = Console_1
+ shift control alt shiftl shiftr ctrll keycode 59 = Console_13
+keycode 60 = F2
+ shift keycode 60 = F14
+ altgr keycode 60 = Console_14
+ shift altgr keycode 60 = Console_26
+ control keycode 60 = F26
+ shift control keycode 60 = F38
+ altgr control keycode 60 = Console_14
+ shift altgr control keycode 60 = Console_26
+ alt keycode 60 = Console_2
+ shift alt keycode 60 = Console_14
+ control alt keycode 60 = Console_2
+ shift control alt keycode 60 = Console_14
+ shift shiftl keycode 60 = F14
+ altgr shiftl keycode 60 = Console_14
+ shift altgr shiftl keycode 60 = Console_26
+ control shiftl keycode 60 = F26
+ shift control shiftl keycode 60 = F38
+ altgr control shiftl keycode 60 = Console_14
+ shift altgr control shiftl keycode 60 = Console_26
+ alt shiftl keycode 60 = Console_2
+ shift alt shiftl keycode 60 = Console_14
+ control alt shiftl keycode 60 = Console_2
+ shift control alt shiftl keycode 60 = Console_14
+ shift shiftr keycode 60 = F14
+ altgr shiftr keycode 60 = Console_14
+ shift altgr shiftr keycode 60 = Console_26
+ control shiftr keycode 60 = F26
+ shift control shiftr keycode 60 = F38
+ altgr control shiftr keycode 60 = Console_14
+ shift altgr control shiftr keycode 60 = Console_26
+ alt shiftr keycode 60 = Console_2
+ shift alt shiftr keycode 60 = Console_14
+ control alt shiftr keycode 60 = Console_2
+ shift control alt shiftr keycode 60 = Console_14
+ shift shiftl shiftr keycode 60 = F14
+ altgr shiftl shiftr keycode 60 = Console_14
+ shift altgr shiftl shiftr keycode 60 = Console_26
+ control shiftl shiftr keycode 60 = F26
+ shift control shiftl shiftr keycode 60 = F38
+ altgr control shiftl shiftr keycode 60 = Console_14
+ shift altgr control shiftl shiftr keycode 60 = Console_26
+ alt shiftl shiftr keycode 60 = Console_2
+ shift alt shiftl shiftr keycode 60 = Console_14
+ control alt shiftl shiftr keycode 60 = Console_2
+ shift control alt shiftl shiftr keycode 60 = Console_14
+ shift ctrll keycode 60 = F14
+ altgr ctrll keycode 60 = Console_14
+ shift altgr ctrll keycode 60 = Console_26
+ control ctrll keycode 60 = F26
+ shift control ctrll keycode 60 = F38
+ altgr control ctrll keycode 60 = Console_14
+ shift altgr control ctrll keycode 60 = Console_26
+ alt ctrll keycode 60 = Console_2
+ shift alt ctrll keycode 60 = Console_14
+ control alt ctrll keycode 60 = Console_2
+ shift control alt ctrll keycode 60 = Console_14
+ shift shiftl ctrll keycode 60 = F14
+ altgr shiftl ctrll keycode 60 = Console_14
+ shift altgr shiftl ctrll keycode 60 = Console_26
+ control shiftl ctrll keycode 60 = F26
+ shift control shiftl ctrll keycode 60 = F38
+ altgr control shiftl ctrll keycode 60 = Console_14
+ shift altgr control shiftl ctrll keycode 60 = Console_26
+ alt shiftl ctrll keycode 60 = Console_2
+ shift alt shiftl ctrll keycode 60 = Console_14
+ control alt shiftl ctrll keycode 60 = Console_2
+ shift control alt shiftl ctrll keycode 60 = Console_14
+ shift shiftr ctrll keycode 60 = F14
+ altgr shiftr ctrll keycode 60 = Console_14
+ shift altgr shiftr ctrll keycode 60 = Console_26
+ control shiftr ctrll keycode 60 = F26
+ shift control shiftr ctrll keycode 60 = F38
+ altgr control shiftr ctrll keycode 60 = Console_14
+ shift altgr control shiftr ctrll keycode 60 = Console_26
+ alt shiftr ctrll keycode 60 = Console_2
+ shift alt shiftr ctrll keycode 60 = Console_14
+ control alt shiftr ctrll keycode 60 = Console_2
+ shift control alt shiftr ctrll keycode 60 = Console_14
+ shift shiftl shiftr ctrll keycode 60 = F14
+ altgr shiftl shiftr ctrll keycode 60 = Console_14
+ shift altgr shiftl shiftr ctrll keycode 60 = Console_26
+ control shiftl shiftr ctrll keycode 60 = F26
+ shift control shiftl shiftr ctrll keycode 60 = F38
+ altgr control shiftl shiftr ctrll keycode 60 = Console_14
+ shift altgr control shiftl shiftr ctrll keycode 60 = Console_26
+ alt shiftl shiftr ctrll keycode 60 = Console_2
+ shift alt shiftl shiftr ctrll keycode 60 = Console_14
+ control alt shiftl shiftr ctrll keycode 60 = Console_2
+ shift control alt shiftl shiftr ctrll keycode 60 = Console_14
+keycode 61 = F3
+ shift keycode 61 = F15
+ altgr keycode 61 = Console_15
+ shift altgr keycode 61 = Console_27
+ control keycode 61 = F27
+ shift control keycode 61 = F39
+ altgr control keycode 61 = Console_15
+ shift altgr control keycode 61 = Console_27
+ alt keycode 61 = Console_3
+ shift alt keycode 61 = Console_15
+ control alt keycode 61 = Console_3
+ shift control alt keycode 61 = Console_15
+ shift shiftl keycode 61 = F15
+ altgr shiftl keycode 61 = Console_15
+ shift altgr shiftl keycode 61 = Console_27
+ control shiftl keycode 61 = F27
+ shift control shiftl keycode 61 = F39
+ altgr control shiftl keycode 61 = Console_15
+ shift altgr control shiftl keycode 61 = Console_27
+ alt shiftl keycode 61 = Console_3
+ shift alt shiftl keycode 61 = Console_15
+ control alt shiftl keycode 61 = Console_3
+ shift control alt shiftl keycode 61 = Console_15
+ shift shiftr keycode 61 = F15
+ altgr shiftr keycode 61 = Console_15
+ shift altgr shiftr keycode 61 = Console_27
+ control shiftr keycode 61 = F27
+ shift control shiftr keycode 61 = F39
+ altgr control shiftr keycode 61 = Console_15
+ shift altgr control shiftr keycode 61 = Console_27
+ alt shiftr keycode 61 = Console_3
+ shift alt shiftr keycode 61 = Console_15
+ control alt shiftr keycode 61 = Console_3
+ shift control alt shiftr keycode 61 = Console_15
+ shift shiftl shiftr keycode 61 = F15
+ altgr shiftl shiftr keycode 61 = Console_15
+ shift altgr shiftl shiftr keycode 61 = Console_27
+ control shiftl shiftr keycode 61 = F27
+ shift control shiftl shiftr keycode 61 = F39
+ altgr control shiftl shiftr keycode 61 = Console_15
+ shift altgr control shiftl shiftr keycode 61 = Console_27
+ alt shiftl shiftr keycode 61 = Console_3
+ shift alt shiftl shiftr keycode 61 = Console_15
+ control alt shiftl shiftr keycode 61 = Console_3
+ shift control alt shiftl shiftr keycode 61 = Console_15
+ shift ctrll keycode 61 = F15
+ altgr ctrll keycode 61 = Console_15
+ shift altgr ctrll keycode 61 = Console_27
+ control ctrll keycode 61 = F27
+ shift control ctrll keycode 61 = F39
+ altgr control ctrll keycode 61 = Console_15
+ shift altgr control ctrll keycode 61 = Console_27
+ alt ctrll keycode 61 = Console_3
+ shift alt ctrll keycode 61 = Console_15
+ control alt ctrll keycode 61 = Console_3
+ shift control alt ctrll keycode 61 = Console_15
+ shift shiftl ctrll keycode 61 = F15
+ altgr shiftl ctrll keycode 61 = Console_15
+ shift altgr shiftl ctrll keycode 61 = Console_27
+ control shiftl ctrll keycode 61 = F27
+ shift control shiftl ctrll keycode 61 = F39
+ altgr control shiftl ctrll keycode 61 = Console_15
+ shift altgr control shiftl ctrll keycode 61 = Console_27
+ alt shiftl ctrll keycode 61 = Console_3
+ shift alt shiftl ctrll keycode 61 = Console_15
+ control alt shiftl ctrll keycode 61 = Console_3
+ shift control alt shiftl ctrll keycode 61 = Console_15
+ shift shiftr ctrll keycode 61 = F15
+ altgr shiftr ctrll keycode 61 = Console_15
+ shift altgr shiftr ctrll keycode 61 = Console_27
+ control shiftr ctrll keycode 61 = F27
+ shift control shiftr ctrll keycode 61 = F39
+ altgr control shiftr ctrll keycode 61 = Console_15
+ shift altgr control shiftr ctrll keycode 61 = Console_27
+ alt shiftr ctrll keycode 61 = Console_3
+ shift alt shiftr ctrll keycode 61 = Console_15
+ control alt shiftr ctrll keycode 61 = Console_3
+ shift control alt shiftr ctrll keycode 61 = Console_15
+ shift shiftl shiftr ctrll keycode 61 = F15
+ altgr shiftl shiftr ctrll keycode 61 = Console_15
+ shift altgr shiftl shiftr ctrll keycode 61 = Console_27
+ control shiftl shiftr ctrll keycode 61 = F27
+ shift control shiftl shiftr ctrll keycode 61 = F39
+ altgr control shiftl shiftr ctrll keycode 61 = Console_15
+ shift altgr control shiftl shiftr ctrll keycode 61 = Console_27
+ alt shiftl shiftr ctrll keycode 61 = Console_3
+ shift alt shiftl shiftr ctrll keycode 61 = Console_15
+ control alt shiftl shiftr ctrll keycode 61 = Console_3
+ shift control alt shiftl shiftr ctrll keycode 61 = Console_15
+keycode 62 = F4
+ shift keycode 62 = F16
+ altgr keycode 62 = Console_16
+ shift altgr keycode 62 = Console_28
+ control keycode 62 = F28
+ shift control keycode 62 = F40
+ altgr control keycode 62 = Console_16
+ shift altgr control keycode 62 = Console_28
+ alt keycode 62 = Console_4
+ shift alt keycode 62 = Console_16
+ control alt keycode 62 = Console_4
+ shift control alt keycode 62 = Console_16
+ shift shiftl keycode 62 = F16
+ altgr shiftl keycode 62 = Console_16
+ shift altgr shiftl keycode 62 = Console_28
+ control shiftl keycode 62 = F28
+ shift control shiftl keycode 62 = F40
+ altgr control shiftl keycode 62 = Console_16
+ shift altgr control shiftl keycode 62 = Console_28
+ alt shiftl keycode 62 = Console_4
+ shift alt shiftl keycode 62 = Console_16
+ control alt shiftl keycode 62 = Console_4
+ shift control alt shiftl keycode 62 = Console_16
+ shift shiftr keycode 62 = F16
+ altgr shiftr keycode 62 = Console_16
+ shift altgr shiftr keycode 62 = Console_28
+ control shiftr keycode 62 = F28
+ shift control shiftr keycode 62 = F40
+ altgr control shiftr keycode 62 = Console_16
+ shift altgr control shiftr keycode 62 = Console_28
+ alt shiftr keycode 62 = Console_4
+ shift alt shiftr keycode 62 = Console_16
+ control alt shiftr keycode 62 = Console_4
+ shift control alt shiftr keycode 62 = Console_16
+ shift shiftl shiftr keycode 62 = F16
+ altgr shiftl shiftr keycode 62 = Console_16
+ shift altgr shiftl shiftr keycode 62 = Console_28
+ control shiftl shiftr keycode 62 = F28
+ shift control shiftl shiftr keycode 62 = F40
+ altgr control shiftl shiftr keycode 62 = Console_16
+ shift altgr control shiftl shiftr keycode 62 = Console_28
+ alt shiftl shiftr keycode 62 = Console_4
+ shift alt shiftl shiftr keycode 62 = Console_16
+ control alt shiftl shiftr keycode 62 = Console_4
+ shift control alt shiftl shiftr keycode 62 = Console_16
+ shift ctrll keycode 62 = F16
+ altgr ctrll keycode 62 = Console_16
+ shift altgr ctrll keycode 62 = Console_28
+ control ctrll keycode 62 = F28
+ shift control ctrll keycode 62 = F40
+ altgr control ctrll keycode 62 = Console_16
+ shift altgr control ctrll keycode 62 = Console_28
+ alt ctrll keycode 62 = Console_4
+ shift alt ctrll keycode 62 = Console_16
+ control alt ctrll keycode 62 = Console_4
+ shift control alt ctrll keycode 62 = Console_16
+ shift shiftl ctrll keycode 62 = F16
+ altgr shiftl ctrll keycode 62 = Console_16
+ shift altgr shiftl ctrll keycode 62 = Console_28
+ control shiftl ctrll keycode 62 = F28
+ shift control shiftl ctrll keycode 62 = F40
+ altgr control shiftl ctrll keycode 62 = Console_16
+ shift altgr control shiftl ctrll keycode 62 = Console_28
+ alt shiftl ctrll keycode 62 = Console_4
+ shift alt shiftl ctrll keycode 62 = Console_16
+ control alt shiftl ctrll keycode 62 = Console_4
+ shift control alt shiftl ctrll keycode 62 = Console_16
+ shift shiftr ctrll keycode 62 = F16
+ altgr shiftr ctrll keycode 62 = Console_16
+ shift altgr shiftr ctrll keycode 62 = Console_28
+ control shiftr ctrll keycode 62 = F28
+ shift control shiftr ctrll keycode 62 = F40
+ altgr control shiftr ctrll keycode 62 = Console_16
+ shift altgr control shiftr ctrll keycode 62 = Console_28
+ alt shiftr ctrll keycode 62 = Console_4
+ shift alt shiftr ctrll keycode 62 = Console_16
+ control alt shiftr ctrll keycode 62 = Console_4
+ shift control alt shiftr ctrll keycode 62 = Console_16
+ shift shiftl shiftr ctrll keycode 62 = F16
+ altgr shiftl shiftr ctrll keycode 62 = Console_16
+ shift altgr shiftl shiftr ctrll keycode 62 = Console_28
+ control shiftl shiftr ctrll keycode 62 = F28
+ shift control shiftl shiftr ctrll keycode 62 = F40
+ altgr control shiftl shiftr ctrll keycode 62 = Console_16
+ shift altgr control shiftl shiftr ctrll keycode 62 = Console_28
+ alt shiftl shiftr ctrll keycode 62 = Console_4
+ shift alt shiftl shiftr ctrll keycode 62 = Console_16
+ control alt shiftl shiftr ctrll keycode 62 = Console_4
+ shift control alt shiftl shiftr ctrll keycode 62 = Console_16
+keycode 63 = F5
+ shift keycode 63 = F17
+ altgr keycode 63 = Console_17
+ shift altgr keycode 63 = Console_29
+ control keycode 63 = F29
+ shift control keycode 63 = F41
+ altgr control keycode 63 = Console_17
+ shift altgr control keycode 63 = Console_29
+ alt keycode 63 = Console_5
+ shift alt keycode 63 = Console_17
+ control alt keycode 63 = Console_5
+ shift control alt keycode 63 = Console_17
+ shift shiftl keycode 63 = F17
+ altgr shiftl keycode 63 = Console_17
+ shift altgr shiftl keycode 63 = Console_29
+ control shiftl keycode 63 = F29
+ shift control shiftl keycode 63 = F41
+ altgr control shiftl keycode 63 = Console_17
+ shift altgr control shiftl keycode 63 = Console_29
+ alt shiftl keycode 63 = Console_5
+ shift alt shiftl keycode 63 = Console_17
+ control alt shiftl keycode 63 = Console_5
+ shift control alt shiftl keycode 63 = Console_17
+ shift shiftr keycode 63 = F17
+ altgr shiftr keycode 63 = Console_17
+ shift altgr shiftr keycode 63 = Console_29
+ control shiftr keycode 63 = F29
+ shift control shiftr keycode 63 = F41
+ altgr control shiftr keycode 63 = Console_17
+ shift altgr control shiftr keycode 63 = Console_29
+ alt shiftr keycode 63 = Console_5
+ shift alt shiftr keycode 63 = Console_17
+ control alt shiftr keycode 63 = Console_5
+ shift control alt shiftr keycode 63 = Console_17
+ shift shiftl shiftr keycode 63 = F17
+ altgr shiftl shiftr keycode 63 = Console_17
+ shift altgr shiftl shiftr keycode 63 = Console_29
+ control shiftl shiftr keycode 63 = F29
+ shift control shiftl shiftr keycode 63 = F41
+ altgr control shiftl shiftr keycode 63 = Console_17
+ shift altgr control shiftl shiftr keycode 63 = Console_29
+ alt shiftl shiftr keycode 63 = Console_5
+ shift alt shiftl shiftr keycode 63 = Console_17
+ control alt shiftl shiftr keycode 63 = Console_5
+ shift control alt shiftl shiftr keycode 63 = Console_17
+ shift ctrll keycode 63 = F17
+ altgr ctrll keycode 63 = Console_17
+ shift altgr ctrll keycode 63 = Console_29
+ control ctrll keycode 63 = F29
+ shift control ctrll keycode 63 = F41
+ altgr control ctrll keycode 63 = Console_17
+ shift altgr control ctrll keycode 63 = Console_29
+ alt ctrll keycode 63 = Console_5
+ shift alt ctrll keycode 63 = Console_17
+ control alt ctrll keycode 63 = Console_5
+ shift control alt ctrll keycode 63 = Console_17
+ shift shiftl ctrll keycode 63 = F17
+ altgr shiftl ctrll keycode 63 = Console_17
+ shift altgr shiftl ctrll keycode 63 = Console_29
+ control shiftl ctrll keycode 63 = F29
+ shift control shiftl ctrll keycode 63 = F41
+ altgr control shiftl ctrll keycode 63 = Console_17
+ shift altgr control shiftl ctrll keycode 63 = Console_29
+ alt shiftl ctrll keycode 63 = Console_5
+ shift alt shiftl ctrll keycode 63 = Console_17
+ control alt shiftl ctrll keycode 63 = Console_5
+ shift control alt shiftl ctrll keycode 63 = Console_17
+ shift shiftr ctrll keycode 63 = F17
+ altgr shiftr ctrll keycode 63 = Console_17
+ shift altgr shiftr ctrll keycode 63 = Console_29
+ control shiftr ctrll keycode 63 = F29
+ shift control shiftr ctrll keycode 63 = F41
+ altgr control shiftr ctrll keycode 63 = Console_17
+ shift altgr control shiftr ctrll keycode 63 = Console_29
+ alt shiftr ctrll keycode 63 = Console_5
+ shift alt shiftr ctrll keycode 63 = Console_17
+ control alt shiftr ctrll keycode 63 = Console_5
+ shift control alt shiftr ctrll keycode 63 = Console_17
+ shift shiftl shiftr ctrll keycode 63 = F17
+ altgr shiftl shiftr ctrll keycode 63 = Console_17
+ shift altgr shiftl shiftr ctrll keycode 63 = Console_29
+ control shiftl shiftr ctrll keycode 63 = F29
+ shift control shiftl shiftr ctrll keycode 63 = F41
+ altgr control shiftl shiftr ctrll keycode 63 = Console_17
+ shift altgr control shiftl shiftr ctrll keycode 63 = Console_29
+ alt shiftl shiftr ctrll keycode 63 = Console_5
+ shift alt shiftl shiftr ctrll keycode 63 = Console_17
+ control alt shiftl shiftr ctrll keycode 63 = Console_5
+ shift control alt shiftl shiftr ctrll keycode 63 = Console_17
+keycode 64 = F6
+ shift keycode 64 = F18
+ altgr keycode 64 = Console_18
+ shift altgr keycode 64 = Console_30
+ control keycode 64 = F30
+ shift control keycode 64 = F42
+ altgr control keycode 64 = Console_18
+ shift altgr control keycode 64 = Console_30
+ alt keycode 64 = Console_6
+ shift alt keycode 64 = Console_18
+ control alt keycode 64 = Console_6
+ shift control alt keycode 64 = Console_18
+ shift shiftl keycode 64 = F18
+ altgr shiftl keycode 64 = Console_18
+ shift altgr shiftl keycode 64 = Console_30
+ control shiftl keycode 64 = F30
+ shift control shiftl keycode 64 = F42
+ altgr control shiftl keycode 64 = Console_18
+ shift altgr control shiftl keycode 64 = Console_30
+ alt shiftl keycode 64 = Console_6
+ shift alt shiftl keycode 64 = Console_18
+ control alt shiftl keycode 64 = Console_6
+ shift control alt shiftl keycode 64 = Console_18
+ shift shiftr keycode 64 = F18
+ altgr shiftr keycode 64 = Console_18
+ shift altgr shiftr keycode 64 = Console_30
+ control shiftr keycode 64 = F30
+ shift control shiftr keycode 64 = F42
+ altgr control shiftr keycode 64 = Console_18
+ shift altgr control shiftr keycode 64 = Console_30
+ alt shiftr keycode 64 = Console_6
+ shift alt shiftr keycode 64 = Console_18
+ control alt shiftr keycode 64 = Console_6
+ shift control alt shiftr keycode 64 = Console_18
+ shift shiftl shiftr keycode 64 = F18
+ altgr shiftl shiftr keycode 64 = Console_18
+ shift altgr shiftl shiftr keycode 64 = Console_30
+ control shiftl shiftr keycode 64 = F30
+ shift control shiftl shiftr keycode 64 = F42
+ altgr control shiftl shiftr keycode 64 = Console_18
+ shift altgr control shiftl shiftr keycode 64 = Console_30
+ alt shiftl shiftr keycode 64 = Console_6
+ shift alt shiftl shiftr keycode 64 = Console_18
+ control alt shiftl shiftr keycode 64 = Console_6
+ shift control alt shiftl shiftr keycode 64 = Console_18
+ shift ctrll keycode 64 = F18
+ altgr ctrll keycode 64 = Console_18
+ shift altgr ctrll keycode 64 = Console_30
+ control ctrll keycode 64 = F30
+ shift control ctrll keycode 64 = F42
+ altgr control ctrll keycode 64 = Console_18
+ shift altgr control ctrll keycode 64 = Console_30
+ alt ctrll keycode 64 = Console_6
+ shift alt ctrll keycode 64 = Console_18
+ control alt ctrll keycode 64 = Console_6
+ shift control alt ctrll keycode 64 = Console_18
+ shift shiftl ctrll keycode 64 = F18
+ altgr shiftl ctrll keycode 64 = Console_18
+ shift altgr shiftl ctrll keycode 64 = Console_30
+ control shiftl ctrll keycode 64 = F30
+ shift control shiftl ctrll keycode 64 = F42
+ altgr control shiftl ctrll keycode 64 = Console_18
+ shift altgr control shiftl ctrll keycode 64 = Console_30
+ alt shiftl ctrll keycode 64 = Console_6
+ shift alt shiftl ctrll keycode 64 = Console_18
+ control alt shiftl ctrll keycode 64 = Console_6
+ shift control alt shiftl ctrll keycode 64 = Console_18
+ shift shiftr ctrll keycode 64 = F18
+ altgr shiftr ctrll keycode 64 = Console_18
+ shift altgr shiftr ctrll keycode 64 = Console_30
+ control shiftr ctrll keycode 64 = F30
+ shift control shiftr ctrll keycode 64 = F42
+ altgr control shiftr ctrll keycode 64 = Console_18
+ shift altgr control shiftr ctrll keycode 64 = Console_30
+ alt shiftr ctrll keycode 64 = Console_6
+ shift alt shiftr ctrll keycode 64 = Console_18
+ control alt shiftr ctrll keycode 64 = Console_6
+ shift control alt shiftr ctrll keycode 64 = Console_18
+ shift shiftl shiftr ctrll keycode 64 = F18
+ altgr shiftl shiftr ctrll keycode 64 = Console_18
+ shift altgr shiftl shiftr ctrll keycode 64 = Console_30
+ control shiftl shiftr ctrll keycode 64 = F30
+ shift control shiftl shiftr ctrll keycode 64 = F42
+ altgr control shiftl shiftr ctrll keycode 64 = Console_18
+ shift altgr control shiftl shiftr ctrll keycode 64 = Console_30
+ alt shiftl shiftr ctrll keycode 64 = Console_6
+ shift alt shiftl shiftr ctrll keycode 64 = Console_18
+ control alt shiftl shiftr ctrll keycode 64 = Console_6
+ shift control alt shiftl shiftr ctrll keycode 64 = Console_18
+keycode 65 = F7
+ shift keycode 65 = F19
+ altgr keycode 65 = Console_19
+ shift altgr keycode 65 = Console_31
+ control keycode 65 = F31
+ shift control keycode 65 = F43
+ altgr control keycode 65 = Console_19
+ shift altgr control keycode 65 = Console_31
+ alt keycode 65 = Console_7
+ shift alt keycode 65 = Console_19
+ control alt keycode 65 = Console_7
+ shift control alt keycode 65 = Console_19
+ shift shiftl keycode 65 = F19
+ altgr shiftl keycode 65 = Console_19
+ shift altgr shiftl keycode 65 = Console_31
+ control shiftl keycode 65 = F31
+ shift control shiftl keycode 65 = F43
+ altgr control shiftl keycode 65 = Console_19
+ shift altgr control shiftl keycode 65 = Console_31
+ alt shiftl keycode 65 = Console_7
+ shift alt shiftl keycode 65 = Console_19
+ control alt shiftl keycode 65 = Console_7
+ shift control alt shiftl keycode 65 = Console_19
+ shift shiftr keycode 65 = F19
+ altgr shiftr keycode 65 = Console_19
+ shift altgr shiftr keycode 65 = Console_31
+ control shiftr keycode 65 = F31
+ shift control shiftr keycode 65 = F43
+ altgr control shiftr keycode 65 = Console_19
+ shift altgr control shiftr keycode 65 = Console_31
+ alt shiftr keycode 65 = Console_7
+ shift alt shiftr keycode 65 = Console_19
+ control alt shiftr keycode 65 = Console_7
+ shift control alt shiftr keycode 65 = Console_19
+ shift shiftl shiftr keycode 65 = F19
+ altgr shiftl shiftr keycode 65 = Console_19
+ shift altgr shiftl shiftr keycode 65 = Console_31
+ control shiftl shiftr keycode 65 = F31
+ shift control shiftl shiftr keycode 65 = F43
+ altgr control shiftl shiftr keycode 65 = Console_19
+ shift altgr control shiftl shiftr keycode 65 = Console_31
+ alt shiftl shiftr keycode 65 = Console_7
+ shift alt shiftl shiftr keycode 65 = Console_19
+ control alt shiftl shiftr keycode 65 = Console_7
+ shift control alt shiftl shiftr keycode 65 = Console_19
+ shift ctrll keycode 65 = F19
+ altgr ctrll keycode 65 = Console_19
+ shift altgr ctrll keycode 65 = Console_31
+ control ctrll keycode 65 = F31
+ shift control ctrll keycode 65 = F43
+ altgr control ctrll keycode 65 = Console_19
+ shift altgr control ctrll keycode 65 = Console_31
+ alt ctrll keycode 65 = Console_7
+ shift alt ctrll keycode 65 = Console_19
+ control alt ctrll keycode 65 = Console_7
+ shift control alt ctrll keycode 65 = Console_19
+ shift shiftl ctrll keycode 65 = F19
+ altgr shiftl ctrll keycode 65 = Console_19
+ shift altgr shiftl ctrll keycode 65 = Console_31
+ control shiftl ctrll keycode 65 = F31
+ shift control shiftl ctrll keycode 65 = F43
+ altgr control shiftl ctrll keycode 65 = Console_19
+ shift altgr control shiftl ctrll keycode 65 = Console_31
+ alt shiftl ctrll keycode 65 = Console_7
+ shift alt shiftl ctrll keycode 65 = Console_19
+ control alt shiftl ctrll keycode 65 = Console_7
+ shift control alt shiftl ctrll keycode 65 = Console_19
+ shift shiftr ctrll keycode 65 = F19
+ altgr shiftr ctrll keycode 65 = Console_19
+ shift altgr shiftr ctrll keycode 65 = Console_31
+ control shiftr ctrll keycode 65 = F31
+ shift control shiftr ctrll keycode 65 = F43
+ altgr control shiftr ctrll keycode 65 = Console_19
+ shift altgr control shiftr ctrll keycode 65 = Console_31
+ alt shiftr ctrll keycode 65 = Console_7
+ shift alt shiftr ctrll keycode 65 = Console_19
+ control alt shiftr ctrll keycode 65 = Console_7
+ shift control alt shiftr ctrll keycode 65 = Console_19
+ shift shiftl shiftr ctrll keycode 65 = F19
+ altgr shiftl shiftr ctrll keycode 65 = Console_19
+ shift altgr shiftl shiftr ctrll keycode 65 = Console_31
+ control shiftl shiftr ctrll keycode 65 = F31
+ shift control shiftl shiftr ctrll keycode 65 = F43
+ altgr control shiftl shiftr ctrll keycode 65 = Console_19
+ shift altgr control shiftl shiftr ctrll keycode 65 = Console_31
+ alt shiftl shiftr ctrll keycode 65 = Console_7
+ shift alt shiftl shiftr ctrll keycode 65 = Console_19
+ control alt shiftl shiftr ctrll keycode 65 = Console_7
+ shift control alt shiftl shiftr ctrll keycode 65 = Console_19
+keycode 66 = F8
+ shift keycode 66 = F20
+ altgr keycode 66 = Console_20
+ shift altgr keycode 66 = Console_32
+ control keycode 66 = F32
+ shift control keycode 66 = F44
+ altgr control keycode 66 = Console_20
+ shift altgr control keycode 66 = Console_32
+ alt keycode 66 = Console_8
+ shift alt keycode 66 = Console_20
+ control alt keycode 66 = Console_8
+ shift control alt keycode 66 = Console_20
+ shift shiftl keycode 66 = F20
+ altgr shiftl keycode 66 = Console_20
+ shift altgr shiftl keycode 66 = Console_32
+ control shiftl keycode 66 = F32
+ shift control shiftl keycode 66 = F44
+ altgr control shiftl keycode 66 = Console_20
+ shift altgr control shiftl keycode 66 = Console_32
+ alt shiftl keycode 66 = Console_8
+ shift alt shiftl keycode 66 = Console_20
+ control alt shiftl keycode 66 = Console_8
+ shift control alt shiftl keycode 66 = Console_20
+ shift shiftr keycode 66 = F20
+ altgr shiftr keycode 66 = Console_20
+ shift altgr shiftr keycode 66 = Console_32
+ control shiftr keycode 66 = F32
+ shift control shiftr keycode 66 = F44
+ altgr control shiftr keycode 66 = Console_20
+ shift altgr control shiftr keycode 66 = Console_32
+ alt shiftr keycode 66 = Console_8
+ shift alt shiftr keycode 66 = Console_20
+ control alt shiftr keycode 66 = Console_8
+ shift control alt shiftr keycode 66 = Console_20
+ shift shiftl shiftr keycode 66 = F20
+ altgr shiftl shiftr keycode 66 = Console_20
+ shift altgr shiftl shiftr keycode 66 = Console_32
+ control shiftl shiftr keycode 66 = F32
+ shift control shiftl shiftr keycode 66 = F44
+ altgr control shiftl shiftr keycode 66 = Console_20
+ shift altgr control shiftl shiftr keycode 66 = Console_32
+ alt shiftl shiftr keycode 66 = Console_8
+ shift alt shiftl shiftr keycode 66 = Console_20
+ control alt shiftl shiftr keycode 66 = Console_8
+ shift control alt shiftl shiftr keycode 66 = Console_20
+ shift ctrll keycode 66 = F20
+ altgr ctrll keycode 66 = Console_20
+ shift altgr ctrll keycode 66 = Console_32
+ control ctrll keycode 66 = F32
+ shift control ctrll keycode 66 = F44
+ altgr control ctrll keycode 66 = Console_20
+ shift altgr control ctrll keycode 66 = Console_32
+ alt ctrll keycode 66 = Console_8
+ shift alt ctrll keycode 66 = Console_20
+ control alt ctrll keycode 66 = Console_8
+ shift control alt ctrll keycode 66 = Console_20
+ shift shiftl ctrll keycode 66 = F20
+ altgr shiftl ctrll keycode 66 = Console_20
+ shift altgr shiftl ctrll keycode 66 = Console_32
+ control shiftl ctrll keycode 66 = F32
+ shift control shiftl ctrll keycode 66 = F44
+ altgr control shiftl ctrll keycode 66 = Console_20
+ shift altgr control shiftl ctrll keycode 66 = Console_32
+ alt shiftl ctrll keycode 66 = Console_8
+ shift alt shiftl ctrll keycode 66 = Console_20
+ control alt shiftl ctrll keycode 66 = Console_8
+ shift control alt shiftl ctrll keycode 66 = Console_20
+ shift shiftr ctrll keycode 66 = F20
+ altgr shiftr ctrll keycode 66 = Console_20
+ shift altgr shiftr ctrll keycode 66 = Console_32
+ control shiftr ctrll keycode 66 = F32
+ shift control shiftr ctrll keycode 66 = F44
+ altgr control shiftr ctrll keycode 66 = Console_20
+ shift altgr control shiftr ctrll keycode 66 = Console_32
+ alt shiftr ctrll keycode 66 = Console_8
+ shift alt shiftr ctrll keycode 66 = Console_20
+ control alt shiftr ctrll keycode 66 = Console_8
+ shift control alt shiftr ctrll keycode 66 = Console_20
+ shift shiftl shiftr ctrll keycode 66 = F20
+ altgr shiftl shiftr ctrll keycode 66 = Console_20
+ shift altgr shiftl shiftr ctrll keycode 66 = Console_32
+ control shiftl shiftr ctrll keycode 66 = F32
+ shift control shiftl shiftr ctrll keycode 66 = F44
+ altgr control shiftl shiftr ctrll keycode 66 = Console_20
+ shift altgr control shiftl shiftr ctrll keycode 66 = Console_32
+ alt shiftl shiftr ctrll keycode 66 = Console_8
+ shift alt shiftl shiftr ctrll keycode 66 = Console_20
+ control alt shiftl shiftr ctrll keycode 66 = Console_8
+ shift control alt shiftl shiftr ctrll keycode 66 = Console_20
+keycode 67 = F9
+ shift keycode 67 = F21
+ altgr keycode 67 = Console_21
+ shift altgr keycode 67 = Console_33
+ control keycode 67 = F33
+ shift control keycode 67 = F45
+ altgr control keycode 67 = Console_21
+ shift altgr control keycode 67 = Console_33
+ alt keycode 67 = Console_9
+ shift alt keycode 67 = Console_21
+ control alt keycode 67 = Console_9
+ shift control alt keycode 67 = Console_21
+ shift shiftl keycode 67 = F21
+ altgr shiftl keycode 67 = Console_21
+ shift altgr shiftl keycode 67 = Console_33
+ control shiftl keycode 67 = F33
+ shift control shiftl keycode 67 = F45
+ altgr control shiftl keycode 67 = Console_21
+ shift altgr control shiftl keycode 67 = Console_33
+ alt shiftl keycode 67 = Console_9
+ shift alt shiftl keycode 67 = Console_21
+ control alt shiftl keycode 67 = Console_9
+ shift control alt shiftl keycode 67 = Console_21
+ shift shiftr keycode 67 = F21
+ altgr shiftr keycode 67 = Console_21
+ shift altgr shiftr keycode 67 = Console_33
+ control shiftr keycode 67 = F33
+ shift control shiftr keycode 67 = F45
+ altgr control shiftr keycode 67 = Console_21
+ shift altgr control shiftr keycode 67 = Console_33
+ alt shiftr keycode 67 = Console_9
+ shift alt shiftr keycode 67 = Console_21
+ control alt shiftr keycode 67 = Console_9
+ shift control alt shiftr keycode 67 = Console_21
+ shift shiftl shiftr keycode 67 = F21
+ altgr shiftl shiftr keycode 67 = Console_21
+ shift altgr shiftl shiftr keycode 67 = Console_33
+ control shiftl shiftr keycode 67 = F33
+ shift control shiftl shiftr keycode 67 = F45
+ altgr control shiftl shiftr keycode 67 = Console_21
+ shift altgr control shiftl shiftr keycode 67 = Console_33
+ alt shiftl shiftr keycode 67 = Console_9
+ shift alt shiftl shiftr keycode 67 = Console_21
+ control alt shiftl shiftr keycode 67 = Console_9
+ shift control alt shiftl shiftr keycode 67 = Console_21
+ shift ctrll keycode 67 = F21
+ altgr ctrll keycode 67 = Console_21
+ shift altgr ctrll keycode 67 = Console_33
+ control ctrll keycode 67 = F33
+ shift control ctrll keycode 67 = F45
+ altgr control ctrll keycode 67 = Console_21
+ shift altgr control ctrll keycode 67 = Console_33
+ alt ctrll keycode 67 = Console_9
+ shift alt ctrll keycode 67 = Console_21
+ control alt ctrll keycode 67 = Console_9
+ shift control alt ctrll keycode 67 = Console_21
+ shift shiftl ctrll keycode 67 = F21
+ altgr shiftl ctrll keycode 67 = Console_21
+ shift altgr shiftl ctrll keycode 67 = Console_33
+ control shiftl ctrll keycode 67 = F33
+ shift control shiftl ctrll keycode 67 = F45
+ altgr control shiftl ctrll keycode 67 = Console_21
+ shift altgr control shiftl ctrll keycode 67 = Console_33
+ alt shiftl ctrll keycode 67 = Console_9
+ shift alt shiftl ctrll keycode 67 = Console_21
+ control alt shiftl ctrll keycode 67 = Console_9
+ shift control alt shiftl ctrll keycode 67 = Console_21
+ shift shiftr ctrll keycode 67 = F21
+ altgr shiftr ctrll keycode 67 = Console_21
+ shift altgr shiftr ctrll keycode 67 = Console_33
+ control shiftr ctrll keycode 67 = F33
+ shift control shiftr ctrll keycode 67 = F45
+ altgr control shiftr ctrll keycode 67 = Console_21
+ shift altgr control shiftr ctrll keycode 67 = Console_33
+ alt shiftr ctrll keycode 67 = Console_9
+ shift alt shiftr ctrll keycode 67 = Console_21
+ control alt shiftr ctrll keycode 67 = Console_9
+ shift control alt shiftr ctrll keycode 67 = Console_21
+ shift shiftl shiftr ctrll keycode 67 = F21
+ altgr shiftl shiftr ctrll keycode 67 = Console_21
+ shift altgr shiftl shiftr ctrll keycode 67 = Console_33
+ control shiftl shiftr ctrll keycode 67 = F33
+ shift control shiftl shiftr ctrll keycode 67 = F45
+ altgr control shiftl shiftr ctrll keycode 67 = Console_21
+ shift altgr control shiftl shiftr ctrll keycode 67 = Console_33
+ alt shiftl shiftr ctrll keycode 67 = Console_9
+ shift alt shiftl shiftr ctrll keycode 67 = Console_21
+ control alt shiftl shiftr ctrll keycode 67 = Console_9
+ shift control alt shiftl shiftr ctrll keycode 67 = Console_21
+keycode 68 = F10
+ shift keycode 68 = F22
+ altgr keycode 68 = Console_22
+ shift altgr keycode 68 = Console_34
+ control keycode 68 = F34
+ shift control keycode 68 = F46
+ altgr control keycode 68 = Console_22
+ shift altgr control keycode 68 = Console_34
+ alt keycode 68 = Console_10
+ shift alt keycode 68 = Console_22
+ control alt keycode 68 = Console_10
+ shift control alt keycode 68 = Console_22
+ shift shiftl keycode 68 = F22
+ altgr shiftl keycode 68 = Console_22
+ shift altgr shiftl keycode 68 = Console_34
+ control shiftl keycode 68 = F34
+ shift control shiftl keycode 68 = F46
+ altgr control shiftl keycode 68 = Console_22
+ shift altgr control shiftl keycode 68 = Console_34
+ alt shiftl keycode 68 = Console_10
+ shift alt shiftl keycode 68 = Console_22
+ control alt shiftl keycode 68 = Console_10
+ shift control alt shiftl keycode 68 = Console_22
+ shift shiftr keycode 68 = F22
+ altgr shiftr keycode 68 = Console_22
+ shift altgr shiftr keycode 68 = Console_34
+ control shiftr keycode 68 = F34
+ shift control shiftr keycode 68 = F46
+ altgr control shiftr keycode 68 = Console_22
+ shift altgr control shiftr keycode 68 = Console_34
+ alt shiftr keycode 68 = Console_10
+ shift alt shiftr keycode 68 = Console_22
+ control alt shiftr keycode 68 = Console_10
+ shift control alt shiftr keycode 68 = Console_22
+ shift shiftl shiftr keycode 68 = F22
+ altgr shiftl shiftr keycode 68 = Console_22
+ shift altgr shiftl shiftr keycode 68 = Console_34
+ control shiftl shiftr keycode 68 = F34
+ shift control shiftl shiftr keycode 68 = F46
+ altgr control shiftl shiftr keycode 68 = Console_22
+ shift altgr control shiftl shiftr keycode 68 = Console_34
+ alt shiftl shiftr keycode 68 = Console_10
+ shift alt shiftl shiftr keycode 68 = Console_22
+ control alt shiftl shiftr keycode 68 = Console_10
+ shift control alt shiftl shiftr keycode 68 = Console_22
+ shift ctrll keycode 68 = F22
+ altgr ctrll keycode 68 = Console_22
+ shift altgr ctrll keycode 68 = Console_34
+ control ctrll keycode 68 = F34
+ shift control ctrll keycode 68 = F46
+ altgr control ctrll keycode 68 = Console_22
+ shift altgr control ctrll keycode 68 = Console_34
+ alt ctrll keycode 68 = Console_10
+ shift alt ctrll keycode 68 = Console_22
+ control alt ctrll keycode 68 = Console_10
+ shift control alt ctrll keycode 68 = Console_22
+ shift shiftl ctrll keycode 68 = F22
+ altgr shiftl ctrll keycode 68 = Console_22
+ shift altgr shiftl ctrll keycode 68 = Console_34
+ control shiftl ctrll keycode 68 = F34
+ shift control shiftl ctrll keycode 68 = F46
+ altgr control shiftl ctrll keycode 68 = Console_22
+ shift altgr control shiftl ctrll keycode 68 = Console_34
+ alt shiftl ctrll keycode 68 = Console_10
+ shift alt shiftl ctrll keycode 68 = Console_22
+ control alt shiftl ctrll keycode 68 = Console_10
+ shift control alt shiftl ctrll keycode 68 = Console_22
+ shift shiftr ctrll keycode 68 = F22
+ altgr shiftr ctrll keycode 68 = Console_22
+ shift altgr shiftr ctrll keycode 68 = Console_34
+ control shiftr ctrll keycode 68 = F34
+ shift control shiftr ctrll keycode 68 = F46
+ altgr control shiftr ctrll keycode 68 = Console_22
+ shift altgr control shiftr ctrll keycode 68 = Console_34
+ alt shiftr ctrll keycode 68 = Console_10
+ shift alt shiftr ctrll keycode 68 = Console_22
+ control alt shiftr ctrll keycode 68 = Console_10
+ shift control alt shiftr ctrll keycode 68 = Console_22
+ shift shiftl shiftr ctrll keycode 68 = F22
+ altgr shiftl shiftr ctrll keycode 68 = Console_22
+ shift altgr shiftl shiftr ctrll keycode 68 = Console_34
+ control shiftl shiftr ctrll keycode 68 = F34
+ shift control shiftl shiftr ctrll keycode 68 = F46
+ altgr control shiftl shiftr ctrll keycode 68 = Console_22
+ shift altgr control shiftl shiftr ctrll keycode 68 = Console_34
+ alt shiftl shiftr ctrll keycode 68 = Console_10
+ shift alt shiftl shiftr ctrll keycode 68 = Console_22
+ control alt shiftl shiftr ctrll keycode 68 = Console_10
+ shift control alt shiftl shiftr ctrll keycode 68 = Console_22
+keycode 69 = Num_Lock
+ altgr keycode 69 = Hex_A
+ shift alt keycode 69 = Hex_A
+ altgr shiftl keycode 69 = Hex_A
+ shift alt shiftl keycode 69 = Hex_A
+ altgr shiftr keycode 69 = Hex_A
+ shift alt shiftr keycode 69 = Hex_A
+ altgr shiftl shiftr keycode 69 = Hex_A
+ shift alt shiftl shiftr keycode 69 = Hex_A
+ altgr ctrll keycode 69 = Hex_A
+ shift alt ctrll keycode 69 = Hex_A
+ altgr shiftl ctrll keycode 69 = Hex_A
+ shift alt shiftl ctrll keycode 69 = Hex_A
+ altgr shiftr ctrll keycode 69 = Hex_A
+ shift alt shiftr ctrll keycode 69 = Hex_A
+ altgr shiftl shiftr ctrll keycode 69 = Hex_A
+ shift alt shiftl shiftr ctrll keycode 69 = Hex_A
+keycode 70 = Scroll_Lock
+ shift keycode 70 = Show_Memory
+ altgr keycode 70 = Show_Registers
+ control keycode 70 = Show_State
+ alt keycode 70 = Show_Registers
+ shift shiftl keycode 70 = Show_Memory
+ altgr shiftl keycode 70 = Show_Registers
+ control shiftl keycode 70 = Show_State
+ alt shiftl keycode 70 = Show_Registers
+ shift shiftr keycode 70 = Show_Memory
+ altgr shiftr keycode 70 = Show_Registers
+ control shiftr keycode 70 = Show_State
+ alt shiftr keycode 70 = Show_Registers
+ shift shiftl shiftr keycode 70 = Show_Memory
+ altgr shiftl shiftr keycode 70 = Show_Registers
+ control shiftl shiftr keycode 70 = Show_State
+ alt shiftl shiftr keycode 70 = Show_Registers
+ shift ctrll keycode 70 = Show_Memory
+ altgr ctrll keycode 70 = Show_Registers
+ control ctrll keycode 70 = Show_State
+ alt ctrll keycode 70 = Show_Registers
+ shift shiftl ctrll keycode 70 = Show_Memory
+ altgr shiftl ctrll keycode 70 = Show_Registers
+ control shiftl ctrll keycode 70 = Show_State
+ alt shiftl ctrll keycode 70 = Show_Registers
+ shift shiftr ctrll keycode 70 = Show_Memory
+ altgr shiftr ctrll keycode 70 = Show_Registers
+ control shiftr ctrll keycode 70 = Show_State
+ alt shiftr ctrll keycode 70 = Show_Registers
+ shift shiftl shiftr ctrll keycode 70 = Show_Memory
+ altgr shiftl shiftr ctrll keycode 70 = Show_Registers
+ control shiftl shiftr ctrll keycode 70 = Show_State
+ alt shiftl shiftr ctrll keycode 70 = Show_Registers
+keycode 71 = KP_7
+ altgr keycode 71 = Hex_7
+ alt keycode 71 = Ascii_7
+ shift alt keycode 71 = Hex_7
+ altgr shiftl keycode 71 = Hex_7
+ alt shiftl keycode 71 = Ascii_7
+ shift alt shiftl keycode 71 = Hex_7
+ altgr shiftr keycode 71 = Hex_7
+ alt shiftr keycode 71 = Ascii_7
+ shift alt shiftr keycode 71 = Hex_7
+ altgr shiftl shiftr keycode 71 = Hex_7
+ alt shiftl shiftr keycode 71 = Ascii_7
+ shift alt shiftl shiftr keycode 71 = Hex_7
+ altgr ctrll keycode 71 = Hex_7
+ alt ctrll keycode 71 = Ascii_7
+ shift alt ctrll keycode 71 = Hex_7
+ altgr shiftl ctrll keycode 71 = Hex_7
+ alt shiftl ctrll keycode 71 = Ascii_7
+ shift alt shiftl ctrll keycode 71 = Hex_7
+ altgr shiftr ctrll keycode 71 = Hex_7
+ alt shiftr ctrll keycode 71 = Ascii_7
+ shift alt shiftr ctrll keycode 71 = Hex_7
+ altgr shiftl shiftr ctrll keycode 71 = Hex_7
+ alt shiftl shiftr ctrll keycode 71 = Ascii_7
+ shift alt shiftl shiftr ctrll keycode 71 = Hex_7
+keycode 72 = KP_8
+ altgr keycode 72 = Hex_8
+ alt keycode 72 = Ascii_8
+ shift alt keycode 72 = Hex_8
+ altgr shiftl keycode 72 = Hex_8
+ alt shiftl keycode 72 = Ascii_8
+ shift alt shiftl keycode 72 = Hex_8
+ altgr shiftr keycode 72 = Hex_8
+ alt shiftr keycode 72 = Ascii_8
+ shift alt shiftr keycode 72 = Hex_8
+ altgr shiftl shiftr keycode 72 = Hex_8
+ alt shiftl shiftr keycode 72 = Ascii_8
+ shift alt shiftl shiftr keycode 72 = Hex_8
+ altgr ctrll keycode 72 = Hex_8
+ alt ctrll keycode 72 = Ascii_8
+ shift alt ctrll keycode 72 = Hex_8
+ altgr shiftl ctrll keycode 72 = Hex_8
+ alt shiftl ctrll keycode 72 = Ascii_8
+ shift alt shiftl ctrll keycode 72 = Hex_8
+ altgr shiftr ctrll keycode 72 = Hex_8
+ alt shiftr ctrll keycode 72 = Ascii_8
+ shift alt shiftr ctrll keycode 72 = Hex_8
+ altgr shiftl shiftr ctrll keycode 72 = Hex_8
+ alt shiftl shiftr ctrll keycode 72 = Ascii_8
+ shift alt shiftl shiftr ctrll keycode 72 = Hex_8
+keycode 73 = KP_9
+ altgr keycode 73 = Hex_9
+ alt keycode 73 = Ascii_9
+ shift alt keycode 73 = Hex_9
+ altgr shiftl keycode 73 = Hex_9
+ alt shiftl keycode 73 = Ascii_9
+ shift alt shiftl keycode 73 = Hex_9
+ altgr shiftr keycode 73 = Hex_9
+ alt shiftr keycode 73 = Ascii_9
+ shift alt shiftr keycode 73 = Hex_9
+ altgr shiftl shiftr keycode 73 = Hex_9
+ alt shiftl shiftr keycode 73 = Ascii_9
+ shift alt shiftl shiftr keycode 73 = Hex_9
+ altgr ctrll keycode 73 = Hex_9
+ alt ctrll keycode 73 = Ascii_9
+ shift alt ctrll keycode 73 = Hex_9
+ altgr shiftl ctrll keycode 73 = Hex_9
+ alt shiftl ctrll keycode 73 = Ascii_9
+ shift alt shiftl ctrll keycode 73 = Hex_9
+ altgr shiftr ctrll keycode 73 = Hex_9
+ alt shiftr ctrll keycode 73 = Ascii_9
+ shift alt shiftr ctrll keycode 73 = Hex_9
+ altgr shiftl shiftr ctrll keycode 73 = Hex_9
+ alt shiftl shiftr ctrll keycode 73 = Ascii_9
+ shift alt shiftl shiftr ctrll keycode 73 = Hex_9
+keycode 74 = KP_Subtract
+ altgr keycode 74 = Hex_D
+ shift alt keycode 74 = Hex_D
+ altgr shiftl keycode 74 = Hex_D
+ shift alt shiftl keycode 74 = Hex_D
+ altgr shiftr keycode 74 = Hex_D
+ shift alt shiftr keycode 74 = Hex_D
+ altgr shiftl shiftr keycode 74 = Hex_D
+ shift alt shiftl shiftr keycode 74 = Hex_D
+ altgr ctrll keycode 74 = Hex_D
+ shift alt ctrll keycode 74 = Hex_D
+ altgr shiftl ctrll keycode 74 = Hex_D
+ shift alt shiftl ctrll keycode 74 = Hex_D
+ altgr shiftr ctrll keycode 74 = Hex_D
+ shift alt shiftr ctrll keycode 74 = Hex_D
+ altgr shiftl shiftr ctrll keycode 74 = Hex_D
+ shift alt shiftl shiftr ctrll keycode 74 = Hex_D
+keycode 75 = KP_4
+ altgr keycode 75 = Hex_4
+ alt keycode 75 = Ascii_4
+ shift alt keycode 75 = Hex_4
+ altgr shiftl keycode 75 = Hex_4
+ alt shiftl keycode 75 = Ascii_4
+ shift alt shiftl keycode 75 = Hex_4
+ altgr shiftr keycode 75 = Hex_4
+ alt shiftr keycode 75 = Ascii_4
+ shift alt shiftr keycode 75 = Hex_4
+ altgr shiftl shiftr keycode 75 = Hex_4
+ alt shiftl shiftr keycode 75 = Ascii_4
+ shift alt shiftl shiftr keycode 75 = Hex_4
+ altgr ctrll keycode 75 = Hex_4
+ alt ctrll keycode 75 = Ascii_4
+ shift alt ctrll keycode 75 = Hex_4
+ altgr shiftl ctrll keycode 75 = Hex_4
+ alt shiftl ctrll keycode 75 = Ascii_4
+ shift alt shiftl ctrll keycode 75 = Hex_4
+ altgr shiftr ctrll keycode 75 = Hex_4
+ alt shiftr ctrll keycode 75 = Ascii_4
+ shift alt shiftr ctrll keycode 75 = Hex_4
+ altgr shiftl shiftr ctrll keycode 75 = Hex_4
+ alt shiftl shiftr ctrll keycode 75 = Ascii_4
+ shift alt shiftl shiftr ctrll keycode 75 = Hex_4
+keycode 76 = KP_5
+ altgr keycode 76 = Hex_5
+ alt keycode 76 = Ascii_5
+ shift alt keycode 76 = Hex_5
+ altgr shiftl keycode 76 = Hex_5
+ alt shiftl keycode 76 = Ascii_5
+ shift alt shiftl keycode 76 = Hex_5
+ altgr shiftr keycode 76 = Hex_5
+ alt shiftr keycode 76 = Ascii_5
+ shift alt shiftr keycode 76 = Hex_5
+ altgr shiftl shiftr keycode 76 = Hex_5
+ alt shiftl shiftr keycode 76 = Ascii_5
+ shift alt shiftl shiftr keycode 76 = Hex_5
+ altgr ctrll keycode 76 = Hex_5
+ alt ctrll keycode 76 = Ascii_5
+ shift alt ctrll keycode 76 = Hex_5
+ altgr shiftl ctrll keycode 76 = Hex_5
+ alt shiftl ctrll keycode 76 = Ascii_5
+ shift alt shiftl ctrll keycode 76 = Hex_5
+ altgr shiftr ctrll keycode 76 = Hex_5
+ alt shiftr ctrll keycode 76 = Ascii_5
+ shift alt shiftr ctrll keycode 76 = Hex_5
+ altgr shiftl shiftr ctrll keycode 76 = Hex_5
+ alt shiftl shiftr ctrll keycode 76 = Ascii_5
+ shift alt shiftl shiftr ctrll keycode 76 = Hex_5
+keycode 77 = KP_6
+ altgr keycode 77 = Hex_6
+ alt keycode 77 = Ascii_6
+ shift alt keycode 77 = Hex_6
+ altgr shiftl keycode 77 = Hex_6
+ alt shiftl keycode 77 = Ascii_6
+ shift alt shiftl keycode 77 = Hex_6
+ altgr shiftr keycode 77 = Hex_6
+ alt shiftr keycode 77 = Ascii_6
+ shift alt shiftr keycode 77 = Hex_6
+ altgr shiftl shiftr keycode 77 = Hex_6
+ alt shiftl shiftr keycode 77 = Ascii_6
+ shift alt shiftl shiftr keycode 77 = Hex_6
+ altgr ctrll keycode 77 = Hex_6
+ alt ctrll keycode 77 = Ascii_6
+ shift alt ctrll keycode 77 = Hex_6
+ altgr shiftl ctrll keycode 77 = Hex_6
+ alt shiftl ctrll keycode 77 = Ascii_6
+ shift alt shiftl ctrll keycode 77 = Hex_6
+ altgr shiftr ctrll keycode 77 = Hex_6
+ alt shiftr ctrll keycode 77 = Ascii_6
+ shift alt shiftr ctrll keycode 77 = Hex_6
+ altgr shiftl shiftr ctrll keycode 77 = Hex_6
+ alt shiftl shiftr ctrll keycode 77 = Ascii_6
+ shift alt shiftl shiftr ctrll keycode 77 = Hex_6
+keycode 78 = KP_Add
+ altgr keycode 78 = Hex_E
+ shift alt keycode 78 = Hex_E
+ altgr shiftl keycode 78 = Hex_E
+ shift alt shiftl keycode 78 = Hex_E
+ altgr shiftr keycode 78 = Hex_E
+ shift alt shiftr keycode 78 = Hex_E
+ altgr shiftl shiftr keycode 78 = Hex_E
+ shift alt shiftl shiftr keycode 78 = Hex_E
+ altgr ctrll keycode 78 = Hex_E
+ shift alt ctrll keycode 78 = Hex_E
+ altgr shiftl ctrll keycode 78 = Hex_E
+ shift alt shiftl ctrll keycode 78 = Hex_E
+ altgr shiftr ctrll keycode 78 = Hex_E
+ shift alt shiftr ctrll keycode 78 = Hex_E
+ altgr shiftl shiftr ctrll keycode 78 = Hex_E
+ shift alt shiftl shiftr ctrll keycode 78 = Hex_E
+keycode 79 = KP_1
+ altgr keycode 79 = Hex_1
+ alt keycode 79 = Ascii_1
+ shift alt keycode 79 = Hex_1
+ altgr shiftl keycode 79 = Hex_1
+ alt shiftl keycode 79 = Ascii_1
+ shift alt shiftl keycode 79 = Hex_1
+ altgr shiftr keycode 79 = Hex_1
+ alt shiftr keycode 79 = Ascii_1
+ shift alt shiftr keycode 79 = Hex_1
+ altgr shiftl shiftr keycode 79 = Hex_1
+ alt shiftl shiftr keycode 79 = Ascii_1
+ shift alt shiftl shiftr keycode 79 = Hex_1
+ altgr ctrll keycode 79 = Hex_1
+ alt ctrll keycode 79 = Ascii_1
+ shift alt ctrll keycode 79 = Hex_1
+ altgr shiftl ctrll keycode 79 = Hex_1
+ alt shiftl ctrll keycode 79 = Ascii_1
+ shift alt shiftl ctrll keycode 79 = Hex_1
+ altgr shiftr ctrll keycode 79 = Hex_1
+ alt shiftr ctrll keycode 79 = Ascii_1
+ shift alt shiftr ctrll keycode 79 = Hex_1
+ altgr shiftl shiftr ctrll keycode 79 = Hex_1
+ alt shiftl shiftr ctrll keycode 79 = Ascii_1
+ shift alt shiftl shiftr ctrll keycode 79 = Hex_1
+keycode 80 = KP_2
+ altgr keycode 80 = Hex_2
+ alt keycode 80 = Ascii_2
+ shift alt keycode 80 = Hex_2
+ altgr shiftl keycode 80 = Hex_2
+ alt shiftl keycode 80 = Ascii_2
+ shift alt shiftl keycode 80 = Hex_2
+ altgr shiftr keycode 80 = Hex_2
+ alt shiftr keycode 80 = Ascii_2
+ shift alt shiftr keycode 80 = Hex_2
+ altgr shiftl shiftr keycode 80 = Hex_2
+ alt shiftl shiftr keycode 80 = Ascii_2
+ shift alt shiftl shiftr keycode 80 = Hex_2
+ altgr ctrll keycode 80 = Hex_2
+ alt ctrll keycode 80 = Ascii_2
+ shift alt ctrll keycode 80 = Hex_2
+ altgr shiftl ctrll keycode 80 = Hex_2
+ alt shiftl ctrll keycode 80 = Ascii_2
+ shift alt shiftl ctrll keycode 80 = Hex_2
+ altgr shiftr ctrll keycode 80 = Hex_2
+ alt shiftr ctrll keycode 80 = Ascii_2
+ shift alt shiftr ctrll keycode 80 = Hex_2
+ altgr shiftl shiftr ctrll keycode 80 = Hex_2
+ alt shiftl shiftr ctrll keycode 80 = Ascii_2
+ shift alt shiftl shiftr ctrll keycode 80 = Hex_2
+keycode 81 = KP_3
+ altgr keycode 81 = Hex_3
+ alt keycode 81 = Ascii_3
+ shift alt keycode 81 = Hex_3
+ altgr shiftl keycode 81 = Hex_3
+ alt shiftl keycode 81 = Ascii_3
+ shift alt shiftl keycode 81 = Hex_3
+ altgr shiftr keycode 81 = Hex_3
+ alt shiftr keycode 81 = Ascii_3
+ shift alt shiftr keycode 81 = Hex_3
+ altgr shiftl shiftr keycode 81 = Hex_3
+ alt shiftl shiftr keycode 81 = Ascii_3
+ shift alt shiftl shiftr keycode 81 = Hex_3
+ altgr ctrll keycode 81 = Hex_3
+ alt ctrll keycode 81 = Ascii_3
+ shift alt ctrll keycode 81 = Hex_3
+ altgr shiftl ctrll keycode 81 = Hex_3
+ alt shiftl ctrll keycode 81 = Ascii_3
+ shift alt shiftl ctrll keycode 81 = Hex_3
+ altgr shiftr ctrll keycode 81 = Hex_3
+ alt shiftr ctrll keycode 81 = Ascii_3
+ shift alt shiftr ctrll keycode 81 = Hex_3
+ altgr shiftl shiftr ctrll keycode 81 = Hex_3
+ alt shiftl shiftr ctrll keycode 81 = Ascii_3
+ shift alt shiftl shiftr ctrll keycode 81 = Hex_3
+keycode 82 = KP_0
+ altgr keycode 82 = Hex_0
+ alt keycode 82 = Ascii_0
+ shift alt keycode 82 = Hex_0
+ altgr shiftl keycode 82 = Hex_0
+ alt shiftl keycode 82 = Ascii_0
+ shift alt shiftl keycode 82 = Hex_0
+ altgr shiftr keycode 82 = Hex_0
+ alt shiftr keycode 82 = Ascii_0
+ shift alt shiftr keycode 82 = Hex_0
+ altgr shiftl shiftr keycode 82 = Hex_0
+ alt shiftl shiftr keycode 82 = Ascii_0
+ shift alt shiftl shiftr keycode 82 = Hex_0
+ altgr ctrll keycode 82 = Hex_0
+ alt ctrll keycode 82 = Ascii_0
+ shift alt ctrll keycode 82 = Hex_0
+ altgr shiftl ctrll keycode 82 = Hex_0
+ alt shiftl ctrll keycode 82 = Ascii_0
+ shift alt shiftl ctrll keycode 82 = Hex_0
+ altgr shiftr ctrll keycode 82 = Hex_0
+ alt shiftr ctrll keycode 82 = Ascii_0
+ shift alt shiftr ctrll keycode 82 = Hex_0
+ altgr shiftl shiftr ctrll keycode 82 = Hex_0
+ alt shiftl shiftr ctrll keycode 82 = Ascii_0
+ shift alt shiftl shiftr ctrll keycode 82 = Hex_0
+keycode 83 = KP_Comma
+ altgr control keycode 83 = Boot
+ control alt keycode 83 = Boot
+ altgr control alt keycode 83 = Boot
+ altgr control shiftl keycode 83 = Boot
+ control alt shiftl keycode 83 = Boot
+ altgr control alt shiftl keycode 83 = Boot
+ altgr control shiftr keycode 83 = Boot
+ control alt shiftr keycode 83 = Boot
+ altgr control alt shiftr keycode 83 = Boot
+ altgr control shiftl shiftr keycode 83 = Boot
+ control alt shiftl shiftr keycode 83 = Boot
+ altgr control alt shiftl shiftr keycode 83 = Boot
+ altgr control ctrll keycode 83 = Boot
+ control alt ctrll keycode 83 = Boot
+ altgr control alt ctrll keycode 83 = Boot
+ altgr control shiftl ctrll keycode 83 = Boot
+ control alt shiftl ctrll keycode 83 = Boot
+ altgr control alt shiftl ctrll keycode 83 = Boot
+ altgr control shiftr ctrll keycode 83 = Boot
+ control alt shiftr ctrll keycode 83 = Boot
+ altgr control alt shiftr ctrll keycode 83 = Boot
+ altgr control shiftl shiftr ctrll keycode 83 = Boot
+ control alt shiftl shiftr ctrll keycode 83 = Boot
+ altgr control alt shiftl shiftr ctrll keycode 83 = Boot
+keycode 84 = Last_Console Last_Console Last_Console
+ control keycode 84 = Last_Console
+ shift control keycode 84 = Last_Console
+ alt keycode 84 = Last_Console
+ control alt keycode 84 = Last_Console
+keycode 85 =
+keycode 86 = backslash
+ shift keycode 86 = bar
+ altgr keycode 86 = +masculine
+ shift altgr keycode 86 = dead_tilde
+ control keycode 86 = Control_backslash
+ shift control keycode 86 = Control_backslash
+ altgr control keycode 86 = Control_backslash
+ shift altgr control keycode 86 = dead_tilde
+ alt keycode 86 = Meta_backslash
+ shift alt keycode 86 = Meta_bar
+ altgr alt keycode 86 = Meta_backslash
+ shift altgr alt keycode 86 = dead_tilde
+ control alt keycode 86 = Meta_Control_backslash
+ shift control alt keycode 86 = Meta_Control_backslash
+ altgr control alt keycode 86 = Meta_Control_backslash
+ shift altgr control alt keycode 86 = dead_tilde
+ shift shiftl keycode 86 = bar
+ altgr shiftl keycode 86 = +masculine
+ shift altgr shiftl keycode 86 = dead_tilde
+ control shiftl keycode 86 = Control_backslash
+ shift control shiftl keycode 86 = Control_backslash
+ altgr control shiftl keycode 86 = Control_backslash
+ shift altgr control shiftl keycode 86 = dead_tilde
+ alt shiftl keycode 86 = Meta_backslash
+ shift alt shiftl keycode 86 = Meta_bar
+ altgr alt shiftl keycode 86 = Meta_backslash
+ shift altgr alt shiftl keycode 86 = dead_tilde
+ control alt shiftl keycode 86 = Meta_Control_backslash
+ shift control alt shiftl keycode 86 = Meta_Control_backslash
+ altgr control alt shiftl keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftl keycode 86 = dead_tilde
+ shift shiftr keycode 86 = bar
+ altgr shiftr keycode 86 = +masculine
+ shift altgr shiftr keycode 86 = dead_tilde
+ control shiftr keycode 86 = Control_backslash
+ shift control shiftr keycode 86 = Control_backslash
+ altgr control shiftr keycode 86 = Control_backslash
+ shift altgr control shiftr keycode 86 = dead_tilde
+ alt shiftr keycode 86 = Meta_backslash
+ shift alt shiftr keycode 86 = Meta_bar
+ altgr alt shiftr keycode 86 = Meta_backslash
+ shift altgr alt shiftr keycode 86 = dead_tilde
+ control alt shiftr keycode 86 = Meta_Control_backslash
+ shift control alt shiftr keycode 86 = Meta_Control_backslash
+ altgr control alt shiftr keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftr keycode 86 = dead_tilde
+ shift shiftl shiftr keycode 86 = bar
+ altgr shiftl shiftr keycode 86 = +masculine
+ shift altgr shiftl shiftr keycode 86 = dead_tilde
+ control shiftl shiftr keycode 86 = Control_backslash
+ shift control shiftl shiftr keycode 86 = Control_backslash
+ altgr control shiftl shiftr keycode 86 = Control_backslash
+ shift altgr control shiftl shiftr keycode 86 = dead_tilde
+ alt shiftl shiftr keycode 86 = Meta_backslash
+ shift alt shiftl shiftr keycode 86 = Meta_bar
+ altgr alt shiftl shiftr keycode 86 = Meta_backslash
+ shift altgr alt shiftl shiftr keycode 86 = dead_tilde
+ control alt shiftl shiftr keycode 86 = Meta_Control_backslash
+ shift control alt shiftl shiftr keycode 86 = Meta_Control_backslash
+ altgr control alt shiftl shiftr keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr keycode 86 = dead_tilde
+ shift ctrll keycode 86 = bar
+ altgr ctrll keycode 86 = +masculine
+ shift altgr ctrll keycode 86 = dead_tilde
+ control ctrll keycode 86 = Control_backslash
+ shift control ctrll keycode 86 = Control_backslash
+ altgr control ctrll keycode 86 = Control_backslash
+ shift altgr control ctrll keycode 86 = dead_tilde
+ alt ctrll keycode 86 = Meta_backslash
+ shift alt ctrll keycode 86 = Meta_bar
+ altgr alt ctrll keycode 86 = Meta_backslash
+ shift altgr alt ctrll keycode 86 = dead_tilde
+ control alt ctrll keycode 86 = Meta_Control_backslash
+ shift control alt ctrll keycode 86 = Meta_Control_backslash
+ altgr control alt ctrll keycode 86 = Meta_Control_backslash
+ shift altgr control alt ctrll keycode 86 = dead_tilde
+ shift shiftl ctrll keycode 86 = bar
+ altgr shiftl ctrll keycode 86 = +masculine
+ shift altgr shiftl ctrll keycode 86 = dead_tilde
+ control shiftl ctrll keycode 86 = Control_backslash
+ shift control shiftl ctrll keycode 86 = Control_backslash
+ altgr control shiftl ctrll keycode 86 = Control_backslash
+ shift altgr control shiftl ctrll keycode 86 = dead_tilde
+ alt shiftl ctrll keycode 86 = Meta_backslash
+ shift alt shiftl ctrll keycode 86 = Meta_bar
+ altgr alt shiftl ctrll keycode 86 = Meta_backslash
+ shift altgr alt shiftl ctrll keycode 86 = dead_tilde
+ control alt shiftl ctrll keycode 86 = Meta_Control_backslash
+ shift control alt shiftl ctrll keycode 86 = Meta_Control_backslash
+ altgr control alt shiftl ctrll keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftl ctrll keycode 86 = dead_tilde
+ shift shiftr ctrll keycode 86 = bar
+ altgr shiftr ctrll keycode 86 = +masculine
+ shift altgr shiftr ctrll keycode 86 = dead_tilde
+ control shiftr ctrll keycode 86 = Control_backslash
+ shift control shiftr ctrll keycode 86 = Control_backslash
+ altgr control shiftr ctrll keycode 86 = Control_backslash
+ shift altgr control shiftr ctrll keycode 86 = dead_tilde
+ alt shiftr ctrll keycode 86 = Meta_backslash
+ shift alt shiftr ctrll keycode 86 = Meta_bar
+ altgr alt shiftr ctrll keycode 86 = Meta_backslash
+ shift altgr alt shiftr ctrll keycode 86 = dead_tilde
+ control alt shiftr ctrll keycode 86 = Meta_Control_backslash
+ shift control alt shiftr ctrll keycode 86 = Meta_Control_backslash
+ altgr control alt shiftr ctrll keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftr ctrll keycode 86 = dead_tilde
+ shift shiftl shiftr ctrll keycode 86 = bar
+ altgr shiftl shiftr ctrll keycode 86 = +masculine
+ shift altgr shiftl shiftr ctrll keycode 86 = dead_tilde
+ control shiftl shiftr ctrll keycode 86 = Control_backslash
+ shift control shiftl shiftr ctrll keycode 86 = Control_backslash
+ altgr control shiftl shiftr ctrll keycode 86 = Control_backslash
+ shift altgr control shiftl shiftr ctrll keycode 86 = dead_tilde
+ alt shiftl shiftr ctrll keycode 86 = Meta_backslash
+ shift alt shiftl shiftr ctrll keycode 86 = Meta_bar
+ altgr alt shiftl shiftr ctrll keycode 86 = Meta_backslash
+ shift altgr alt shiftl shiftr ctrll keycode 86 = dead_tilde
+ control alt shiftl shiftr ctrll keycode 86 = Meta_Control_backslash
+ shift control alt shiftl shiftr ctrll keycode 86 = Meta_Control_backslash
+ altgr control alt shiftl shiftr ctrll keycode 86 = Meta_Control_backslash
+ shift altgr control alt shiftl shiftr ctrll keycode 86 = dead_tilde
+keycode 87 = F11
+ shift keycode 87 = F23
+ altgr keycode 87 = Console_23
+ shift altgr keycode 87 = Console_35
+ control keycode 87 = F35
+ shift control keycode 87 = F47
+ altgr control keycode 87 = Console_23
+ shift altgr control keycode 87 = Console_35
+ alt keycode 87 = Console_11
+ shift alt keycode 87 = Console_23
+ control alt keycode 87 = Console_11
+ shift control alt keycode 87 = Console_23
+ shift shiftl keycode 87 = F23
+ altgr shiftl keycode 87 = Console_23
+ shift altgr shiftl keycode 87 = Console_35
+ control shiftl keycode 87 = F35
+ shift control shiftl keycode 87 = F47
+ altgr control shiftl keycode 87 = Console_23
+ shift altgr control shiftl keycode 87 = Console_35
+ alt shiftl keycode 87 = Console_11
+ shift alt shiftl keycode 87 = Console_23
+ control alt shiftl keycode 87 = Console_11
+ shift control alt shiftl keycode 87 = Console_23
+ shift shiftr keycode 87 = F23
+ altgr shiftr keycode 87 = Console_23
+ shift altgr shiftr keycode 87 = Console_35
+ control shiftr keycode 87 = F35
+ shift control shiftr keycode 87 = F47
+ altgr control shiftr keycode 87 = Console_23
+ shift altgr control shiftr keycode 87 = Console_35
+ alt shiftr keycode 87 = Console_11
+ shift alt shiftr keycode 87 = Console_23
+ control alt shiftr keycode 87 = Console_11
+ shift control alt shiftr keycode 87 = Console_23
+ shift shiftl shiftr keycode 87 = F23
+ altgr shiftl shiftr keycode 87 = Console_23
+ shift altgr shiftl shiftr keycode 87 = Console_35
+ control shiftl shiftr keycode 87 = F35
+ shift control shiftl shiftr keycode 87 = F47
+ altgr control shiftl shiftr keycode 87 = Console_23
+ shift altgr control shiftl shiftr keycode 87 = Console_35
+ alt shiftl shiftr keycode 87 = Console_11
+ shift alt shiftl shiftr keycode 87 = Console_23
+ control alt shiftl shiftr keycode 87 = Console_11
+ shift control alt shiftl shiftr keycode 87 = Console_23
+ shift ctrll keycode 87 = F23
+ altgr ctrll keycode 87 = Console_23
+ shift altgr ctrll keycode 87 = Console_35
+ control ctrll keycode 87 = F35
+ shift control ctrll keycode 87 = F47
+ altgr control ctrll keycode 87 = Console_23
+ shift altgr control ctrll keycode 87 = Console_35
+ alt ctrll keycode 87 = Console_11
+ shift alt ctrll keycode 87 = Console_23
+ control alt ctrll keycode 87 = Console_11
+ shift control alt ctrll keycode 87 = Console_23
+ shift shiftl ctrll keycode 87 = F23
+ altgr shiftl ctrll keycode 87 = Console_23
+ shift altgr shiftl ctrll keycode 87 = Console_35
+ control shiftl ctrll keycode 87 = F35
+ shift control shiftl ctrll keycode 87 = F47
+ altgr control shiftl ctrll keycode 87 = Console_23
+ shift altgr control shiftl ctrll keycode 87 = Console_35
+ alt shiftl ctrll keycode 87 = Console_11
+ shift alt shiftl ctrll keycode 87 = Console_23
+ control alt shiftl ctrll keycode 87 = Console_11
+ shift control alt shiftl ctrll keycode 87 = Console_23
+ shift shiftr ctrll keycode 87 = F23
+ altgr shiftr ctrll keycode 87 = Console_23
+ shift altgr shiftr ctrll keycode 87 = Console_35
+ control shiftr ctrll keycode 87 = F35
+ shift control shiftr ctrll keycode 87 = F47
+ altgr control shiftr ctrll keycode 87 = Console_23
+ shift altgr control shiftr ctrll keycode 87 = Console_35
+ alt shiftr ctrll keycode 87 = Console_11
+ shift alt shiftr ctrll keycode 87 = Console_23
+ control alt shiftr ctrll keycode 87 = Console_11
+ shift control alt shiftr ctrll keycode 87 = Console_23
+ shift shiftl shiftr ctrll keycode 87 = F23
+ altgr shiftl shiftr ctrll keycode 87 = Console_23
+ shift altgr shiftl shiftr ctrll keycode 87 = Console_35
+ control shiftl shiftr ctrll keycode 87 = F35
+ shift control shiftl shiftr ctrll keycode 87 = F47
+ altgr control shiftl shiftr ctrll keycode 87 = Console_23
+ shift altgr control shiftl shiftr ctrll keycode 87 = Console_35
+ alt shiftl shiftr ctrll keycode 87 = Console_11
+ shift alt shiftl shiftr ctrll keycode 87 = Console_23
+ control alt shiftl shiftr ctrll keycode 87 = Console_11
+ shift control alt shiftl shiftr ctrll keycode 87 = Console_23
+keycode 88 = F12
+ shift keycode 88 = F24
+ altgr keycode 88 = Console_24
+ shift altgr keycode 88 = Console_36
+ control keycode 88 = F36
+ shift control keycode 88 = F48
+ altgr control keycode 88 = Console_24
+ shift altgr control keycode 88 = Console_36
+ alt keycode 88 = Console_12
+ shift alt keycode 88 = Console_24
+ control alt keycode 88 = Console_12
+ shift control alt keycode 88 = Console_24
+ shift shiftl keycode 88 = F24
+ altgr shiftl keycode 88 = Console_24
+ shift altgr shiftl keycode 88 = Console_36
+ control shiftl keycode 88 = F36
+ shift control shiftl keycode 88 = F48
+ altgr control shiftl keycode 88 = Console_24
+ shift altgr control shiftl keycode 88 = Console_36
+ alt shiftl keycode 88 = Console_12
+ shift alt shiftl keycode 88 = Console_24
+ control alt shiftl keycode 88 = Console_12
+ shift control alt shiftl keycode 88 = Console_24
+ shift shiftr keycode 88 = F24
+ altgr shiftr keycode 88 = Console_24
+ shift altgr shiftr keycode 88 = Console_36
+ control shiftr keycode 88 = F36
+ shift control shiftr keycode 88 = F48
+ altgr control shiftr keycode 88 = Console_24
+ shift altgr control shiftr keycode 88 = Console_36
+ alt shiftr keycode 88 = Console_12
+ shift alt shiftr keycode 88 = Console_24
+ control alt shiftr keycode 88 = Console_12
+ shift control alt shiftr keycode 88 = Console_24
+ shift shiftl shiftr keycode 88 = F24
+ altgr shiftl shiftr keycode 88 = Console_24
+ shift altgr shiftl shiftr keycode 88 = Console_36
+ control shiftl shiftr keycode 88 = F36
+ shift control shiftl shiftr keycode 88 = F48
+ altgr control shiftl shiftr keycode 88 = Console_24
+ shift altgr control shiftl shiftr keycode 88 = Console_36
+ alt shiftl shiftr keycode 88 = Console_12
+ shift alt shiftl shiftr keycode 88 = Console_24
+ control alt shiftl shiftr keycode 88 = Console_12
+ shift control alt shiftl shiftr keycode 88 = Console_24
+ shift ctrll keycode 88 = F24
+ altgr ctrll keycode 88 = Console_24
+ shift altgr ctrll keycode 88 = Console_36
+ control ctrll keycode 88 = F36
+ shift control ctrll keycode 88 = F48
+ altgr control ctrll keycode 88 = Console_24
+ shift altgr control ctrll keycode 88 = Console_36
+ alt ctrll keycode 88 = Console_12
+ shift alt ctrll keycode 88 = Console_24
+ control alt ctrll keycode 88 = Console_12
+ shift control alt ctrll keycode 88 = Console_24
+ shift shiftl ctrll keycode 88 = F24
+ altgr shiftl ctrll keycode 88 = Console_24
+ shift altgr shiftl ctrll keycode 88 = Console_36
+ control shiftl ctrll keycode 88 = F36
+ shift control shiftl ctrll keycode 88 = F48
+ altgr control shiftl ctrll keycode 88 = Console_24
+ shift altgr control shiftl ctrll keycode 88 = Console_36
+ alt shiftl ctrll keycode 88 = Console_12
+ shift alt shiftl ctrll keycode 88 = Console_24
+ control alt shiftl ctrll keycode 88 = Console_12
+ shift control alt shiftl ctrll keycode 88 = Console_24
+ shift shiftr ctrll keycode 88 = F24
+ altgr shiftr ctrll keycode 88 = Console_24
+ shift altgr shiftr ctrll keycode 88 = Console_36
+ control shiftr ctrll keycode 88 = F36
+ shift control shiftr ctrll keycode 88 = F48
+ altgr control shiftr ctrll keycode 88 = Console_24
+ shift altgr control shiftr ctrll keycode 88 = Console_36
+ alt shiftr ctrll keycode 88 = Console_12
+ shift alt shiftr ctrll keycode 88 = Console_24
+ control alt shiftr ctrll keycode 88 = Console_12
+ shift control alt shiftr ctrll keycode 88 = Console_24
+ shift shiftl shiftr ctrll keycode 88 = F24
+ altgr shiftl shiftr ctrll keycode 88 = Console_24
+ shift altgr shiftl shiftr ctrll keycode 88 = Console_36
+ control shiftl shiftr ctrll keycode 88 = F36
+ shift control shiftl shiftr ctrll keycode 88 = F48
+ altgr control shiftl shiftr ctrll keycode 88 = Console_24
+ shift altgr control shiftl shiftr ctrll keycode 88 = Console_36
+ alt shiftl shiftr ctrll keycode 88 = Console_12
+ shift alt shiftl shiftr ctrll keycode 88 = Console_24
+ control alt shiftl shiftr ctrll keycode 88 = Console_12
+ shift control alt shiftl shiftr ctrll keycode 88 = Console_24
+keycode 89 = slash
+ shift keycode 89 = question
+ altgr keycode 89 = degree
+ shift altgr keycode 89 = questiondown
+ control keycode 89 = Delete
+ shift control keycode 89 = Delete
+ altgr control keycode 89 = Delete
+ shift altgr control keycode 89 = Delete
+ alt keycode 89 = Meta_slash
+ shift alt keycode 89 = Meta_question
+ altgr alt keycode 89 = Meta_slash
+ shift altgr alt keycode 89 = Meta_question
+ control alt keycode 89 = Meta_Delete
+ shift control alt keycode 89 = Meta_Delete
+ altgr control alt keycode 89 = Meta_Delete
+ shift altgr control alt keycode 89 = Meta_Delete
+ shift shiftl keycode 89 = question
+ altgr shiftl keycode 89 = degree
+ shift altgr shiftl keycode 89 = questiondown
+ control shiftl keycode 89 = Delete
+ shift control shiftl keycode 89 = Delete
+ altgr control shiftl keycode 89 = Delete
+ shift altgr control shiftl keycode 89 = Delete
+ alt shiftl keycode 89 = Meta_slash
+ shift alt shiftl keycode 89 = Meta_question
+ altgr alt shiftl keycode 89 = Meta_slash
+ shift altgr alt shiftl keycode 89 = Meta_question
+ control alt shiftl keycode 89 = Meta_Delete
+ shift control alt shiftl keycode 89 = Meta_Delete
+ altgr control alt shiftl keycode 89 = Meta_Delete
+ shift altgr control alt shiftl keycode 89 = Meta_Delete
+ shift shiftr keycode 89 = question
+ altgr shiftr keycode 89 = degree
+ shift altgr shiftr keycode 89 = questiondown
+ control shiftr keycode 89 = Delete
+ shift control shiftr keycode 89 = Delete
+ altgr control shiftr keycode 89 = Delete
+ shift altgr control shiftr keycode 89 = Delete
+ alt shiftr keycode 89 = Meta_slash
+ shift alt shiftr keycode 89 = Meta_question
+ altgr alt shiftr keycode 89 = Meta_slash
+ shift altgr alt shiftr keycode 89 = Meta_question
+ control alt shiftr keycode 89 = Meta_Delete
+ shift control alt shiftr keycode 89 = Meta_Delete
+ altgr control alt shiftr keycode 89 = Meta_Delete
+ shift altgr control alt shiftr keycode 89 = Meta_Delete
+ shift shiftl shiftr keycode 89 = question
+ altgr shiftl shiftr keycode 89 = degree
+ shift altgr shiftl shiftr keycode 89 = questiondown
+ control shiftl shiftr keycode 89 = Delete
+ shift control shiftl shiftr keycode 89 = Delete
+ altgr control shiftl shiftr keycode 89 = Delete
+ shift altgr control shiftl shiftr keycode 89 = Delete
+ alt shiftl shiftr keycode 89 = Meta_slash
+ shift alt shiftl shiftr keycode 89 = Meta_question
+ altgr alt shiftl shiftr keycode 89 = Meta_slash
+ shift altgr alt shiftl shiftr keycode 89 = Meta_question
+ control alt shiftl shiftr keycode 89 = Meta_Delete
+ shift control alt shiftl shiftr keycode 89 = Meta_Delete
+ altgr control alt shiftl shiftr keycode 89 = Meta_Delete
+ shift altgr control alt shiftl shiftr keycode 89 = Meta_Delete
+ shift ctrll keycode 89 = question
+ altgr ctrll keycode 89 = degree
+ shift altgr ctrll keycode 89 = questiondown
+ control ctrll keycode 89 = Delete
+ shift control ctrll keycode 89 = Delete
+ altgr control ctrll keycode 89 = Delete
+ shift altgr control ctrll keycode 89 = Delete
+ alt ctrll keycode 89 = Meta_slash
+ shift alt ctrll keycode 89 = Meta_question
+ altgr alt ctrll keycode 89 = Meta_slash
+ shift altgr alt ctrll keycode 89 = Meta_question
+ control alt ctrll keycode 89 = Meta_Delete
+ shift control alt ctrll keycode 89 = Meta_Delete
+ altgr control alt ctrll keycode 89 = Meta_Delete
+ shift altgr control alt ctrll keycode 89 = Meta_Delete
+ shift shiftl ctrll keycode 89 = question
+ altgr shiftl ctrll keycode 89 = degree
+ shift altgr shiftl ctrll keycode 89 = questiondown
+ control shiftl ctrll keycode 89 = Delete
+ shift control shiftl ctrll keycode 89 = Delete
+ altgr control shiftl ctrll keycode 89 = Delete
+ shift altgr control shiftl ctrll keycode 89 = Delete
+ alt shiftl ctrll keycode 89 = Meta_slash
+ shift alt shiftl ctrll keycode 89 = Meta_question
+ altgr alt shiftl ctrll keycode 89 = Meta_slash
+ shift altgr alt shiftl ctrll keycode 89 = Meta_question
+ control alt shiftl ctrll keycode 89 = Meta_Delete
+ shift control alt shiftl ctrll keycode 89 = Meta_Delete
+ altgr control alt shiftl ctrll keycode 89 = Meta_Delete
+ shift altgr control alt shiftl ctrll keycode 89 = Meta_Delete
+ shift shiftr ctrll keycode 89 = question
+ altgr shiftr ctrll keycode 89 = degree
+ shift altgr shiftr ctrll keycode 89 = questiondown
+ control shiftr ctrll keycode 89 = Delete
+ shift control shiftr ctrll keycode 89 = Delete
+ altgr control shiftr ctrll keycode 89 = Delete
+ shift altgr control shiftr ctrll keycode 89 = Delete
+ alt shiftr ctrll keycode 89 = Meta_slash
+ shift alt shiftr ctrll keycode 89 = Meta_question
+ altgr alt shiftr ctrll keycode 89 = Meta_slash
+ shift altgr alt shiftr ctrll keycode 89 = Meta_question
+ control alt shiftr ctrll keycode 89 = Meta_Delete
+ shift control alt shiftr ctrll keycode 89 = Meta_Delete
+ altgr control alt shiftr ctrll keycode 89 = Meta_Delete
+ shift altgr control alt shiftr ctrll keycode 89 = Meta_Delete
+ shift shiftl shiftr ctrll keycode 89 = question
+ altgr shiftl shiftr ctrll keycode 89 = degree
+ shift altgr shiftl shiftr ctrll keycode 89 = questiondown
+ control shiftl shiftr ctrll keycode 89 = Delete
+ shift control shiftl shiftr ctrll keycode 89 = Delete
+ altgr control shiftl shiftr ctrll keycode 89 = Delete
+ shift altgr control shiftl shiftr ctrll keycode 89 = Delete
+ alt shiftl shiftr ctrll keycode 89 = Meta_slash
+ shift alt shiftl shiftr ctrll keycode 89 = Meta_question
+ altgr alt shiftl shiftr ctrll keycode 89 = Meta_slash
+ shift altgr alt shiftl shiftr ctrll keycode 89 = Meta_question
+ control alt shiftl shiftr ctrll keycode 89 = Meta_Delete
+ shift control alt shiftl shiftr ctrll keycode 89 = Meta_Delete
+ altgr control alt shiftl shiftr ctrll keycode 89 = Meta_Delete
+ shift altgr control alt shiftl shiftr ctrll keycode 89 = Meta_Delete
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = KP_Enter
+ altgr keycode 96 = Hex_F
+ shift alt keycode 96 = Hex_F
+ altgr shiftl keycode 96 = Hex_F
+ shift alt shiftl keycode 96 = Hex_F
+ altgr shiftr keycode 96 = Hex_F
+ shift alt shiftr keycode 96 = Hex_F
+ altgr shiftl shiftr keycode 96 = Hex_F
+ shift alt shiftl shiftr keycode 96 = Hex_F
+ altgr ctrll keycode 96 = Hex_F
+ shift alt ctrll keycode 96 = Hex_F
+ altgr shiftl ctrll keycode 96 = Hex_F
+ shift alt shiftl ctrll keycode 96 = Hex_F
+ altgr shiftr ctrll keycode 96 = Hex_F
+ shift alt shiftr ctrll keycode 96 = Hex_F
+ altgr shiftl shiftr ctrll keycode 96 = Hex_F
+ shift alt shiftl shiftr ctrll keycode 96 = Hex_F
+keycode 97 = Control
+keycode 98 = KP_Divide
+ altgr keycode 98 = Hex_B
+ shift alt keycode 98 = Hex_B
+ altgr shiftl keycode 98 = Hex_B
+ shift alt shiftl keycode 98 = Hex_B
+ altgr shiftr keycode 98 = Hex_B
+ shift alt shiftr keycode 98 = Hex_B
+ altgr shiftl shiftr keycode 98 = Hex_B
+ shift alt shiftl shiftr keycode 98 = Hex_B
+ altgr ctrll keycode 98 = Hex_B
+ shift alt ctrll keycode 98 = Hex_B
+ altgr shiftl ctrll keycode 98 = Hex_B
+ shift alt shiftl ctrll keycode 98 = Hex_B
+ altgr shiftr ctrll keycode 98 = Hex_B
+ shift alt shiftr ctrll keycode 98 = Hex_B
+ altgr shiftl shiftr ctrll keycode 98 = Hex_B
+ shift alt shiftl shiftr ctrll keycode 98 = Hex_B
+keycode 99 =
+ altgr keycode 99 = Control_backslash
+ shift altgr keycode 99 = Control_backslash
+ control keycode 99 = Control_backslash
+ shift control keycode 99 = Control_backslash
+ altgr control keycode 99 = Control_backslash
+ shift altgr control keycode 99 = Control_backslash
+ alt keycode 99 = Control_backslash
+ shift alt keycode 99 = Control_backslash
+ altgr alt keycode 99 = Control_backslash
+ shift altgr alt keycode 99 = Control_backslash
+ control alt keycode 99 = Control_backslash
+ shift control alt keycode 99 = Control_backslash
+ altgr control alt keycode 99 = Control_backslash
+ shift altgr control alt keycode 99 = Control_backslash
+ altgr shiftl keycode 99 = Control_backslash
+ shift altgr shiftl keycode 99 = Control_backslash
+ control shiftl keycode 99 = Control_backslash
+ shift control shiftl keycode 99 = Control_backslash
+ altgr control shiftl keycode 99 = Control_backslash
+ shift altgr control shiftl keycode 99 = Control_backslash
+ alt shiftl keycode 99 = Control_backslash
+ shift alt shiftl keycode 99 = Control_backslash
+ altgr alt shiftl keycode 99 = Control_backslash
+ shift altgr alt shiftl keycode 99 = Control_backslash
+ control alt shiftl keycode 99 = Control_backslash
+ shift control alt shiftl keycode 99 = Control_backslash
+ altgr control alt shiftl keycode 99 = Control_backslash
+ shift altgr control alt shiftl keycode 99 = Control_backslash
+ altgr shiftr keycode 99 = Control_backslash
+ shift altgr shiftr keycode 99 = Control_backslash
+ control shiftr keycode 99 = Control_backslash
+ shift control shiftr keycode 99 = Control_backslash
+ altgr control shiftr keycode 99 = Control_backslash
+ shift altgr control shiftr keycode 99 = Control_backslash
+ alt shiftr keycode 99 = Control_backslash
+ shift alt shiftr keycode 99 = Control_backslash
+ altgr alt shiftr keycode 99 = Control_backslash
+ shift altgr alt shiftr keycode 99 = Control_backslash
+ control alt shiftr keycode 99 = Control_backslash
+ shift control alt shiftr keycode 99 = Control_backslash
+ altgr control alt shiftr keycode 99 = Control_backslash
+ shift altgr control alt shiftr keycode 99 = Control_backslash
+ altgr shiftl shiftr keycode 99 = Control_backslash
+ shift altgr shiftl shiftr keycode 99 = Control_backslash
+ control shiftl shiftr keycode 99 = Control_backslash
+ shift control shiftl shiftr keycode 99 = Control_backslash
+ altgr control shiftl shiftr keycode 99 = Control_backslash
+ shift altgr control shiftl shiftr keycode 99 = Control_backslash
+ alt shiftl shiftr keycode 99 = Control_backslash
+ shift alt shiftl shiftr keycode 99 = Control_backslash
+ altgr alt shiftl shiftr keycode 99 = Control_backslash
+ shift altgr alt shiftl shiftr keycode 99 = Control_backslash
+ control alt shiftl shiftr keycode 99 = Control_backslash
+ shift control alt shiftl shiftr keycode 99 = Control_backslash
+ altgr control alt shiftl shiftr keycode 99 = Control_backslash
+ shift altgr control alt shiftl shiftr keycode 99 = Control_backslash
+ altgr ctrll keycode 99 = Control_backslash
+ shift altgr ctrll keycode 99 = Control_backslash
+ control ctrll keycode 99 = Control_backslash
+ shift control ctrll keycode 99 = Control_backslash
+ altgr control ctrll keycode 99 = Control_backslash
+ shift altgr control ctrll keycode 99 = Control_backslash
+ alt ctrll keycode 99 = Control_backslash
+ shift alt ctrll keycode 99 = Control_backslash
+ altgr alt ctrll keycode 99 = Control_backslash
+ shift altgr alt ctrll keycode 99 = Control_backslash
+ control alt ctrll keycode 99 = Control_backslash
+ shift control alt ctrll keycode 99 = Control_backslash
+ altgr control alt ctrll keycode 99 = Control_backslash
+ shift altgr control alt ctrll keycode 99 = Control_backslash
+ altgr shiftl ctrll keycode 99 = Control_backslash
+ shift altgr shiftl ctrll keycode 99 = Control_backslash
+ control shiftl ctrll keycode 99 = Control_backslash
+ shift control shiftl ctrll keycode 99 = Control_backslash
+ altgr control shiftl ctrll keycode 99 = Control_backslash
+ shift altgr control shiftl ctrll keycode 99 = Control_backslash
+ alt shiftl ctrll keycode 99 = Control_backslash
+ shift alt shiftl ctrll keycode 99 = Control_backslash
+ altgr alt shiftl ctrll keycode 99 = Control_backslash
+ shift altgr alt shiftl ctrll keycode 99 = Control_backslash
+ control alt shiftl ctrll keycode 99 = Control_backslash
+ shift control alt shiftl ctrll keycode 99 = Control_backslash
+ altgr control alt shiftl ctrll keycode 99 = Control_backslash
+ shift altgr control alt shiftl ctrll keycode 99 = Control_backslash
+ altgr shiftr ctrll keycode 99 = Control_backslash
+ shift altgr shiftr ctrll keycode 99 = Control_backslash
+ control shiftr ctrll keycode 99 = Control_backslash
+ shift control shiftr ctrll keycode 99 = Control_backslash
+ altgr control shiftr ctrll keycode 99 = Control_backslash
+ shift altgr control shiftr ctrll keycode 99 = Control_backslash
+ alt shiftr ctrll keycode 99 = Control_backslash
+ shift alt shiftr ctrll keycode 99 = Control_backslash
+ altgr alt shiftr ctrll keycode 99 = Control_backslash
+ shift altgr alt shiftr ctrll keycode 99 = Control_backslash
+ control alt shiftr ctrll keycode 99 = Control_backslash
+ shift control alt shiftr ctrll keycode 99 = Control_backslash
+ altgr control alt shiftr ctrll keycode 99 = Control_backslash
+ shift altgr control alt shiftr ctrll keycode 99 = Control_backslash
+ altgr shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift altgr shiftl shiftr ctrll keycode 99 = Control_backslash
+ control shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift control shiftl shiftr ctrll keycode 99 = Control_backslash
+ altgr control shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift altgr control shiftl shiftr ctrll keycode 99 = Control_backslash
+ alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ altgr alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift altgr alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ control alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift control alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ altgr control alt shiftl shiftr ctrll keycode 99 = Control_backslash
+ shift altgr control alt shiftl shiftr ctrll keycode 99 = Control_backslash
+keycode 100 = AltGr
+keycode 101 = Break Break Break
+ control keycode 101 = Break
+ shift control keycode 101 = Break
+ alt keycode 101 = Break
+ control alt keycode 101 = Break
+keycode 102 = Find
+keycode 103 = Up
+ alt keycode 103 = KeyboardSignal
+ alt shiftl keycode 103 = KeyboardSignal
+ alt shiftr keycode 103 = KeyboardSignal
+ alt shiftl shiftr keycode 103 = KeyboardSignal
+ alt ctrll keycode 103 = KeyboardSignal
+ alt shiftl ctrll keycode 103 = KeyboardSignal
+ alt shiftr ctrll keycode 103 = KeyboardSignal
+ alt shiftl shiftr ctrll keycode 103 = KeyboardSignal
+keycode 104 = Prior
+ shift keycode 104 = Scroll_Backward
+ shift shiftl keycode 104 = Scroll_Backward
+ shift shiftr keycode 104 = Scroll_Backward
+ shift shiftl shiftr keycode 104 = Scroll_Backward
+ shift ctrll keycode 104 = Scroll_Backward
+ shift shiftl ctrll keycode 104 = Scroll_Backward
+ shift shiftr ctrll keycode 104 = Scroll_Backward
+ shift shiftl shiftr ctrll keycode 104 = Scroll_Backward
+keycode 105 = Left
+ alt keycode 105 = Decr_Console
+ alt shiftl keycode 105 = Decr_Console
+ alt shiftr keycode 105 = Decr_Console
+ alt shiftl shiftr keycode 105 = Decr_Console
+ alt ctrll keycode 105 = Decr_Console
+ alt shiftl ctrll keycode 105 = Decr_Console
+ alt shiftr ctrll keycode 105 = Decr_Console
+ alt shiftl shiftr ctrll keycode 105 = Decr_Console
+keycode 106 = Right
+ alt keycode 106 = Incr_Console
+ alt shiftl keycode 106 = Incr_Console
+ alt shiftr keycode 106 = Incr_Console
+ alt shiftl shiftr keycode 106 = Incr_Console
+ alt ctrll keycode 106 = Incr_Console
+ alt shiftl ctrll keycode 106 = Incr_Console
+ alt shiftr ctrll keycode 106 = Incr_Console
+ alt shiftl shiftr ctrll keycode 106 = Incr_Console
+keycode 107 = Select
+keycode 108 = Down
+keycode 109 = Next
+ shift keycode 109 = Scroll_Forward
+ shift shiftl keycode 109 = Scroll_Forward
+ shift shiftr keycode 109 = Scroll_Forward
+ shift shiftl shiftr keycode 109 = Scroll_Forward
+ shift ctrll keycode 109 = Scroll_Forward
+ shift shiftl ctrll keycode 109 = Scroll_Forward
+ shift shiftr ctrll keycode 109 = Scroll_Forward
+ shift shiftl shiftr ctrll keycode 109 = Scroll_Forward
+keycode 110 = Insert
+keycode 111 = Remove
+ altgr control keycode 111 = Boot
+ control alt keycode 111 = Boot
+ altgr control alt keycode 111 = Boot
+ altgr control shiftl keycode 111 = Boot
+ control alt shiftl keycode 111 = Boot
+ altgr control alt shiftl keycode 111 = Boot
+ altgr control shiftr keycode 111 = Boot
+ control alt shiftr keycode 111 = Boot
+ altgr control alt shiftr keycode 111 = Boot
+ altgr control shiftl shiftr keycode 111 = Boot
+ control alt shiftl shiftr keycode 111 = Boot
+ altgr control alt shiftl shiftr keycode 111 = Boot
+ altgr control ctrll keycode 111 = Boot
+ control alt ctrll keycode 111 = Boot
+ altgr control alt ctrll keycode 111 = Boot
+ altgr control shiftl ctrll keycode 111 = Boot
+ control alt shiftl ctrll keycode 111 = Boot
+ altgr control alt shiftl ctrll keycode 111 = Boot
+ altgr control shiftr ctrll keycode 111 = Boot
+ control alt shiftr ctrll keycode 111 = Boot
+ altgr control alt shiftr ctrll keycode 111 = Boot
+ altgr control shiftl shiftr ctrll keycode 111 = Boot
+ control alt shiftl shiftr ctrll keycode 111 = Boot
+ altgr control alt shiftl shiftr ctrll keycode 111 = Boot
+keycode 112 = Macro Macro Macro
+ control keycode 112 = Macro
+ shift control keycode 112 = Macro
+ alt keycode 112 = Macro
+ control alt keycode 112 = Macro
+keycode 113 = F13 F13 F13
+ control keycode 113 = F13
+ shift control keycode 113 = F13
+ alt keycode 113 = F13
+ control alt keycode 113 = F13
+keycode 114 = F14 F14 F14
+ control keycode 114 = F14
+ shift control keycode 114 = F14
+ alt keycode 114 = F14
+ control alt keycode 114 = F14
+keycode 115 = Help Help Help
+ control keycode 115 = Help
+ shift control keycode 115 = Help
+ alt keycode 115 = Help
+ control alt keycode 115 = Help
+keycode 116 = Do Do Do
+ control keycode 116 = Do
+ shift control keycode 116 = Do
+ alt keycode 116 = Do
+ control alt keycode 116 = Do
+keycode 117 = F17 F17 F17
+ control keycode 117 = F17
+ shift control keycode 117 = F17
+ alt keycode 117 = F17
+ control alt keycode 117 = F17
+keycode 118 = KP_MinPlus KP_MinPlus KP_MinPlus
+ control keycode 118 = KP_MinPlus
+ shift control keycode 118 = KP_MinPlus
+ alt keycode 118 = KP_MinPlus
+ control alt keycode 118 = KP_MinPlus
+keycode 119 = Pause
+keycode 120 =
+keycode 121 = KP_Period
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 = Alt
+keycode 126 = Alt
+keycode 127 =
+keycode 128 = nul nul nul
+ control keycode 128 = nul
+ shift control keycode 128 = nul
+ alt keycode 128 = nul
+ control alt keycode 128 = nul
+keycode 129 = nul nul nul
+ control keycode 129 = nul
+ shift control keycode 129 = nul
+ alt keycode 129 = nul
+ control alt keycode 129 = nul
+keycode 130 = nul nul nul
+ control keycode 130 = nul
+ shift control keycode 130 = nul
+ alt keycode 130 = nul
+ control alt keycode 130 = nul
+keycode 131 = nul nul nul
+ control keycode 131 = nul
+ shift control keycode 131 = nul
+ alt keycode 131 = nul
+ control alt keycode 131 = nul
+keycode 132 = nul nul nul
+ control keycode 132 = nul
+ shift control keycode 132 = nul
+ alt keycode 132 = nul
+ control alt keycode 132 = nul
+keycode 133 = nul nul nul
+ control keycode 133 = nul
+ shift control keycode 133 = nul
+ alt keycode 133 = nul
+ control alt keycode 133 = nul
+keycode 134 = nul nul nul
+ control keycode 134 = nul
+ shift control keycode 134 = nul
+ alt keycode 134 = nul
+ control alt keycode 134 = nul
+keycode 135 = nul nul nul
+ control keycode 135 = nul
+ shift control keycode 135 = nul
+ alt keycode 135 = nul
+ control alt keycode 135 = nul
+keycode 136 = nul nul nul
+ control keycode 136 = nul
+ shift control keycode 136 = nul
+ alt keycode 136 = nul
+ control alt keycode 136 = nul
+keycode 137 = nul nul nul
+ control keycode 137 = nul
+ shift control keycode 137 = nul
+ alt keycode 137 = nul
+ control alt keycode 137 = nul
+keycode 138 = nul nul nul
+ control keycode 138 = nul
+ shift control keycode 138 = nul
+ alt keycode 138 = nul
+ control alt keycode 138 = nul
+keycode 139 = nul nul nul
+ control keycode 139 = nul
+ shift control keycode 139 = nul
+ alt keycode 139 = nul
+ control alt keycode 139 = nul
+keycode 140 = nul nul nul
+ control keycode 140 = nul
+ shift control keycode 140 = nul
+ alt keycode 140 = nul
+ control alt keycode 140 = nul
+keycode 141 = nul nul nul
+ control keycode 141 = nul
+ shift control keycode 141 = nul
+ alt keycode 141 = nul
+ control alt keycode 141 = nul
+keycode 142 = nul nul nul
+ control keycode 142 = nul
+ shift control keycode 142 = nul
+ alt keycode 142 = nul
+ control alt keycode 142 = nul
+keycode 143 = nul nul nul
+ control keycode 143 = nul
+ shift control keycode 143 = nul
+ alt keycode 143 = nul
+ control alt keycode 143 = nul
+keycode 144 = nul nul nul
+ control keycode 144 = nul
+ shift control keycode 144 = nul
+ alt keycode 144 = nul
+ control alt keycode 144 = nul
+keycode 145 = nul nul nul
+ control keycode 145 = nul
+ shift control keycode 145 = nul
+ alt keycode 145 = nul
+ control alt keycode 145 = nul
+keycode 146 = nul nul nul
+ control keycode 146 = nul
+ shift control keycode 146 = nul
+ alt keycode 146 = nul
+ control alt keycode 146 = nul
+keycode 147 = nul nul nul
+ control keycode 147 = nul
+ shift control keycode 147 = nul
+ alt keycode 147 = nul
+ control alt keycode 147 = nul
+keycode 148 = nul nul nul
+ control keycode 148 = nul
+ shift control keycode 148 = nul
+ alt keycode 148 = nul
+ control alt keycode 148 = nul
+keycode 149 = nul nul nul
+ control keycode 149 = nul
+ shift control keycode 149 = nul
+ alt keycode 149 = nul
+ control alt keycode 149 = nul
+keycode 150 = nul nul nul
+ control keycode 150 = nul
+ shift control keycode 150 = nul
+ alt keycode 150 = nul
+ control alt keycode 150 = nul
+keycode 151 = nul nul nul
+ control keycode 151 = nul
+ shift control keycode 151 = nul
+ alt keycode 151 = nul
+ control alt keycode 151 = nul
+keycode 152 = nul nul nul
+ control keycode 152 = nul
+ shift control keycode 152 = nul
+ alt keycode 152 = nul
+ control alt keycode 152 = nul
+keycode 153 = nul nul nul
+ control keycode 153 = nul
+ shift control keycode 153 = nul
+ alt keycode 153 = nul
+ control alt keycode 153 = nul
+keycode 154 = nul nul nul
+ control keycode 154 = nul
+ shift control keycode 154 = nul
+ alt keycode 154 = nul
+ control alt keycode 154 = nul
+keycode 155 = nul nul nul
+ control keycode 155 = nul
+ shift control keycode 155 = nul
+ alt keycode 155 = nul
+ control alt keycode 155 = nul
+keycode 156 = nul nul nul
+ control keycode 156 = nul
+ shift control keycode 156 = nul
+ alt keycode 156 = nul
+ control alt keycode 156 = nul
+keycode 157 = nul nul nul
+ control keycode 157 = nul
+ shift control keycode 157 = nul
+ alt keycode 157 = nul
+ control alt keycode 157 = nul
+keycode 158 = nul nul nul
+ control keycode 158 = nul
+ shift control keycode 158 = nul
+ alt keycode 158 = nul
+ control alt keycode 158 = nul
+keycode 159 = nul nul nul
+ control keycode 159 = nul
+ shift control keycode 159 = nul
+ alt keycode 159 = nul
+ control alt keycode 159 = nul
+keycode 160 = nul nul nul
+ control keycode 160 = nul
+ shift control keycode 160 = nul
+ alt keycode 160 = nul
+ control alt keycode 160 = nul
+keycode 161 = nul nul nul
+ control keycode 161 = nul
+ shift control keycode 161 = nul
+ alt keycode 161 = nul
+ control alt keycode 161 = nul
+keycode 162 = nul nul nul
+ control keycode 162 = nul
+ shift control keycode 162 = nul
+ alt keycode 162 = nul
+ control alt keycode 162 = nul
+keycode 163 = nul nul nul
+ control keycode 163 = nul
+ shift control keycode 163 = nul
+ alt keycode 163 = nul
+ control alt keycode 163 = nul
+keycode 164 = nul nul nul
+ control keycode 164 = nul
+ shift control keycode 164 = nul
+ alt keycode 164 = nul
+ control alt keycode 164 = nul
+keycode 165 = nul nul nul
+ control keycode 165 = nul
+ shift control keycode 165 = nul
+ alt keycode 165 = nul
+ control alt keycode 165 = nul
+keycode 166 = nul nul nul
+ control keycode 166 = nul
+ shift control keycode 166 = nul
+ alt keycode 166 = nul
+ control alt keycode 166 = nul
+keycode 167 = nul nul nul
+ control keycode 167 = nul
+ shift control keycode 167 = nul
+ alt keycode 167 = nul
+ control alt keycode 167 = nul
+keycode 168 = nul nul nul
+ control keycode 168 = nul
+ shift control keycode 168 = nul
+ alt keycode 168 = nul
+ control alt keycode 168 = nul
+keycode 169 = nul nul nul
+ control keycode 169 = nul
+ shift control keycode 169 = nul
+ alt keycode 169 = nul
+ control alt keycode 169 = nul
+keycode 170 = nul nul nul
+ control keycode 170 = nul
+ shift control keycode 170 = nul
+ alt keycode 170 = nul
+ control alt keycode 170 = nul
+keycode 171 = nul nul nul
+ control keycode 171 = nul
+ shift control keycode 171 = nul
+ alt keycode 171 = nul
+ control alt keycode 171 = nul
+keycode 172 = nul nul nul
+ control keycode 172 = nul
+ shift control keycode 172 = nul
+ alt keycode 172 = nul
+ control alt keycode 172 = nul
+keycode 173 = nul nul nul
+ control keycode 173 = nul
+ shift control keycode 173 = nul
+ alt keycode 173 = nul
+ control alt keycode 173 = nul
+keycode 174 = nul nul nul
+ control keycode 174 = nul
+ shift control keycode 174 = nul
+ alt keycode 174 = nul
+ control alt keycode 174 = nul
+keycode 175 = nul nul nul
+ control keycode 175 = nul
+ shift control keycode 175 = nul
+ alt keycode 175 = nul
+ control alt keycode 175 = nul
+keycode 176 = nul nul nul
+ control keycode 176 = nul
+ shift control keycode 176 = nul
+ alt keycode 176 = nul
+ control alt keycode 176 = nul
+keycode 177 = nul nul nul
+ control keycode 177 = nul
+ shift control keycode 177 = nul
+ alt keycode 177 = nul
+ control alt keycode 177 = nul
+keycode 178 = nul nul nul
+ control keycode 178 = nul
+ shift control keycode 178 = nul
+ alt keycode 178 = nul
+ control alt keycode 178 = nul
+keycode 179 = nul nul nul
+ control keycode 179 = nul
+ shift control keycode 179 = nul
+ alt keycode 179 = nul
+ control alt keycode 179 = nul
+keycode 180 = nul nul nul
+ control keycode 180 = nul
+ shift control keycode 180 = nul
+ alt keycode 180 = nul
+ control alt keycode 180 = nul
+keycode 181 = nul nul nul
+ control keycode 181 = nul
+ shift control keycode 181 = nul
+ alt keycode 181 = nul
+ control alt keycode 181 = nul
+keycode 182 = nul nul nul
+ control keycode 182 = nul
+ shift control keycode 182 = nul
+ alt keycode 182 = nul
+ control alt keycode 182 = nul
+keycode 183 = nul nul nul
+ control keycode 183 = nul
+ shift control keycode 183 = nul
+ alt keycode 183 = nul
+ control alt keycode 183 = nul
+keycode 184 = nul nul nul
+ control keycode 184 = nul
+ shift control keycode 184 = nul
+ alt keycode 184 = nul
+ control alt keycode 184 = nul
+keycode 185 = nul nul nul
+ control keycode 185 = nul
+ shift control keycode 185 = nul
+ alt keycode 185 = nul
+ control alt keycode 185 = nul
+keycode 186 = nul nul nul
+ control keycode 186 = nul
+ shift control keycode 186 = nul
+ alt keycode 186 = nul
+ control alt keycode 186 = nul
+keycode 187 = nul nul nul
+ control keycode 187 = nul
+ shift control keycode 187 = nul
+ alt keycode 187 = nul
+ control alt keycode 187 = nul
+keycode 188 = nul nul nul
+ control keycode 188 = nul
+ shift control keycode 188 = nul
+ alt keycode 188 = nul
+ control alt keycode 188 = nul
+keycode 189 = nul nul nul
+ control keycode 189 = nul
+ shift control keycode 189 = nul
+ alt keycode 189 = nul
+ control alt keycode 189 = nul
+keycode 190 = nul nul nul
+ control keycode 190 = nul
+ shift control keycode 190 = nul
+ alt keycode 190 = nul
+ control alt keycode 190 = nul
+keycode 191 = nul nul nul
+ control keycode 191 = nul
+ shift control keycode 191 = nul
+ alt keycode 191 = nul
+ control alt keycode 191 = nul
+keycode 192 = nul nul nul
+ control keycode 192 = nul
+ shift control keycode 192 = nul
+ alt keycode 192 = nul
+ control alt keycode 192 = nul
+keycode 193 = nul nul nul
+ control keycode 193 = nul
+ shift control keycode 193 = nul
+ alt keycode 193 = nul
+ control alt keycode 193 = nul
+keycode 194 = nul nul nul
+ control keycode 194 = nul
+ shift control keycode 194 = nul
+ alt keycode 194 = nul
+ control alt keycode 194 = nul
+keycode 195 = nul nul nul
+ control keycode 195 = nul
+ shift control keycode 195 = nul
+ alt keycode 195 = nul
+ control alt keycode 195 = nul
+keycode 196 = nul nul nul
+ control keycode 196 = nul
+ shift control keycode 196 = nul
+ alt keycode 196 = nul
+ control alt keycode 196 = nul
+keycode 197 = nul nul nul
+ control keycode 197 = nul
+ shift control keycode 197 = nul
+ alt keycode 197 = nul
+ control alt keycode 197 = nul
+keycode 198 = nul nul nul
+ control keycode 198 = nul
+ shift control keycode 198 = nul
+ alt keycode 198 = nul
+ control alt keycode 198 = nul
+keycode 199 = nul nul nul
+ control keycode 199 = nul
+ shift control keycode 199 = nul
+ alt keycode 199 = nul
+ control alt keycode 199 = nul
+keycode 200 = nul nul nul
+ control keycode 200 = nul
+ shift control keycode 200 = nul
+ alt keycode 200 = nul
+ control alt keycode 200 = nul
+keycode 201 = nul nul nul
+ control keycode 201 = nul
+ shift control keycode 201 = nul
+ alt keycode 201 = nul
+ control alt keycode 201 = nul
+keycode 202 = nul nul nul
+ control keycode 202 = nul
+ shift control keycode 202 = nul
+ alt keycode 202 = nul
+ control alt keycode 202 = nul
+keycode 203 = nul nul nul
+ control keycode 203 = nul
+ shift control keycode 203 = nul
+ alt keycode 203 = nul
+ control alt keycode 203 = nul
+keycode 204 = nul nul nul
+ control keycode 204 = nul
+ shift control keycode 204 = nul
+ alt keycode 204 = nul
+ control alt keycode 204 = nul
+keycode 205 = nul nul nul
+ control keycode 205 = nul
+ shift control keycode 205 = nul
+ alt keycode 205 = nul
+ control alt keycode 205 = nul
+keycode 206 = nul nul nul
+ control keycode 206 = nul
+ shift control keycode 206 = nul
+ alt keycode 206 = nul
+ control alt keycode 206 = nul
+keycode 207 = nul nul nul
+ control keycode 207 = nul
+ shift control keycode 207 = nul
+ alt keycode 207 = nul
+ control alt keycode 207 = nul
+keycode 208 = nul nul nul
+ control keycode 208 = nul
+ shift control keycode 208 = nul
+ alt keycode 208 = nul
+ control alt keycode 208 = nul
+keycode 209 = nul nul nul
+ control keycode 209 = nul
+ shift control keycode 209 = nul
+ alt keycode 209 = nul
+ control alt keycode 209 = nul
+keycode 210 = nul nul nul
+ control keycode 210 = nul
+ shift control keycode 210 = nul
+ alt keycode 210 = nul
+ control alt keycode 210 = nul
+keycode 211 = nul nul nul
+ control keycode 211 = nul
+ shift control keycode 211 = nul
+ alt keycode 211 = nul
+ control alt keycode 211 = nul
+keycode 212 = nul nul nul
+ control keycode 212 = nul
+ shift control keycode 212 = nul
+ alt keycode 212 = nul
+ control alt keycode 212 = nul
+keycode 213 = nul nul nul
+ control keycode 213 = nul
+ shift control keycode 213 = nul
+ alt keycode 213 = nul
+ control alt keycode 213 = nul
+keycode 214 = nul nul nul
+ control keycode 214 = nul
+ shift control keycode 214 = nul
+ alt keycode 214 = nul
+ control alt keycode 214 = nul
+keycode 215 = nul nul nul
+ control keycode 215 = nul
+ shift control keycode 215 = nul
+ alt keycode 215 = nul
+ control alt keycode 215 = nul
+keycode 216 = nul nul nul
+ control keycode 216 = nul
+ shift control keycode 216 = nul
+ alt keycode 216 = nul
+ control alt keycode 216 = nul
+keycode 217 = nul nul nul
+ control keycode 217 = nul
+ shift control keycode 217 = nul
+ alt keycode 217 = nul
+ control alt keycode 217 = nul
+keycode 218 = nul nul nul
+ control keycode 218 = nul
+ shift control keycode 218 = nul
+ alt keycode 218 = nul
+ control alt keycode 218 = nul
+keycode 219 = nul nul nul
+ control keycode 219 = nul
+ shift control keycode 219 = nul
+ alt keycode 219 = nul
+ control alt keycode 219 = nul
+keycode 220 = nul nul nul
+ control keycode 220 = nul
+ shift control keycode 220 = nul
+ alt keycode 220 = nul
+ control alt keycode 220 = nul
+keycode 221 = nul nul nul
+ control keycode 221 = nul
+ shift control keycode 221 = nul
+ alt keycode 221 = nul
+ control alt keycode 221 = nul
+keycode 222 = nul nul nul
+ control keycode 222 = nul
+ shift control keycode 222 = nul
+ alt keycode 222 = nul
+ control alt keycode 222 = nul
+keycode 223 = nul nul nul
+ control keycode 223 = nul
+ shift control keycode 223 = nul
+ alt keycode 223 = nul
+ control alt keycode 223 = nul
+keycode 224 = nul nul nul
+ control keycode 224 = nul
+ shift control keycode 224 = nul
+ alt keycode 224 = nul
+ control alt keycode 224 = nul
+keycode 225 = nul nul nul
+ control keycode 225 = nul
+ shift control keycode 225 = nul
+ alt keycode 225 = nul
+ control alt keycode 225 = nul
+keycode 226 = nul nul nul
+ control keycode 226 = nul
+ shift control keycode 226 = nul
+ alt keycode 226 = nul
+ control alt keycode 226 = nul
+keycode 227 = nul nul nul
+ control keycode 227 = nul
+ shift control keycode 227 = nul
+ alt keycode 227 = nul
+ control alt keycode 227 = nul
+keycode 228 = nul nul nul
+ control keycode 228 = nul
+ shift control keycode 228 = nul
+ alt keycode 228 = nul
+ control alt keycode 228 = nul
+keycode 229 = nul nul nul
+ control keycode 229 = nul
+ shift control keycode 229 = nul
+ alt keycode 229 = nul
+ control alt keycode 229 = nul
+keycode 230 = nul nul nul
+ control keycode 230 = nul
+ shift control keycode 230 = nul
+ alt keycode 230 = nul
+ control alt keycode 230 = nul
+keycode 231 = nul nul nul
+ control keycode 231 = nul
+ shift control keycode 231 = nul
+ alt keycode 231 = nul
+ control alt keycode 231 = nul
+keycode 232 = nul nul nul
+ control keycode 232 = nul
+ shift control keycode 232 = nul
+ alt keycode 232 = nul
+ control alt keycode 232 = nul
+keycode 233 = nul nul nul
+ control keycode 233 = nul
+ shift control keycode 233 = nul
+ alt keycode 233 = nul
+ control alt keycode 233 = nul
+keycode 234 = nul nul nul
+ control keycode 234 = nul
+ shift control keycode 234 = nul
+ alt keycode 234 = nul
+ control alt keycode 234 = nul
+keycode 235 = nul nul nul
+ control keycode 235 = nul
+ shift control keycode 235 = nul
+ alt keycode 235 = nul
+ control alt keycode 235 = nul
+keycode 236 = nul nul nul
+ control keycode 236 = nul
+ shift control keycode 236 = nul
+ alt keycode 236 = nul
+ control alt keycode 236 = nul
+keycode 237 = nul nul nul
+ control keycode 237 = nul
+ shift control keycode 237 = nul
+ alt keycode 237 = nul
+ control alt keycode 237 = nul
+keycode 238 = nul nul nul
+ control keycode 238 = nul
+ shift control keycode 238 = nul
+ alt keycode 238 = nul
+ control alt keycode 238 = nul
+keycode 239 = nul nul nul
+ control keycode 239 = nul
+ shift control keycode 239 = nul
+ alt keycode 239 = nul
+ control alt keycode 239 = nul
+keycode 240 = nul nul nul
+ control keycode 240 = nul
+ shift control keycode 240 = nul
+ alt keycode 240 = nul
+ control alt keycode 240 = nul
+keycode 241 = nul nul nul
+ control keycode 241 = nul
+ shift control keycode 241 = nul
+ alt keycode 241 = nul
+ control alt keycode 241 = nul
+keycode 242 = nul nul nul
+ control keycode 242 = nul
+ shift control keycode 242 = nul
+ alt keycode 242 = nul
+ control alt keycode 242 = nul
+keycode 243 = nul nul nul
+ control keycode 243 = nul
+ shift control keycode 243 = nul
+ alt keycode 243 = nul
+ control alt keycode 243 = nul
+keycode 244 = nul nul nul
+ control keycode 244 = nul
+ shift control keycode 244 = nul
+ alt keycode 244 = nul
+ control alt keycode 244 = nul
+keycode 245 = nul nul nul
+ control keycode 245 = nul
+ shift control keycode 245 = nul
+ alt keycode 245 = nul
+ control alt keycode 245 = nul
+keycode 246 = nul nul nul
+ control keycode 246 = nul
+ shift control keycode 246 = nul
+ alt keycode 246 = nul
+ control alt keycode 246 = nul
+keycode 247 = nul nul nul
+ control keycode 247 = nul
+ shift control keycode 247 = nul
+ alt keycode 247 = nul
+ control alt keycode 247 = nul
+keycode 248 = nul nul nul
+ control keycode 248 = nul
+ shift control keycode 248 = nul
+ alt keycode 248 = nul
+ control alt keycode 248 = nul
+keycode 249 = nul nul nul
+ control keycode 249 = nul
+ shift control keycode 249 = nul
+ alt keycode 249 = nul
+ control alt keycode 249 = nul
+keycode 250 = nul nul nul
+ control keycode 250 = nul
+ shift control keycode 250 = nul
+ alt keycode 250 = nul
+ control alt keycode 250 = nul
+keycode 251 = nul nul nul
+ control keycode 251 = nul
+ shift control keycode 251 = nul
+ alt keycode 251 = nul
+ control alt keycode 251 = nul
+keycode 252 = nul nul nul
+ control keycode 252 = nul
+ shift control keycode 252 = nul
+ alt keycode 252 = nul
+ control alt keycode 252 = nul
+keycode 253 = nul nul nul
+ control keycode 253 = nul
+ shift control keycode 253 = nul
+ alt keycode 253 = nul
+ control alt keycode 253 = nul
+keycode 254 = nul nul nul
+ control keycode 254 = nul
+ shift control keycode 254 = nul
+ alt keycode 254 = nul
+ control alt keycode 254 = nul
+keycode 255 = nul nul nul
+ control keycode 255 = nul
+ shift control keycode 255 = nul
+ alt keycode 255 = nul
+ control alt keycode 255 = nul
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
+string Macro = "\033[M"
+string Pause = "\033[P"
diff --git a/remote/modules/brazilian/data/opt/openslx/scripts/systemd-load_brazilian_keymaps b/remote/modules/brazilian/data/opt/openslx/scripts/systemd-load_brazilian_keymaps
new file mode 100644
index 00000000..190104b9
--- /dev/null
+++ b/remote/modules/brazilian/data/opt/openslx/scripts/systemd-load_brazilian_keymaps
@@ -0,0 +1,22 @@
+#!/bin/ash
+# Script serves as container script for a systemd-call due to the buggyness of several
+# loadkeys-implementations <= kbd (Linux keyboard tools) 1.15.3.
+# This bug can be detected through failure of the command pipe 'dumpkeys|loadkeys' yielding
+# the message "unknown keysym 'compose'.
+
+# So we first try to insert a keymap including compose-lines:
+loadkeys /opt/openslx/keymaps/brazilian_qwerty_compose_keyboard_translation.map
+ERR=$?
+
+# ... if this fails we enter a keymap without compose-lines:
+if [ "$ERR" -eq 0 ]; then
+ exit 0 # in that case everything went smooth - exit.
+fi
+
+loadkeys /opt/openslx/keymaps/brazilian_qwerty_keyboard_translation.map # insert a keymap without compose lines
+ERR=$?
+
+# if at this point the second keymap insertion failed we pass the errorlevel to
+# systemd - we cannot do more at this point.
+exit $ERR
+
--
cgit v1.2.3-55-g7522
From 3d1235af060955e271be68240c0ca46bc6d81b03 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Tue, 25 Mar 2014 15:24:04 +0100
Subject: [modules] new module naming convention
rename $MODULE.{conf,build} to module.{conf,build}
---
remote/modules/alsa/module.build | 19 +++
remote/modules/alsa/module.conf | 8 +
remote/modules/alsa/module.conf.debian | 5 +
remote/modules/alsa/module.conf.opensuse | 5 +
remote/modules/alsa/module.conf.scientific | 12 ++
remote/modules/alsa/module.conf.ubuntu | 5 +
remote/modules/beamergui/module.build | 19 +++
remote/modules/beamergui/module.conf | 9 ++
remote/modules/beamergui/module.conf.debian | 8 +
remote/modules/beamergui/module.conf.ubuntu | 8 +
remote/modules/busybox/module.build | 26 +++
remote/modules/busybox/module.conf | 9 ++
remote/modules/consolekit/module.build | 28 ++++
remote/modules/consolekit/module.conf | 17 ++
remote/modules/consolekit/module.conf.debian | 6 +
remote/modules/consolekit/module.conf.opensuse | 8 +
remote/modules/consolekit/module.conf.ubuntu | 9 ++
remote/modules/cron/module.build | 30 ++++
remote/modules/cron/module.conf | 3 +
remote/modules/cups/module.build | 19 +++
remote/modules/cups/module.conf | 9 ++
remote/modules/cups/module.conf.opensuse | 10 ++
remote/modules/cups/module.conf.ubuntu | 10 ++
remote/modules/cups/module.conf.ubuntu.13 | 12 ++
remote/modules/cups/module.conf.ubuntu.13.10 | 12 ++
remote/modules/dbus/module.build | 63 ++++++++
remote/modules/dbus/module.conf | 15 ++
remote/modules/dbus/module.conf.debian | 9 ++
remote/modules/dbus/module.conf.opensuse | 4 +
remote/modules/dbus/module.conf.ubuntu | 7 +
remote/modules/debug/module.build | 20 +++
remote/modules/debug/module.conf | 18 +++
remote/modules/debug/module.conf.debian | 7 +
remote/modules/debug/module.conf.opensuse | 11 ++
remote/modules/debug/module.conf.ubuntu | 7 +
remote/modules/dhcpc-busybox/module.build | 13 ++
remote/modules/dhcpc-busybox/module.conf | 1 +
remote/modules/dnbd3/module.build | 43 +++++
remote/modules/dnbd3/module.conf | 11 ++
remote/modules/dnbd3/module.conf.debian | 7 +
remote/modules/dnbd3/module.conf.opensuse | 8 +
remote/modules/dnbd3/module.conf.ubuntu | 8 +
remote/modules/german/module.build | 39 +++++
remote/modules/german/module.conf | 5 +
remote/modules/german/module.conf.debian | 10 ++
remote/modules/german/module.conf.opensuse | 13 ++
remote/modules/german/module.conf.scientific | 8 +
remote/modules/german/module.conf.ubuntu | 11 ++
remote/modules/idleaction/module.build | 16 ++
remote/modules/idleaction/module.conf | 4 +
remote/modules/idleaction/module.conf.opensuse | 6 +
remote/modules/idleaction/module.conf.ubuntu | 6 +
remote/modules/iptables-helper/module.build | 13 ++
remote/modules/iptables-helper/module.conf | 1 +
remote/modules/kdm-theme-bwlp/module.build | 13 ++
remote/modules/kdm-theme-bwlp/module.conf | 2 +
remote/modules/kdm/module.build | 19 +++
remote/modules/kdm/module.conf | 20 +++
remote/modules/kdm/module.conf.debian | 28 ++++
remote/modules/kdm/module.conf.opensuse | 10 ++
remote/modules/kdm/module.conf.scientific | 20 +++
remote/modules/kdm/module.conf.ubuntu | 29 ++++
remote/modules/kernel-system/module.build | 114 +++++++++++++
remote/modules/kernel-system/module.conf | 3 +
remote/modules/kernel-system/module.conf.opensuse | 6 +
remote/modules/kernel-system/module.conf.ubuntu | 6 +
remote/modules/kernel/module.build | 151 +++++++++++++++++
remote/modules/kernel/module.conf | 3 +
remote/modules/kernel/module.conf.opensuse | 2 +
remote/modules/kernel/module.conf.ubuntu | 2 +
remote/modules/kernel/module.conf.ubuntu.13.04 | 2 +
remote/modules/ldm-gtk-greeter/module.build | 34 ++++
remote/modules/ldm-gtk-greeter/module.conf | 9 ++
remote/modules/ldm/module.build | 34 ++++
remote/modules/ldm/module.conf | 8 +
remote/modules/nscd/module.build | 17 ++
remote/modules/nscd/module.conf | 3 +
remote/modules/nscd/module.conf.debian | 6 +
remote/modules/nscd/module.conf.opensuse | 6 +
remote/modules/nscd/module.conf.ubuntu | 6 +
remote/modules/nvidia_kernel/module.build | 55 +++++++
remote/modules/nvidia_kernel/module.conf | 10 ++
remote/modules/nvidia_libs/module.build | 56 +++++++
remote/modules/nvidia_libs/module.conf | 17 ++
remote/modules/nvidia_libs/module.conf.ubuntu | 13 ++
remote/modules/openbox/module.build | 36 +++++
remote/modules/openbox/module.conf | 11 ++
remote/modules/openbox/module.conf.debian | 15 ++
remote/modules/openbox/module.conf.opensuse | 13 ++
remote/modules/openbox/module.conf.ubuntu | 15 ++
remote/modules/openbox/module.conf.zypper | 11 ++
remote/modules/pam/module.build | 45 ++++++
remote/modules/pam/module.conf | 26 +++
remote/modules/pam/module.conf.debian | 51 ++++++
remote/modules/pam/module.conf.opensuse | 43 +++++
remote/modules/pam/module.conf.opensuse.13.1 | 47 ++++++
remote/modules/pam/module.conf.ubuntu | 51 ++++++
remote/modules/plymouth/module.build | 20 +++
remote/modules/plymouth/module.conf | 15 ++
remote/modules/plymouth/module.conf.debian | 7 +
remote/modules/plymouth/module.conf.opensuse | 7 +
remote/modules/plymouth/module.conf.ubuntu | 7 +
remote/modules/polkit/module.build | 25 +++
remote/modules/polkit/module.conf | 13 ++
remote/modules/polkit/module.conf.debian | 19 +++
remote/modules/polkit/module.conf.opensuse | 12 ++
remote/modules/polkit/module.conf.ubuntu | 19 +++
remote/modules/printergui/module.build | 25 +++
remote/modules/printergui/module.conf | 9 ++
remote/modules/printergui/module.conf.opensuse | 7 +
remote/modules/printergui/module.conf.ubuntu | 7 +
remote/modules/qemukvm/module.build | 16 ++
remote/modules/qemukvm/module.conf | 11 ++
remote/modules/qemukvm/module.conf.ubuntu | 37 +++++
remote/modules/redsocks/module.build | 24 +++
remote/modules/redsocks/module.conf | 6 +
remote/modules/redsocks/module.conf.debian | 3 +
remote/modules/redsocks/module.conf.opensuse | 3 +
remote/modules/redsocks/module.conf.ubuntu | 3 +
remote/modules/rsyslogd/module.build | 34 ++++
remote/modules/rsyslogd/module.conf | 6 +
remote/modules/rsyslogd/module.conf.debian | 6 +
remote/modules/rsyslogd/module.conf.opensuse | 9 ++
remote/modules/rsyslogd/module.conf.ubuntu | 6 +
remote/modules/samba/module.build | 26 +++
remote/modules/samba/module.conf | 24 +++
remote/modules/samba/module.conf.opensuse | 24 +++
remote/modules/samba/module.conf.ubuntu | 20 +++
remote/modules/smartctl/module.build | 13 ++
remote/modules/smartctl/module.conf | 5 +
remote/modules/smartctl/module.conf.opensuse | 6 +
remote/modules/smartctl/module.conf.ubuntu | 6 +
remote/modules/smbclient/module.build | 20 +++
remote/modules/smbclient/module.conf | 10 ++
remote/modules/smbclient/module.conf.opensuse | 9 ++
remote/modules/smbclient/module.conf.ubuntu | 9 ++
remote/modules/splash-openslx/module.build | 13 ++
remote/modules/splash-openslx/module.conf | 1 +
remote/modules/sshd/module.build | 20 +++
remote/modules/sshd/module.conf | 3 +
remote/modules/swiss/module.build | 55 +++++++
remote/modules/swiss/module.conf | 5 +
remote/modules/swiss/module.conf.debian | 10 ++
remote/modules/swiss/module.conf.opensuse | 14 ++
remote/modules/swiss/module.conf.scientific | 8 +
remote/modules/swiss/module.conf.ubuntu | 17 ++
remote/modules/systemd/module.build | 72 +++++++++
remote/modules/systemd/module.build.scientific | 178 +++++++++++++++++++++
.../modules/systemd/module.build.scientific.README | 11 ++
remote/modules/systemd/module.conf | 65 ++++++++
remote/modules/systemd/module.conf.debian | 13 ++
remote/modules/systemd/module.conf.opensuse | 11 ++
remote/modules/systemd/module.conf.scientific | 37 +++++
remote/modules/systemd/module.conf.ubuntu | 13 ++
remote/modules/udisks/module.build | 53 ++++++
remote/modules/udisks/module.conf | 14 ++
remote/modules/udisks/module.conf.debian | 32 ++++
remote/modules/udisks/module.conf.opensuse | 7 +
remote/modules/udisks/module.conf.ubuntu | 34 ++++
remote/modules/udisks/module.conf.ubuntu.12 | 31 ++++
remote/modules/vbox/module.build | 127 +++++++++++++++
remote/modules/vbox/module.conf | 12 ++
remote/modules/vbox/module.conf.opensuse | 0
remote/modules/vbox/module.conf.opensuse.12.3 | 19 +++
remote/modules/vbox/module.conf.ubuntu | 18 +++
remote/modules/vbox/module.conf.ubuntu.13.04 | 18 +++
remote/modules/vmchooser/module.build | 36 +++++
remote/modules/vmchooser/module.conf | 3 +
remote/modules/vmchooser/module.conf.debian | 4 +
remote/modules/vmchooser/module.conf.opensuse | 4 +
remote/modules/vmchooser/module.conf.ubuntu | 4 +
remote/modules/vmware/module.build | 65 ++++++++
remote/modules/vmware/module.conf | 24 +++
remote/modules/vmware/module.conf.ubuntu | 136 ++++++++++++++++
remote/modules/xorg/module.build | 22 +++
remote/modules/xorg/module.conf | 19 +++
remote/modules/xorg/module.conf.debian | 40 +++++
remote/modules/xorg/module.conf.opensuse | 59 +++++++
remote/modules/xorg/module.conf.opensuse.13.1 | 95 +++++++++++
remote/modules/xorg/module.conf.ubuntu | 40 +++++
remote/setup_target | 10 +-
181 files changed, 3753 insertions(+), 5 deletions(-)
create mode 100644 remote/modules/alsa/module.build
create mode 100644 remote/modules/alsa/module.conf
create mode 100644 remote/modules/alsa/module.conf.debian
create mode 100644 remote/modules/alsa/module.conf.opensuse
create mode 100644 remote/modules/alsa/module.conf.scientific
create mode 100644 remote/modules/alsa/module.conf.ubuntu
create mode 100644 remote/modules/beamergui/module.build
create mode 100644 remote/modules/beamergui/module.conf
create mode 100644 remote/modules/beamergui/module.conf.debian
create mode 100644 remote/modules/beamergui/module.conf.ubuntu
create mode 100644 remote/modules/busybox/module.build
create mode 100644 remote/modules/busybox/module.conf
create mode 100644 remote/modules/consolekit/module.build
create mode 100644 remote/modules/consolekit/module.conf
create mode 100644 remote/modules/consolekit/module.conf.debian
create mode 100644 remote/modules/consolekit/module.conf.opensuse
create mode 100644 remote/modules/consolekit/module.conf.ubuntu
create mode 100644 remote/modules/cron/module.build
create mode 100644 remote/modules/cron/module.conf
create mode 100644 remote/modules/cups/module.build
create mode 100644 remote/modules/cups/module.conf
create mode 100644 remote/modules/cups/module.conf.opensuse
create mode 100644 remote/modules/cups/module.conf.ubuntu
create mode 100644 remote/modules/cups/module.conf.ubuntu.13
create mode 100644 remote/modules/cups/module.conf.ubuntu.13.10
create mode 100644 remote/modules/dbus/module.build
create mode 100644 remote/modules/dbus/module.conf
create mode 100644 remote/modules/dbus/module.conf.debian
create mode 100644 remote/modules/dbus/module.conf.opensuse
create mode 100644 remote/modules/dbus/module.conf.ubuntu
create mode 100644 remote/modules/debug/module.build
create mode 100644 remote/modules/debug/module.conf
create mode 100644 remote/modules/debug/module.conf.debian
create mode 100644 remote/modules/debug/module.conf.opensuse
create mode 100644 remote/modules/debug/module.conf.ubuntu
create mode 100644 remote/modules/dhcpc-busybox/module.build
create mode 100644 remote/modules/dhcpc-busybox/module.conf
create mode 100644 remote/modules/dnbd3/module.build
create mode 100644 remote/modules/dnbd3/module.conf
create mode 100644 remote/modules/dnbd3/module.conf.debian
create mode 100644 remote/modules/dnbd3/module.conf.opensuse
create mode 100644 remote/modules/dnbd3/module.conf.ubuntu
create mode 100644 remote/modules/german/module.build
create mode 100644 remote/modules/german/module.conf
create mode 100644 remote/modules/german/module.conf.debian
create mode 100644 remote/modules/german/module.conf.opensuse
create mode 100644 remote/modules/german/module.conf.scientific
create mode 100644 remote/modules/german/module.conf.ubuntu
create mode 100644 remote/modules/idleaction/module.build
create mode 100644 remote/modules/idleaction/module.conf
create mode 100644 remote/modules/idleaction/module.conf.opensuse
create mode 100644 remote/modules/idleaction/module.conf.ubuntu
create mode 100644 remote/modules/iptables-helper/module.build
create mode 100644 remote/modules/iptables-helper/module.conf
create mode 100644 remote/modules/kdm-theme-bwlp/module.build
create mode 100644 remote/modules/kdm-theme-bwlp/module.conf
create mode 100644 remote/modules/kdm/module.build
create mode 100644 remote/modules/kdm/module.conf
create mode 100644 remote/modules/kdm/module.conf.debian
create mode 100644 remote/modules/kdm/module.conf.opensuse
create mode 100644 remote/modules/kdm/module.conf.scientific
create mode 100644 remote/modules/kdm/module.conf.ubuntu
create mode 100644 remote/modules/kernel-system/module.build
create mode 100644 remote/modules/kernel-system/module.conf
create mode 100644 remote/modules/kernel-system/module.conf.opensuse
create mode 100644 remote/modules/kernel-system/module.conf.ubuntu
create mode 100644 remote/modules/kernel/module.build
create mode 100644 remote/modules/kernel/module.conf
create mode 100644 remote/modules/kernel/module.conf.opensuse
create mode 100644 remote/modules/kernel/module.conf.ubuntu
create mode 100644 remote/modules/kernel/module.conf.ubuntu.13.04
create mode 100644 remote/modules/ldm-gtk-greeter/module.build
create mode 100644 remote/modules/ldm-gtk-greeter/module.conf
create mode 100644 remote/modules/ldm/module.build
create mode 100644 remote/modules/ldm/module.conf
create mode 100644 remote/modules/nscd/module.build
create mode 100644 remote/modules/nscd/module.conf
create mode 100644 remote/modules/nscd/module.conf.debian
create mode 100644 remote/modules/nscd/module.conf.opensuse
create mode 100644 remote/modules/nscd/module.conf.ubuntu
create mode 100644 remote/modules/nvidia_kernel/module.build
create mode 100644 remote/modules/nvidia_kernel/module.conf
create mode 100644 remote/modules/nvidia_libs/module.build
create mode 100644 remote/modules/nvidia_libs/module.conf
create mode 100644 remote/modules/nvidia_libs/module.conf.ubuntu
create mode 100644 remote/modules/openbox/module.build
create mode 100644 remote/modules/openbox/module.conf
create mode 100644 remote/modules/openbox/module.conf.debian
create mode 100644 remote/modules/openbox/module.conf.opensuse
create mode 100644 remote/modules/openbox/module.conf.ubuntu
create mode 100644 remote/modules/openbox/module.conf.zypper
create mode 100644 remote/modules/pam/module.build
create mode 100644 remote/modules/pam/module.conf
create mode 100644 remote/modules/pam/module.conf.debian
create mode 100644 remote/modules/pam/module.conf.opensuse
create mode 100644 remote/modules/pam/module.conf.opensuse.13.1
create mode 100644 remote/modules/pam/module.conf.ubuntu
create mode 100644 remote/modules/plymouth/module.build
create mode 100644 remote/modules/plymouth/module.conf
create mode 100644 remote/modules/plymouth/module.conf.debian
create mode 100644 remote/modules/plymouth/module.conf.opensuse
create mode 100644 remote/modules/plymouth/module.conf.ubuntu
create mode 100644 remote/modules/polkit/module.build
create mode 100644 remote/modules/polkit/module.conf
create mode 100644 remote/modules/polkit/module.conf.debian
create mode 100644 remote/modules/polkit/module.conf.opensuse
create mode 100644 remote/modules/polkit/module.conf.ubuntu
create mode 100644 remote/modules/printergui/module.build
create mode 100644 remote/modules/printergui/module.conf
create mode 100644 remote/modules/printergui/module.conf.opensuse
create mode 100644 remote/modules/printergui/module.conf.ubuntu
create mode 100644 remote/modules/qemukvm/module.build
create mode 100644 remote/modules/qemukvm/module.conf
create mode 100644 remote/modules/qemukvm/module.conf.ubuntu
create mode 100644 remote/modules/redsocks/module.build
create mode 100644 remote/modules/redsocks/module.conf
create mode 100644 remote/modules/redsocks/module.conf.debian
create mode 100644 remote/modules/redsocks/module.conf.opensuse
create mode 100644 remote/modules/redsocks/module.conf.ubuntu
create mode 100644 remote/modules/rsyslogd/module.build
create mode 100644 remote/modules/rsyslogd/module.conf
create mode 100644 remote/modules/rsyslogd/module.conf.debian
create mode 100644 remote/modules/rsyslogd/module.conf.opensuse
create mode 100644 remote/modules/rsyslogd/module.conf.ubuntu
create mode 100644 remote/modules/samba/module.build
create mode 100644 remote/modules/samba/module.conf
create mode 100644 remote/modules/samba/module.conf.opensuse
create mode 100644 remote/modules/samba/module.conf.ubuntu
create mode 100644 remote/modules/smartctl/module.build
create mode 100644 remote/modules/smartctl/module.conf
create mode 100644 remote/modules/smartctl/module.conf.opensuse
create mode 100644 remote/modules/smartctl/module.conf.ubuntu
create mode 100644 remote/modules/smbclient/module.build
create mode 100644 remote/modules/smbclient/module.conf
create mode 100644 remote/modules/smbclient/module.conf.opensuse
create mode 100644 remote/modules/smbclient/module.conf.ubuntu
create mode 100644 remote/modules/splash-openslx/module.build
create mode 100644 remote/modules/splash-openslx/module.conf
create mode 100644 remote/modules/sshd/module.build
create mode 100644 remote/modules/sshd/module.conf
create mode 100644 remote/modules/swiss/module.build
create mode 100644 remote/modules/swiss/module.conf
create mode 100644 remote/modules/swiss/module.conf.debian
create mode 100644 remote/modules/swiss/module.conf.opensuse
create mode 100644 remote/modules/swiss/module.conf.scientific
create mode 100644 remote/modules/swiss/module.conf.ubuntu
create mode 100644 remote/modules/systemd/module.build
create mode 100644 remote/modules/systemd/module.build.scientific
create mode 100644 remote/modules/systemd/module.build.scientific.README
create mode 100644 remote/modules/systemd/module.conf
create mode 100644 remote/modules/systemd/module.conf.debian
create mode 100644 remote/modules/systemd/module.conf.opensuse
create mode 100644 remote/modules/systemd/module.conf.scientific
create mode 100644 remote/modules/systemd/module.conf.ubuntu
create mode 100644 remote/modules/udisks/module.build
create mode 100644 remote/modules/udisks/module.conf
create mode 100644 remote/modules/udisks/module.conf.debian
create mode 100644 remote/modules/udisks/module.conf.opensuse
create mode 100644 remote/modules/udisks/module.conf.ubuntu
create mode 100644 remote/modules/udisks/module.conf.ubuntu.12
create mode 100644 remote/modules/vbox/module.build
create mode 100644 remote/modules/vbox/module.conf
create mode 100644 remote/modules/vbox/module.conf.opensuse
create mode 100644 remote/modules/vbox/module.conf.opensuse.12.3
create mode 100644 remote/modules/vbox/module.conf.ubuntu
create mode 100644 remote/modules/vbox/module.conf.ubuntu.13.04
create mode 100644 remote/modules/vmchooser/module.build
create mode 100644 remote/modules/vmchooser/module.conf
create mode 100644 remote/modules/vmchooser/module.conf.debian
create mode 100644 remote/modules/vmchooser/module.conf.opensuse
create mode 100644 remote/modules/vmchooser/module.conf.ubuntu
create mode 100644 remote/modules/vmware/module.build
create mode 100644 remote/modules/vmware/module.conf
create mode 100644 remote/modules/vmware/module.conf.ubuntu
create mode 100644 remote/modules/xorg/module.build
create mode 100644 remote/modules/xorg/module.conf
create mode 100644 remote/modules/xorg/module.conf.debian
create mode 100644 remote/modules/xorg/module.conf.opensuse
create mode 100644 remote/modules/xorg/module.conf.opensuse.13.1
create mode 100644 remote/modules/xorg/module.conf.ubuntu
(limited to 'remote/modules')
diff --git a/remote/modules/alsa/module.build b/remote/modules/alsa/module.build
new file mode 100644
index 00000000..4d3990b1
--- /dev/null
+++ b/remote/modules/alsa/module.build
@@ -0,0 +1,19 @@
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+
+ # These shitty greps are 'excludes' for this high quality scientific linux.
+ list_packet_files | grep -v "^/etc/asound.state" \
+ | grep -v "^/etc/modprobe.d/local.conf" >> "$COPYLIST"
+ tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
+
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/alsa/module.conf b/remote/modules/alsa/module.conf
new file mode 100644
index 00000000..2a8be7a1
--- /dev/null
+++ b/remote/modules/alsa/module.conf
@@ -0,0 +1,8 @@
+REQUIRED_BINARIES="
+ amixer
+ alsamixer
+"
+REQUIRED_DIRECTORIES=" /usr/share/alsa
+ /etc/modprobe.d
+"
+
diff --git a/remote/modules/alsa/module.conf.debian b/remote/modules/alsa/module.conf.debian
new file mode 100644
index 00000000..b1f9f0e2
--- /dev/null
+++ b/remote/modules/alsa/module.conf.debian
@@ -0,0 +1,5 @@
+REQUIRED_CONTENT_PACKAGES="
+ alsa-utils
+ alsa-base
+ libasound2
+"
diff --git a/remote/modules/alsa/module.conf.opensuse b/remote/modules/alsa/module.conf.opensuse
new file mode 100644
index 00000000..17651c29
--- /dev/null
+++ b/remote/modules/alsa/module.conf.opensuse
@@ -0,0 +1,5 @@
+REQUIRED_CONTENT_PACKAGES="
+ alsa-utils
+ alsa
+ libasound2
+"
diff --git a/remote/modules/alsa/module.conf.scientific b/remote/modules/alsa/module.conf.scientific
new file mode 100644
index 00000000..643e52d3
--- /dev/null
+++ b/remote/modules/alsa/module.conf.scientific
@@ -0,0 +1,12 @@
+REQUIRED_INSTALLED_PACKAGES="
+ module-init-tools
+ alsa-utils
+ alsa-lib
+"
+REQUIRED_CONTENT_PACKAGES="
+ module-init-tools
+ alsa-utils
+ alsa-lib
+"
+
+# libasound2
diff --git a/remote/modules/alsa/module.conf.ubuntu b/remote/modules/alsa/module.conf.ubuntu
new file mode 100644
index 00000000..b1f9f0e2
--- /dev/null
+++ b/remote/modules/alsa/module.conf.ubuntu
@@ -0,0 +1,5 @@
+REQUIRED_CONTENT_PACKAGES="
+ alsa-utils
+ alsa-base
+ libasound2
+"
diff --git a/remote/modules/beamergui/module.build b/remote/modules/beamergui/module.build
new file mode 100644
index 00000000..837a2e38
--- /dev/null
+++ b/remote/modules/beamergui/module.build
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+fetch_source() {
+ git clone "${REQUIRED_GIT}" src
+}
+
+build() {
+ local SRCDIR="${MODULE_DIR}/src/"
+
+ mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin"
+ cd "${MODULE_BUILD_DIR}/opt/openslx/bin" || perror "Could not cd!"
+ pinfo "Running qmake"
+ qmake "$SRCDIR/src/beamergui.pro" -r -spec linux-g++ || perror "'qmake' failed (e.g. not installed)."
+ pinfo "Running make"
+ make || perror "'make' failed."
+}
+post_copy() {
+ :
+}
diff --git a/remote/modules/beamergui/module.conf b/remote/modules/beamergui/module.conf
new file mode 100644
index 00000000..da786271
--- /dev/null
+++ b/remote/modules/beamergui/module.conf
@@ -0,0 +1,9 @@
+REQUIRED_GIT="git://git.openslx.org/openslx-ng/beamergui.git"
+REQUIRED_BINARIES="
+ beamergui
+"
+REQUIRED_LIBRARIES="
+"
+REQUIRED_SYSTEM_FILES="
+"
+# TODO add libraries
diff --git a/remote/modules/beamergui/module.conf.debian b/remote/modules/beamergui/module.conf.debian
new file mode 100644
index 00000000..ea4cd194
--- /dev/null
+++ b/remote/modules/beamergui/module.conf.debian
@@ -0,0 +1,8 @@
+REQUIRED_INSTALLED_PACKAGES="
+libqt4-dev
+libxrandr-dev
+"
+REQUIRED_CONTENT_PACKAGES="
+libqt4-dev
+libxrandr-dev
+"
diff --git a/remote/modules/beamergui/module.conf.ubuntu b/remote/modules/beamergui/module.conf.ubuntu
new file mode 100644
index 00000000..ea4cd194
--- /dev/null
+++ b/remote/modules/beamergui/module.conf.ubuntu
@@ -0,0 +1,8 @@
+REQUIRED_INSTALLED_PACKAGES="
+libqt4-dev
+libxrandr-dev
+"
+REQUIRED_CONTENT_PACKAGES="
+libqt4-dev
+libxrandr-dev
+"
diff --git a/remote/modules/busybox/module.build b/remote/modules/busybox/module.build
new file mode 100644
index 00000000..727a334c
--- /dev/null
+++ b/remote/modules/busybox/module.build
@@ -0,0 +1,26 @@
+
+fetch_source() {
+ git clone "${REQUIRED_GIT}" src || perror "Could not clone busybox git"
+ cd src || perror "Could not cd to src"
+ git checkout "$REQUIRED_BRANCH" || perror "Could not checkout requested branch"
+ # Patch image centering if not patched yet
+ if ! grep -q "bcenter_image" "miscutils/fbsplash.c"; then
+ git apply "../fbsplash-center.patch" || perror "Could not apply busybox patch for fbsplash image centering"
+ fi
+ cd .. || perror "cd .. failed"
+}
+
+build() {
+ cp "openslx-busybox-config" "src/.config"
+ cd src || perror "Could not cd to src"
+ pinfo "Running make (if this hangs, check for unset options, ie. when you increased the REQUIRED_BRANCH)"
+ make || perror "failed."
+ pinfo "Running make install"
+ make CONFIG_PREFIX="$MODULE_BUILD_DIR" install || perror "failed"
+ rm "$MODULE_BUILD_DIR/bin/mount" "$MODULE_BUILD_DIR/bin/umount" "$MODULE_BUILD_DIR/bin/bash"
+ cd - &> /dev/null
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/busybox/module.conf b/remote/modules/busybox/module.conf
new file mode 100644
index 00000000..d2536ac9
--- /dev/null
+++ b/remote/modules/busybox/module.conf
@@ -0,0 +1,9 @@
+REQUIRED_GIT="git://git.busybox.net/busybox"
+REQUIRED_BRANCH="1_22_1"
+REQUIRED_BINARIES="busybox"
+REQUIRED_DIRECTORIES="
+ /bin
+ /sbin
+ /usr/bin
+ /usr/sbin
+"
diff --git a/remote/modules/consolekit/module.build b/remote/modules/consolekit/module.build
new file mode 100644
index 00000000..0c63ec6b
--- /dev/null
+++ b/remote/modules/consolekit/module.build
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+fetch_source() {
+ pinfo "Extracting from running system..."
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "${COPYLIST}" ] && rm "${COPYLIST}"
+
+ list_packet_files >> "${COPYLIST}"
+ tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
+ # Systemd/dbus
+ mkdir -p "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services" "$MODULE_BUILD_DIR/etc/systemd/system"
+ local DAEMON=$(find "$MODULE_BUILD_DIR" -name console-kit-daemon -executable | head -n 1)
+ DAEMON="${DAEMON#$MODULE_BUILD_DIR}"
+ [ -z "$DAEMON" ] && perror "Could not find console-kit-daemon binary"
+ sed "s,%DAEMON%,/$DAEMON,g" "templates/consolekit.systemd.service" > "$MODULE_BUILD_DIR/etc/systemd/system/console-kit-daemon.service" || perror "Could not generate systemd service"
+ sed "s,%DAEMON%,/$DAEMON,g" "templates/consolekit.dbus.service" > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.ConsoleKit.service" || perror "Could not generate dbus service"
+}
+
+post_copy() {
+ mkdir -p "${TARGET_BUILD_DIR}/usr/lib/ConsoleKit/run-seat.d"
+ mkdir -p "${TARGET_BUILD_DIR}/etc/ConsoleKit/run-seat.d"
+ mkdir -p "${TARGET_BUILD_DIR}/etc/ConsoleKit/run-session.d"
+ mkdir -p "${TARGET_BUILD_DIR}/var/log/ConsoleKit"
+}
+
diff --git a/remote/modules/consolekit/module.conf b/remote/modules/consolekit/module.conf
new file mode 100644
index 00000000..e27b15e6
--- /dev/null
+++ b/remote/modules/consolekit/module.conf
@@ -0,0 +1,17 @@
+REQUIRED_BINARIES="
+ console-kit-daemon
+ ck-history
+ ck-launch-session
+ ck-list-sessions
+"
+REQUIRED_DIRECTORIES="
+ /etc/ConsoleKit
+ /etc/dbus-1
+ /usr/lib/ConsoleKit
+ /usr/share
+"
+REQUIRED_LIBRARIES="
+ pam_ck_connector
+ libck-connector
+"
+
diff --git a/remote/modules/consolekit/module.conf.debian b/remote/modules/consolekit/module.conf.debian
new file mode 100644
index 00000000..0171868a
--- /dev/null
+++ b/remote/modules/consolekit/module.conf.debian
@@ -0,0 +1,6 @@
+REQUIRED_CONTENT_PACKAGES="
+ consolekit
+ libpam-ck-connector
+"
+
+
diff --git a/remote/modules/consolekit/module.conf.opensuse b/remote/modules/consolekit/module.conf.opensuse
new file mode 100644
index 00000000..d0f46410
--- /dev/null
+++ b/remote/modules/consolekit/module.conf.opensuse
@@ -0,0 +1,8 @@
+REQUIRED_INSTALLED_PACKAGES="
+ ConsoleKit
+ ConsoleKit-x11
+"
+REQUIRED_CONTENT_PACKAGES="
+ ConsoleKit
+ ConsoleKit-x11
+"
diff --git a/remote/modules/consolekit/module.conf.ubuntu b/remote/modules/consolekit/module.conf.ubuntu
new file mode 100644
index 00000000..e7f5e47d
--- /dev/null
+++ b/remote/modules/consolekit/module.conf.ubuntu
@@ -0,0 +1,9 @@
+REQUIRED_INSTALLED_PACKAGES="
+ consolekit
+"
+REQUIRED_CONTENT_PACKAGES="
+ consolekit
+ libpam-ck-connector
+ libck-connector0
+"
+
diff --git a/remote/modules/cron/module.build b/remote/modules/cron/module.build
new file mode 100644
index 00000000..932c3e85
--- /dev/null
+++ b/remote/modules/cron/module.build
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+
+fetch_source() {
+
+ # use our own patched source
+ local TARBALL="vixie-cron-4.1-openslx.tgz"
+ [ ! -e "${TARBALL}" ] && perror "${TARBALL} not found under ${MODULE_DIR}."
+
+ mkdir "${MODULE_DIR}/src" || perror "Could not create ${MODULE_DIR}/src"
+ tar xfz "${TARBALL}" -C "${MODULE_DIR}/src" || perror "Could not extract ${TARBALL} to ${MODULE_DIR}/src"
+}
+
+build() {
+
+ # compilation
+ cd "${MODULE_DIR}/src" || perror "Could not cd to '${MODULE_DIR}/src'. Did fetch_source work?"
+ make cron || perror "Could not compile cron using 'make'."
+
+ # copy to build dir, since there are no shared libs linked in
+ mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/sbin"
+ cp "${MODULE_DIR}/src/cron" "${MODULE_BUILD_DIR}/opt/openslx/sbin/" || perror "Could copy cron binary to ${MODULE_BUILD_DIR}"
+
+ cd - &>/dev/null
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/cron/module.conf b/remote/modules/cron/module.conf
new file mode 100644
index 00000000..8ecca658
--- /dev/null
+++ b/remote/modules/cron/module.conf
@@ -0,0 +1,3 @@
+REQUIRED_BINARIES="
+ cron
+"
diff --git a/remote/modules/cups/module.build b/remote/modules/cups/module.build
new file mode 100644
index 00000000..0238f1bd
--- /dev/null
+++ b/remote/modules/cups/module.build
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/cups/module.conf b/remote/modules/cups/module.conf
new file mode 100644
index 00000000..586e0d12
--- /dev/null
+++ b/remote/modules/cups/module.conf
@@ -0,0 +1,9 @@
+REQUIRED_BINARIES="
+ cupsd
+ foomatic-rip
+"
+REQUIRED_DIRECTORIES="
+ /usr/lib/cups/
+ /usr/share/cups/
+"
+REQUIRED_FILES=""
diff --git a/remote/modules/cups/module.conf.opensuse b/remote/modules/cups/module.conf.opensuse
new file mode 100644
index 00000000..d13021ba
--- /dev/null
+++ b/remote/modules/cups/module.conf.opensuse
@@ -0,0 +1,10 @@
+REQUIRED_INSTALLED_PACKAGES="
+ cups
+ cups-libs
+ foomatic-filters
+"
+REQUIRED_CONTENT_PACKAGES="
+ cups
+ cups-libs
+ foomatic-filters
+"
diff --git a/remote/modules/cups/module.conf.ubuntu b/remote/modules/cups/module.conf.ubuntu
new file mode 100644
index 00000000..8ca1d1c6
--- /dev/null
+++ b/remote/modules/cups/module.conf.ubuntu
@@ -0,0 +1,10 @@
+REQUIRED_INSTALLED_PACKAGES="
+ cups
+ ghostscript-cups
+ foomatic-filters
+"
+REQUIRED_CONTENT_PACKAGES="
+ cups
+ ghostscript-cups
+ foomatic-filters
+"
diff --git a/remote/modules/cups/module.conf.ubuntu.13 b/remote/modules/cups/module.conf.ubuntu.13
new file mode 100644
index 00000000..53c8d62d
--- /dev/null
+++ b/remote/modules/cups/module.conf.ubuntu.13
@@ -0,0 +1,12 @@
+REQUIRED_INSTALLED_PACKAGES="
+ cups
+ cups-daemon
+ ghostscript-cups
+ foomatic-filters
+"
+REQUIRED_CONTENT_PACKAGES="
+ cups
+ cups-daemon
+ ghostscript-cups
+ foomatic-filters
+"
diff --git a/remote/modules/cups/module.conf.ubuntu.13.10 b/remote/modules/cups/module.conf.ubuntu.13.10
new file mode 100644
index 00000000..d3fa3b5d
--- /dev/null
+++ b/remote/modules/cups/module.conf.ubuntu.13.10
@@ -0,0 +1,12 @@
+REQUIRED_INSTALLED_PACKAGES="
+ cups
+ cups-daemon
+ cups-filters
+ foomatic-filters
+"
+REQUIRED_CONTENT_PACKAGES="
+ cups
+ cups-daemon
+ cups-filters
+ foomatic-filters
+"
diff --git a/remote/modules/dbus/module.build b/remote/modules/dbus/module.build
new file mode 100644
index 00000000..c5b2d353
--- /dev/null
+++ b/remote/modules/dbus/module.build
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+fetch_source() {
+ echo "Extracting from running system..."
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "${COPYLIST}" ] && rm "${COPYLIST}"
+
+ list_packet_files >> "${COPYLIST}"
+ tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
+
+ # Generate systemd files
+ mkdir -p "$MODULE_BUILD_DIR/etc/systemd/system"
+ # This is ugly, as the command line arguments changed over time. Try to do the right thing (whatever that is)
+ # Need to run dbus-uuidgen first?
+ local UUIDGEN="# This line intentionally left blank"
+ if files_contain "ExecStartPre.*uuidgen" "/lib/systemd/system/dbus.service" "/usr/lib/systemd/system/dbus.service"; then
+ UUIDGEN=$(find "$MODULE_BUILD_DIR" -name dbus-uuidgen -executable | head -n 1)
+ [ -z "$UUIDGEN" ] && perror "Could not determine dbus-uuidgen location"
+ UUIDGEN="ExecStartPre=/${UUIDGEN#$MODULE_BUILD_DIR} --ensure"
+ fi
+ # Figure out daemon location
+ local DAEMON=$(find "$MODULE_BUILD_DIR" -name dbus-daemon -executable | head -n 1)
+ [ -z "$DAEMON" ] && perror "Could not determine dbus-daemon location"
+ DAEMON="/${DAEMON#$MODULE_BUILD_DIR}"
+ local DAEMON_ARGS=""
+ # Daemon arguments
+ if files_contain "dbus-daemon.*nopidfile" "/lib/systemd/system/dbus.service" "/usr/lib/systemd/system/dbus.service"; then
+ DAEMON_ARGS+=" --nopidfile"
+ fi
+ if files_contain "dbus-daemon.*activation=systemd" "/lib/systemd/system/dbus.service" "/usr/lib/systemd/system/dbus.service"; then
+ DAEMON_ARGS+=" --activation=systemd"
+ fi
+ if files_contain "dbus-daemon.*systemd-activation" "/lib/systemd/system/dbus.service" "/usr/lib/systemd/system/dbus.service"; then
+ DAEMON_ARGS+=" --systemd-activation"
+ fi
+ # dbus-send location
+ local SEND=$(find "$MODULE_BUILD_DIR" -name dbus-send -executable | head -n 1)
+ [ -z "$SEND" ] && perror "Could not determine dbus-send location"
+ SEND="/${SEND#$MODULE_BUILD_DIR}"
+ sed "s,%UUIDGEN%,$UUIDGEN,g;s,%DAEMON%,$DAEMON,g;s,%SEND%,$SEND,g;s,%DAEMON_ARGS%,$DAEMON_ARGS,g" "templates/dbus.service" \
+ > "$MODULE_BUILD_DIR/etc/systemd/system/dbus.service" \
+ || perror "Could not generate $MODULE_BUILD_DIR/etc/systemd/system/dbus.service"
+}
+
+post_copy() {
+ :
+}
+
+files_contain () {
+ [ $# -lt 2 ] && perror "files_contain needs at least 2 arguments (pattern, file)"
+ local PATTERN="$1"
+ shift
+ local FILE
+ for FILE in $@; do
+ [ -e "$FILE" ] || continue
+ grep -q "$PATTERN" "$FILE" && return 0 # Found
+ done
+ return 1
+}
+
diff --git a/remote/modules/dbus/module.conf b/remote/modules/dbus/module.conf
new file mode 100644
index 00000000..40f8a53d
--- /dev/null
+++ b/remote/modules/dbus/module.conf
@@ -0,0 +1,15 @@
+REQUIRED_BINARIES="
+ dbus-cleanup-sockets
+ dbus-daemon
+ dbus-uuidgen
+ dbus-monitor
+ dbus-send
+ dbus-daemon-launch-helper
+ "
+REQUIRED_DIRECTORIES="
+ /etc/dbus-1
+"
+REQUIRED_FILES="
+ /etc/systemd/system/dbus.service
+"
+
diff --git a/remote/modules/dbus/module.conf.debian b/remote/modules/dbus/module.conf.debian
new file mode 100644
index 00000000..d007c2ef
--- /dev/null
+++ b/remote/modules/dbus/module.conf.debian
@@ -0,0 +1,9 @@
+REQUIRED_CONTENT_PACKAGES="
+ dbus
+"
+REQUIRED_DIRECTORIES+="
+ /lib/systemd
+"
+REQUIRED_FILES="
+ /etc/default/dbus
+"
diff --git a/remote/modules/dbus/module.conf.opensuse b/remote/modules/dbus/module.conf.opensuse
new file mode 100644
index 00000000..9bc514e2
--- /dev/null
+++ b/remote/modules/dbus/module.conf.opensuse
@@ -0,0 +1,4 @@
+REQUIRED_CONTENT_PACKAGES="
+ dbus-1
+"
+
diff --git a/remote/modules/dbus/module.conf.ubuntu b/remote/modules/dbus/module.conf.ubuntu
new file mode 100644
index 00000000..558eea7f
--- /dev/null
+++ b/remote/modules/dbus/module.conf.ubuntu
@@ -0,0 +1,7 @@
+REQUIRED_CONTENT_PACKAGES="
+ dbus
+"
+REQUIRED_FILES+="
+ /etc/default/dbus
+"
+
diff --git a/remote/modules/debug/module.build b/remote/modules/debug/module.build
new file mode 100644
index 00000000..c020181d
--- /dev/null
+++ b/remote/modules/debug/module.build
@@ -0,0 +1,20 @@
+fetch_source() {
+ :
+}
+
+build() {
+
+ for BIN in $REQUIRED_BINARIES; do
+ [[ "$BIN" == @* ]] && BIN=$(echo "$BIN" | cut -c 2-)
+ BIN_LOCATION=$(which ${BIN})
+ if [ ! -z ${BIN_LOCATION} -a -e ${BIN_LOCATION} ]; then
+ tarcopy "$(get_link_chain ${BIN_LOCATION})" "${MODULE_BUILD_DIR}"
+ else
+ pwarning "'${BIN}' not found on the system."
+ fi
+ done
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/debug/module.conf b/remote/modules/debug/module.conf
new file mode 100644
index 00000000..71006514
--- /dev/null
+++ b/remote/modules/debug/module.conf
@@ -0,0 +1,18 @@
+REQUIRED_BINARIES="
+ strace
+ ltrace
+ ldd
+ setterm
+ curl
+ nano
+ fc-cache
+ fc-query
+ @xset
+ locale
+ su
+ file
+ @htop
+ @logger
+ @tcpdump
+ getfacl
+"
diff --git a/remote/modules/debug/module.conf.debian b/remote/modules/debug/module.conf.debian
new file mode 100644
index 00000000..00bfea2c
--- /dev/null
+++ b/remote/modules/debug/module.conf.debian
@@ -0,0 +1,7 @@
+REQUIRED_INSTALLED_PACKAGES="
+ curl
+ ltrace
+ strace
+ nano
+ fontconfig
+"
diff --git a/remote/modules/debug/module.conf.opensuse b/remote/modules/debug/module.conf.opensuse
new file mode 100644
index 00000000..b7971956
--- /dev/null
+++ b/remote/modules/debug/module.conf.opensuse
@@ -0,0 +1,11 @@
+REQUIRED_INSTALLED_PACKAGES="
+ curl
+ ltrace
+ nano
+ fontconfig
+ fonts-config
+ xset
+"
+REQUIRED_BINARIES+="
+ fonts-config
+"
diff --git a/remote/modules/debug/module.conf.ubuntu b/remote/modules/debug/module.conf.ubuntu
new file mode 100644
index 00000000..00bfea2c
--- /dev/null
+++ b/remote/modules/debug/module.conf.ubuntu
@@ -0,0 +1,7 @@
+REQUIRED_INSTALLED_PACKAGES="
+ curl
+ ltrace
+ strace
+ nano
+ fontconfig
+"
diff --git a/remote/modules/dhcpc-busybox/module.build b/remote/modules/dhcpc-busybox/module.build
new file mode 100644
index 00000000..d8804784
--- /dev/null
+++ b/remote/modules/dhcpc-busybox/module.build
@@ -0,0 +1,13 @@
+
+fetch_source() {
+ :
+}
+
+build() {
+ :
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/dhcpc-busybox/module.conf b/remote/modules/dhcpc-busybox/module.conf
new file mode 100644
index 00000000..c01ade29
--- /dev/null
+++ b/remote/modules/dhcpc-busybox/module.conf
@@ -0,0 +1 @@
+# Nothing
diff --git a/remote/modules/dnbd3/module.build b/remote/modules/dnbd3/module.build
new file mode 100644
index 00000000..2651daac
--- /dev/null
+++ b/remote/modules/dnbd3/module.build
@@ -0,0 +1,43 @@
+fetch_source() {
+ mkdir -p "src/kmod"
+ if [ ! -d "src/dnbd3" ]; then
+ git clone "$REQUIRED_GIT" "src/dnbd3" || perror "Could not clone dnbd3 git repo"
+ fi
+ cd src/dnbd3
+ #git checkout "$REQUIRED_BRANCH" || perror "Could not checkout requested branch $REQUIRED_BRANCH"
+ git checkout "$REQUIRED_COMMIT" || perror "Could not checkout requested commit $REQUIRED_COMMIT"
+ cd -
+ cp src/dnbd3/Kbuild.in src/dnbd3/src/*.{c,h} src/dnbd3/src/kernel/*.{c,h} src/kmod/ || perror "Could not copy kernel module source files"
+ cat > "src/kmod/Makefile" <> "/etc/locale.gen"
+ locale-gen || perror "Could not generate locales (debian style)"
+ fi
+ # Ubuntu's version
+ if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/de_DE.utf8 ]; then
+ pinfo "Generating locales..."
+ grep -q -E -r '^\s*de_DE\.UTF-8' "/var/lib/locales/supported.d" || echo 'de_DE.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
+ locale-gen --no-archive --purge "de_DE.UTF-8" || perror "Could not generate locales (ubuntu style)"
+ fi
+
+ # Put everything we build or get from the system in build dir
+ local FILELIST="$MODULE_DIR/list_copy_build"
+ rm -f "$FILELIST"
+
+ # Copy required directories from source system to build dir
+ for FILE in ${REQUIRED_DIRECTORIES}; do
+ [ ! -d "${FILE}" ] && perror "Missing required directory $FILE"
+ echo ${FILE} >> "${FILELIST}"
+ done
+
+ # Done collecting file and directory names, copy everything
+ tarcopy "$(sort -u "$FILELIST")" "$MODULE_BUILD_DIR"
+
+}
+
+post_copy() {
+ for i in LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION; do
+ add_env $i de_DE.UTF-8 || perror "$i: add_env function failed."
+ done
+}
+
diff --git a/remote/modules/german/module.conf b/remote/modules/german/module.conf
new file mode 100644
index 00000000..e2f82123
--- /dev/null
+++ b/remote/modules/german/module.conf
@@ -0,0 +1,5 @@
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+REQUIRED_DIRECTORIES="
+ /usr/share/X11
+"
diff --git a/remote/modules/german/module.conf.debian b/remote/modules/german/module.conf.debian
new file mode 100644
index 00000000..a43faea2
--- /dev/null
+++ b/remote/modules/german/module.conf.debian
@@ -0,0 +1,10 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale
+"
+
diff --git a/remote/modules/german/module.conf.opensuse b/remote/modules/german/module.conf.opensuse
new file mode 100644
index 00000000..2bb901ff
--- /dev/null
+++ b/remote/modules/german/module.conf.opensuse
@@ -0,0 +1,13 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+ glibc-locale
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale/de_DE.utf8
+"
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+
diff --git a/remote/modules/german/module.conf.scientific b/remote/modules/german/module.conf.scientific
new file mode 100644
index 00000000..88ac0d27
--- /dev/null
+++ b/remote/modules/german/module.conf.scientific
@@ -0,0 +1,8 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+ glibc-common
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data"
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
diff --git a/remote/modules/german/module.conf.ubuntu b/remote/modules/german/module.conf.ubuntu
new file mode 100644
index 00000000..aee3c64b
--- /dev/null
+++ b/remote/modules/german/module.conf.ubuntu
@@ -0,0 +1,11 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libx11-data
+ language-pack-de
+"
+REQUIRED_CONTENT_PACKAGES="
+ libx11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale/de_DE.utf8
+"
+
diff --git a/remote/modules/idleaction/module.build b/remote/modules/idleaction/module.build
new file mode 100644
index 00000000..1b740aa1
--- /dev/null
+++ b/remote/modules/idleaction/module.build
@@ -0,0 +1,16 @@
+fetch_source() {
+ :
+}
+
+build() {
+ # We ship xprintidle's source as suse doesn't have it in one of the default repos
+ # and its just too tiny to do anything fancy like fetching source from somewhere
+ mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin"
+ gcc -o "$MODULE_BUILD_DIR/opt/openslx/bin/xprintidle" "$MODULE_DIR/xprintidle.c" -lX11 -lXss -lXext \
+ || perror "Compilation of xprintidle failed!"
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/idleaction/module.conf b/remote/modules/idleaction/module.conf
new file mode 100644
index 00000000..1661735b
--- /dev/null
+++ b/remote/modules/idleaction/module.conf
@@ -0,0 +1,4 @@
+REQUIRED_BINARIES="
+ xprintidle
+"
+
diff --git a/remote/modules/idleaction/module.conf.opensuse b/remote/modules/idleaction/module.conf.opensuse
new file mode 100644
index 00000000..d368cbd8
--- /dev/null
+++ b/remote/modules/idleaction/module.conf.opensuse
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-devel
+ libXScrnSaver-devel
+ xorg-x11-proto-devel
+"
+
diff --git a/remote/modules/idleaction/module.conf.ubuntu b/remote/modules/idleaction/module.conf.ubuntu
new file mode 100644
index 00000000..0dad2e48
--- /dev/null
+++ b/remote/modules/idleaction/module.conf.ubuntu
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libx11-dev
+ libxss-dev
+ x11proto-scrnsaver-dev
+"
+
diff --git a/remote/modules/iptables-helper/module.build b/remote/modules/iptables-helper/module.build
new file mode 100644
index 00000000..d8804784
--- /dev/null
+++ b/remote/modules/iptables-helper/module.build
@@ -0,0 +1,13 @@
+
+fetch_source() {
+ :
+}
+
+build() {
+ :
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/iptables-helper/module.conf b/remote/modules/iptables-helper/module.conf
new file mode 100644
index 00000000..34103f5b
--- /dev/null
+++ b/remote/modules/iptables-helper/module.conf
@@ -0,0 +1 @@
+# requires some rootfs that provies iptables
diff --git a/remote/modules/kdm-theme-bwlp/module.build b/remote/modules/kdm-theme-bwlp/module.build
new file mode 100644
index 00000000..ccb7c4e1
--- /dev/null
+++ b/remote/modules/kdm-theme-bwlp/module.build
@@ -0,0 +1,13 @@
+
+fetch_source () {
+ :
+}
+
+build () {
+ :
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/kdm-theme-bwlp/module.conf b/remote/modules/kdm-theme-bwlp/module.conf
new file mode 100644
index 00000000..04a7b61d
--- /dev/null
+++ b/remote/modules/kdm-theme-bwlp/module.conf
@@ -0,0 +1,2 @@
+REQUIRED_MODULES="kdm"
+
diff --git a/remote/modules/kdm/module.build b/remote/modules/kdm/module.build
new file mode 100644
index 00000000..d5199340
--- /dev/null
+++ b/remote/modules/kdm/module.build
@@ -0,0 +1,19 @@
+
+fetch_source () {
+ :
+}
+
+build () {
+ COPYLIST="list_dpkg_output"
+ [ -e "${COPYLIST}" ] && rm "${COPYLIST}"
+
+ list_packet_files >> "${COPYLIST}"
+ tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
+}
+
+post_copy() {
+ # copy required icons
+ # TODO: Why here? gtk <-> kdm?
+ gtk-update-icon-cache-3.0 "${TARGET_BUILD_DIR}/usr/share/icons/oxygen/" || pwarning "update-icon-cache-3.0 failed."
+}
+
diff --git a/remote/modules/kdm/module.conf b/remote/modules/kdm/module.conf
new file mode 100644
index 00000000..2778a2bc
--- /dev/null
+++ b/remote/modules/kdm/module.conf
@@ -0,0 +1,20 @@
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+REQUIRED_DIRECTORIES="
+ /usr/bin
+ /usr/share/dbus-1
+ /usr/share/polkit-1
+ /usr/share/kde4/services
+ /etc/dbus-1
+"
+REQUIRED_LIBRARIES=""
+# non-standard vars
+REQUIRED_SYSTEM_FILES="
+ /usr/share/icons/oxygen/16x16/actions/system-reboot.png
+ /usr/share/icons/oxygen/16x16/actions/system-shutdown.png
+ /usr/share/icons/oxygen/16x16/actions/dialog-cancel.png
+ /usr/share/icons/oxygen/index.theme
+ /usr/share/icons/default.kde4/index.theme
+"
+# Ignore these libs even if output by ldd
+REQUIRED_LDD_BLACKLIST="\|libQtWebKit\|libGL"
diff --git a/remote/modules/kdm/module.conf.debian b/remote/modules/kdm/module.conf.debian
new file mode 100644
index 00000000..da0df913
--- /dev/null
+++ b/remote/modules/kdm/module.conf.debian
@@ -0,0 +1,28 @@
+REQUIRED_INSTALLED_PACKAGES="
+ kdm
+ kde-workspace-kgreet-plugins
+"
+REQUIRED_CONTENT_PACKAGES="
+ kdm
+ kde-workspace-kgreet-plugins
+ libicu48
+ libxcursor1
+ libxrandr2
+ libxfixes3
+ libxinerama1
+ libxi6
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib
+ /etc/pam.d
+ /etc/logrotate.d
+ /etc/insserv.conf.d
+ /etc/kde4/kdm
+"
+# non-standard vars
+REQUIRED_SYSTEM_FILES+="
+ /usr/share/kde4/apps/kdm/pics/shutdown.png
+ /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
+ /usr/share/icons/default/index.theme
+"
+
diff --git a/remote/modules/kdm/module.conf.opensuse b/remote/modules/kdm/module.conf.opensuse
new file mode 100644
index 00000000..832baf9c
--- /dev/null
+++ b/remote/modules/kdm/module.conf.opensuse
@@ -0,0 +1,10 @@
+REQUIRED_INSTALLED_PACKAGES="
+ kdm
+"
+REQUIRED_CONTENT_PACKAGES="
+ kdm
+ kde4-kgreeter-plugins
+"
+REQUIRED_DIRECTORIES+="
+ /usr/$LIB64/kde4
+"
diff --git a/remote/modules/kdm/module.conf.scientific b/remote/modules/kdm/module.conf.scientific
new file mode 100644
index 00000000..d61cc8d6
--- /dev/null
+++ b/remote/modules/kdm/module.conf.scientific
@@ -0,0 +1,20 @@
+REQUIRED_INSTALLED_PACKAGES="
+ kdm
+"
+REQUIRED_CONTENT_PACKAGES="
+ kdm
+"
+REQUIRED_BINARIES=""
+REQUIRED_DIRECTORIES+="
+ /usr/$LIB64/kde4
+"
+REQUIRED_FILES=""
+REQUIRED_LIBRARIES=""
+#non-standard vars
+REQUIRED_SYSTEM_FILES="
+ /usr/share/icons/oxygen/16x16/actions/system-reboot.png
+ /usr/share/icons/oxygen/16x16/actions/system-shutdown.png
+ /usr/share/icons/oxygen/16x16/actions/dialog-cancel.png
+ /usr/share/icons/oxygen/index.theme
+ /usr/share/icons/default.kde4/index.theme
+"
diff --git a/remote/modules/kdm/module.conf.ubuntu b/remote/modules/kdm/module.conf.ubuntu
new file mode 100644
index 00000000..b91d00e0
--- /dev/null
+++ b/remote/modules/kdm/module.conf.ubuntu
@@ -0,0 +1,29 @@
+REQUIRED_INSTALLED_PACKAGES="
+ kdm
+ kde-workspace-kgreet-plugins
+"
+REQUIRED_CONTENT_PACKAGES="
+ kdm
+ kde-workspace-kgreet-plugins
+ libicu48
+ libxcursor1
+ libxrandr2
+ libxfixes3
+ libxinerama1
+ libxi6
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib
+ /etc/pam.d
+ /etc/logrotate.d
+ /etc/insserv.conf.d
+ /etc/kde4/kdm
+"
+# non-standard vars
+REQUIRED_SYSTEM_FILES+="
+ /usr/share/kde4/apps/kdm/pics/shutdown.png
+ /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
+ /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf
+ /usr/share/icons/default/index.theme
+"
+
diff --git a/remote/modules/kernel-system/module.build b/remote/modules/kernel-system/module.build
new file mode 100644
index 00000000..d542a80d
--- /dev/null
+++ b/remote/modules/kernel-system/module.build
@@ -0,0 +1,114 @@
+# overloaded get_kernel_version function
+get_kernel_version(){
+ pinfo "KERNEL_CURRENT_VERSION: ${KERNEL_CURRENT_VERSION}"
+ [ -z "${KERNEL_CURRENT_VERSION}" ] && perror "KERNEL_CURRENT_VERSION is not set, 'uname -r' output: '$(uname -r)'. Aborting..."
+
+ # set SYS_UTS_RELEASE and SYS_KERNEL correctly
+ declare -rg SYS_UTS_RELEASE="${KERNEL_CURRENT_VERSION}" 2>/dev/null
+ declare -rg SYS_KERNEL="$(echo ${KERNEL_CURRENT_VERSION} | grep -o -E '^[0-9\.]+')" 2>/dev/null
+
+ # KERNEL_NEW_VERSION is the same as KERNEL_CURRENT_VERSION
+ declare -rg KERNEL_NEW_VERSION="$KERNEL_CURRENT_VERSION" 2>/dev/null
+
+ # check linux headers directory
+ if [ -d "/usr/src/linux-headers-$(uname -r)" ]; then
+ declare -rg KERNEL_HEADERS_PATH="/usr/src/linux-headers-$(uname -r)" 2>/dev/null
+ else
+ # fetch source did not install the headers correctly.
+ perror "kernel headers for $KERNEL_CURRENT_VERSION not found! Re-build the kernel-system module"
+ fi
+
+ # check kernel modules/firmware directory
+ if [ -d "/lib/modules/${KERNEL_CURRENT_VERSION}" -a \
+ -d "/lib/firmware/${KERNEL_CURRENT_VERSION}" ]; then
+ # The expected paths exists, set KERNEL_BASE_DIR to /
+ declare -rg KERNEL_BASE_DIR="/" 2>/dev/null
+ else
+ perror "Could not find kernel modules / firmware for kernel version '$KERNEL_CURRENT_VERSION'. \
+ Does '/lib/modules/$KERNEL_CURRENT_VERSION' exist?"
+ fi
+
+ # print debug info
+ pdebug "SYS_UTS_RELEASE: '$SYS_UTS_RELEASE'"
+ pdebug "SYS_KERNEL: '$SYS_KERNEL'"
+ pdebug "KERNEL_NEW_VERSION: '$KERNEL_NEW_VERSION'"
+ pdebug "KERNEL_BASE_DIR: '$KERNEL_BASE_DIR'"
+
+ # set KERNEL_HEADERS_PATH
+ #get_kernel_headers_path
+}
+
+get_kernel_headers_path(){
+ # determine the path to the kernel headers we just installed
+ for DIR in $(list_content_package --dirs linux-headers-$(uname -r) ); do
+ if [[ "$DIR" =~ .*linux-headers-$(uname -r)$ ]]; then
+ # validate candidate
+ [ -e "$DIR/./include/generated/utsrelease.h" ] \
+ || perror "Could not find utsrelease.h at '$DIR/./include/generated/utsrelease.h'"
+ # TODO: maybe check if SYS_UTS_RELEASE is the same as in the header.
+
+ # all good, we found it
+ pinfo "Kernel headers found at '$DIR'."
+ declare -rg KERNEL_HEADERS_PATH="$DIR"
+ break
+ fi
+ done
+
+ [ -z "$KERNEL_HEADERS_PATH" ] && perror "KERNEL_HEADERS_PATH was not set correctly."
+
+}
+
+fetch_source() {
+
+ # get the source from repos, use meta-package for now
+ pinfo "Installing kernel headers from the repositories for version '${KERNEL_CURRENT_VERSION}'"
+
+ # the actual install routine is done via config file
+ # through the REQUIRED_INSTALLED_PACKAGES variable
+
+}
+
+build() {
+
+ # simply copy the kernel from the running system
+ # to the build directory as it is.
+ local KERNEL_SYSTEM_PATH=""
+
+ # 1st "parse" /proc/cmdline for the kernel name
+ for i in $(cat /proc/cmdline); do
+ [[ "$i" =~ ^BOOT_IMAGE=.* ]] && local BOOT_IMAGE="$(basename $(echo $i|cut -c 12-))"
+ done
+
+ # exit if KERNEL_SYSTEM_FILENAME is empty, should not happen
+ [ -z "${BOOT_IMAGE}" ] && perror "Could not determine the full path to the running kernel..."
+
+ # now find it in KERNEL_SYSTEM_SEARCH_PATH
+ # NOTE: this variable should be expanded in the future if new locations are to be searched
+ local KERNEL_SYSTEM_SEARCH_PATH="/boot"
+ local KERNEL_SYSTEM_SEARCH_RESULTS="$(find "${KERNEL_SYSTEM_SEARCH_PATH}" -type f -iname "*${BOOT_IMAGE}*")"
+
+ if [ "$(echo $KERNEL_SYSTEM_SEARCH_RESULTS|wc -w)" -eq 1 ]; then
+ # we found the running kernel path
+ KERNEL_SYSTEM_PATH="${KERNEL_SYSTEM_SEARCH_RESULTS}"
+ else
+ # we found more than one, shouldn't happen...
+ perror "Found more than one kernel named '${BOOT_IMAGE}' inside '${KERNEL_SYSTEM_SEARCH_PATH}'."
+ fi
+
+ # at this point, we should definitly have KERNEL_SYSTEM_PATH, check just in case :)
+ [ -z "${KERNEL_SYSTEM_PATH}" ] && perror "KERNEL_SYSTEM_PATH isn't set, kernel not found. This shouldn't happen!"
+ pinfo "Live kernel path: $KERNEL_SYSTEM_PATH"
+
+ # copy kernel to build directory
+ [ -z "${KERNEL_TARGET_NAME}" ] && perror "KERNEL_TARGET_NAME not set, this mean something is wrong with remote/include/kernel.inc"
+ cp "${KERNEL_SYSTEM_PATH}" "${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}" && \
+ pinfo "Copied kernel from '${KERNEL_SYSTEM_PATH}' to '${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}'"
+ #[ -z "${KERNEL_BUILD_DIR}" ] && KERNEL_BUILD_DIR="${MODULE_BUILD_DIR}"
+}
+
+post_copy() {
+ :
+ #mkdir -p "$TARGET_BUILD_DIR/../kernel"
+ #cp -a "$MODULE_BUILD_DIR/kernel" "$TARGET_BUILD_DIR/../kernel/kernel" || perror "could not copy kernel to remote build dir."
+}
+
diff --git a/remote/modules/kernel-system/module.conf b/remote/modules/kernel-system/module.conf
new file mode 100644
index 00000000..0cd03752
--- /dev/null
+++ b/remote/modules/kernel-system/module.conf
@@ -0,0 +1,3 @@
+REQUIRED_BINARIES=""
+REQUIRED_LIBRARIES=""
+REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/kernel-system/module.conf.opensuse b/remote/modules/kernel-system/module.conf.opensuse
new file mode 100644
index 00000000..6bfc2078
--- /dev/null
+++ b/remote/modules/kernel-system/module.conf.opensuse
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ kernel-desktop-devel
+"
+REQUIRED_CONTENT_PACKAGES="
+ kernel-desktop-devel
+"
diff --git a/remote/modules/kernel-system/module.conf.ubuntu b/remote/modules/kernel-system/module.conf.ubuntu
new file mode 100644
index 00000000..4d47b243
--- /dev/null
+++ b/remote/modules/kernel-system/module.conf.ubuntu
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ linux-headers-$(uname -r)
+"
+REQUIRED_CONTENT_PACKAGES="
+ linux-headers-$(uname -r)
+"
diff --git a/remote/modules/kernel/module.build b/remote/modules/kernel/module.build
new file mode 100644
index 00000000..fdc7e9ff
--- /dev/null
+++ b/remote/modules/kernel/module.build
@@ -0,0 +1,151 @@
+get_kernel_version() {
+ # determine kernel version that will be running in the generated system
+ if [ -e "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" ]; then
+ # declare kernel version stuff
+ declare -rg SYS_UTS_RELEASE=$(grep 'UTS_RELEASE' "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" | awk -F '"' '{print $2}')
+ declare -rg SYS_KERNEL=$(echo "$SYS_UTS_RELEASE" | grep -o -E '^[0-9\.]+')
+ declare -rg KERNEL_NEW_VERSION="$SYS_UTS_RELEASE"
+
+ # declare path to kernel headers and modules/firmware
+ declare -rg KERNEL_HEADERS_PATH="$MODULES_DIR/kernel/ksrc"
+ declare -rg KERNEL_BASE_DIR="$MODULES_DIR/kernel/build"
+ fi
+
+ # print debug info
+ pdebug "SYS_UTS_RELEASE: '$SYS_UTS_RELEASE'"
+ pdebug "SYS_KERNEL: '$SYS_KERNEL'"
+ pdebug "KERNEL_NEW_VERSION: '$KERNEL_NEW_VERSION'"
+ pdebug "KERNEL_BASE_DIR: '$KERNEL_BASE_DIR'"
+
+ # check the headers/src path
+}
+
+fetch_source() {
+ pdebug "getting kernel sources via git ...."
+ [ -d ./ksrc ] && rm -rf ./ksrc # slightly brutal ...
+ git clone --depth 1 ${REQUIRED_GIT} ksrc || perror "Could not clone kernel git."
+ # check for aufs
+ local RSL=$(find ksrc/ -type d -name aufs)
+ if [ -z "$RSL" ]; then
+ pinfo "aufs not found in kernel sources, patching it..."
+ patch_aufs
+ else
+ pinfo "aufs detected in kernel source :)"
+ fi
+ # remember the current kernel version
+ echo "${KERNEL_CURRENT_VERSION}" > ksrc/KVERSION
+}
+
+build() {
+ local TARGET_CONFIG_FILE="openslx.config"
+ [ -e "${TARGET_CONFIG_FILE}" ] && rm -f "${TARGET_CONFIG_FILE}"
+ # update config and copy to ksrc
+ pinfo "Updating kernel config..."
+ update_config
+ cp "${TARGET_CONFIG_FILE}" ksrc/.config
+ # make kernel with the new config
+ cd ksrc || perror "Could not cd to ksrc, was the kernel source fetched properly?"
+ pinfo "Preparing kernel for new config ('make oldconfig')."
+ if [ "x$MLTK_QUIET" = "x1" ]; then
+ yes "" | make oldconfig || perror "make oldconfig failed."
+ else
+ make oldconfig || perror "make oldconfig failed."
+ fi
+ make prepare || perror "make prepare failed."
+ make scripts || perror "make scripts failed."
+
+ pinfo "Compiling kernel... (this will take some time)"
+ if gcc --version | grep "4\.7" && which distcc; then
+ pinfo "USING DISTCC"
+ make CC="distcc gcc-4.7" -j16 || perror "make failed."
+ else
+ # explicitly state number of cores here, as MAKEFLAGS seems to be overridden
+ make "-j$CPU_CORES" || perror "make failed."
+ fi
+
+ # install modules to build directory
+ pinfo "Installing kernel modules..."
+ if [ -d "${MODULE_BUILD_DIR}/lib/modules" ]; then
+ rm -r "${MODULE_BUILD_DIR}/lib/modules" || pwarning "Could not clean old modules."
+ fi
+ make INSTALL_MOD_PATH="${MODULE_BUILD_DIR}" INSTALL_MOD_STRIP=1 modules_install || perror "make modules_install failed in ${MODULE_BUILD_DIR}."
+ cd - 2> /dev/null
+
+ # copy kernel to build
+ cp ksrc/arch/x86/boot/bzImage "${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}"
+ pinfo "Kernel was successfully built at ${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}"
+ [ -z "${KERNEL_BUILD_DIR}" ] && KERNEL_BUILD_DIR="${MODULE_BUILD_DIR}"
+}
+
+post_copy() {
+ mkdir -p "$TARGET_BUILD_DIR/../kernel"
+ cp -a "$MODULE_BUILD_DIR/kernel" "$TARGET_BUILD_DIR/../kernel/kernel" || perror "could not copy kernel to remote build dir."
+}
+
+# helper function to update the current kernel config with our parameters
+update_config() {
+
+ # first we need to update the current config
+ local BASE_CONFIG_FILE="/boot/config-$(uname -r)"
+ [ -e "${BASE_CONFIG_FILE}" ] || perror "$BASE_CONFIG_FILE could not be found! This should not happen."
+
+ # check for our wanted config parameter
+ local OPENSLX_WANTED_CONFIG="${ROOT_DIR}/data/kernel.wanted.config"
+
+ [ -e "${OPENSLX_WANTED_CONFIG}" ] || perror "$OPENSLX_WANTED_CONFIG does not exist! Please add a list of wanted kernel config parameters."
+
+ # copy basic config file
+ cp "$BASE_CONFIG_FILE" "$TARGET_CONFIG_FILE"
+
+ for WANTED_CONFIG in $(cat $OPENSLX_WANTED_CONFIG|sort -u); do
+ local CONFIG_PARAM_NAME="$(echo $WANTED_CONFIG | awk -F "=" '{print $1}')"
+ local SEARCH_RESULT="$(grep -E "^\s*$(echo "$CONFIG_PARAM_NAME" | escape_search)=" "$BASE_CONFIG_FILE")"
+
+ #echo "Process: $SEARCH_RESULT"
+ # analyse results
+ if [ "x$SEARCH_RESULT" == "x" ]; then
+ # no match, add it
+ sed -i -r "s/^\s*#.*\s$(echo "$CONFIG_PARAM_NAME" | escape_search)[^_A-Z0-9].*$//" "$TARGET_CONFIG_FILE"
+ echo "$WANTED_CONFIG" >> "$TARGET_CONFIG_FILE"
+ else
+ # match, change to our setting if they differ
+ if [ "x$SEARCH_RESULT" != "x$WANTED_CONFIG" ]; then
+ sed -i "s/$(echo "$SEARCH_RESULT" | escape_search)/$(echo "$WANTED_CONFIG" | escape_replace)/" "$TARGET_CONFIG_FILE"
+ fi
+ fi
+ done
+}
+
+# helper to patch aufs
+patch_aufs() {
+ pinfo "Cloning aufs3 standalone git"
+ cd "$MODULE_DIR"
+ [ -d "aufs3-standalone/.git" ] && rm -rf "aufs3-standalone" # if already there, kill it.
+ # git: --depth 1 won't work here due to later "checkout origin/branch"
+ git clone "git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git" || perror "Cloning aufs3 failed."
+ # get the needed version
+ [ ! -z ${KERNEL_CURRENT_VERSION} ] && local NEEDED_BRANCH=$(echo $KERNEL_CURRENT_VERSION | awk -F "." '{print $1"."$2}') \
+ || perror "KERNEL_CURRENT_VERSION not set, this should not happen!"
+ pinfo "Getting branch origin/$NEEDED_BRANCH"
+ cd "$MODULE_DIR/aufs3-standalone" || perror "Could not CD to aufs3-standalone"
+ git checkout "origin/aufs$NEEDED_BRANCH" || perror "Could not checkout needed branch."
+ pinfo "Starting to patch... $NEEDED_BRANCH"
+ tarcopy "Documentation fs" "$MODULE_DIR/ksrc"
+
+ # Quick-and-dirty aufs_type.h copying:
+ [ -e "include/linux/aufs_type.h" ] && cp "include/linux/aufs_type.h" "$MODULE_DIR/ksrc/include/linux/"
+ [ -e "include/uapi/linux/aufs_type.h" ] && cp "include/uapi/linux/aufs_type.h" "$MODULE_DIR/ksrc/include/uapi/linux/"
+
+ cd "$MODULE_DIR/ksrc" || perror "Could not CD to kernel-source dir ksrc"
+
+ patch -p1 < "$MODULE_DIR/aufs3-standalone/aufs3-kbuild.patch" || perror "aufs3-standalone/aufs3-kbuild.patch failed!"
+ patch -p1 < "$MODULE_DIR/aufs3-standalone/aufs3-base.patch" || perror "aufs3-standalone/aufs3-base.patch failed!"
+
+ # this following 'if' is a burning shame - caused as patching under eg. openSuse 13.1 is always unsuccessful due to hunk failing
+ if [ -f "$MODULE_DIR/aufs3-standalone/aufs3-mmap.patch" ]; then
+ patch -p1 < "$MODULE_DIR/aufs3-standalone/aufs3-mmap.patch" || pwarning "Problem patching aufs3-mmap.patch: hunks failed?"
+ fi
+ pinfo "Patched kernel source with aufs-${NEEDED_BRANCH}"
+ cd "$MODULE_DIR"
+}
+
diff --git a/remote/modules/kernel/module.conf b/remote/modules/kernel/module.conf
new file mode 100644
index 00000000..0cd03752
--- /dev/null
+++ b/remote/modules/kernel/module.conf
@@ -0,0 +1,3 @@
+REQUIRED_BINARIES=""
+REQUIRED_LIBRARIES=""
+REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/kernel/module.conf.opensuse b/remote/modules/kernel/module.conf.opensuse
new file mode 100644
index 00000000..a66564fe
--- /dev/null
+++ b/remote/modules/kernel/module.conf.opensuse
@@ -0,0 +1,2 @@
+REQUIRED_GIT_BRANCH="-b openSUSE-${SYS_VERSION}"
+REQUIRED_GIT="git://kernel.opensuse.org/kernel.git $REQUIRED_GIT_BRANCH"
diff --git a/remote/modules/kernel/module.conf.ubuntu b/remote/modules/kernel/module.conf.ubuntu
new file mode 100644
index 00000000..1c876d15
--- /dev/null
+++ b/remote/modules/kernel/module.conf.ubuntu
@@ -0,0 +1,2 @@
+REQUIRED_GIT_BRANCH="-b master"
+REQUIRED_GIT="git://kernel.ubuntu.com/ubuntu/ubuntu-${SYS_CODENAME}.git $REQUIRED_GIT_BRANCH"
diff --git a/remote/modules/kernel/module.conf.ubuntu.13.04 b/remote/modules/kernel/module.conf.ubuntu.13.04
new file mode 100644
index 00000000..e9192f01
--- /dev/null
+++ b/remote/modules/kernel/module.conf.ubuntu.13.04
@@ -0,0 +1,2 @@
+REQUIRED_GIT_BRANCH="-b master"
+REQUIRED_GIT="git://kernel.ubuntu.com/ubuntu-archive/ubuntu-${SYS_CODENAME}.git $REQUIRED_GIT_BRANCH"
diff --git a/remote/modules/ldm-gtk-greeter/module.build b/remote/modules/ldm-gtk-greeter/module.build
new file mode 100644
index 00000000..27e5a592
--- /dev/null
+++ b/remote/modules/ldm-gtk-greeter/module.build
@@ -0,0 +1,34 @@
+#tool/distro specific functions for fetching, building and installing dependencies
+
+fetch_source () {
+ download_untar "$URL" "src/"
+}
+
+build () {
+ cd "src/$VERSION"
+ pinfo "Running configure"
+ ./configure --prefix="/" --datarootdir="/usr/share" || perror "failed."
+ pinfo "Running make"
+ make || perror "failed."
+ pinfo "Running make install"
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "failed."
+
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+
+ cd -
+}
+
+post_copy() {
+ gdk-pixbuf-query-loaders > "${TARGET_BUILD_DIR}/usr/lib/${ARCH_TRIPLET}/gdk-pixbuf-2.0/2.10.0/loaders.cache" || perror "pixbuf-query-loaders failed."
+ mkdir -p "${TARGET_BUILD_DIR}/etc/pango" || perror "Making etc/pango failed."
+ pango-querymodules > "${TARGET_BUILD_DIR}/etc/pango/pango.modules" || perror "pango-querymodules failed."
+ gtk-update-icon-cache-3.0 "${TARGET_BUILD_DIR}/usr/share/icons/hicolor/" || perror "update-icon-cache-3.0 failed."
+ update-mime-database "${TARGET_BUILD_DIR}/usr/share/mime" || perror "update-mime-database failed."
+ mkdir -p "${TARGET_BUILD_DIR}/var/lib"
+ cp -r "/var/lib/polkit-1" "${TARGET_BUILD_DIR}/var/lib/" || perror "Copying -r /var/lib/polkit-1 to '${TARGET_BUILD_DIR}/var/lib/' failed."
+}
+
diff --git a/remote/modules/ldm-gtk-greeter/module.conf b/remote/modules/ldm-gtk-greeter/module.conf
new file mode 100644
index 00000000..e9349002
--- /dev/null
+++ b/remote/modules/ldm-gtk-greeter/module.conf
@@ -0,0 +1,9 @@
+VERSION=lightdm-gtk-greeter-1.3.1
+URL=https://launchpad.net/lightdm-gtk-greeter/1.4/1.3.1/+download/lightdm-gtk-greeter-1.3.1.tar.gz
+REQUIRED_INSTALLED_PACKAGES="gtk+-3.0 liblightdm-gobject-1-dev libgdk-pixbuf2.0-0 libpango1.0-0 librsvg2-common shared-mime-info gnome-themes-standard"
+REQUIRED_CONTENT_PACKAGES="libgdk-pixbuf2.0-0 libpango1.0-0 librsvg2-common shared-mime-info gnome-themes-standard"
+REQUIRED_BINARIES="lightdm-gtk-greeter"
+REQUIRED_DIRECTORIES="/usr/lib /usr/share/lightdm-gtk-greeter /usr/share/mime /usr/share/xgreeters /usr/share/icons /usr/share/themes /etc /usr/bin"
+REQUIRED_FILES="/etc/lightdm/lightdm-gtk-greeter.conf"
+REQUIRED_MODULES="ldm"
+
diff --git a/remote/modules/ldm/module.build b/remote/modules/ldm/module.build
new file mode 100644
index 00000000..e88f0b08
--- /dev/null
+++ b/remote/modules/ldm/module.build
@@ -0,0 +1,34 @@
+#tool/distro specific functions for fetching, building and installing dependencies
+
+fetch_source () {
+ download_untar "$URL" "src/"
+}
+
+build () {
+ cd "src/$VERSION"
+ pinfo "Running configure"
+ ./configure --prefix="/" --datarootdir="/usr/share" || perror "failed."
+ pinfo "Running make"
+ make || perror "failed."
+ pinfo "Running make install"
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "failed."
+
+ COPYLIST="list_dpkg_output"
+
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+
+ cd -
+}
+
+post_copy() {
+ mkdir -p "${TARGET_BUILD_DIR}/var/lib/lightdm"
+ touch "${TARGET_BUILD_DIR}/var/lib/lightdm/.Xauthority" || perror "Cannot touch '${TARGET_BUILD_DIR}/var/lib/lightdm/.Xauthority'"
+ local LDMUID=$(add_user "lightdm")
+ local LDMGID=$(add_group "lightdm")
+ pinfo "lightdm user and group is $LDMUID $LDMGID"
+ chown -R "${LDMUID}:${LDMGID}" "${TARGET_BUILD_DIR}/var/lib/lightdm/" || perror "chowning '${TARGET_BUILD_DIR}/var/lib/lightdm/' failed."
+}
+
diff --git a/remote/modules/ldm/module.conf b/remote/modules/ldm/module.conf
new file mode 100644
index 00000000..74ab9450
--- /dev/null
+++ b/remote/modules/ldm/module.conf
@@ -0,0 +1,8 @@
+VERSION=lightdm-1.4.0
+URL=https://launchpad.net/lightdm/1.4/1.4.0/+download/lightdm-1.4.0.tar.gz
+REQUIRED_INSTALLED_PACKAGES="libpam-dev itstool liblightdm-gobject-1-dev"
+REQUIRED_CONTENT_PACKAGES=""
+REQUIRED_BINARIES="dm-tool lightdm lightdm-set-defaults gdmflexiserver lightdm-guest-session-wrapper lightdm-set-defaults"
+REQUIRED_DIRECTORIES="/etc /lib"
+REQUIRED_FILES=""
+
diff --git a/remote/modules/nscd/module.build b/remote/modules/nscd/module.build
new file mode 100644
index 00000000..bd189b66
--- /dev/null
+++ b/remote/modules/nscd/module.build
@@ -0,0 +1,17 @@
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+
+ return 0
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/nscd/module.conf b/remote/modules/nscd/module.conf
new file mode 100644
index 00000000..74af4cfb
--- /dev/null
+++ b/remote/modules/nscd/module.conf
@@ -0,0 +1,3 @@
+REQUIRED_BINARIES="
+ nscd
+"
diff --git a/remote/modules/nscd/module.conf.debian b/remote/modules/nscd/module.conf.debian
new file mode 100644
index 00000000..4a61cc19
--- /dev/null
+++ b/remote/modules/nscd/module.conf.debian
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ nscd
+"
+REQUIRED_CONTENT_PACKAGES="
+ nscd
+"
diff --git a/remote/modules/nscd/module.conf.opensuse b/remote/modules/nscd/module.conf.opensuse
new file mode 100644
index 00000000..4a61cc19
--- /dev/null
+++ b/remote/modules/nscd/module.conf.opensuse
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ nscd
+"
+REQUIRED_CONTENT_PACKAGES="
+ nscd
+"
diff --git a/remote/modules/nscd/module.conf.ubuntu b/remote/modules/nscd/module.conf.ubuntu
new file mode 100644
index 00000000..4a61cc19
--- /dev/null
+++ b/remote/modules/nscd/module.conf.ubuntu
@@ -0,0 +1,6 @@
+REQUIRED_INSTALLED_PACKAGES="
+ nscd
+"
+REQUIRED_CONTENT_PACKAGES="
+ nscd
+"
diff --git a/remote/modules/nvidia_kernel/module.build b/remote/modules/nvidia_kernel/module.build
new file mode 100644
index 00000000..a1275c70
--- /dev/null
+++ b/remote/modules/nvidia_kernel/module.build
@@ -0,0 +1,55 @@
+fetch_source() {
+ mkdir -p src 2>/dev/null
+ cd src || perror "Could not change into src directory."
+ download "$REQUIRED_URL"
+}
+
+build() {
+ local ROOTUPPERDIR="$MODULE_DIR/rootupper"
+
+ local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
+ local NVIDIAEXTRACTDIR="$ROOTUPPERDIR/NVIDIA"
+
+ [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
+ pinfo "Unpacking NVidia archive ($NVIDIA) ..."
+ sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
+
+ pinfo "Ready to chroot - compiling may take some time."
+ pdebug "--- chroot ---------------------------------------------------------------------"
+ pdebug "- -"
+ pdebug "- Notice: This may take a while! -"
+ pdebug "- -"
+ pdebug "- Please keep note the Nvidia installer _will_ complain about -"
+ pdebug "- several warnings and errors. It will do this in any case. -"
+ pdebug "- -"
+ pdebug "- This does _not_ mean the kernel module compilation was unsuccessful! -"
+ pdebug "- -"
+ pdebug "--------------------------------------------------------------------------------"
+
+
+ chroot_run "$ROOTUPPERDIR" <<-EOF
+ /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --kernel-source-path /"$KERNEL_HEADERS_PATH" # Do the work!
+ # fake success since the installer will exit with an error due to the module not loading properly.
+ exit 0
+ EOF
+ pinfo "chroot terminated."
+
+ pinfo "Stripping kernel modules..."
+ strip -g "$ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko" || \
+ pwarning "Could not strip kernel module $ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko."
+ strip -g "$ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko" || \
+ pwarning "Could not strip kernel module $ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko."
+
+ pinfo "Copying kernel modules..."
+ local NVIDIA_MODULES="$MODULE_BUILD_DIR/lib/modules/nvidia/"
+ mkdir -p "$NVIDIA_MODULES"
+ cp "$ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia.ko!"
+ cp "$ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia-uvm.ko!"
+
+ rm -rf "$MODULE_BUILD_DIR/NVIDIA"
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/nvidia_kernel/module.conf b/remote/modules/nvidia_kernel/module.conf
new file mode 100644
index 00000000..9880100d
--- /dev/null
+++ b/remote/modules/nvidia_kernel/module.conf
@@ -0,0 +1,10 @@
+REQUIRED_VERSION="331.38"
+REQUIRED_NVIDIA="NVIDIA-Linux-x86_64-$REQUIRED_VERSION.run"
+REQUIRED_URL="http://download.nvidia.com/XFree86/Linux-x86_64/$REQUIRED_VERSION/$REQUIRED_NVIDIA"
+
+REQUIRED_DIRECTORIES="
+ /lib/modules/nvidia
+"
+REQUIRED_MODULES="
+ kernel
+"
diff --git a/remote/modules/nvidia_libs/module.build b/remote/modules/nvidia_libs/module.build
new file mode 100644
index 00000000..38f60d09
--- /dev/null
+++ b/remote/modules/nvidia_libs/module.build
@@ -0,0 +1,56 @@
+fetch_source() {
+ mkdir -p src
+ cd src || perror "Could not change into src directory."
+ download "$REQUIRED_URL"
+}
+
+build() {
+ local KERNELSRCDIR="$MODULE_DIR/../kernel/ksrc" # kernel sources
+ local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
+ local NVIDIAEXTRACTDIR="$MODULE_BUILD_DIR/NVIDIA"
+
+ pdebug "Unpacking NVidia-Installer ..."
+ [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
+ sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
+
+ pinfo "Ready to chroot - may take some time."
+ pdebug "--- chroot ---------------------------------------------------------------------"
+ pdebug "- -"
+ pdebug "- Notice: This may take a while! -"
+ pdebug "- -"
+ pdebug "- Please keep note the Nvidia installer _will_ complain about -"
+ pdebug "- several warnings and errors. It will do this in any case. -"
+ pdebug "- -"
+ pdebug "- This does _not_ mean the library module compilation was unsuccessful! -"
+ pdebug "- -"
+ pdebug "--------------------------------------------------------------------------------"
+
+ chroot_run "${MODULE_BUILD_DIR}" <<-EOF
+ /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --no-kernel-module
+ EOF
+ pinfo "chroot terminated, cleaning up"
+
+ # move whiteout list to its /opt/openslx/etc/nvidia.whiteout
+ if [ -e "${MODULE_BUILD_DIR}/overlay.whiteout.list" ]; then
+ mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/etc"
+ mv "${MODULE_BUILD_DIR}/overlay.whiteout.list" "${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
+ fi
+
+ #pdebug "Handling whiteouts ..."
+ #local WHITEOUT_LIST="${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
+ #rm -f -- "$WHOUTEOUT_LIST"
+ #mkdir -p "$(dirname "$WHITEOUT_LIST")" || perror "Could not create $(dirname "$WHITEOUT_LIST")"
+ #pdebug "Searching for overlayfs-whiteouts ..."
+ #for WHITEOUT in $(find "$MODULE_BUILD_DIR" -lname "(overlay-whiteout)"); do
+# pdebug "Whiteout found: $WHITEOUT"
+# echo "/./${WHITEOUT#$MODULE_BUILD_DIR}" >> "$WHITEOUT_LIST"
+# rm -f -- "$WHITEOUT" || perror "Could not delete whiteout $WHITEOUT!"
+# done
+
+ rm -rf "$MODULE_BUILD_DIR/NVIDIA"
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/nvidia_libs/module.conf b/remote/modules/nvidia_libs/module.conf
new file mode 100644
index 00000000..12748274
--- /dev/null
+++ b/remote/modules/nvidia_libs/module.conf
@@ -0,0 +1,17 @@
+REQUIRED_VERSION="331.38"
+REQUIRED_NVIDIA="NVIDIA-Linux-x86_64-$REQUIRED_VERSION.run"
+REQUIRED_URL="http://download.nvidia.com/XFree86/Linux-x86_64/$REQUIRED_VERSION/$REQUIRED_NVIDIA"
+
+REQUIRED_FILES="
+ /etc/OpenCL/vendors/nvidia.icd
+ /usr/share/nvidia/nvidia-application-profiles-331.38-rc
+ /usr/share/applications/nvidia-settings.desktop
+ /opt/openslx/etc/nvidia.whiteout
+"
+
+REQUIRED_DIRECTORIES="
+ /usr/bin
+ /usr/lib
+ /var/lib/nvidia
+"
+
diff --git a/remote/modules/nvidia_libs/module.conf.ubuntu b/remote/modules/nvidia_libs/module.conf.ubuntu
new file mode 100644
index 00000000..a3a80bee
--- /dev/null
+++ b/remote/modules/nvidia_libs/module.conf.ubuntu
@@ -0,0 +1,13 @@
+# libvdpau: While nvidia delivers a linvdpau within it's driver package, nvidia
+# itself recommends using a distribution package if available. So, here we go.
+
+REQUIRED_CONTENT_PACKAGES="
+ libvdpau1
+"
+
+REQUIRED_INSTALLED_PACKAGES="
+ libvdpau1
+"
+REQUIRED_SYSTEM_FILES+="
+ /sbin/ldconfig.real
+"
diff --git a/remote/modules/openbox/module.build b/remote/modules/openbox/module.build
new file mode 100644
index 00000000..0cd6aaad
--- /dev/null
+++ b/remote/modules/openbox/module.build
@@ -0,0 +1,36 @@
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ # FIXME: Hack: openSUSE's rpm -ql lilsts non-existant pango.modules, which makes
+ # tarcopy fail. We probably can't fix that, so remove it using grep....
+ tarcopy "$(cat "$COPYLIST" | grep -v 'pango\.modules$' | sort -u)" "${MODULE_BUILD_DIR}"
+
+ return 0
+}
+
+post_copy() {
+ [ ! -d "$TARGET_BUILD_DIR/etc/pango" ] && mkdir -p "$TARGET_BUILD_DIR/etc/pango"
+
+ # little Workaround, as under e.g. 64bit Suse the binary is called
+ # pango-querymodules-64, not pango-querymodules.
+ which pango-querymodules 2>/dev/null 1>&2
+ ERR=$?
+ if [[ "$ERR" -eq 0 ]]; then
+ PANGO_QUERYMODULES_ARCH=pango-querymodules
+ else
+ which pango-querymodules-64 2>/dev/null 1>&2
+ ERR=$?
+ if [[ "$ERR" -eq 0 ]]; then
+ PANGO_QUERYMODULES_ARCH=pango-querymodules-64
+ else
+ perror "Could not find either pango-querymodules or pango-querymodules-64!"
+ fi
+ fi
+ $PANGO_QUERYMODULES_ARCH > "$TARGET_BUILD_DIR/etc/pango/pango.modules"
+}
diff --git a/remote/modules/openbox/module.conf b/remote/modules/openbox/module.conf
new file mode 100644
index 00000000..8a816b97
--- /dev/null
+++ b/remote/modules/openbox/module.conf
@@ -0,0 +1,11 @@
+REQUIRED_BINARIES="
+ openbox
+ openbox-session
+"
+REQUIRED_FILES="
+ /usr/share/xsessions/openbox.desktop
+"
+REQUIRED_DIRECTORIES="
+ /etc
+ /usr/share/themes/Clearlooks
+"
diff --git a/remote/modules/openbox/module.conf.debian b/remote/modules/openbox/module.conf.debian
new file mode 100644
index 00000000..b10bd40d
--- /dev/null
+++ b/remote/modules/openbox/module.conf.debian
@@ -0,0 +1,15 @@
+REQUIRED_INSTALLED_PACKAGES="
+ openbox
+ libpango1.0-0
+ libpango1.0-dev
+ libdbus-1-dev
+"
+REQUIRED_CONTENT_PACKAGES="
+ openbox
+ libpango1.0-0
+ libpango1.0-dev
+ libdbus-1-dev
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib
+"
diff --git a/remote/modules/openbox/module.conf.opensuse b/remote/modules/openbox/module.conf.opensuse
new file mode 100644
index 00000000..c06a89b2
--- /dev/null
+++ b/remote/modules/openbox/module.conf.opensuse
@@ -0,0 +1,13 @@
+REQUIRED_INSTALLED_PACKAGES="
+ openbox
+ libpango-1_0-0
+ pango-tools
+"
+REQUIRED_CONTENT_PACKAGES="
+ openbox
+ libpango-1_0-0
+ pango-tools
+"
+REQUIRED_DIRECTORIES+="
+ /usr/$LIB64
+"
diff --git a/remote/modules/openbox/module.conf.ubuntu b/remote/modules/openbox/module.conf.ubuntu
new file mode 100644
index 00000000..b10bd40d
--- /dev/null
+++ b/remote/modules/openbox/module.conf.ubuntu
@@ -0,0 +1,15 @@
+REQUIRED_INSTALLED_PACKAGES="
+ openbox
+ libpango1.0-0
+ libpango1.0-dev
+ libdbus-1-dev
+"
+REQUIRED_CONTENT_PACKAGES="
+ openbox
+ libpango1.0-0
+ libpango1.0-dev
+ libdbus-1-dev
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib
+"
diff --git a/remote/modules/openbox/module.conf.zypper b/remote/modules/openbox/module.conf.zypper
new file mode 100644
index 00000000..1d0b68c5
--- /dev/null
+++ b/remote/modules/openbox/module.conf.zypper
@@ -0,0 +1,11 @@
+REQUIRED_INSTALLED_PACKAGES=" openbox
+ libpango-1_0-0"
+REQUIRED_CONTENT_PACKAGES=" openbox
+ libpango-1_0-0"
+REQUIRED_BINARIES=" openbox
+ openbox-session"
+REQUIRED_FILES=" /usr/share/xsessions/openbox.desktop"
+REQUIRED_DIRECTORIES=" /etc
+ /usr/$LIB64
+ /usr/share/themes/Clearlooks"
+
diff --git a/remote/modules/pam/module.build b/remote/modules/pam/module.build
new file mode 100644
index 00000000..15828fb8
--- /dev/null
+++ b/remote/modules/pam/module.build
@@ -0,0 +1,45 @@
+fetch_source() {
+ # get pam-script source
+ download_untar "$REQUIRED_PAM_SCRIPT_URL" "src/"
+ if [[ "$SYS_DISTRIBUTION" == "opensuse" && "$SYS_VERSION" == "13.1" ]]; then
+ pinfo "Downloading $REQUIRED_NSS_LDAPD_URL ..."
+ download_untar "$REQUIRED_NSS_LDAPD_URL" "src/"
+ fi
+}
+
+build() {
+ mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin"
+ gcc -o "$MODULE_BUILD_DIR/opt/openslx/bin/sslconnect" "$MODULE_DIR/sslconnect.c" -lssl -lcrypto -O3 || perror "Could not compile sslconnect.c"
+ local COPYLIST="$MODULE_BUILD_DIR/list_packet_files"
+ # TODO: Hack for SUSE: Ignore file (/var/lib/nfs/state) that does not exist :(
+ list_packet_files | grep -v '/var/lib/nfs/state' | sort -u > "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST")" "${MODULE_BUILD_DIR}"
+
+ # build pam-script separatly since we use a source tarball
+ # HACK: find pam_unix.so in MODULE_BUILD_DIR to see where to put pam_script at
+ cd "$MODULE_BUILD_DIR"
+ local PAM_UNIX_LOCATION=$(find . -name pam_unix.so)
+ cd "${MODULE_DIR}/src/pam-script-${REQUIRED_PAM_SCRIPT_VERSION}" || perror "Could not cd to ${MODULE_DIR}/src/pam-script-${REQUIRED_PAM_SCRIPT_VERSION}."
+ ./configure --prefix=/ --sysconfdir=/etc/pam-script --libdir="$(dirname ${PAM_UNIX_LOCATION:1})" || perror "pam-script: ./configure failed."
+ make DESTDIR="${MODULE_BUILD_DIR}" install || perror "pam-script: make install to ${MODULE_BUILD_DIR} failed."
+ # openSuse 13.1 has no package nss-pam-ldapd. So, we compile it.
+ if [[ "$SYS_DISTRIBUTION" == "opensuse" && "$SYS_VERSION" == "13.1" ]]; then
+ cd "${MODULE_DIR}/src/$REQUIRED_NSS_LDAPD_VERSION"
+ pinfo "compiling pam-nss-ldapd for openSuse 13.1 ..."
+ ./configure || perror "openSuse 13.1 - pam-nss-ldapd: ./configure failed."
+ make DESTDIR="${MODULE_BUILD_DIR}" install || perror "openSuse 13.1 - pam-nss-ldapd: make install to ${MODULE_BUILD_DIR} failed."
+ cd "$MODULE_BUILD_DIR"
+ local NSLCD_PATH=$(find . -executable -name "nslcd") # Not in path, so we 'find' below MODULE_BUILD_DIR
+ else
+ cd "$MODULE_BUILD_DIR"
+ local NSLCD_PATH=$(which nslcd)
+ fi
+ [ -z "$NSLCD_PATH" ] && perror "Could not 'which nslcd'"
+ # Build nslcd service file
+ mkdir -p "etc/systemd/system"
+ sed "s,%PATH%,$NSLCD_PATH,g" "$MODULE_DIR/templates/nslcd-systemd.service" > "etc/systemd/system/nslcd.service" || perror "Could not fill nslcd.service template"
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/pam/module.conf b/remote/modules/pam/module.conf
new file mode 100644
index 00000000..c0a21a79
--- /dev/null
+++ b/remote/modules/pam/module.conf
@@ -0,0 +1,26 @@
+REQUIRED_BINARIES="
+ ldapsearch
+ nslcd
+ rpc.gssd
+ rpc.idmapd
+ sslconnect
+"
+REQUIRED_LIBRARIES="
+ nsswitch
+ static
+ umich_ldap
+ libnfsidmap
+ pam_script
+"
+REQUIRED_DIRECTORIES="
+ /etc/security
+"
+REQUIRED_FILES="
+ /etc/systemd/system/nslcd.service
+"
+REQUIRED_SYSTEM_FILES="
+ /etc/login.defs
+ /etc/securetty
+"
+REQUIRED_PAM_SCRIPT_VERSION="1.1.6"
+REQUIRED_PAM_SCRIPT_URL="http://downloads.sourceforge.net/project/pam-script/pam-script-${REQUIRED_PAM_SCRIPT_VERSION}.tar.gz"
diff --git a/remote/modules/pam/module.conf.debian b/remote/modules/pam/module.conf.debian
new file mode 100644
index 00000000..d424f1f7
--- /dev/null
+++ b/remote/modules/pam/module.conf.debian
@@ -0,0 +1,51 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libpam-ldap
+ libnss-ldapd
+ nslcd
+ libpam-ck-connector
+ libpam-cap
+ krb5-user
+ krb5-config
+ libpam-krb5
+ libssl-dev
+ ldap-utils
+ libnfsidmap2
+ nfs-common
+ libpam0g-dev
+ ncpfs
+"
+REQUIRED_CONTENT_PACKAGES="
+ libpam0g
+ libpam-modules
+ libpam-ck-connector
+ libpam-cap
+ libldap-2.4-2
+ libpam-ldap
+ libnss-ldapd
+ nslcd
+ krb5-user
+ krb5-config
+ libpam-krb5
+ ldap-utils
+ libnfsidmap2
+ nfs-common
+ ncpfs
+"
+REQUIRED_BINARIES+="
+ nwmsg
+ ncpmount
+ ncpumount
+ mount.ncp
+ mount.ncpfs
+"
+REQUIRED_DIRECTORIES+="
+ /lib
+ /usr/lib
+"
+REQUIRED_SYSTEM_FILES+="
+ /etc/pam.conf
+ /etc/default/locale
+ /lib/security
+ /lib/${ARCH_TRIPLET}/security
+ /sbin/mkhomedir_helper
+"
diff --git a/remote/modules/pam/module.conf.opensuse b/remote/modules/pam/module.conf.opensuse
new file mode 100644
index 00000000..adef3174
--- /dev/null
+++ b/remote/modules/pam/module.conf.opensuse
@@ -0,0 +1,43 @@
+REQUIRED_INSTALLED_PACKAGES="
+ pam
+ pam_krb5
+ pam-devel
+ nss-pam-ldapd
+ pam-modules
+ libopenssl-devel
+ openldap2-client
+ nfsidmap
+ nfs-client
+ glibc
+ pam-devel
+"
+REQUIRED_CONTENT_PACKAGES="
+ pam
+ pam_krb5
+ pam-devel
+ pam-modules
+ nss-pam-ldapd
+ nss-mdns
+ openldap2-client
+ nfsidmap
+ nfs-client
+ glibc
+"
+REQUIRED_BINARIES+="
+ mkhomedir_helper
+"
+REQUIRED_LIBRARIES+="
+ libnss_compat
+ libnss_db
+ libnss_dns
+ libnss_files
+ libnss_nis
+"
+REQUIRED_DIRECTORIES+="
+ /$LIB64
+ /usr/$LIB64
+"
+REQUIRED_SYSTEM_FILES+="
+ /$LIB64/security
+"
+
diff --git a/remote/modules/pam/module.conf.opensuse.13.1 b/remote/modules/pam/module.conf.opensuse.13.1
new file mode 100644
index 00000000..9fe1de17
--- /dev/null
+++ b/remote/modules/pam/module.conf.opensuse.13.1
@@ -0,0 +1,47 @@
+REQUIRED_NSS_LDAPD_VERSION="nss-pam-ldapd-0.8.13"
+REQUIRED_NSS_LDAPD_URL="http://arthurdejong.org/nss-pam-ldapd/$REQUIRED_NSS_LDAPD_VERSION.tar.gz"
+
+REQUIRED_BINARIES+="
+ mkhomedir_helper
+"
+
+REQUIRED_INSTALLED_PACKAGES="
+ pam
+ pam_krb5
+ pam-devel
+ pam-modules
+ libopenssl-devel
+ openldap2-client
+ nfsidmap
+ nfs-client
+ glibc
+ pam-devel
+ openldap2-devel
+ krb5-devel
+"
+REQUIRED_CONTENT_PACKAGES="
+ pam
+ pam_krb5
+ pam-devel
+ pam-modules
+ nss-mdns
+ openldap2-client
+ nfsidmap
+ nfs-client
+ glibc
+"
+REQUIRED_LIBRARIES+="
+ libnss_compat
+ libnss_db
+ libnss_dns
+ libnss_files
+ libnss_nis
+"
+REQUIRED_DIRECTORIES+="
+ /$LIB64
+ /usr/$LIB64
+"
+REQUIRED_SYSTEM_FILES+="
+ /$LIB64/security
+"
+
diff --git a/remote/modules/pam/module.conf.ubuntu b/remote/modules/pam/module.conf.ubuntu
new file mode 100644
index 00000000..31023197
--- /dev/null
+++ b/remote/modules/pam/module.conf.ubuntu
@@ -0,0 +1,51 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libpam-ldap
+ libnss-ldapd
+ nslcd
+ krb5-user
+ krb5-config
+ libpam-krb5
+ libssl-dev
+ ldap-utils
+ libnfsidmap2
+ nfs-common
+ libpam0g-dev
+ ncpfs
+ cifs-utils
+"
+REQUIRED_CONTENT_PACKAGES="
+ libpam0g
+ libpam-modules
+ libpam-cap
+ libldap-2.4-2
+ libpam-ldap
+ libnss-ldapd
+ nslcd
+ krb5-user
+ krb5-config
+ libpam-krb5
+ ldap-utils
+ libnfsidmap2
+ nfs-common
+ ncpfs
+ cifs-utils
+"
+REQUIRED_BINARIES+="
+ nwmsg
+ ncpmount
+ ncpumount
+ mount.ncp
+ mount.ncpfs
+ mount.cifs
+"
+REQUIRED_DIRECTORIES+="
+ /lib
+ /usr/lib
+"
+REQUIRED_SYSTEM_FILES+="
+ /etc/pam.conf
+ /etc/default/locale
+ /lib/security
+ /lib/${ARCH_TRIPLET}/security
+ /sbin/mkhomedir_helper
+"
diff --git a/remote/modules/plymouth/module.build b/remote/modules/plymouth/module.build
new file mode 100644
index 00000000..67b7734e
--- /dev/null
+++ b/remote/modules/plymouth/module.build
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+fetch_source() {
+ download_untar "$REQUIRED_URL" "src/"
+}
+
+build() {
+ cd "src/$REQUIRED_VERSION"
+ pinfo "Running configure"
+ ./configure --enable-systemd-integration --disable-gtk --disable-static --prefix="$REQUIRED_PREFIX"|| perror "failed."
+ pinfo "Running make"
+ make || perror "failed"
+ pinfo "Running make install"
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "failed"
+ cd -
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/plymouth/module.conf b/remote/modules/plymouth/module.conf
new file mode 100644
index 00000000..d8827529
--- /dev/null
+++ b/remote/modules/plymouth/module.conf
@@ -0,0 +1,15 @@
+REQUIRED_VERSION="plymouth-0.8.6.1"
+REQUIRED_URL="http://www.freedesktop.org/software/plymouth/releases/${REQUIRED_VERSION}.tar.bz2"
+REQUIRED_PREFIX="/usr"
+REQUIRED_BINARIES="
+ plymouth
+ plymouthd
+"
+REQUIRED_DIRECTORIES="
+ $REQUIRED_PREFIX/bin
+ $REQUIRED_PREFIX/etc
+ $REQUIRED_PREFIX/lib
+ $REQUIRED_PREFIX/sbin
+ $REQUIRED_PREFIX/var/lib
+ $REQUIRED_PREFIX/var/spool
+"
diff --git a/remote/modules/plymouth/module.conf.debian b/remote/modules/plymouth/module.conf.debian
new file mode 100644
index 00000000..0c6e00a4
--- /dev/null
+++ b/remote/modules/plymouth/module.conf.debian
@@ -0,0 +1,7 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libpng-dev
+ libpango1.0-dev
+ libcairo-dev
+ libgtk2.0-dev
+ libdrm-dev
+"
diff --git a/remote/modules/plymouth/module.conf.opensuse b/remote/modules/plymouth/module.conf.opensuse
new file mode 100644
index 00000000..034af2ad
--- /dev/null
+++ b/remote/modules/plymouth/module.conf.opensuse
@@ -0,0 +1,7 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libpng12-devel
+ pango-devel
+ cairo-devel
+ gtk2-devel
+ libdrm-devel
+"
diff --git a/remote/modules/plymouth/module.conf.ubuntu b/remote/modules/plymouth/module.conf.ubuntu
new file mode 100644
index 00000000..0c6e00a4
--- /dev/null
+++ b/remote/modules/plymouth/module.conf.ubuntu
@@ -0,0 +1,7 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libpng-dev
+ libpango1.0-dev
+ libcairo-dev
+ libgtk2.0-dev
+ libdrm-dev
+"
diff --git a/remote/modules/polkit/module.build b/remote/modules/polkit/module.build
new file mode 100644
index 00000000..10203209
--- /dev/null
+++ b/remote/modules/polkit/module.build
@@ -0,0 +1,25 @@
+#tool/distro specific functions for fetching, building and installing dependencies
+
+
+fetch_source () {
+ pinfo "Extracting from running system..."
+}
+
+build () {
+ local COPYLIST="$MODULE_DIR/list_dpkg_output"
+ list_packet_files > "$COPYLIST"
+ [ -n "$REQUIRED_DIR_STRUCT" ] && find $REQUIRED_DIR_STRUCT -type d >> "$COPYLIST"
+ tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
+ local POLPATH=$(find "$MODULE_BUILD_DIR" -name polkitd -executable | head -n 1)
+ POLPATH="/${POLPATH#$MODULE_BUILD_DIR}"
+ mkdir -p "$MODULE_BUILD_DIR/etc/systemd/system" "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services" "$MODULE_BUILD_DIR/var/lib/polkit"
+ sed "s,%POLKITD%,${POLPATH},g" "templates/systemd.service" > "$MODULE_BUILD_DIR/etc/systemd/system/polkit.service" || perror "Could not generate polkit.service for systemd"
+ sed "s,%POLKITD%,${POLPATH},g" "templates/dbus.service" > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service" || perror "Could not generate polkit.service for dbus"
+}
+
+post_copy() {
+ #Add Polkit User/Group/Shadow to Stage3.2, required on opensuse
+ pinfo "Adding polkitd user to target system..."
+ add_user "polkitd"
+}
+
diff --git a/remote/modules/polkit/module.conf b/remote/modules/polkit/module.conf
new file mode 100644
index 00000000..97d4b892
--- /dev/null
+++ b/remote/modules/polkit/module.conf
@@ -0,0 +1,13 @@
+REQUIRED_DIRECTORIES="
+ /etc/pam.d
+ /etc/polkit-1
+ /usr/bin
+ /usr/share/polkit-1
+ /etc/dbus-1/system.d
+"
+REQUIRED_FILES="
+ /usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service
+ /etc/systemd/system/polkit.service
+"
+REQUIRED_LIBRARIES="libmozjs185"
+
diff --git a/remote/modules/polkit/module.conf.debian b/remote/modules/polkit/module.conf.debian
new file mode 100644
index 00000000..5684a504
--- /dev/null
+++ b/remote/modules/polkit/module.conf.debian
@@ -0,0 +1,19 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libmozjs185-1.0
+ policykit-1
+"
+REQUIRED_CONTENT_PACKAGES="
+ libmozjs185-1.0
+ policykit-1
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/policykit-1
+ /usr/lib/${ARCH_TRIPLET}/polkit-1
+ /var/lib/polkit-1
+"
+# Module specific: Root of dirstructs we need directly from system
+REQUIRED_DIR_STRUCT="
+ /var/lib/polkit-1
+ /etc/polkit-1
+"
+
diff --git a/remote/modules/polkit/module.conf.opensuse b/remote/modules/polkit/module.conf.opensuse
new file mode 100644
index 00000000..e7c1f369
--- /dev/null
+++ b/remote/modules/polkit/module.conf.opensuse
@@ -0,0 +1,12 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libmozjs185-1_0
+"
+REQUIRED_CONTENT_PACKAGES="
+ libmozjs185-1_0
+ polkit
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/polkit-1
+ /var/lib/polkit
+"
+
diff --git a/remote/modules/polkit/module.conf.ubuntu b/remote/modules/polkit/module.conf.ubuntu
new file mode 100644
index 00000000..eb2f88d1
--- /dev/null
+++ b/remote/modules/polkit/module.conf.ubuntu
@@ -0,0 +1,19 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libmozjs185-1.0
+"
+REQUIRED_CONTENT_PACKAGES="
+ libmozjs185-1.0
+ policykit-1
+ policykit-desktop-privileges
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/policykit-1
+ /usr${ARCH_LIB_DIR}/polkit-1
+ /var/lib/polkit-1
+"
+# Module specific: Root of dirstructs we need directly from system
+REQUIRED_DIR_STRUCT="
+ /var/lib/polkit-1
+ /etc/polkit-1
+"
+
diff --git a/remote/modules/printergui/module.build b/remote/modules/printergui/module.build
new file mode 100644
index 00000000..2ee49154
--- /dev/null
+++ b/remote/modules/printergui/module.build
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+fetch_source() {
+ git clone "${REQUIRED_GIT}" src
+ cd src
+ git checkout "$REQUIRED_COMMIT"
+ cd ..
+}
+
+build() {
+ local SRCDIR="${MODULE_DIR}/src/"
+ local DESTDIR="$MODULE_BUILD_DIR/opt/openslx/cups"
+
+ mkdir -p "$DESTDIR"
+ cd "$DESTDIR" || perror "Could not cd to $DESTDIR!"
+ pinfo "Running cmake"
+ cmake "$SRCDIR/" || perror "'cmake' failed (e.g. not installed)."
+ pinfo "Running make"
+ make || perror "'make' failed."
+ chmod 0700 "$DESTDIR/printpwgui" # So picky cupsd won't drop privileges to lp
+}
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/printergui/module.conf b/remote/modules/printergui/module.conf
new file mode 100644
index 00000000..17203d3e
--- /dev/null
+++ b/remote/modules/printergui/module.conf
@@ -0,0 +1,9 @@
+REQUIRED_GIT="git://git.openslx.org/openslx-ng/printergui.git"
+REQUIRED_COMMIT="HEAD"
+REQUIRED_BINARIES="
+ printergui
+ printpwgui
+"
+REQUIRED_SYSTEM_FILES="
+"
+
diff --git a/remote/modules/printergui/module.conf.opensuse b/remote/modules/printergui/module.conf.opensuse
new file mode 100644
index 00000000..2d4c7a95
--- /dev/null
+++ b/remote/modules/printergui/module.conf.opensuse
@@ -0,0 +1,7 @@
+REQUIRED_INSTALLED_PACKAGES="
+cups-devel
+libqt4-devel
+"
+REQUIRED_CONTENT_PACKAGES="
+cups-devel
+"
diff --git a/remote/modules/printergui/module.conf.ubuntu b/remote/modules/printergui/module.conf.ubuntu
new file mode 100644
index 00000000..2f679912
--- /dev/null
+++ b/remote/modules/printergui/module.conf.ubuntu
@@ -0,0 +1,7 @@
+REQUIRED_INSTALLED_PACKAGES="
+libcups2-dev
+libqt4-dev
+"
+REQUIRED_CONTENT_PACKAGES="
+libcups2-dev
+"
diff --git a/remote/modules/qemukvm/module.build b/remote/modules/qemukvm/module.build
new file mode 100644
index 00000000..6d8ad7be
--- /dev/null
+++ b/remote/modules/qemukvm/module.build
@@ -0,0 +1,16 @@
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+ list_packet_files >> "$COPYLIST"
+
+
+ tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/qemukvm/module.conf b/remote/modules/qemukvm/module.conf
new file mode 100644
index 00000000..32df73a5
--- /dev/null
+++ b/remote/modules/qemukvm/module.conf
@@ -0,0 +1,11 @@
+REQUIRED_DIRECTORIES="
+ /etc
+ /lib
+ /usr/bin
+ /usr/sbin
+ /usr/lib
+ /usr/share/lintian
+ /usr/share/qemu
+ /usr/share/seabios
+ /usr/share/vgabios
+"
diff --git a/remote/modules/qemukvm/module.conf.ubuntu b/remote/modules/qemukvm/module.conf.ubuntu
new file mode 100644
index 00000000..d0fdc5f3
--- /dev/null
+++ b/remote/modules/qemukvm/module.conf.ubuntu
@@ -0,0 +1,37 @@
+REQUIRED_INSTALLED_PACKAGES="
+ qemu
+ qemu-kvm
+"
+
+REQUIRED_CONTENT_PACKAGES="
+ qemu
+ qemu-kvm
+ ipxe-qemu
+ qemu-keymaps
+ qemu-system
+ qemu-system-arm
+ qemu-system-common
+ qemu-system-mips
+ qemu-system-misc
+ qemu-system-ppc
+ qemu-system-sparc
+ qemu-system-x86
+ qemu-user
+ qemu-utils
+ seabios
+ vgabios
+ cpu-checker
+ kvm-ipxe
+ libaio1
+ libboost-thread1.49.0
+ libfdt1
+ librados2
+ librbd1
+ libsdl1.2debian
+ libseccomp1
+ libspice-server1
+ libxen-4.2
+ libxenstore3.0
+ msr-tools
+ sharutils
+"
diff --git a/remote/modules/redsocks/module.build b/remote/modules/redsocks/module.build
new file mode 100644
index 00000000..f6a05350
--- /dev/null
+++ b/remote/modules/redsocks/module.build
@@ -0,0 +1,24 @@
+#tool/distro specific functions for fetching, building and installing dependencies
+
+
+fetch_source () {
+ mkdir -p src
+ cd src || perror "Could not cd to src"
+ if [ ! -d "redsocks" ]; then
+ git clone "$REQUIRED_GIT" "redsocks" || perror "Could not clone redoscks from github"
+ fi
+ cd redsocks || perror "Could not cd to src/redsocks"
+ git checkout "$REQUIRED_REVISION" || perror "Could not checkout revision $REQUIRED_REVISION"
+}
+
+build () {
+ cd "$MODULE_DIR/src/redsocks" || perror "src/redsocks not found"
+ make || perror "make failed."
+ mkdir -p "$MODULE_BUILD_DIR/sbin"
+ cp "redsocks" "$MODULE_BUILD_DIR/sbin/" || perror "Could not copy redsocks binary to build dir"
+}
+
+post_copy() {
+ add_user redsocks
+}
+
diff --git a/remote/modules/redsocks/module.conf b/remote/modules/redsocks/module.conf
new file mode 100644
index 00000000..62c15c70
--- /dev/null
+++ b/remote/modules/redsocks/module.conf
@@ -0,0 +1,6 @@
+REQUIRED_GIT="git://github.com/darkk/redsocks.git"
+REQUIRED_REVISION="2e3f648809e27cc19cb7a8702f19b553a7ef9a81"
+REQUIRED_BINARIES="
+ redsocks
+"
+
diff --git a/remote/modules/redsocks/module.conf.debian b/remote/modules/redsocks/module.conf.debian
new file mode 100644
index 00000000..da41b04e
--- /dev/null
+++ b/remote/modules/redsocks/module.conf.debian
@@ -0,0 +1,3 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libevent-dev
+"
diff --git a/remote/modules/redsocks/module.conf.opensuse b/remote/modules/redsocks/module.conf.opensuse
new file mode 100644
index 00000000..fcc0fb45
--- /dev/null
+++ b/remote/modules/redsocks/module.conf.opensuse
@@ -0,0 +1,3 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libevent-devel
+"
diff --git a/remote/modules/redsocks/module.conf.ubuntu b/remote/modules/redsocks/module.conf.ubuntu
new file mode 100644
index 00000000..da41b04e
--- /dev/null
+++ b/remote/modules/redsocks/module.conf.ubuntu
@@ -0,0 +1,3 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libevent-dev
+"
diff --git a/remote/modules/rsyslogd/module.build b/remote/modules/rsyslogd/module.build
new file mode 100644
index 00000000..c35d07b7
--- /dev/null
+++ b/remote/modules/rsyslogd/module.build
@@ -0,0 +1,34 @@
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+
+ return 0
+}
+
+post_copy() {
+
+
+ # pwd = module's build dir
+ mkdir -p "${TARGET_BUILD_DIR}"/var/spool/rsyslog
+
+ local RSL="$(find /usr/lib/ /lib/ -name rsyslog.service | head -1)"
+ [ -z "$RSL" -o ! -e "$RSL" ] && perror "rsyslog.service not found on vorlage"
+ [ ! -d "$TARGET_BUILD_DIR/etc/systemd/system" ] && mkdir -p "$TARGET_BUILD_DIR/etc/systemd/system"
+ cp -L "$RSL" "$TARGET_BUILD_DIR/etc/systemd/system/"
+ sed -i 's/\/bin\/systemctl/-\/usr\/bin\/systemctl/g' "${TARGET_BUILD_DIR}"/etc/systemd/system/rsyslog.service
+ sed -i 's/^Before=udev/#&/' "${TARGET_BUILD_DIR}"/etc/systemd/system/rsyslog.service
+
+ # activate the service
+ ln -sf rsyslog.service "${TARGET_BUILD_DIR}"/etc/systemd/system/syslog.service
+ [ ! -d "${TARGET_BUILD_DIR}"/etc/systemd/system/basic.target.wants ] && mkdir -p "${TARGET_BUILD_DIR}"/etc/systemd/system/basic.target.wants
+ ln -sf ../syslog.service "${TARGET_BUILD_DIR}"/etc/systemd/system/basic.target.wants/syslog.service
+ # TODO: more checks
+ sed -i.bak '/^After\=var-run.mount/d;/^Requires\=var-run.mount/d;/^Before\=syslog.target/d' "$TARGET_BUILD_DIR/etc/systemd/system/rsyslog.service"
+}
diff --git a/remote/modules/rsyslogd/module.conf b/remote/modules/rsyslogd/module.conf
new file mode 100644
index 00000000..ba36aadf
--- /dev/null
+++ b/remote/modules/rsyslogd/module.conf
@@ -0,0 +1,6 @@
+REQUIRED_BINARIES="
+ rsyslogd
+"
+REQUIRED_FILES="
+ /etc/rsyslog.conf
+"
diff --git a/remote/modules/rsyslogd/module.conf.debian b/remote/modules/rsyslogd/module.conf.debian
new file mode 100644
index 00000000..79aba761
--- /dev/null
+++ b/remote/modules/rsyslogd/module.conf.debian
@@ -0,0 +1,6 @@
+REQUIRED_CONTENT_PACKAGES="
+ rsyslog
+"
+REQUIRED_DIRECTORIES="
+ /usr/lib/rsyslog
+"
diff --git a/remote/modules/rsyslogd/module.conf.opensuse b/remote/modules/rsyslogd/module.conf.opensuse
new file mode 100644
index 00000000..51ce0e47
--- /dev/null
+++ b/remote/modules/rsyslogd/module.conf.opensuse
@@ -0,0 +1,9 @@
+REQUIRED_CONTENT_PACKAGES="
+ rsyslog
+"
+REQUIRED_BINARIES+="
+ rsyslog-service-prepare
+"
+REQUIRED_DIRECTORIES="
+ /usr/$LIB64/rsyslog
+"
diff --git a/remote/modules/rsyslogd/module.conf.ubuntu b/remote/modules/rsyslogd/module.conf.ubuntu
new file mode 100644
index 00000000..79aba761
--- /dev/null
+++ b/remote/modules/rsyslogd/module.conf.ubuntu
@@ -0,0 +1,6 @@
+REQUIRED_CONTENT_PACKAGES="
+ rsyslog
+"
+REQUIRED_DIRECTORIES="
+ /usr/lib/rsyslog
+"
diff --git a/remote/modules/samba/module.build b/remote/modules/samba/module.build
new file mode 100644
index 00000000..a0a60831
--- /dev/null
+++ b/remote/modules/samba/module.build
@@ -0,0 +1,26 @@
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ if [ "x$PACKET_MANAGER" == "xzypper" ]; then
+ if [ $(zypper lr | grep -ci filesystems) -eq 0 ]; then
+ zypper addrepo http://download.opensuse.org/repositories/filesystems/openSUSE_${SYS_VERSION} Filesystems
+ pinfo "Repository added: OpenSuse Build filesystems"
+ fi
+ # Ubuntu writes to /etc, Suse does not:
+ mkdir "$MODULE_BUILD_DIR"/etc/
+ cp /usr/share/doc/packages/smbnetfs/smbnetfs.conf "$MODULE_BUILD_DIR"/etc/
+ fi
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+ return 0
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/samba/module.conf b/remote/modules/samba/module.conf
new file mode 100644
index 00000000..00063187
--- /dev/null
+++ b/remote/modules/samba/module.conf
@@ -0,0 +1,24 @@
+REQUIRED_BINARIES="
+ smbd
+ nmbd
+ smbclient
+ winbindd
+ smbnetfs
+ fusermount
+ keyctl
+ request-key
+ key.dns_resolver
+"
+REQUIRED_FILES="
+ /etc/smbnetfs.conf
+ /etc/request-key.conf
+ /etc/request-key.d
+"
+# TODO dont copy all the binaries, strip the list down.
+REQUIRED_DIRECTORIES="
+ /usr/bin
+"
+# TODO check if the /var/lib/samba/*.tdg can be generated by mltk.
+REQUIRED_SYSTEM_FILES="
+ /var/lib/samba
+"
diff --git a/remote/modules/samba/module.conf.opensuse b/remote/modules/samba/module.conf.opensuse
new file mode 100644
index 00000000..fd06e50a
--- /dev/null
+++ b/remote/modules/samba/module.conf.opensuse
@@ -0,0 +1,24 @@
+REQUIRED_INSTALLED_PACKAGES="
+ samba
+ samba-client
+ samba-winbind
+ krb5-client
+ cifs-utils
+ smbnetfs
+ fuse
+ keyutils
+"
+REQUIRED_CONTENT_PACKAGES="
+ samba
+ samba-client
+ samba-winbind
+ krb5-client
+ cifs-utils
+ smbnetfs
+ fuse
+ keyutils
+"
+
+# This is just a list for grep excludes used in samba.build opensuse branch
+# Please use pipe symbol and backslash (\|) as separator as being used in grep
+REQUIRED_PACKET_FILES_BLACKLIST="/etc/samba/smbpasswd\|/ding/dong"
diff --git a/remote/modules/samba/module.conf.ubuntu b/remote/modules/samba/module.conf.ubuntu
new file mode 100644
index 00000000..20bb46ba
--- /dev/null
+++ b/remote/modules/samba/module.conf.ubuntu
@@ -0,0 +1,20 @@
+REQUIRED_INSTALLED_PACKAGES="
+ samba
+ smbclient
+ winbind
+ krb5-user
+ cifs-utils
+ smbnetfs
+ fuse
+ keyutils
+"
+REQUIRED_CONTENT_PACKAGES="
+ samba
+ smbclient
+ winbind
+ krb5-user
+ cifs-utils
+ smbnetfs
+ fuse
+ keyutils
+"
diff --git a/remote/modules/smartctl/module.build b/remote/modules/smartctl/module.build
new file mode 100644
index 00000000..435a7b10
--- /dev/null
+++ b/remote/modules/smartctl/module.build
@@ -0,0 +1,13 @@
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ list_packet_files > "$COPYLIST"
+ tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/smartctl/module.conf b/remote/modules/smartctl/module.conf
new file mode 100644
index 00000000..9ea1ed03
--- /dev/null
+++ b/remote/modules/smartctl/module.conf
@@ -0,0 +1,5 @@
+REQUIRED_BINARIES="
+ smartctl
+"
+REQUIRED_LIBRARIES=""
+REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/smartctl/module.conf.opensuse b/remote/modules/smartctl/module.conf.opensuse
new file mode 100644
index 00000000..d699f2f0
--- /dev/null
+++ b/remote/modules/smartctl/module.conf.opensuse
@@ -0,0 +1,6 @@
+REQUIRED_CONTENT_PACKAGES="
+ smartmontools
+"
+REQUIRED_INSTALLED_PACKAGES="
+ smartmontools
+"
diff --git a/remote/modules/smartctl/module.conf.ubuntu b/remote/modules/smartctl/module.conf.ubuntu
new file mode 100644
index 00000000..d699f2f0
--- /dev/null
+++ b/remote/modules/smartctl/module.conf.ubuntu
@@ -0,0 +1,6 @@
+REQUIRED_CONTENT_PACKAGES="
+ smartmontools
+"
+REQUIRED_INSTALLED_PACKAGES="
+ smartmontools
+"
diff --git a/remote/modules/smbclient/module.build b/remote/modules/smbclient/module.build
new file mode 100644
index 00000000..dc28dd26
--- /dev/null
+++ b/remote/modules/smbclient/module.build
@@ -0,0 +1,20 @@
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+
+ local BIN_LOCATION="$(which smbspool)"
+ if [ ! -z "${BIN_LOCATION}" -a -e "${BIN_LOCATION}" ]; then
+ ln -sf "${BIN_LOCATION}" "${MODULE_BUILD_DIR}/usr/lib/cups/backend/smb"
+ fi
+}
+
+post_copy() {
+ :
+}
diff --git a/remote/modules/smbclient/module.conf b/remote/modules/smbclient/module.conf
new file mode 100644
index 00000000..460c57b5
--- /dev/null
+++ b/remote/modules/smbclient/module.conf
@@ -0,0 +1,10 @@
+REQUIRED_BINARIES="
+ smbspool
+ smbcacls
+ rpcclient
+ smbcquotas
+ smbget
+ smbclient
+ smbtree
+ smbtar
+"
diff --git a/remote/modules/smbclient/module.conf.opensuse b/remote/modules/smbclient/module.conf.opensuse
new file mode 100644
index 00000000..f524d100
--- /dev/null
+++ b/remote/modules/smbclient/module.conf.opensuse
@@ -0,0 +1,9 @@
+REQUIRED_INSTALLED_PACKAGES="
+ samba-client
+"
+REQUIRED_CONTENT_PACKAGES="
+ samba-client
+"
+REQUIRED_FILES="
+ /usr/lib/cups/backend/smb
+"
diff --git a/remote/modules/smbclient/module.conf.ubuntu b/remote/modules/smbclient/module.conf.ubuntu
new file mode 100644
index 00000000..4b33f4bd
--- /dev/null
+++ b/remote/modules/smbclient/module.conf.ubuntu
@@ -0,0 +1,9 @@
+REQUIRED_INSTALLED_PACKAGES="
+ smbclient
+"
+REQUIRED_CONTENT_PACKAGES="
+ smbclient
+"
+REQUIRED_FILES="
+ /usr/lib/cups/backend/smb
+"
diff --git a/remote/modules/splash-openslx/module.build b/remote/modules/splash-openslx/module.build
new file mode 100644
index 00000000..ccb7c4e1
--- /dev/null
+++ b/remote/modules/splash-openslx/module.build
@@ -0,0 +1,13 @@
+
+fetch_source () {
+ :
+}
+
+build () {
+ :
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/splash-openslx/module.conf b/remote/modules/splash-openslx/module.conf
new file mode 100644
index 00000000..6778a258
--- /dev/null
+++ b/remote/modules/splash-openslx/module.conf
@@ -0,0 +1 @@
+# (void)
diff --git a/remote/modules/sshd/module.build b/remote/modules/sshd/module.build
new file mode 100644
index 00000000..ebf42c12
--- /dev/null
+++ b/remote/modules/sshd/module.build
@@ -0,0 +1,20 @@
+fetch_source() {
+ :
+}
+
+build() {
+
+ local BIN_LOCATION="$(which sshd)"
+ [ ! -z "${BIN_LOCATION}" ] && BIN_LOCATION=$(readlink -f "$BIN_LOCATION")
+ if [ ! -z "${BIN_LOCATION}" -a -e "${BIN_LOCATION}" ]; then
+ tarcopy "${BIN_LOCATION}" "${MODULE_BUILD_DIR}"
+ else
+ perror "'sshd' not found on the system! Please install it."
+ fi
+}
+
+post_copy() {
+ mkdir -p "${TARGET_BUILD_DIR}/var/lib/empty" # suse
+
+ chmod go-rwx "${TARGET_BUILD_DIR}/etc/ssh/"* # no space, " before *
+}
diff --git a/remote/modules/sshd/module.conf b/remote/modules/sshd/module.conf
new file mode 100644
index 00000000..25793c72
--- /dev/null
+++ b/remote/modules/sshd/module.conf
@@ -0,0 +1,3 @@
+REQUIRED_BINARIES="sshd"
+REQUIRED_LIBRARIES=""
+REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/swiss/module.build b/remote/modules/swiss/module.build
new file mode 100644
index 00000000..1f016f6b
--- /dev/null
+++ b/remote/modules/swiss/module.build
@@ -0,0 +1,55 @@
+fetch_source() {
+ :
+}
+
+build() {
+ CH_LOCALES="de_CH.UTF-8 fr_CH.UTF-8 it_CH.UTF-8"
+
+ # Debian-like
+ if [ -e "/etc/locale.gen" ] && ! grep -q -E '^\s*de_CH\.UTF-8' "/etc/locale.gen"; then
+ pinfo "Generating locales..."
+ echo 'de_CH.UTF-8 UTF-8' >> "/etc/locale.gen"
+ echo 'fr_CH.UTF-8 UTF-8' >> "/etc/locale.gen"
+ echo 'it_CH.UTF-8 UTF-8' >> "/etc/locale.gen"
+ locale-gen || perror "Could not generate locales (debian style)"
+ fi
+
+ # Ubuntu's version
+ if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/de_CH.utf8 ]; then
+ pinfo "Generating locales..."
+ grep -q -E -r '^\s*de_CH\.UTF-8' "/var/lib/locales/supported.d" || echo 'de_CH.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
+ locale-gen --no-archive --purge "de_CH.UTF-8" || perror "Could not generate locales (ubuntu style)"
+ fi
+ if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/fr_CH.utf8 ]; then
+ pinfo "Generating locales..."
+ grep -q -E -r '^\s*fr_CH\.UTF-8' "/var/lib/locales/supported.d" || echo 'fr_CH.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
+ locale-gen --no-archive "fr_CH.UTF-8" || perror "Could not generate locales (ubuntu style)"
+ fi
+ if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/it_CH.utf8 ]; then
+ pinfo "Generating locales..."
+ grep -q -E -r '^\s*it_CH\.UTF-8' "/var/lib/locales/supported.d" || echo 'it_CH.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
+ locale-gen --no-archive "it_CH.UTF-8" || perror "Could not generate locales (ubuntu style)"
+ fi
+
+
+ # Put everything we build or get from the system in build dir
+ local FILELIST="$MODULE_DIR/list_copy_build"
+ rm -f "$FILELIST"
+
+ # Copy required directories from source system to build dir
+ for FILE in ${REQUIRED_DIRECTORIES}; do
+ [ ! -d "${FILE}" ] && perror "Missing required directory $FILE"
+ echo ${FILE} >> "${FILELIST}"
+ done
+
+ # Done collecting file and directory names, copy everything
+ tarcopy "$(sort -u "$FILELIST")" "$MODULE_BUILD_DIR"
+
+}
+
+post_copy() {
+ for i in LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION; do
+ add_env $i de_CH.UTF-8 || perror "$i: add_env function failed."
+ done
+}
+
diff --git a/remote/modules/swiss/module.conf b/remote/modules/swiss/module.conf
new file mode 100644
index 00000000..e2f82123
--- /dev/null
+++ b/remote/modules/swiss/module.conf
@@ -0,0 +1,5 @@
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+REQUIRED_DIRECTORIES="
+ /usr/share/X11
+"
diff --git a/remote/modules/swiss/module.conf.debian b/remote/modules/swiss/module.conf.debian
new file mode 100644
index 00000000..a43faea2
--- /dev/null
+++ b/remote/modules/swiss/module.conf.debian
@@ -0,0 +1,10 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale
+"
+
diff --git a/remote/modules/swiss/module.conf.opensuse b/remote/modules/swiss/module.conf.opensuse
new file mode 100644
index 00000000..1311ac97
--- /dev/null
+++ b/remote/modules/swiss/module.conf.opensuse
@@ -0,0 +1,14 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+ glibc-locale
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale/de_DE.utf8
+ /usr/lib/locale/de_CH.utf8
+"
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+
diff --git a/remote/modules/swiss/module.conf.scientific b/remote/modules/swiss/module.conf.scientific
new file mode 100644
index 00000000..88ac0d27
--- /dev/null
+++ b/remote/modules/swiss/module.conf.scientific
@@ -0,0 +1,8 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+ glibc-common
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data"
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
diff --git a/remote/modules/swiss/module.conf.ubuntu b/remote/modules/swiss/module.conf.ubuntu
new file mode 100644
index 00000000..69694914
--- /dev/null
+++ b/remote/modules/swiss/module.conf.ubuntu
@@ -0,0 +1,17 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libx11-data
+ language-pack-de
+ language-pack-fr
+ language-pack-it
+ language-pack-en
+"
+REQUIRED_CONTENT_PACKAGES="
+ libx11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale/C.UTF-8
+ /usr/lib/locale/de_CH.utf8
+ /usr/lib/locale/fr_CH.utf8
+ /usr/lib/locale/it_CH.utf8
+"
+
diff --git a/remote/modules/systemd/module.build b/remote/modules/systemd/module.build
new file mode 100644
index 00000000..95576548
--- /dev/null
+++ b/remote/modules/systemd/module.build
@@ -0,0 +1,72 @@
+#tool/distro specific functions for fetching, building and installing dependencies
+
+fetch_source () {
+ # systemd
+ download_untar "$REQUIRED_URL" "src/"
+ # Patch PATH, HOME, USER environment
+ # TODO: Newer systemd versions support DefaultEnvironment=xxx in /etc/systemd/system.conf
+ # However, there were lots of changes after systemd 204, so we didn't update yet
+ # See http://cgit.freedesktop.org/systemd/systemd/tree/NEWS for changes.
+ patch -p0 src/systemd-*/src/core/main.c < systemd-openslx.patch || perror "Failed to apply openslx systemd patch."
+
+ # libkmod
+ download_untar "$REQUIRED_LIBKMOD_URL" "src/"
+}
+
+build () {
+ #build libkmod
+ pinfo "Building libkmod"
+ cd "${MODULE_DIR}/src/$REQUIRED_LIBKMOD_VERSION"
+ ./configure || perror "./configure kmod failed."
+ make || perror "kmod make failed."
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "kmod make install failed."
+ cd - &> /dev/null
+
+ #build systemd
+ pinfo "Building systemd"
+ cd "${MODULE_DIR}/src/$REQUIRED_VERSION"
+ pinfo "calling configure"
+
+ # Save potentially pre-used paths/flages
+ OLDLDFLAGS="$LDFLAGS"
+ OLDCPPFLAGS="$CPPFLAGS"
+ OLDPKG_CONFIG_PATH="$PKG_CONFIG_PATH"
+ OLDLD_LIBRARY_PATH="$LD_LIBRARY_PATH"
+
+ export LDFLAGS="$LDFLAGS -L${MODULE_BUILD_DIR}/usr/lib"
+ export CPPFLAGS="-I${MODULE_BUILD_DIR}/usr/include"
+ export PKG_CONFIG_PATH="${MODULE_BUILD_DIR}/usr/lib64/pkgconfig:${MODULE_BUILD_DIR}/usr/lib/pkgconfig"
+ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${MODULE_BUILD_DIR}/usr/lib:${MODULE_BUILD_DIR}/usr/lib64"
+
+ ./configure --disable-manpages --enable-split-usr --sysconfdir="/etc" --enable-gtk-doc-html=no --disable-nls \
+ --disable-microhttpd --disable-bootchart --disable-quotacheck --disable-hostnamed --disable-timedated \
+ --disable-localed --disable-coredump --disable-keymap --without-python --enable-blkid --enable-acl --enable-pam \
+ --enable-kmod \
+ || perror "configure failed."
+ pinfo "calling make"
+ make || perror "make failed."
+ pinfo "calling make install"
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "make install failed."
+ cd - &> /dev/null
+
+ # Restore used flags/paths:
+ export LDFLAGS="$OLDLDFLAGS"
+ export CPPFLAGS="$OLDCPPFLAGS"
+ export PKG_CONFIG_PATH="$OLDPKG_CONFIG_PATH"
+ export LD_LIBRARY_PATH="$OLDLD_LIBRARY_PATH"
+}
+
+post_copy() {
+ #old agetty version doesn't support --noclear option in getty service
+ if [ "x$(dpkg -s util-linux | grep Version: | cut -d' ' -f2)" == "x2.19.1-2ubuntu3" ]; then
+ sed -i "s/ExecStart=-\/sbin\/agetty --noclear %I 38400 linux/ExecStart=-\/sbin\/agetty %I 38400 linux/g" "${TARGET_BUILD_DIR}/usr/lib/systemd/system/getty@.service"
+ fi
+
+ # add pam_systemd.so to pam modules directory
+ if [ -e "${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so" ]; then
+ cp "${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so" "${TARGET_BUILD_DIR}/lib/security/"
+ else
+ pdebug "No such file: ${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so"
+ fi
+}
+
diff --git a/remote/modules/systemd/module.build.scientific b/remote/modules/systemd/module.build.scientific
new file mode 100644
index 00000000..12170d81
--- /dev/null
+++ b/remote/modules/systemd/module.build.scientific
@@ -0,0 +1,178 @@
+#tool/distro specific functions for fetching, building and installing dependencies
+
+# Please read systemd.build.scientific.README before using this script!
+
+fetch_source () {
+ download_untar "$REQUIRED_URL" "src/"
+ download_untar "$REQUIRED_LIBKMOD_URL" "src/"
+
+ # Another nice hack for Scientific Linux - experimental.
+ if [ "$SYS_DISTRIBUTION" == "scientific" ]; then
+ download_untar "$REQUIRED_UTILLINUX_URL" "src/" || perror "Cannot download util-linux!"
+ download_untar "$REQUIRED_M4_URL" "src/" || perror "Cannot download m4 version $REQUIRED_AUTOMAKE_VERSION!"
+ download_untar "$REQUIRED_AUTOCONF_URL" "src/" || perror "Cannot download autoconf version $REQUIRED_AUTOCONF_VERSION!"
+ download_untar "$REQUIRED_AUTOMAKE_URL" "src/" || perror "Cannot download automake version $REQUIRED_AUTOMAKE_VERSION!"
+ download_untar "$REQUIRED_DBUS_URL" "src/" || perror "Cannot download dbus version $REQUIRED_DBUS_VERSION!"
+ fi
+
+ # Patch PATH environment
+ sed -s -i -r 's#"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin(:/sbin:/bin)?"#& ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin"#g' src/systemd-*/src/core/main.c
+ sed -s -i -r 's#"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"#& ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin"#g' src/systemd-*/src/nspawn/nspawn.c
+}
+
+build () {
+
+ config_systemd () {
+ pinfo "Building systemd"
+ cd "${MODULE_DIR}/src/$REQUIRED_VERSION"
+ pinfo "calling configure"
+ ./configure --disable-manpages --enable-split-usr --sysconfdir="/etc" --enable-gtk-doc-html=no --disable-nls \
+ --disable-microhttpd --disable-bootchart --disable-quotacheck --disable-hostnamed --disable-timedated \
+ --disable-localed --disable-coredump --disable-keymap --without-python --enable-blkid --enable-acl --enable-pam \
+ || perror "configure systemd failed."
+ }
+
+ #build libkmod
+ pinfo "Building libkmod"
+ cd "${MODULE_DIR}/src/$REQUIRED_LIBKMOD_VERSION"
+ ./configure || perror "./configure kmod failed."
+ make || perror "kmod make failed."
+ make install || perror "kmod make install failed."
+ cd - &> /dev/null
+
+ # Scientific Linux specials
+ if [ "$SYS_DISTRIBUTION" == "scientific" ]; then
+ pinfo "Scientific Linux detected ..." # Freude, schöner Götterfunke!
+
+ # Some path mainpulations for following utilities, save some envvars for later restituting
+ OLDPATH=$PATH
+ export PATH="${MODULE_BUILD_DIR}/sbin:${MODULE_BUILD_DIR}/usr/local/bin/:$PATH" # for stuff installed at BUILD_DIR.
+ OLDPKG_CONFIG_PATH="$PKG_CONFIG_PATH"
+ OLDCPPFLAGS="$CPPFLAGS"
+ OLDLDFLAGS="$LDFLAGS"
+
+ # Utillinux stuff
+ pinfo "Building util-linux"
+ cd "${MODULE_DIR}/src/$REQUIRED_UTILLINUX_VERSION"
+ ./configure --disable-libuuid --disable-libmount --without-ncurses \
+ --disable-mount --disable-losetup --disable-cytune --disable-fsck --disable-partx --disable-uuidd \
+ --disable-mountpoint --disable-fallocate --disable-unshare --disable-nsenter --disable-setpriv \
+ --disable-eject --disable-agetty --disable-cramfs --disable-bfs --disable-fdformat --disable-hwclock \
+ --disable-wdctl --disable-switch_root --disable-pivot_root --disable-kill --disable-utmpdump --disable-raw \
+ --disable-rename --disable-login --disable-sulogin --disable-su --disable-runuser --disable-ul --disable-more \
+ --disable-pg --disable-schedutils --disable-wall --disable-bash-completion \
+ || perror "./configure util-linux failed."
+ make || perror "util-linux make failed."
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "util-linux make install failed."
+ cd - &> /dev/null
+
+ # Let's have some starting fun with m4, as we want systemd, which wants automake 1.13, which wants autoconf,
+ # which wants m4 ...
+ pinfo "Building m4 Version $REQUIRED_M4_VERSION."
+ cd "${MODULE_DIR}/src/$REQUIRED_M4_VERSION"
+ ./configure || perror "./configure m4 failed."
+ make || perror "m4 make failed."
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "m4 make install failed."
+ cd - &> /dev/null
+
+ # And have some more fun with autoconf, chain see above:
+ pinfo "Building autoconf Version $REQUIRED_AUTOCONF_VERSION."
+ cd "${MODULE_DIR}/src/$REQUIRED_AUTOCONF_VERSION"
+ ./configure || perror "./configure autoconf failed."
+ make || perror "autoconf make failed."
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "autoconf make install failed."
+ cd - &> /dev/null
+
+ # Now let's have some fun with automake, as config.log/automake will whine later about SL's automake 1.11:
+ # AUTOMAKE='${SHELL} [...] missing automake-1.13'. We use a newer automake than 1.11, if we are at it.
+ # Link fun, as configure searches in /usr/local/bin, ignores PATH above, also 'share':
+ ln -s "${MODULE_BUILD_DIR}/usr/local/bin/autom4te" /usr/local/bin/autom4te
+ ln -s "${MODULE_BUILD_DIR}/usr/local/share/autoconf" /usr/local/share/autoconf
+ # ... and manipulate perl library path, as else the libs will not be found by (system) perl:
+ OLDPERL5LIB="$PERL5LIB"
+ export PERL5LIB="${MODULE_BUILD_DIR}/usr/local/share/autoconf/:$PERL5LIB"
+
+ pinfo "Building automake Version $REQUIRED_AUTOMAKE_VERSION."
+ cd "${MODULE_DIR}/src/$REQUIRED_AUTOMAKE_VERSION"
+ ./configure || perror "./configure automake failed."
+ make || perror "automake make failed."
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "automake make install failed."
+ cd - &> /dev/null
+
+ # We are having so much compiling fun, why leave out dbus, then?
+ pinfo "Building dbus Version $REQUIRED_AUTOMAKE_VERSION."
+ cd "${MODULE_DIR}/src/$REQUIRED_DBUS_VERSION"
+ ./configure || perror "./configure dbus failed."
+ make || perror "dbus make failed."
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "automake make install failed."
+ cd - &> /dev/null
+
+ # patching configure for Scientific Linux - cave - ugly hack!
+ # pinfo "Scientific Linux detected; patching systemd/configure..."
+ # cd "${MODULE_DIR}/src/$REQUIRED_VERSION"
+ # sed 's/dbus-1 >= 1.3.2/dbus-1 >= 1.2.24/g' configure > configure.patched
+ # mv configure configure.orig
+ # mv configure.patched configure
+ # chmod +x configure
+
+ # For compiling systemd later
+ export PKG_CONFIG_PATH="${MODULE_BUILD_DIR}/usr/lib/pkgconfig/:${MODULE_BUILD_DIR}/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
+ export CPPFLAGS="$CPPFLAGS -I${MODULE_BUILD_DIR}/usr/include/ -I${MODULE_BUILD_DIR}/usr/local/include/ -I${MODULE_BUILD_DIR}/usr/local/include/dbus-1.0 -I${MODULE_BUILD_DIR}/usr/local/lib/dbus-1.0/include/"
+ export LDFLAGS="$LDFLAGS -L${MODULE_BUILD_DIR}/usr/lib/ -L${MODULE_BUILD_DIR}/usr/local/lib/ -ldl"
+ ln -s ${MODULE_BUILD_DIR}/usr/local/include/dbus-1.0 /usr/local/include/dbus-1.0
+ ln -s ${MODULE_BUILD_DIR}/usr/local/lib/dbus-1.0 /usr/local/lib/dbus-1.0
+ cd - &> /dev/null
+
+ config_systemd
+
+ # ... and tidy our manipulations with path, perllib, links etc.
+ export PERL5LIB="$OLDPERL5LIB"
+ export PATH="$OLDPATH"
+ unlink /usr/local/bin/autom4te
+ unlink /usr/local/share/autoconf
+ unlink /usr/local/lib/dbus-1.0
+ unlink /usr/local/include/dbus-1.0
+ else
+ config_systemd # Non-Scientific-Linux branch
+ fi
+
+ pinfo "calling make"
+ make || perror "systemd make failed."
+ pinfo "calling make install"
+ DESTDIR="${MODULE_BUILD_DIR}" make install || perror "systemd make install failed."
+ cd - &> /dev/null
+
+
+ # Delete unneeded services
+ pinfo "Deleting unneeded services"
+ local SERVICE=
+ local OTHER=
+ for SERVICE in $REQUIRED_DISABLED_SERVICES; do
+ find "${MODULE_BUILD_DIR}" -name "$SERVICE" -exec rm -r {} \;
+ for OTHER in $(grep -l -r "$SERVICE" "$MODULE_BUILD_DIR/usr/lib/systemd/system"); do
+ sed -i -r "s#\s*$SERVICE\s*# #g" "$OTHER"
+ done
+ done
+}
+
+post_copy() {
+ # dont clear systemd log at startup
+ sed -i "s/TTYVTDisallocate=yes/TTYVTDisallocate=no/g" "${TARGET_BUILD_DIR}/usr/lib/systemd/system/getty@.service"
+
+ #old agetty version doesn't support --noclear option in getty service
+ if [ "x$(dpkg -s util-linux | grep Version: | cut -d' ' -f2)" == "x2.19.1-2ubuntu3" ];
+ then
+ sed -i.bak "s/ExecStart=-\/sbin\/agetty --noclear %I 38400 linux/ExecStart=-\/sbin\/agetty %I 38400 linux/g" "${TARGET_BUILD_DIR}/usr/lib/systemd/system/getty@.service"
+ fi
+
+ # add nfs to modules-load list
+ echo "nfs" > "${TARGET_BUILD_DIR}/etc/modules-load.d/nfs.conf"
+
+ # add pam_systemd.so to pam modules directory
+ if [ -e "${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so" ]; then
+ cp "${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so" "${TARGET_BUILD_DIR}/lib/security/"
+ else
+ pdebug "No such file: ${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so"
+ fi
+}
+
diff --git a/remote/modules/systemd/module.build.scientific.README b/remote/modules/systemd/module.build.scientific.README
new file mode 100644
index 00000000..bad5a2d4
--- /dev/null
+++ b/remote/modules/systemd/module.build.scientific.README
@@ -0,0 +1,11 @@
+Building systemd under Scientific Linux 6.4
+
+Unfortunately this is not possible, as, at the end of a long chain
+of prerequisites (compiling autoconf, automake, m4, utillinux (blkid),
+dbus the last requisite cannot be met:
+udev-builtin-input_id.c:166: error: 'BTN_TRIGGER_HAPPY' undeclared.
+
+This 'BTN_TRIGGER_HAPPY' should be provided by kernel headers, but seems
+to be intruduced in the headers of kernel 2.6.34 (linux/input.h).
+
+Scientific Linux uses 2.6.32.
diff --git a/remote/modules/systemd/module.conf b/remote/modules/systemd/module.conf
new file mode 100644
index 00000000..4ca11365
--- /dev/null
+++ b/remote/modules/systemd/module.conf
@@ -0,0 +1,65 @@
+REQUIRED_VERSION="systemd-204"
+REQUIRED_URL="http://www.freedesktop.org/software/systemd/${REQUIRED_VERSION}.tar.xz"
+REQUIRED_LIBKMOD_VERSION="kmod-14"
+REQUIRED_LIBKMOD_URL="http://www.kernel.org/pub/linux/utils/kernel/kmod/${REQUIRED_LIBKMOD_VERSION}.tar.gz"
+REQUIRED_BINARIES="
+ journalctl
+ loginctl
+ systemctl
+ systemd-analyze
+ systemd-ask-password
+ systemd-cat
+ systemd-cgls
+ systemd-cgtop
+ systemd-delta
+ systemd-detect-virt
+ systemd-inhibit
+ systemd-machine-id-setup
+ systemd-notify
+ systemd-nspawn
+ systemd-stdio-bridge
+ systemd-tmpfiles
+ systemd-tty-ask-password-agent
+ udevadm
+ systemd
+ systemd-ac-power
+ systemd-binfmt
+ systemd-cgroups-agent
+ systemd-fsck
+ systemd-initctl
+ systemd-journald
+ systemd-logind
+ systemd-modules-load
+ systemd-multi-seat-x
+ systemd-random-seed
+ systemd-readahead
+ systemd-remount-fs
+ systemd-reply-password
+ systemd-shutdown
+ systemd-shutdownd
+ systemd-sleep
+ systemd-sysctl
+ systemd-timestamp
+ systemd-udevd
+ systemd-update-utmp
+ systemd-user-sessions
+ systemd-vconsole-setup
+ systemd-fstab-generator
+ systemd-getty-generator
+ systemd-rc-local-generator
+ systemd-system-update-generator
+ accelerometer
+ ata_id
+ cdrom_id
+ collect
+ mtd_probe
+ scsi_id
+ v4l_id"
+REQUIRED_DIRECTORIES="
+ /etc
+ /usr/include
+ /usr/share/dbus-1
+ /usr/share/polkit-1
+ /usr/lib/udev
+ /usr/lib/tmpfiles.d
+"
diff --git a/remote/modules/systemd/module.conf.debian b/remote/modules/systemd/module.conf.debian
new file mode 100644
index 00000000..2768b51c
--- /dev/null
+++ b/remote/modules/systemd/module.conf.debian
@@ -0,0 +1,13 @@
+REQUIRED_INSTALLED_PACKAGES="
+ intltool
+ gperf
+ dbus
+ pkg-config
+ libcap-dev
+ libudev-dev
+ libdbus-1-dev
+ xsltproc
+ libblkid-dev
+ libacl1-dev
+ libpam-dev
+"
diff --git a/remote/modules/systemd/module.conf.opensuse b/remote/modules/systemd/module.conf.opensuse
new file mode 100644
index 00000000..9326a7dc
--- /dev/null
+++ b/remote/modules/systemd/module.conf.opensuse
@@ -0,0 +1,11 @@
+REQUIRED_INSTALLED_PACKAGES="
+ intltool
+ gperf
+ pkg-config
+ libcap-devel
+ libudev-devel
+ dbus-1-devel
+ libxslt-tools
+ libblkid-devel
+ libacl-devel
+"
diff --git a/remote/modules/systemd/module.conf.scientific b/remote/modules/systemd/module.conf.scientific
new file mode 100644
index 00000000..54e62b96
--- /dev/null
+++ b/remote/modules/systemd/module.conf.scientific
@@ -0,0 +1,37 @@
+REQUIRED_VERSION="systemd-204"
+REQUIRED_URL="http://www.freedesktop.org/software/systemd/${REQUIRED_VERSION}.tar.xz"
+
+REQUIRED_LIBKMOD_VERSION="kmod-12"
+REQUIRED_LIBKMOD_URL="http://www.kernel.org/pub/linux/utils/kernel/kmod/${REQUIRED_LIBKMOD_VERSION}.tar.gz"
+
+REQUIRED_UTILLINUX_VERSION="util-linux-2.23"
+REQUIRED_UTILLINUX_URL="ftp://ftp.kernel.org/pub/linux/utils/util-linux/v${REQUIRED_UTILLINUX_VERSION}/util-linux-${REQUIRED_UTILLINUX_VERSION}.tar.xz"
+
+REQUIRED_M4_VERSION="m4-1.4.16"
+REQUIRED_M4_URL="ftp://ftp.gnu.org/gnu/m4/${REQUIRED_M4_VERSION}.tar.xz"
+
+REQUIRED_AUTOCONF_VERSION="autoconf-2.69"
+REQUIRED_AUTOCONF_URL="ftp://ftp.gnu.org/gnu/autoconf/${REQUIRED_AUTOCONF_VERSION}.tar.xz"
+
+REQUIRED_AUTOMAKE_VERSION="automake-1.13"
+REQUIRED_AUTOMAKE_URL="ftp://ftp.gnu.org/gnu/automake/${REQUIRED_AUTOMAKE_VERSION}.tar.xz"
+
+REQUIRED_DBUS_VERSION="dbus-1.6.8"
+REQUIRED_DBUS_URL="http://dbus.freedesktop.org/releases/dbus/${REQUIRED_DBUS_VERSION}.tar.gz"
+
+
+
+REQUIRED_INSTALLED_PACKAGES="
+ intltool
+ gperf
+ pkgconfig
+ libcap-devel
+ libudev-devel
+ dbus-devel
+ libxslt
+ libblkid-devel
+ libacl-devel
+ pam-devel
+ glib2-devel
+ expat-devel
+"
diff --git a/remote/modules/systemd/module.conf.ubuntu b/remote/modules/systemd/module.conf.ubuntu
new file mode 100644
index 00000000..2768b51c
--- /dev/null
+++ b/remote/modules/systemd/module.conf.ubuntu
@@ -0,0 +1,13 @@
+REQUIRED_INSTALLED_PACKAGES="
+ intltool
+ gperf
+ dbus
+ pkg-config
+ libcap-dev
+ libudev-dev
+ libdbus-1-dev
+ xsltproc
+ libblkid-dev
+ libacl1-dev
+ libpam-dev
+"
diff --git a/remote/modules/udisks/module.build b/remote/modules/udisks/module.build
new file mode 100644
index 00000000..ab9df016
--- /dev/null
+++ b/remote/modules/udisks/module.build
@@ -0,0 +1,53 @@
+
+fetch_source () {
+ :
+}
+
+build () {
+ COPYLIST="list_dpkg_output"
+ rm -f "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "$MODULE_BUILD_DIR"
+ if [ -d "$MODULE_BUILD_DIR/lib/udev" ]; then
+ cp -a "$MODULE_BUILD_DIR/lib/udev" "$MODULE_BUILD_DIR/usr/lib/" || perror "Could not move /lib/udev to /usr/lib/udev"
+ fi
+ mkdir -p "$MODULE_BUILD_DIR/etc/systemd/system/basic.target.wants" "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services"
+ local FOUND=no
+ local BINARY=$(find "$MODULE_BUILD_DIR" -name udisksd -executable | head -n 1)
+ [ -z "$BINARY" ] && BINARY=$(find "$MODULE_BUILD_DIR" -name udisks2d -executable | head -n 1)
+ [ -z "$BINARY" ] && BINARY=$(find "$MODULE_BUILD_DIR" -name udisksd2 -executable | head -n 1)
+ VER=none
+ if [ -n "$BINARY" ]; then
+ VER=udisks
+ [[ "$BINARY" == *udisks2* || -d "$MODULE_BUILD_DIR/usr/lib/udisks2" ]] && VER=udisks2
+ create_udisks_service "$VER" "$BINARY"
+ FOUND=yes
+ fi
+ if [ "$VER" != "udisks" ]; then
+ BINARY=$(find "$MODULE_BUILD_DIR" -name udisks-daemon -executable | head -n 1)
+ [ "$VER" == "none" -a -z "$BINARY" ] && perror "Could not determine the udisks(1/2) daemon binary from inspecting $MODULE_BUILD_DIR"
+ [ -n "$BINARY" ] && create_udisks_service "udisks" "$BINARY"
+ fi
+}
+
+post_copy () {
+ :
+}
+
+create_udisks_service () {
+ [ $# -ne 2 ] && perror "Call create_udisks_service with TWO params!"
+ local BINARY="/${2#$MODULE_BUILD_DIR}"
+ if [ "$1" == "udisks2" ]; then
+ # assume udisks v2
+ sed "s,%UDISKSD%,$BINARY,g" templates/udisks2.systemd.service > "$MODULE_BUILD_DIR/etc/systemd/system/udisks2.service" || perror "Error creating systemd service for udisks2 $BINARY"
+ sed "s,%UDISKSD%,$BINARY,g" templates/udisks2.dbus.service > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.UDisks2.service" || perror "Error creating dbus service for udisks2"
+ ln -s "../udisks2.service" "$MODULE_BUILD_DIR/etc/systemd/system/basic.target.wants/udisks2.service"
+ else
+ # assume udisks v1
+ sed "s,%UDISKSD%,$BINARY,g" templates/udisks.systemd.service > "$MODULE_BUILD_DIR/etc/systemd/system/udisks.service" || perror "Error creating systemd service for udisks $BINARY"
+ sed "s,%UDISKSD%,$BINARY,g" templates/udisks.dbus.service > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.UDisks.service" || perror "Error creating dbus service for udisks"
+ ln -s "../udisks.service" "$MODULE_BUILD_DIR/etc/systemd/system/basic.target.wants/udisks.service"
+ fi
+}
+
diff --git a/remote/modules/udisks/module.conf b/remote/modules/udisks/module.conf
new file mode 100644
index 00000000..8ef6f29c
--- /dev/null
+++ b/remote/modules/udisks/module.conf
@@ -0,0 +1,14 @@
+# This module is a little special, as it's supposed to be compatible
+# with udisks 1 and 2. suse 12.3 and ubuntu 13.04 use udisks2, ubuntu 12.04
+# uses udisks1. The build script looks a little hacky
+REQUIRED_DIRECTORIES="
+ /etc/dbus-1
+ /usr/lib/udev/rules.d
+ /usr/share/dbus-1
+ /usr/share/polkit-1
+ /etc/systemd/system
+"
+REQUIRED_BINARIES="
+ udisksd
+"
+
diff --git a/remote/modules/udisks/module.conf.debian b/remote/modules/udisks/module.conf.debian
new file mode 100644
index 00000000..c32a5f24
--- /dev/null
+++ b/remote/modules/udisks/module.conf.debian
@@ -0,0 +1,32 @@
+REQUIRED_INSTALLED_PACKAGES="
+ udisks
+"
+REQUIRED_CONTENT_PACKAGES="
+ udisks
+"
+# Override: Only udisks1 is available
+REQUIRED_BINARIES="
+ udisks-helper-linux-md-check
+ udisks-daemon
+ udisks-helper-change-luks-password
+ udisks-helper-create-partition-table
+ udisks-helper-mdadm-expand
+ udisks-helper-drive-benchmark
+ udisks-helper-drive-detach
+ udisks-helper-mkfs
+ udisks-helper-ata-smart-collect
+ udisks-helper-change-filesystem-label
+ udisks-helper-modify-partition
+ udisks-helper-delete-partition
+ udisks-helper-create-partition
+ udisks-helper-fstab-mounter
+ udisks-helper-linux-md-remove-component
+ udisks-helper-ata-smart-selftest
+ udisks-helper-drive-poll
+ udisks-dm-export
+ udisks-lvm-pv-export
+ udisks-part-id
+ udisks-probe-ata-smart
+ udisks-probe-sas-expander
+"
+
diff --git a/remote/modules/udisks/module.conf.opensuse b/remote/modules/udisks/module.conf.opensuse
new file mode 100644
index 00000000..abf12be7
--- /dev/null
+++ b/remote/modules/udisks/module.conf.opensuse
@@ -0,0 +1,7 @@
+REQUIRED_INSTALLED_PACKAGES="
+ udisks2
+"
+REQUIRED_CONTENT_PACKAGES="
+ udisks2
+"
+
diff --git a/remote/modules/udisks/module.conf.ubuntu b/remote/modules/udisks/module.conf.ubuntu
new file mode 100644
index 00000000..3d127619
--- /dev/null
+++ b/remote/modules/udisks/module.conf.ubuntu
@@ -0,0 +1,34 @@
+REQUIRED_INSTALLED_PACKAGES="
+ udisks
+ udisks2
+"
+REQUIRED_CONTENT_PACKAGES="
+ udisks
+ udisks2
+"
+# Add these for udisks 1 (required by kde)
+REQUIRED_BINARIES+="
+ udisks-helper-linux-md-check
+ udisks-daemon
+ udisks-helper-change-luks-password
+ udisks-helper-create-partition-table
+ udisks-helper-mdadm-expand
+ udisks-helper-drive-benchmark
+ udisks-helper-drive-detach
+ udisks-helper-mkfs
+ udisks-helper-ata-smart-collect
+ udisks-helper-change-filesystem-label
+ udisks-helper-modify-partition
+ udisks-helper-delete-partition
+ udisks-helper-create-partition
+ udisks-helper-fstab-mounter
+ udisks-helper-linux-md-remove-component
+ udisks-helper-ata-smart-selftest
+ udisks-helper-drive-poll
+ udisks-dm-export
+ udisks-lvm-pv-export
+ udisks-part-id
+ udisks-probe-ata-smart
+ udisks-probe-sas-expander
+"
+
diff --git a/remote/modules/udisks/module.conf.ubuntu.12 b/remote/modules/udisks/module.conf.ubuntu.12
new file mode 100644
index 00000000..b962ec65
--- /dev/null
+++ b/remote/modules/udisks/module.conf.ubuntu.12
@@ -0,0 +1,31 @@
+REQUIRED_INSTALLED_PACKAGES="
+ udisks
+"
+REQUIRED_CONTENT_PACKAGES="
+ udisks
+"
+REQUIRED_BINARIES="
+ udisks-helper-linux-md-check
+ udisks-daemon
+ udisks-helper-change-luks-password
+ udisks-helper-create-partition-table
+ udisks-helper-mdadm-expand
+ udisks-helper-drive-benchmark
+ udisks-helper-drive-detach
+ udisks-helper-mkfs
+ udisks-helper-ata-smart-collect
+ udisks-helper-change-filesystem-label
+ udisks-helper-modify-partition
+ udisks-helper-delete-partition
+ udisks-helper-create-partition
+ udisks-helper-fstab-mounter
+ udisks-helper-linux-md-remove-component
+ udisks-helper-ata-smart-selftest
+ udisks-helper-drive-poll
+ udisks-dm-export
+ udisks-lvm-pv-export
+ udisks-part-id
+ udisks-probe-ata-smart
+ udisks-probe-sas-expander
+"
+
diff --git a/remote/modules/vbox/module.build b/remote/modules/vbox/module.build
new file mode 100644
index 00000000..f095b4e2
--- /dev/null
+++ b/remote/modules/vbox/module.build
@@ -0,0 +1,127 @@
+#!/bin/bash
+
+patch_vbox_scripts() {
+ # patching some virtualbox utility scripts to include openslx-busybox paths. Strange sed-ing, as the added
+ # openslx paths need to be at the end of PATH to not impede with system binaries to not impede with system binaries
+ pinfo "Patching virtual box scripts to include openslx (busybox)-paths ..."
+ # vboxmanage is a link to VBox; will get unlinked. Original link will be vboxmanage.original
+ for i in virtualbox vboxmanage vboxheadless; do
+ pinfo "Patching virtual box script $i ..."
+ SCRIPTPATH=$(grep -m 1 PATH "${MODULE_BUILD_DIR}/usr/bin/$i"|sed 's/"//g') # assume first hit is real path
+ sed -i "-i.original" "/^PATH=/c ${SCRIPTPATH}:/opt/openslx/bin:/opt/openslx/usr/bin:/opt/openslx/sbin"\
+ "${MODULE_BUILD_DIR}/usr/bin/$i" # append openslx paths
+ done
+}
+
+extract_extpack() {
+ pinfo "Unpacking Extension Pack ..."
+ mkdir -p ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
+ cp ${MODULE_DIR}/src/vbox/extpack/[EP][xX][tE]* ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
+ if [ x${AMD64_X86} == "xamd64" ]; then
+ pinfo "Unpacking 64bit branch of Extension Pack ..."
+ cp -r ${MODULE_DIR}/src/vbox/extpack/linux.amd64 ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
+ else # then we assume 32bit x86...
+ pinfo "Unpacking32bit branch of Extension Pack ..."
+ cp -r ${MODULE_DIR}/src/vbox/extpack/linux.x86 ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
+ fi
+}
+
+build_modules() {
+ pinfo "Recompiling VirtualBox kernel modules ..."
+ # Set some variables to use/patch VBox scripts
+ local MODULE_SRC="${MODULE_BUILD_DIR}/usr/share/virtualbox/src/vboxhost"
+ local BUILDINTMP="$MODULE_SRC/build_in_tmp"
+ local BUILDSUBDIR="modules"
+
+ # Some Vars for VBs kernel module makefiles
+ MODULE_DIR_ALT="$MODULE_DIR" # save usual MODULE_DIR
+ export KERN_DIR="${MODULE_DIR}/../kernel/build/lib/modules/$(ls ${MODULE_DIR}/../kernel/build/lib/modules/)/build/"
+ # export MODULE_DIR="${MODULE_DIR}/../kernel/build/lib/modules/$(ls ${MODULE_DIR}/../kernel/build/lib/modules/)/kernel/misc"
+ export MODULE_DIR="${MODULE_DIR}/build/lib/modules/vbox"
+
+ pinfo "Recompiling VirtualBox kernel module vboxdrv ..."
+ if ! $BUILDINTMP \
+ --save-module-symvers /tmp/vboxdrv-Module.symvers \
+ --module-source "$MODULE_SRC/vboxdrv" \
+ --no-print-directory install;
+ then
+ perror "[vbox]: Error compiling VirtualBox kernel module vboxdrv"
+ fi
+ pinfo "Recompiling VirtualBox kernel module vboxnetflt ..."
+ if ! $BUILDINTMP \
+ --use-module-symvers /tmp/vboxdrv-Module.symvers \
+ --module-source "$MODULE_SRC/vboxnetflt" \
+ --no-print-directory install;
+ then
+ perror "[vbox]: Error compiling VirtualBox kernel module vboxnetflt"
+ fi
+ pinfo "Recompiling VirtualBox kernel module vboxnetadp ..."
+ if ! $BUILDINTMP \
+ --use-module-symvers /tmp/vboxdrv-Module.symvers \
+ --module-source "$MODULE_SRC/vboxnetadp" \
+ --no-print-directory install;
+ then
+ perror "[vbox]: Error compiling VirtualBox kernel module vboxnetadp"
+ fi
+ pinfo "Recompiling VirtualBox kernel module vboxpci ..."
+ if ! $BUILDINTMP \
+ --use-module-symvers /tmp/vboxdrv-Module.symvers \
+ --module-source "$MODULE_SRC/vboxpci" \
+ --no-print-directory install;
+ then
+ perror "[vbox]: Error compiling VirtualBox kernel module vboxpci"
+ fi
+ pinfo "Compiled successfully the VirtualBox kernel modules."
+ export MODULE_DIR="$MODULE_DIR_ALT" # re-set MODULE_DIR
+}
+
+
+fetch_source() {
+ mkdir -p "src/vbox"
+ cd src/vbox
+ # pinfo "Downloading $REQUIRED_VBOXBASEURL"
+ download "$REQUIRED_VBOXBASEURL"
+ # pinfo "Downloading $REQUIRED_VBOXEXTURL"
+ download_untar "$REQUIRED_VBOXEXTURL" "extpack" "vbox_extpack.tar.gz"
+ cd -
+}
+
+
+build() {
+ case "$PACKET_HANDLER" in
+ rpm)
+ pinfo "Unpacking rpm ..."
+ cd build || perror "Cannot cd to build directory!"
+ rpm2cpio ../src/vbox/$(basename "$REQUIRED_VBOXBASEURL")|cpio -idmv || perror "Could not unpack rpm-archive!"
+ # it seems that sometimes directories from rpm will be created with 700-permissions,
+ # if that directory is not explicitly mentioned to create. So eg. usr, etc will carry the
+ # permissions 700, which is no fun. So we search for these directories and correct them.
+ find . -type d -perm 700 -exec chmod 755 {} \;
+ ;;
+ dpkg )
+ pinfo "Unpacking deb ..."
+ cd build || perror "Cannot cd to build directory!"
+ dpkg -x ../src/vbox/$(basename "$REQUIRED_VBOXBASEURL") . || perror "Could not unpack deb-archive!"
+ # VirtualBox needs to be suid-root:
+ for i in VBoxHeadless VBoxNetAdpCtl VBoxNetDHCP VBoxSDL VBoxVolInfo VirtualBox; do
+ chmod u+s ${MODULE_BUILD_DIR}/usr/lib/virtualbox/$i || pwarning "(Debian/Ubuntu) Could not suid $i executable!"
+ done
+ ;;
+ *) perror "Unknown Distribution: $SYS_DISTRIBUTION - Please specify its packet manager in remote/setup_target" ;;
+ esac
+
+ build_modules
+ patch_vbox_scripts
+ extract_extpack
+
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+}
+
+post_copy() {
+ # clean a bit, as sometimes there are residual files in /tmp/vbox.*/
+ rm -rf /tmp/vbox.*/
+}
+
diff --git a/remote/modules/vbox/module.conf b/remote/modules/vbox/module.conf
new file mode 100644
index 00000000..29067791
--- /dev/null
+++ b/remote/modules/vbox/module.conf
@@ -0,0 +1,12 @@
+REQUIRED_VBOXEXTURL="http://download.virtualbox.org/virtualbox/4.2.16/Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack"
+
+# Just for local usage, development:
+# REQUIRED_VBOXEXTURL="http://132.230.8.69/Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack"
+
+REQUIRED_DIRECTORIES="
+ /etc
+ /lib
+ /usr
+"
+# REQUIRED_LDD_BLACKLIST: Keep in minde the leading '\|'!
+REQUIRED_LDD_BLACKLIST="\|VBoxVMM"
diff --git a/remote/modules/vbox/module.conf.opensuse b/remote/modules/vbox/module.conf.opensuse
new file mode 100644
index 00000000..e69de29b
diff --git a/remote/modules/vbox/module.conf.opensuse.12.3 b/remote/modules/vbox/module.conf.opensuse.12.3
new file mode 100644
index 00000000..ae42e8aa
--- /dev/null
+++ b/remote/modules/vbox/module.conf.opensuse.12.3
@@ -0,0 +1,19 @@
+REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/VirtualBox-4.2-4.2.16_86992_openSUSE114-1.${X86_64_I586}.rpm"
+
+# Just for local usage, development:
+# REQUIRED_VBOXBASEURL="http://132.230.8.69/VirtualBox-4.2-4.2.16_86992_openSUSE114-1.${X86_64_I586}.rpm"
+
+REQUIRED_CONTENT_PACKAGES="
+ libSDL-1_2-0
+ libpng12-0
+"
+
+REQUIRED_INSTALLED_PACKAGES="
+ libSDL-1_2-0
+ libpng12-0
+"
+
+REQUIRED_LIBRARIES="
+ libSDL-1.2
+ libpng12
+"
diff --git a/remote/modules/vbox/module.conf.ubuntu b/remote/modules/vbox/module.conf.ubuntu
new file mode 100644
index 00000000..4efbd571
--- /dev/null
+++ b/remote/modules/vbox/module.conf.ubuntu
@@ -0,0 +1,18 @@
+REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb"
+
+# Just for local usage, development:
+# REQUIRED_VBOXBASEURL="http://132.230.8.69/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb"
+
+REQUIRED_CONTENT_PACKAGES="
+ libsdl1.2debian
+ libpng12-0
+"
+
+REQUIRED_INSTALLED_PACKAGES="
+ libsdl1.2debian
+ libpng12-0
+"
+
+REQUIRED_LIBRARIES="
+ libpng12
+"
diff --git a/remote/modules/vbox/module.conf.ubuntu.13.04 b/remote/modules/vbox/module.conf.ubuntu.13.04
new file mode 100644
index 00000000..fbef8447
--- /dev/null
+++ b/remote/modules/vbox/module.conf.ubuntu.13.04
@@ -0,0 +1,18 @@
+REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/virtualbox-4.2_4.2.16-86992~Ubuntu~raring_${AMD64_I386}.deb"
+
+# Just for local usage, development:
+# REQUIRED_VBOXBASEURL="http://132.230.8.69/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb"
+
+REQUIRED_CONTENT_PACKAGES="
+ libsdl1.2debian
+ libpng12-0
+"
+
+REQUIRED_INSTALLED_PACKAGES="
+ libsdl1.2debian
+ libpng12-0
+"
+
+REQUIRED_LIBRARIES="
+ libpng12
+"
diff --git a/remote/modules/vmchooser/module.build b/remote/modules/vmchooser/module.build
new file mode 100644
index 00000000..eb0a2d48
--- /dev/null
+++ b/remote/modules/vmchooser/module.build
@@ -0,0 +1,36 @@
+
+fetch_source() {
+ git clone "${REQUIRED_GIT}" src
+}
+
+build() {
+ local SRCDIR="${MODULE_DIR}/src/"
+
+ [ ! -d "${MODULE_BUILD_DIR}/${REQUIRED_PREFIX}" ] && mkdir -p "${MODULE_BUILD_DIR}/${REQUIRED_PREFIX}"
+ cd "${MODULE_BUILD_DIR}/${REQUIRED_PREFIX}"
+
+ # patch globals.cpp and globals.h to use standardised paths /opt/openslx/...
+ if ! grep -q VMCHOOSER_SCRIPTS_PATH "$SRCDIR/src/globals.h"; then
+ sed -i 's/^#define VMCHOOSER_BIN_PATH.*/#define VMCHOOSER_BIN_PATH "\/opt\/openslx\/bin"/g' "${SRCDIR}"/src/globals.h
+ sed -i 's/^#define VMCHOOSER_ETC_BASE_PATH.*/#define VMCHOOSER_ETC_BASE_PATH "\/opt\/openslx\/vmchooser\/config"/g' "${SRCDIR}"/src/globals.h
+ sed -i 's/^#define VMCHOOSER_BIN_PATH.*/#define VMCHOOSER_BIN_PATH "\/opt\/openslx\/bin"\n#define VMCHOOSER_SCRIPTS_PATH "\/opt\/openslx\/scripts"/g' "${SRCDIR}"/src/globals.h
+ sed -i 's/^#define VMCHOOSER_THEME_BASE.*/#define VMCHOOSER_THEME_BASE "\/opt\/openslx\/vmchooser\/themes"/g' "${SRCDIR}"/src/globals.h
+
+ sed -i 's/^QString binPath(VMCHOOSER_BIN_PATH);/QString binPath(VMCHOOSER_BIN_PATH);\nQString scriptsPath(VMCHOOSER_SCRIPTS_PATH);/g' "${SRCDIR}"/src/globals.cpp
+ sed -i 's/^QString runVmScript(binPath + "\/run-virt.sh");/QString runVmScript(scriptsPath + "\/vmchooser-run_virt");/g' "${SRCDIR}"/src/globals.cpp
+ sed -i 's/^QString filterScript(binPath + "\/xmlfilter.sh");/QString filterScript(scriptsPath + "\/vmchooser-xml_filter");/g' "${SRCDIR}"/src/globals.cpp
+ sed -i 's/^#define VMCHOOSER_VMPATH.*/#define VMCHOOSER_VMPATH "\/mnt\/vmstore"/g' "${SRCDIR}"/src/globals.h
+ fi
+
+ pinfo "Running cmake"
+ ln -sf qt4.conf /usr/share/qtchooser/default.conf
+ cmake "$SRCDIR" || perror "'cmake $SRCDIR' failed."
+ make || perror "'make' failed."
+
+ cd - &> /dev/null
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/vmchooser/module.conf b/remote/modules/vmchooser/module.conf
new file mode 100644
index 00000000..686eb8bf
--- /dev/null
+++ b/remote/modules/vmchooser/module.conf
@@ -0,0 +1,3 @@
+REQUIRED_GIT="git://git.openslx.org/openslx/tools/vmchooser.git"
+REQUIRED_PREFIX="/opt/openslx/bin"
+REQUIRED_BINARIES="vmchooser"
diff --git a/remote/modules/vmchooser/module.conf.debian b/remote/modules/vmchooser/module.conf.debian
new file mode 100644
index 00000000..2953ac63
--- /dev/null
+++ b/remote/modules/vmchooser/module.conf.debian
@@ -0,0 +1,4 @@
+REQUIRED_INSTALLED_PACKAGES="
+ cmake
+ libqt4-dev
+"
diff --git a/remote/modules/vmchooser/module.conf.opensuse b/remote/modules/vmchooser/module.conf.opensuse
new file mode 100644
index 00000000..75cb7dd6
--- /dev/null
+++ b/remote/modules/vmchooser/module.conf.opensuse
@@ -0,0 +1,4 @@
+REQUIRED_INSTALLED_PACKAGES="
+ cmake
+ libqt4-devel
+"
diff --git a/remote/modules/vmchooser/module.conf.ubuntu b/remote/modules/vmchooser/module.conf.ubuntu
new file mode 100644
index 00000000..2953ac63
--- /dev/null
+++ b/remote/modules/vmchooser/module.conf.ubuntu
@@ -0,0 +1,4 @@
+REQUIRED_INSTALLED_PACKAGES="
+ cmake
+ libqt4-dev
+"
diff --git a/remote/modules/vmware/module.build b/remote/modules/vmware/module.build
new file mode 100644
index 00000000..98ee2b8d
--- /dev/null
+++ b/remote/modules/vmware/module.build
@@ -0,0 +1,65 @@
+fetch_source() {
+ [ -e "${MODULE_DIR}/src" -a -d "${MODULE_DIR}/src" ] && \
+ { rm -r "${MODULE_DIR}/src" || perror "Could not delete old src dir."; }
+ mkdir -p "${MODULE_DIR}/src" || perror "Could not mkdir src"
+ cd "${MODULE_DIR}/src" || perror "cd fail."
+
+ # Get directory listing
+ wget -O "index.html" "$REQUIRED_DOWNLOAD_BASE" || perror "Could not download vmware dir index"
+
+ VMWARE_BUNDLE_FILE=$(grep -E -o -i "href=\"VMware-$REQUIRED_TYPE-[^\"]+[\._\-]$ARCHREGEX[\._\-][^\"]+\"" "index.html" | head -n 1 | awk -F '"' '{printf $2}')
+ [ -z "$VMWARE_BUNDLE_FILE" ] && perror "Could not determine vmware $REQUIRED_TYPE bundle file for current arch from $MODULE_DIR/src/index.html"
+ # Download file
+ wget -O "$VMWARE_BUNDLE_FILE" "$REQUIRED_DOWNLOAD_BASE/$VMWARE_BUNDLE_FILE" || perror "Could not download $VMWARE_BUNDLE_FILE from $REQUIRED_DOWNLOAD_BASE"
+ if [[ "$VMWARE_BUNDLE_FILE" == *.tar ]]; then
+ tar -x "${VMWARE_BUNDLE_FILE%.tar}" -f "$VMWARE_BUNDLE_FILE" || perror "Could not untar downloaded $VMWARE_BUNDLE_FILE"
+ unlink "$VMWARE_BUNDLE_FILE"
+ VMWARE_BUNDLE_FILE="${VMWARE_BUNDLE_FILE%.tar}"
+ fi
+
+ cd - >/dev/null
+}
+
+build() {
+ local DELETE_FILES
+ DELETE_FILES=$(for LINE in $REQUIRED_VMWARE_DELETIONS;do echo rm -rf $LINE; done)
+
+ # prepare the build directory with the files needed during the chroot
+ cp "${MODULE_DIR}/src/$VMWARE_BUNDLE_FILE" "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
+ cp -r "${MODULE_DIR}/patches" "${MODULE_BUILD_DIR}"
+
+ # sanity check to see if KERNEL_HEADERS_PATH is set and exists
+ [ -z "${KERNEL_HEADERS_PATH}" -o ! -e "${KERNEL_HEADERS_PATH}" ] && perror "KERNEL_HEADERS_PATH ('"${KERNEL_HEADERS_PATH}"') not found. Was the kernel module built?"
+
+ pinfo "Installing vmware per chroot..."
+ chroot_run "${MODULE_BUILD_DIR}" <<-EOF
+ # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
+ $DELETE_FILES
+ yes | sh /"${VMWARE_BUNDLE_FILE}" --eulas-agreed --console --required
+ vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmnet
+ vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmmon
+ # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
+ EOF
+
+ # cleanup unneeded files
+ rm -rf -- "${MODULE_BUILD_DIR}/etc/vmware-installer"
+ rm -rf -- "${MODULE_BUILD_DIR}/usr/lib/vmware-installer"
+ rm -rf -- "${MODULE_BUILD_DIR}/usr/lib/vmware-ovftool"
+ unlink "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
+
+}
+
+post_copy() {
+ # FIXME: gconftool is copied without dependencies
+ tarcopy "$(find /usr/lib/ /usr/lib64 -name gconv -type d)" "$TARGET_BUILD_DIR"
+
+ # Update Icon cache for vmplayer
+ gtk-update-icon-cache-3.0 "${TARGET_BUILD_DIR}/usr/share/icons/hicolor/" || pwarning "update-icon-cache-3.0 failed."
+
+ # fix vmware-usbarbitrator bug
+ date +'%Y.%m.%d' >"${TARGET_BUILD_DIR}/etc/arch-release"
+
+ mkdir -p "$TARGET_BUILD_DIR/lib/modules/vmware/"
+ cp "${MODULE_BUILD_DIR}/lib/modules/$SYS_UTS_RELEASE/vmplayer/"* "$TARGET_BUILD_DIR/lib/modules/vmware/" || perror "Could not cp vmware modules to target!"
+}
+
diff --git a/remote/modules/vmware/module.conf b/remote/modules/vmware/module.conf
new file mode 100644
index 00000000..017d1d5b
--- /dev/null
+++ b/remote/modules/vmware/module.conf
@@ -0,0 +1,24 @@
+REQUIRED_DOWNLOAD_BASE="http://softwareupdate.vmware.com/cds/vmw-desktop/ws/10.0.1/1379776/linux/core/"
+REQUIRED_TYPE="workstation"
+REQUIRED_MODULES="kernel"
+REQUIRED_DIRECTORIES="
+ /etc/vmware
+ /usr/sbin
+ /usr/lib/vmware/bin
+ /usr/lib/vmware/hostd
+ /usr/lib/vmware/icu
+ /usr/lib/vmware/lib
+ /usr/lib/vmware/libconf
+ /usr/lib/vmware/licenses
+ /usr/lib/vmware/resources
+ /usr/lib/vmware/scripts
+ /usr/lib/vmware/share
+ /usr/lib/vmware/xkeymap
+"
+REQUIRED_FILES="
+ /usr/lib/vmware/config
+ /usr/bin/vmware-usbarbitrator
+"
+REQUIRED_BINARIES="
+ vmnet-netifup
+"
diff --git a/remote/modules/vmware/module.conf.ubuntu b/remote/modules/vmware/module.conf.ubuntu
new file mode 100644
index 00000000..c75ee906
--- /dev/null
+++ b/remote/modules/vmware/module.conf.ubuntu
@@ -0,0 +1,136 @@
+REQUIRED_VMWARE_DELETIONS="
+ /var/lib/vmware
+ /etc/vmware-vix
+ /etc/rc0.d/K08vmware
+ /etc/rc0.d/K06vmware-workstation-server
+ /etc/rc0.d/K06vmamqpd
+ /etc/pam.d/vmware-authd
+ /etc/rc3.d/S19vmware
+ /etc/rc3.d/S55vmware-workstation-server
+ /etc/rc3.d/S25vmamqpd
+ /etc/rc3.d/K08vmware-USBArbitrator
+ /etc/rc3.d/S50vmware-USBArbitrator
+ /etc/rc5.d/K08vmware-USBArbitrator
+ /etc/rc5.d/S50vmware-USBArbitrator
+ /etc/rc2.d/S19vmware
+ /etc/rc2.d/S55vmware-workstation-server
+ /etc/rc2.d/S25vmamqpd
+ /etc/rc2.d/K08vmware-USBArbitrator
+ /etc/rc2.d/S50vmware-USBArbitrator
+ /etc/xdg/menus/applications-merged
+ /etc/rc6.d/K08vmware
+ /etc/rc6.d/K06vmware-workstation-server
+ /etc/rc6.d/K06vmamqpd
+ /etc/rc4.d/S19vmware
+ /etc/rc4.d/S55vmware-workstation-server
+ /etc/rc4.d/S25vmamqpd
+ /etc/init.d/vmamqpd
+ /etc/init.d/vmware-USBArbitrator
+ /etc/init.d/vmware-workstation-server
+ /etc/init.d/vmware
+ /etc/thnuclnt
+ /etc/vmware-installer
+ /etc/cups/thnuclnt.convs
+ /etc/cups/thnuclnt.types
+ /etc/vmware/netmap.conf
+ /etc/vmware/icu
+ /etc/vmware/hostd
+ /etc/vmware/installer.sh
+ /etc/vmware/bootstrap
+ /etc/vmware/ssl
+ /etc/vmware/config
+ /etc/vmware/locations
+ /etc/modprobe.d/vmware-fuse.conf
+ /lib/modules/3.11.0-13-generic/misc/vmnet.ko
+ /lib/modules/3.11.0-13-generic/misc/vmmon.ko
+ /usr/share/mime/packages/vmware-player.xml
+ /usr/share/applications/vmware-workstation.desktop
+ /usr/share/applications/vmware-player.desktop
+ /usr/share/applications/vmware-netcfg.desktop
+ /usr/share/desktop-directories/vmware-ace-vms.directory
+ /usr/share/man/man1/vmware.1.gz
+ /usr/share/doc/vmware-vix
+ /usr/share/doc/vmware-workstation
+ /usr/share/doc/vmware-player
+ /usr/share/icons/hicolor/32x32/mimetypes/application-certificate.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-easter-egg.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-team.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm-legacy.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm-clone.png
+ /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm.png
+ /usr/share/icons/hicolor/32x32/apps/vmware-player.png
+ /usr/share/icons/hicolor/32x32/apps/vmware-workstation.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vmfoundry.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vmdisk.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-easter-egg.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-team.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm-legacy.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm-clone.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-snapshot.png
+ /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm.png
+ /usr/share/icons/hicolor/48x48/apps/vmware-player.png
+ /usr/share/icons/hicolor/48x48/apps/vmware-workstation.png
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-easter-egg.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-team.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm-clone.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-snapshot.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm-legacy.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vmfoundry.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-certificate.svg
+ /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm.svg
+ /usr/share/icons/hicolor/scalable/apps/vmware-workstation.svg
+ /usr/share/icons/hicolor/16x16/mimetypes/application-certificate.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-easter-egg.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-team.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm-legacy.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm-clone.png
+ /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm.png
+ /usr/share/icons/hicolor/16x16/apps/vmware-player.png
+ /usr/share/icons/hicolor/16x16/apps/vmware-netcfg.png
+ /usr/share/icons/hicolor/16x16/apps/vmware-workstation.png
+ /usr/share/icons/hicolor/24x24/mimetypes
+ /usr/share/icons/hicolor/24x24/apps/vmware-player.png
+ /usr/share/icons/hicolor/24x24/apps/vmware-netcfg.png
+ /usr/share/icons/hicolor/24x24/apps/vmware-workstation.png
+ /usr/bin/vmnet-dhcpd
+ /usr/bin/vmware-unity-helper
+ /usr/bin/ovftool
+ /usr/bin/vmrun
+ /usr/bin/vmware-vim-cmd
+ /usr/bin/vmware-wssc-adminTool
+ /usr/bin/vmnet-bridge
+ /usr/bin/vmplayer
+ /usr/bin/vmnet-sniffer
+ /usr/bin/vmss2core
+ /usr/bin/vmware-usbarbitrator
+ /usr/bin/vmware-netcfg
+ /usr/bin/vmware-modconfig
+ /usr/bin/vmware-tray
+ /usr/bin/vmware-mount
+ /usr/bin/vm-support
+ /usr/bin/vmware-vdiskmanager
+ /usr/bin/vmware-license-enter.sh
+ /usr/bin/vmware-license-check.sh
+ /usr/bin/vmnet-natd
+ /usr/bin/vmware-uninstall
+ /usr/bin/vmware-vprobe
+ /usr/bin/vmware-fuseUI
+ /usr/bin/vmware-installer
+ /usr/bin/vmware-ping
+ /usr/bin/vmware-gksu
+ /usr/bin/vmnet-netifup
+ /usr/bin/vmware-networks
+ /usr/bin/vmware
+ /usr/bin/vmware-hostd
+ /usr/include/vmware-vix
+ /usr/lib/vmware-vix
+ /usr/lib/vmware-ovftool
+ /usr/lib/vmware-installer
+ /usr/lib/libvixAllProducts.so
+ /usr/lib/cups/filter/thnucups
+ /usr/lib/diskLibWrapper.so
+ /usr/lib/vmware
+ /usr/local/share/applications
+ /usr/sbin/vmware-authdlauncher
+ /usr/sbin/vmware-authd
+"
diff --git a/remote/modules/xorg/module.build b/remote/modules/xorg/module.build
new file mode 100644
index 00000000..16e0bb5b
--- /dev/null
+++ b/remote/modules/xorg/module.build
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+fetch_source() {
+ :
+}
+
+build() {
+ COPYLIST="list_dpkg_output"
+ [ -e "$COPYLIST" ] && rm "$COPYLIST"
+
+ list_packet_files >> "$COPYLIST"
+ tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
+
+ # copy udev rules to correct location
+ [ -d "${MODULE_BUILD_DIR}/lib/udev" ] && mv "${MODULE_BUILD_DIR}/lib/udev" "${MODULE_BUILD_DIR}/usr/lib/"
+}
+
+post_copy() {
+ mkdir -p "${TARGET_BUILD_DIR}/etc/X11"
+ [ ! -e ${TARGET_BUILD_DIR}/etc/X11/X ] && ln -s /usr/bin/Xorg ${TARGET_BUILD_DIR}/etc/X11/X
+}
+
diff --git a/remote/modules/xorg/module.conf b/remote/modules/xorg/module.conf
new file mode 100644
index 00000000..b99f0e2a
--- /dev/null
+++ b/remote/modules/xorg/module.conf
@@ -0,0 +1,19 @@
+REQUIRED_BINARIES="
+ X
+ Xorg
+ gtf
+ cvt
+ setxkbmap
+ xkbvleds
+ xkbprint
+ xkbwatch
+ xkbbell
+ xkbevd
+ xrandr
+ xkbcomp
+ vmmouse_detect
+"
+REQUIRED_DIRECTORIES="
+ /usr/share/X11
+"
+REQUIRED_FILES=""
diff --git a/remote/modules/xorg/module.conf.debian b/remote/modules/xorg/module.conf.debian
new file mode 100644
index 00000000..2cc9d6f1
--- /dev/null
+++ b/remote/modules/xorg/module.conf.debian
@@ -0,0 +1,40 @@
+REQUIRED_INSTALLED_PACKAGES="
+"
+REQUIRED_CONTENT_PACKAGES="
+ xserver-xorg$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-core$UBUNTU_XORG_PKG_SUFFIX
+ libgl1-mesa-dri$UBUNTU_XORG_PKG_SUFFIX
+ libgl1-mesa-glx$UBUNTU_XORG_PKG_SUFFIX
+ xkb-data
+ x11-xkb-utils
+ x11-xserver-utils
+ xserver-xorg-input-evdev$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-input-mouse$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-input-vmmouse$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-intel$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-ati$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-vesa$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-mga$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-sis$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-vmware$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-fbdev$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-radeon$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-sisusb$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-nouveau$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-openchrome$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-savage$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-trident$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-mach64$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-qxl$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-siliconmotion$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-cirrus$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-r128$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-neomagic$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-geode$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-s3$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-tdfx$UBUNTU_XORG_PKG_SUFFIX
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib
+"
+REQUIRED_FILES=""
diff --git a/remote/modules/xorg/module.conf.opensuse b/remote/modules/xorg/module.conf.opensuse
new file mode 100644
index 00000000..1e6f5ff1
--- /dev/null
+++ b/remote/modules/xorg/module.conf.opensuse
@@ -0,0 +1,59 @@
+# xkbutils, xkbprint, setxkbmap, xkbevd for 64-bit openSuse
+REQUIRED_INSTALLED_PACKAGES="
+"
+REQUIRED_CONTENT_PACKAGES="
+ xorg-x11
+ xorg-x11-server
+ xorg-x11-driver-input
+ xorg-x11-driver-video
+ xorg-x11-driver-video-nouveau
+ xf86-video-vmware
+ xf86-video-ati
+ xf86-video-nv
+ xf86-video-intel
+ xf86-video-i128
+ xf86-video-geode
+ xf86-video-vesa
+ xf86-video-fbdev
+ xf86-video-modesetting
+ xf86-input-vmmouse
+ xf86-input-wacom
+ xf86-input-evdev
+ xf86-input-joystick
+ xf86-input-keyboard
+ xf86-input-mouse
+ xf86-input-synaptics
+ xf86-input-void
+ xkeyboard-config
+ xkbcomp
+ dejavu-fonts
+ libxcb-glx0
+ kdm-branding-openSUSE
+ Mesa
+ xkbutils
+ xkbprint
+ setxkbmap
+ xkbevd
+ libpixman-1-0
+ xrandr
+ vaapi-intel-driver
+"
+REQUIRED_LIBRARIES="
+ libI810XvMC
+ libxcb-glx
+ libIntelXvMC
+ i965_dri
+ vmwgfx_dri
+ i915_dri
+ i965_drv_video
+ libpixman-1
+"
+REQUIRED_DIRECTORIES+="
+ /usr/bin
+ /usr/lib/udev
+ /usr/$LIB64/xorg
+ /usr/share/fonts
+"
+REQUIRED_FILES="
+ /var/adm/fillup-templates/sysconfig.displaymanager-kdm
+"
diff --git a/remote/modules/xorg/module.conf.opensuse.13.1 b/remote/modules/xorg/module.conf.opensuse.13.1
new file mode 100644
index 00000000..6199ed15
--- /dev/null
+++ b/remote/modules/xorg/module.conf.opensuse.13.1
@@ -0,0 +1,95 @@
+# xkbutils, xkbprint, setxkbmap, xkbevd for 64-bit openSuse
+REQUIRED_INSTALLED_PACKAGES="
+ xorg-x11
+ xorg-x11
+ xorg-x11-server
+ xorg-x11-driver-input
+ xorg-x11-driver-video
+ xorg-x11-driver-video-nouveau
+ xf86-video-vmware
+ xf86-video-ati
+ xf86-video-nv
+ xf86-video-intel
+ xf86-video-i128
+ xf86-video-geode
+ xf86-video-vesa
+ xf86-video-fbdev
+ xf86-video-modesetting
+ xf86-input-vmmouse
+ xf86-input-wacom
+ xf86-input-evdev
+ xf86-input-joystick
+ xf86-input-keyboard
+ xf86-input-mouse
+ xf86-input-synaptics
+ xf86-input-void
+ xkeyboard-config
+ xkbcomp
+ dejavu-fonts
+ libxcb-glx0
+ kdm-branding-openSUSE
+ Mesa
+ xkbutils
+ xkbprint
+ setxkbmap
+ xkbevd
+ libpixman-1-0
+ xrandr
+ vaapi-intel-driver
+"
+REQUIRED_CONTENT_PACKAGES="
+ xorg-x11
+ xorg-x11-server
+ xorg-x11-driver-input
+ xorg-x11-driver-video
+ xorg-x11-driver-video-nouveau
+ xf86-video-vmware
+ xf86-video-ati
+ xf86-video-nv
+ xf86-video-intel
+ xf86-video-i128
+ xf86-video-geode
+ xf86-video-vesa
+ xf86-video-fbdev
+ xf86-video-modesetting
+ xf86-input-vmmouse
+ xf86-input-wacom
+ xf86-input-evdev
+ xf86-input-joystick
+ xf86-input-keyboard
+ xf86-input-mouse
+ xf86-input-synaptics
+ xf86-input-void
+ xkeyboard-config
+ xkbcomp
+ dejavu-fonts
+ libxcb-glx0
+ kdm-branding-openSUSE
+ Mesa
+ xkbutils
+ xkbprint
+ setxkbmap
+ xkbevd
+ libpixman-1-0
+ xrandr
+ vaapi-intel-driver
+"
+REQUIRED_LIBRARIES="
+ libI810XvMC
+ libxcb-glx
+ libIntelXvMC
+ i965_dri
+ vmwgfx_dri
+ i915_dri
+ i965_drv_video
+ libpixman-1
+"
+REQUIRED_DIRECTORIES+="
+ /usr/bin
+ /usr/lib/udev
+ /usr/$LIB64/xorg
+ /usr/share/fonts
+"
+REQUIRED_FILES="
+ /var/adm/fillup-templates/sysconfig.displaymanager-kdm
+"
diff --git a/remote/modules/xorg/module.conf.ubuntu b/remote/modules/xorg/module.conf.ubuntu
new file mode 100644
index 00000000..69c3e64c
--- /dev/null
+++ b/remote/modules/xorg/module.conf.ubuntu
@@ -0,0 +1,40 @@
+REQUIRED_INSTALLED_PACKAGES="
+"
+REQUIRED_CONTENT_PACKAGES="
+ xserver-xorg$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-core$UBUNTU_XORG_PKG_SUFFIX
+ libgl1-mesa-dri$UBUNTU_XORG_PKG_SUFFIX
+ libgl1-mesa-glx$UBUNTU_XORG_PKG_SUFFIX
+ xkb-data
+ x11-xkb-utils
+ x11-xserver-utils
+ xserver-xorg-input-evdev$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-input-mouse$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-input-vmmouse$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-intel$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-ati$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-vesa$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-mga$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-sis$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-vmware$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-fbdev$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-radeon$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-sisusb$UBUNTU_XORG_PKG_SUFFIX
+ xserver-xorg-video-nouveau$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-openchrome$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-savage$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-trident$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-mach64$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-qxl$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-siliconmotion$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-cirrus$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-r128$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-neomagic$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-geode$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-s3$UBUNTU_XORG_PKG_SUFFIX
+ @xserver-xorg-video-tdfx$UBUNTU_XORG_PKG_SUFFIX
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib
+"
+REQUIRED_FILES=""
diff --git a/remote/setup_target b/remote/setup_target
index f9e91f96..f11de86c 100755
--- a/remote/setup_target
+++ b/remote/setup_target
@@ -22,8 +22,8 @@
# can process any module, as long as following requirements are met:
#
# - Modules need to have a build-script and a config file,
-# i.e. remote/module/kernel/kernel.build
-# and remote/module/kernel/kernel.conf
+# i.e. remote/module/kernel/module.build
+# and remote/module/kernel/module.conf
# as these will be read by 'process_module'.
#
# - Modules need to generate a 'build'-directory in their
@@ -73,7 +73,7 @@ read_config () {
unset $VARNAME
done
- local MODULE_CONFIG="${MODULE_DIR}/${MODULE}.conf"
+ local MODULE_CONFIG="${MODULE_DIR}/module.conf"
# sanity checks
[ ! -e "${MODULE_CONFIG}" ] && perror "Config for '$MODULE' not found."
@@ -113,7 +113,7 @@ validate_config () {
# generic function to read the build script of the current $MODULE
#
read_build () {
- local BUILD_SCRIPT="${MODULE_DIR}/${MODULE}.build"
+ local BUILD_SCRIPT="${MODULE_DIR}/module.build"
[ ! -e "${BUILD_SCRIPT}" ] && perror "Build script for specified tool not found."
@@ -430,7 +430,7 @@ process_module() {
post_copy
# Write new md5 file if not existent yet
if [ ! -f "$MD5FILE" ]; then
- md5sum "$MODULE_DIR/$MODULE".* > "$MD5FILE" || perror "Could not create $MD5FILE"
+ md5sum "$MODULE_DIR/module".* > "$MD5FILE" || perror "Could not create $MD5FILE"
fi
# Update size of target build dir
if [ -d "${TARGET_BUILD_DIR}" ]; then
--
cgit v1.2.3-55-g7522
From 2e77068a00a432f960103966148ca5e5a19dd517 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Tue, 25 Mar 2014 15:53:51 +0100
Subject: [consolekit] woops, delete old files
---
remote/modules/consolekit/consolekit.build | 28 ----------------------
remote/modules/consolekit/consolekit.conf | 17 -------------
remote/modules/consolekit/consolekit.conf.debian | 6 -----
remote/modules/consolekit/consolekit.conf.opensuse | 8 -------
remote/modules/consolekit/consolekit.conf.ubuntu | 9 -------
5 files changed, 68 deletions(-)
delete mode 100644 remote/modules/consolekit/consolekit.build
delete mode 100644 remote/modules/consolekit/consolekit.conf
delete mode 100644 remote/modules/consolekit/consolekit.conf.debian
delete mode 100644 remote/modules/consolekit/consolekit.conf.opensuse
delete mode 100644 remote/modules/consolekit/consolekit.conf.ubuntu
(limited to 'remote/modules')
diff --git a/remote/modules/consolekit/consolekit.build b/remote/modules/consolekit/consolekit.build
deleted file mode 100644
index 0c63ec6b..00000000
--- a/remote/modules/consolekit/consolekit.build
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-fetch_source() {
- pinfo "Extracting from running system..."
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "${COPYLIST}" ] && rm "${COPYLIST}"
-
- list_packet_files >> "${COPYLIST}"
- tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
- # Systemd/dbus
- mkdir -p "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services" "$MODULE_BUILD_DIR/etc/systemd/system"
- local DAEMON=$(find "$MODULE_BUILD_DIR" -name console-kit-daemon -executable | head -n 1)
- DAEMON="${DAEMON#$MODULE_BUILD_DIR}"
- [ -z "$DAEMON" ] && perror "Could not find console-kit-daemon binary"
- sed "s,%DAEMON%,/$DAEMON,g" "templates/consolekit.systemd.service" > "$MODULE_BUILD_DIR/etc/systemd/system/console-kit-daemon.service" || perror "Could not generate systemd service"
- sed "s,%DAEMON%,/$DAEMON,g" "templates/consolekit.dbus.service" > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.ConsoleKit.service" || perror "Could not generate dbus service"
-}
-
-post_copy() {
- mkdir -p "${TARGET_BUILD_DIR}/usr/lib/ConsoleKit/run-seat.d"
- mkdir -p "${TARGET_BUILD_DIR}/etc/ConsoleKit/run-seat.d"
- mkdir -p "${TARGET_BUILD_DIR}/etc/ConsoleKit/run-session.d"
- mkdir -p "${TARGET_BUILD_DIR}/var/log/ConsoleKit"
-}
-
diff --git a/remote/modules/consolekit/consolekit.conf b/remote/modules/consolekit/consolekit.conf
deleted file mode 100644
index e27b15e6..00000000
--- a/remote/modules/consolekit/consolekit.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-REQUIRED_BINARIES="
- console-kit-daemon
- ck-history
- ck-launch-session
- ck-list-sessions
-"
-REQUIRED_DIRECTORIES="
- /etc/ConsoleKit
- /etc/dbus-1
- /usr/lib/ConsoleKit
- /usr/share
-"
-REQUIRED_LIBRARIES="
- pam_ck_connector
- libck-connector
-"
-
diff --git a/remote/modules/consolekit/consolekit.conf.debian b/remote/modules/consolekit/consolekit.conf.debian
deleted file mode 100644
index 0171868a..00000000
--- a/remote/modules/consolekit/consolekit.conf.debian
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- consolekit
- libpam-ck-connector
-"
-
-
diff --git a/remote/modules/consolekit/consolekit.conf.opensuse b/remote/modules/consolekit/consolekit.conf.opensuse
deleted file mode 100644
index d0f46410..00000000
--- a/remote/modules/consolekit/consolekit.conf.opensuse
+++ /dev/null
@@ -1,8 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- ConsoleKit
- ConsoleKit-x11
-"
-REQUIRED_CONTENT_PACKAGES="
- ConsoleKit
- ConsoleKit-x11
-"
diff --git a/remote/modules/consolekit/consolekit.conf.ubuntu b/remote/modules/consolekit/consolekit.conf.ubuntu
deleted file mode 100644
index e7f5e47d..00000000
--- a/remote/modules/consolekit/consolekit.conf.ubuntu
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- consolekit
-"
-REQUIRED_CONTENT_PACKAGES="
- consolekit
- libpam-ck-connector
- libck-connector0
-"
-
--
cgit v1.2.3-55-g7522
From 249e951ce236e3bbeb32b5a943215524a81f42f2 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Tue, 25 Mar 2014 16:05:27 +0100
Subject: woopsie, the return ;)
---
remote/modules/alsa/alsa.build | 19 ---
remote/modules/alsa/alsa.conf | 8 -
remote/modules/alsa/alsa.conf.debian | 5 -
remote/modules/alsa/alsa.conf.opensuse | 5 -
remote/modules/alsa/alsa.conf.scientific | 12 --
remote/modules/alsa/alsa.conf.ubuntu | 5 -
remote/modules/beamergui/beamergui.build | 19 ---
remote/modules/beamergui/beamergui.conf | 9 --
remote/modules/beamergui/beamergui.conf.debian | 8 -
remote/modules/beamergui/beamergui.conf.ubuntu | 8 -
remote/modules/busybox/busybox.build | 26 ---
remote/modules/busybox/busybox.conf | 9 --
remote/modules/cron/cron.build | 30 ----
remote/modules/cron/cron.conf | 3 -
remote/modules/cups/cups.build | 19 ---
remote/modules/cups/cups.conf | 9 --
remote/modules/cups/cups.conf.opensuse | 10 --
remote/modules/cups/cups.conf.ubuntu | 10 --
remote/modules/cups/cups.conf.ubuntu.13 | 12 --
remote/modules/cups/cups.conf.ubuntu.13.10 | 12 --
remote/modules/dbus/dbus.build | 63 --------
remote/modules/dbus/dbus.conf | 15 --
remote/modules/dbus/dbus.conf.debian | 9 --
remote/modules/dbus/dbus.conf.opensuse | 4 -
remote/modules/dbus/dbus.conf.ubuntu | 7 -
remote/modules/debug/debug.build | 20 ---
remote/modules/debug/debug.conf | 18 ---
remote/modules/debug/debug.conf.debian | 7 -
remote/modules/debug/debug.conf.opensuse | 11 --
remote/modules/debug/debug.conf.ubuntu | 7 -
remote/modules/dhcpc-busybox/dhcpc-busybox.build | 13 --
remote/modules/dhcpc-busybox/dhcpc-busybox.conf | 1 -
remote/modules/dnbd3/dnbd3.build | 43 -----
remote/modules/dnbd3/dnbd3.conf | 11 --
remote/modules/dnbd3/dnbd3.conf.debian | 7 -
remote/modules/dnbd3/dnbd3.conf.opensuse | 8 -
remote/modules/dnbd3/dnbd3.conf.ubuntu | 8 -
remote/modules/german/german.build | 39 -----
remote/modules/german/german.conf | 5 -
remote/modules/german/german.conf.debian | 10 --
remote/modules/german/german.conf.opensuse | 13 --
remote/modules/german/german.conf.scientific | 8 -
remote/modules/german/german.conf.ubuntu | 11 --
remote/modules/idleaction/idleaction.build | 16 --
remote/modules/idleaction/idleaction.conf | 4 -
remote/modules/idleaction/idleaction.conf.opensuse | 6 -
remote/modules/idleaction/idleaction.conf.ubuntu | 6 -
.../modules/iptables-helper/iptables-helper.build | 13 --
.../modules/iptables-helper/iptables-helper.conf | 1 -
remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.build | 13 --
remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.conf | 2 -
remote/modules/kdm/kdm.build | 19 ---
remote/modules/kdm/kdm.conf | 20 ---
remote/modules/kdm/kdm.conf.debian | 28 ----
remote/modules/kdm/kdm.conf.opensuse | 10 --
remote/modules/kdm/kdm.conf.scientific | 20 ---
remote/modules/kdm/kdm.conf.ubuntu | 29 ----
remote/modules/kernel-system/kernel-system.build | 114 -------------
remote/modules/kernel-system/kernel-system.conf | 3 -
.../kernel-system/kernel-system.conf.opensuse | 6 -
.../kernel-system/kernel-system.conf.ubuntu | 6 -
remote/modules/kernel/kernel.build | 155 ------------------
remote/modules/kernel/kernel.conf | 3 -
remote/modules/kernel/kernel.conf.opensuse | 2 -
remote/modules/kernel/kernel.conf.ubuntu | 2 -
remote/modules/kernel/kernel.conf.ubuntu.13.04 | 2 -
.../modules/ldm-gtk-greeter/ldm-gtk-greeter.build | 34 ----
.../modules/ldm-gtk-greeter/ldm-gtk-greeter.conf | 9 --
remote/modules/ldm/ldm.build | 34 ----
remote/modules/ldm/ldm.conf | 8 -
remote/modules/nscd/nscd.build | 17 --
remote/modules/nscd/nscd.conf | 3 -
remote/modules/nscd/nscd.conf.debian | 6 -
remote/modules/nscd/nscd.conf.opensuse | 6 -
remote/modules/nscd/nscd.conf.ubuntu | 6 -
remote/modules/nvidia_kernel/nvidia_kernel.build | 55 -------
remote/modules/nvidia_kernel/nvidia_kernel.conf | 10 --
remote/modules/nvidia_libs/nvidia_libs.build | 56 -------
remote/modules/nvidia_libs/nvidia_libs.conf | 17 --
remote/modules/nvidia_libs/nvidia_libs.conf.ubuntu | 13 --
remote/modules/openbox/openbox.build | 36 -----
remote/modules/openbox/openbox.conf | 11 --
remote/modules/openbox/openbox.conf.debian | 15 --
remote/modules/openbox/openbox.conf.opensuse | 13 --
remote/modules/openbox/openbox.conf.ubuntu | 15 --
remote/modules/openbox/openbox.conf.zypper | 11 --
remote/modules/pam/pam.build | 45 ------
remote/modules/pam/pam.conf | 26 ---
remote/modules/pam/pam.conf.debian | 51 ------
remote/modules/pam/pam.conf.opensuse | 43 -----
remote/modules/pam/pam.conf.opensuse.13.1 | 47 ------
remote/modules/pam/pam.conf.ubuntu | 51 ------
remote/modules/plymouth/plymouth.build | 20 ---
remote/modules/plymouth/plymouth.conf | 15 --
remote/modules/plymouth/plymouth.conf.debian | 7 -
remote/modules/plymouth/plymouth.conf.opensuse | 7 -
remote/modules/plymouth/plymouth.conf.ubuntu | 7 -
remote/modules/polkit/polkit.build | 25 ---
remote/modules/polkit/polkit.conf | 13 --
remote/modules/polkit/polkit.conf.debian | 19 ---
remote/modules/polkit/polkit.conf.opensuse | 12 --
remote/modules/polkit/polkit.conf.ubuntu | 19 ---
remote/modules/printergui/printergui.build | 25 ---
remote/modules/printergui/printergui.conf | 9 --
remote/modules/printergui/printergui.conf.opensuse | 7 -
remote/modules/printergui/printergui.conf.ubuntu | 7 -
remote/modules/qemukvm/qemukvm.build | 16 --
remote/modules/qemukvm/qemukvm.conf | 11 --
remote/modules/qemukvm/qemukvm.conf.ubuntu | 37 -----
remote/modules/redsocks/redsocks.build | 24 ---
remote/modules/redsocks/redsocks.conf | 6 -
remote/modules/redsocks/redsocks.conf.debian | 3 -
remote/modules/redsocks/redsocks.conf.opensuse | 3 -
remote/modules/redsocks/redsocks.conf.ubuntu | 3 -
remote/modules/rsyslogd/rsyslogd.build | 34 ----
remote/modules/rsyslogd/rsyslogd.conf | 6 -
remote/modules/rsyslogd/rsyslogd.conf.debian | 6 -
remote/modules/rsyslogd/rsyslogd.conf.opensuse | 9 --
remote/modules/rsyslogd/rsyslogd.conf.ubuntu | 6 -
remote/modules/samba/samba.build | 26 ---
remote/modules/samba/samba.conf | 24 ---
remote/modules/samba/samba.conf.opensuse | 24 ---
remote/modules/samba/samba.conf.ubuntu | 20 ---
remote/modules/smartctl/smartctl.build | 13 --
remote/modules/smartctl/smartctl.conf | 5 -
remote/modules/smartctl/smartctl.conf.opensuse | 6 -
remote/modules/smartctl/smartctl.conf.ubuntu | 6 -
remote/modules/smbclient/smbclient.build | 20 ---
remote/modules/smbclient/smbclient.conf | 10 --
remote/modules/smbclient/smbclient.conf.opensuse | 9 --
remote/modules/smbclient/smbclient.conf.ubuntu | 9 --
remote/modules/splash-openslx/splash-openslx.build | 13 --
remote/modules/splash-openslx/splash-openslx.conf | 1 -
remote/modules/sshd/sshd.build | 20 ---
remote/modules/sshd/sshd.conf | 3 -
remote/modules/swiss/swiss.build | 55 -------
remote/modules/swiss/swiss.conf | 5 -
remote/modules/swiss/swiss.conf.debian | 10 --
remote/modules/swiss/swiss.conf.opensuse | 14 --
remote/modules/swiss/swiss.conf.scientific | 8 -
remote/modules/swiss/swiss.conf.ubuntu | 17 --
remote/modules/systemd/systemd.build | 72 ---------
remote/modules/systemd/systemd.build.scientific | 178 ---------------------
.../systemd/systemd.build.scientific.README | 11 --
remote/modules/systemd/systemd.conf | 65 --------
remote/modules/systemd/systemd.conf.debian | 13 --
remote/modules/systemd/systemd.conf.opensuse | 11 --
remote/modules/systemd/systemd.conf.scientific | 37 -----
remote/modules/systemd/systemd.conf.ubuntu | 13 --
remote/modules/udisks/udisks.build | 53 ------
remote/modules/udisks/udisks.conf | 14 --
remote/modules/udisks/udisks.conf.debian | 32 ----
remote/modules/udisks/udisks.conf.opensuse | 7 -
remote/modules/udisks/udisks.conf.ubuntu | 34 ----
remote/modules/udisks/udisks.conf.ubuntu.12 | 31 ----
remote/modules/vbox/vbox.build | 127 ---------------
remote/modules/vbox/vbox.conf | 12 --
remote/modules/vbox/vbox.conf.opensuse | 0
remote/modules/vbox/vbox.conf.opensuse.12.3 | 19 ---
remote/modules/vbox/vbox.conf.ubuntu | 18 ---
remote/modules/vbox/vbox.conf.ubuntu.13.04 | 18 ---
remote/modules/vmchooser/vmchooser.build | 36 -----
remote/modules/vmchooser/vmchooser.conf | 3 -
remote/modules/vmchooser/vmchooser.conf.debian | 4 -
remote/modules/vmchooser/vmchooser.conf.opensuse | 4 -
remote/modules/vmchooser/vmchooser.conf.ubuntu | 4 -
remote/modules/vmware/vmware.build | 65 --------
remote/modules/vmware/vmware.conf | 24 ---
remote/modules/vmware/vmware.conf.ubuntu | 136 ----------------
remote/modules/xorg/xorg.build | 22 ---
remote/modules/xorg/xorg.conf | 19 ---
remote/modules/xorg/xorg.conf.debian | 40 -----
remote/modules/xorg/xorg.conf.opensuse | 59 -------
remote/modules/xorg/xorg.conf.opensuse.13.1 | 95 -----------
remote/modules/xorg/xorg.conf.ubuntu | 40 -----
175 files changed, 3684 deletions(-)
delete mode 100644 remote/modules/alsa/alsa.build
delete mode 100644 remote/modules/alsa/alsa.conf
delete mode 100644 remote/modules/alsa/alsa.conf.debian
delete mode 100644 remote/modules/alsa/alsa.conf.opensuse
delete mode 100644 remote/modules/alsa/alsa.conf.scientific
delete mode 100644 remote/modules/alsa/alsa.conf.ubuntu
delete mode 100644 remote/modules/beamergui/beamergui.build
delete mode 100644 remote/modules/beamergui/beamergui.conf
delete mode 100644 remote/modules/beamergui/beamergui.conf.debian
delete mode 100644 remote/modules/beamergui/beamergui.conf.ubuntu
delete mode 100644 remote/modules/busybox/busybox.build
delete mode 100644 remote/modules/busybox/busybox.conf
delete mode 100644 remote/modules/cron/cron.build
delete mode 100644 remote/modules/cron/cron.conf
delete mode 100644 remote/modules/cups/cups.build
delete mode 100644 remote/modules/cups/cups.conf
delete mode 100644 remote/modules/cups/cups.conf.opensuse
delete mode 100644 remote/modules/cups/cups.conf.ubuntu
delete mode 100644 remote/modules/cups/cups.conf.ubuntu.13
delete mode 100644 remote/modules/cups/cups.conf.ubuntu.13.10
delete mode 100644 remote/modules/dbus/dbus.build
delete mode 100644 remote/modules/dbus/dbus.conf
delete mode 100644 remote/modules/dbus/dbus.conf.debian
delete mode 100644 remote/modules/dbus/dbus.conf.opensuse
delete mode 100644 remote/modules/dbus/dbus.conf.ubuntu
delete mode 100644 remote/modules/debug/debug.build
delete mode 100644 remote/modules/debug/debug.conf
delete mode 100644 remote/modules/debug/debug.conf.debian
delete mode 100644 remote/modules/debug/debug.conf.opensuse
delete mode 100644 remote/modules/debug/debug.conf.ubuntu
delete mode 100644 remote/modules/dhcpc-busybox/dhcpc-busybox.build
delete mode 100644 remote/modules/dhcpc-busybox/dhcpc-busybox.conf
delete mode 100644 remote/modules/dnbd3/dnbd3.build
delete mode 100644 remote/modules/dnbd3/dnbd3.conf
delete mode 100644 remote/modules/dnbd3/dnbd3.conf.debian
delete mode 100644 remote/modules/dnbd3/dnbd3.conf.opensuse
delete mode 100644 remote/modules/dnbd3/dnbd3.conf.ubuntu
delete mode 100644 remote/modules/german/german.build
delete mode 100644 remote/modules/german/german.conf
delete mode 100644 remote/modules/german/german.conf.debian
delete mode 100644 remote/modules/german/german.conf.opensuse
delete mode 100644 remote/modules/german/german.conf.scientific
delete mode 100644 remote/modules/german/german.conf.ubuntu
delete mode 100644 remote/modules/idleaction/idleaction.build
delete mode 100644 remote/modules/idleaction/idleaction.conf
delete mode 100644 remote/modules/idleaction/idleaction.conf.opensuse
delete mode 100644 remote/modules/idleaction/idleaction.conf.ubuntu
delete mode 100644 remote/modules/iptables-helper/iptables-helper.build
delete mode 100644 remote/modules/iptables-helper/iptables-helper.conf
delete mode 100644 remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.build
delete mode 100644 remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.conf
delete mode 100644 remote/modules/kdm/kdm.build
delete mode 100644 remote/modules/kdm/kdm.conf
delete mode 100644 remote/modules/kdm/kdm.conf.debian
delete mode 100644 remote/modules/kdm/kdm.conf.opensuse
delete mode 100644 remote/modules/kdm/kdm.conf.scientific
delete mode 100644 remote/modules/kdm/kdm.conf.ubuntu
delete mode 100644 remote/modules/kernel-system/kernel-system.build
delete mode 100644 remote/modules/kernel-system/kernel-system.conf
delete mode 100644 remote/modules/kernel-system/kernel-system.conf.opensuse
delete mode 100644 remote/modules/kernel-system/kernel-system.conf.ubuntu
delete mode 100644 remote/modules/kernel/kernel.build
delete mode 100644 remote/modules/kernel/kernel.conf
delete mode 100644 remote/modules/kernel/kernel.conf.opensuse
delete mode 100644 remote/modules/kernel/kernel.conf.ubuntu
delete mode 100644 remote/modules/kernel/kernel.conf.ubuntu.13.04
delete mode 100644 remote/modules/ldm-gtk-greeter/ldm-gtk-greeter.build
delete mode 100644 remote/modules/ldm-gtk-greeter/ldm-gtk-greeter.conf
delete mode 100644 remote/modules/ldm/ldm.build
delete mode 100644 remote/modules/ldm/ldm.conf
delete mode 100644 remote/modules/nscd/nscd.build
delete mode 100644 remote/modules/nscd/nscd.conf
delete mode 100644 remote/modules/nscd/nscd.conf.debian
delete mode 100644 remote/modules/nscd/nscd.conf.opensuse
delete mode 100644 remote/modules/nscd/nscd.conf.ubuntu
delete mode 100644 remote/modules/nvidia_kernel/nvidia_kernel.build
delete mode 100644 remote/modules/nvidia_kernel/nvidia_kernel.conf
delete mode 100644 remote/modules/nvidia_libs/nvidia_libs.build
delete mode 100644 remote/modules/nvidia_libs/nvidia_libs.conf
delete mode 100644 remote/modules/nvidia_libs/nvidia_libs.conf.ubuntu
delete mode 100644 remote/modules/openbox/openbox.build
delete mode 100644 remote/modules/openbox/openbox.conf
delete mode 100644 remote/modules/openbox/openbox.conf.debian
delete mode 100644 remote/modules/openbox/openbox.conf.opensuse
delete mode 100644 remote/modules/openbox/openbox.conf.ubuntu
delete mode 100644 remote/modules/openbox/openbox.conf.zypper
delete mode 100644 remote/modules/pam/pam.build
delete mode 100644 remote/modules/pam/pam.conf
delete mode 100644 remote/modules/pam/pam.conf.debian
delete mode 100644 remote/modules/pam/pam.conf.opensuse
delete mode 100644 remote/modules/pam/pam.conf.opensuse.13.1
delete mode 100644 remote/modules/pam/pam.conf.ubuntu
delete mode 100644 remote/modules/plymouth/plymouth.build
delete mode 100644 remote/modules/plymouth/plymouth.conf
delete mode 100644 remote/modules/plymouth/plymouth.conf.debian
delete mode 100644 remote/modules/plymouth/plymouth.conf.opensuse
delete mode 100644 remote/modules/plymouth/plymouth.conf.ubuntu
delete mode 100644 remote/modules/polkit/polkit.build
delete mode 100644 remote/modules/polkit/polkit.conf
delete mode 100644 remote/modules/polkit/polkit.conf.debian
delete mode 100644 remote/modules/polkit/polkit.conf.opensuse
delete mode 100644 remote/modules/polkit/polkit.conf.ubuntu
delete mode 100644 remote/modules/printergui/printergui.build
delete mode 100644 remote/modules/printergui/printergui.conf
delete mode 100644 remote/modules/printergui/printergui.conf.opensuse
delete mode 100644 remote/modules/printergui/printergui.conf.ubuntu
delete mode 100644 remote/modules/qemukvm/qemukvm.build
delete mode 100644 remote/modules/qemukvm/qemukvm.conf
delete mode 100644 remote/modules/qemukvm/qemukvm.conf.ubuntu
delete mode 100644 remote/modules/redsocks/redsocks.build
delete mode 100644 remote/modules/redsocks/redsocks.conf
delete mode 100644 remote/modules/redsocks/redsocks.conf.debian
delete mode 100644 remote/modules/redsocks/redsocks.conf.opensuse
delete mode 100644 remote/modules/redsocks/redsocks.conf.ubuntu
delete mode 100644 remote/modules/rsyslogd/rsyslogd.build
delete mode 100644 remote/modules/rsyslogd/rsyslogd.conf
delete mode 100644 remote/modules/rsyslogd/rsyslogd.conf.debian
delete mode 100644 remote/modules/rsyslogd/rsyslogd.conf.opensuse
delete mode 100644 remote/modules/rsyslogd/rsyslogd.conf.ubuntu
delete mode 100644 remote/modules/samba/samba.build
delete mode 100644 remote/modules/samba/samba.conf
delete mode 100644 remote/modules/samba/samba.conf.opensuse
delete mode 100644 remote/modules/samba/samba.conf.ubuntu
delete mode 100644 remote/modules/smartctl/smartctl.build
delete mode 100644 remote/modules/smartctl/smartctl.conf
delete mode 100644 remote/modules/smartctl/smartctl.conf.opensuse
delete mode 100644 remote/modules/smartctl/smartctl.conf.ubuntu
delete mode 100644 remote/modules/smbclient/smbclient.build
delete mode 100644 remote/modules/smbclient/smbclient.conf
delete mode 100644 remote/modules/smbclient/smbclient.conf.opensuse
delete mode 100644 remote/modules/smbclient/smbclient.conf.ubuntu
delete mode 100644 remote/modules/splash-openslx/splash-openslx.build
delete mode 100644 remote/modules/splash-openslx/splash-openslx.conf
delete mode 100644 remote/modules/sshd/sshd.build
delete mode 100644 remote/modules/sshd/sshd.conf
delete mode 100644 remote/modules/swiss/swiss.build
delete mode 100644 remote/modules/swiss/swiss.conf
delete mode 100644 remote/modules/swiss/swiss.conf.debian
delete mode 100644 remote/modules/swiss/swiss.conf.opensuse
delete mode 100644 remote/modules/swiss/swiss.conf.scientific
delete mode 100644 remote/modules/swiss/swiss.conf.ubuntu
delete mode 100644 remote/modules/systemd/systemd.build
delete mode 100644 remote/modules/systemd/systemd.build.scientific
delete mode 100644 remote/modules/systemd/systemd.build.scientific.README
delete mode 100644 remote/modules/systemd/systemd.conf
delete mode 100644 remote/modules/systemd/systemd.conf.debian
delete mode 100644 remote/modules/systemd/systemd.conf.opensuse
delete mode 100644 remote/modules/systemd/systemd.conf.scientific
delete mode 100644 remote/modules/systemd/systemd.conf.ubuntu
delete mode 100644 remote/modules/udisks/udisks.build
delete mode 100644 remote/modules/udisks/udisks.conf
delete mode 100644 remote/modules/udisks/udisks.conf.debian
delete mode 100644 remote/modules/udisks/udisks.conf.opensuse
delete mode 100644 remote/modules/udisks/udisks.conf.ubuntu
delete mode 100644 remote/modules/udisks/udisks.conf.ubuntu.12
delete mode 100644 remote/modules/vbox/vbox.build
delete mode 100644 remote/modules/vbox/vbox.conf
delete mode 100644 remote/modules/vbox/vbox.conf.opensuse
delete mode 100644 remote/modules/vbox/vbox.conf.opensuse.12.3
delete mode 100644 remote/modules/vbox/vbox.conf.ubuntu
delete mode 100644 remote/modules/vbox/vbox.conf.ubuntu.13.04
delete mode 100644 remote/modules/vmchooser/vmchooser.build
delete mode 100644 remote/modules/vmchooser/vmchooser.conf
delete mode 100644 remote/modules/vmchooser/vmchooser.conf.debian
delete mode 100644 remote/modules/vmchooser/vmchooser.conf.opensuse
delete mode 100644 remote/modules/vmchooser/vmchooser.conf.ubuntu
delete mode 100644 remote/modules/vmware/vmware.build
delete mode 100644 remote/modules/vmware/vmware.conf
delete mode 100644 remote/modules/vmware/vmware.conf.ubuntu
delete mode 100644 remote/modules/xorg/xorg.build
delete mode 100644 remote/modules/xorg/xorg.conf
delete mode 100644 remote/modules/xorg/xorg.conf.debian
delete mode 100644 remote/modules/xorg/xorg.conf.opensuse
delete mode 100644 remote/modules/xorg/xorg.conf.opensuse.13.1
delete mode 100644 remote/modules/xorg/xorg.conf.ubuntu
(limited to 'remote/modules')
diff --git a/remote/modules/alsa/alsa.build b/remote/modules/alsa/alsa.build
deleted file mode 100644
index 4d3990b1..00000000
--- a/remote/modules/alsa/alsa.build
+++ /dev/null
@@ -1,19 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
-
- # These shitty greps are 'excludes' for this high quality scientific linux.
- list_packet_files | grep -v "^/etc/asound.state" \
- | grep -v "^/etc/modprobe.d/local.conf" >> "$COPYLIST"
- tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
-
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/alsa/alsa.conf b/remote/modules/alsa/alsa.conf
deleted file mode 100644
index 2a8be7a1..00000000
--- a/remote/modules/alsa/alsa.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-REQUIRED_BINARIES="
- amixer
- alsamixer
-"
-REQUIRED_DIRECTORIES=" /usr/share/alsa
- /etc/modprobe.d
-"
-
diff --git a/remote/modules/alsa/alsa.conf.debian b/remote/modules/alsa/alsa.conf.debian
deleted file mode 100644
index b1f9f0e2..00000000
--- a/remote/modules/alsa/alsa.conf.debian
+++ /dev/null
@@ -1,5 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- alsa-utils
- alsa-base
- libasound2
-"
diff --git a/remote/modules/alsa/alsa.conf.opensuse b/remote/modules/alsa/alsa.conf.opensuse
deleted file mode 100644
index 17651c29..00000000
--- a/remote/modules/alsa/alsa.conf.opensuse
+++ /dev/null
@@ -1,5 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- alsa-utils
- alsa
- libasound2
-"
diff --git a/remote/modules/alsa/alsa.conf.scientific b/remote/modules/alsa/alsa.conf.scientific
deleted file mode 100644
index 643e52d3..00000000
--- a/remote/modules/alsa/alsa.conf.scientific
+++ /dev/null
@@ -1,12 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- module-init-tools
- alsa-utils
- alsa-lib
-"
-REQUIRED_CONTENT_PACKAGES="
- module-init-tools
- alsa-utils
- alsa-lib
-"
-
-# libasound2
diff --git a/remote/modules/alsa/alsa.conf.ubuntu b/remote/modules/alsa/alsa.conf.ubuntu
deleted file mode 100644
index b1f9f0e2..00000000
--- a/remote/modules/alsa/alsa.conf.ubuntu
+++ /dev/null
@@ -1,5 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- alsa-utils
- alsa-base
- libasound2
-"
diff --git a/remote/modules/beamergui/beamergui.build b/remote/modules/beamergui/beamergui.build
deleted file mode 100644
index 837a2e38..00000000
--- a/remote/modules/beamergui/beamergui.build
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-fetch_source() {
- git clone "${REQUIRED_GIT}" src
-}
-
-build() {
- local SRCDIR="${MODULE_DIR}/src/"
-
- mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin"
- cd "${MODULE_BUILD_DIR}/opt/openslx/bin" || perror "Could not cd!"
- pinfo "Running qmake"
- qmake "$SRCDIR/src/beamergui.pro" -r -spec linux-g++ || perror "'qmake' failed (e.g. not installed)."
- pinfo "Running make"
- make || perror "'make' failed."
-}
-post_copy() {
- :
-}
diff --git a/remote/modules/beamergui/beamergui.conf b/remote/modules/beamergui/beamergui.conf
deleted file mode 100644
index da786271..00000000
--- a/remote/modules/beamergui/beamergui.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_GIT="git://git.openslx.org/openslx-ng/beamergui.git"
-REQUIRED_BINARIES="
- beamergui
-"
-REQUIRED_LIBRARIES="
-"
-REQUIRED_SYSTEM_FILES="
-"
-# TODO add libraries
diff --git a/remote/modules/beamergui/beamergui.conf.debian b/remote/modules/beamergui/beamergui.conf.debian
deleted file mode 100644
index ea4cd194..00000000
--- a/remote/modules/beamergui/beamergui.conf.debian
+++ /dev/null
@@ -1,8 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
-libqt4-dev
-libxrandr-dev
-"
-REQUIRED_CONTENT_PACKAGES="
-libqt4-dev
-libxrandr-dev
-"
diff --git a/remote/modules/beamergui/beamergui.conf.ubuntu b/remote/modules/beamergui/beamergui.conf.ubuntu
deleted file mode 100644
index ea4cd194..00000000
--- a/remote/modules/beamergui/beamergui.conf.ubuntu
+++ /dev/null
@@ -1,8 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
-libqt4-dev
-libxrandr-dev
-"
-REQUIRED_CONTENT_PACKAGES="
-libqt4-dev
-libxrandr-dev
-"
diff --git a/remote/modules/busybox/busybox.build b/remote/modules/busybox/busybox.build
deleted file mode 100644
index 727a334c..00000000
--- a/remote/modules/busybox/busybox.build
+++ /dev/null
@@ -1,26 +0,0 @@
-
-fetch_source() {
- git clone "${REQUIRED_GIT}" src || perror "Could not clone busybox git"
- cd src || perror "Could not cd to src"
- git checkout "$REQUIRED_BRANCH" || perror "Could not checkout requested branch"
- # Patch image centering if not patched yet
- if ! grep -q "bcenter_image" "miscutils/fbsplash.c"; then
- git apply "../fbsplash-center.patch" || perror "Could not apply busybox patch for fbsplash image centering"
- fi
- cd .. || perror "cd .. failed"
-}
-
-build() {
- cp "openslx-busybox-config" "src/.config"
- cd src || perror "Could not cd to src"
- pinfo "Running make (if this hangs, check for unset options, ie. when you increased the REQUIRED_BRANCH)"
- make || perror "failed."
- pinfo "Running make install"
- make CONFIG_PREFIX="$MODULE_BUILD_DIR" install || perror "failed"
- rm "$MODULE_BUILD_DIR/bin/mount" "$MODULE_BUILD_DIR/bin/umount" "$MODULE_BUILD_DIR/bin/bash"
- cd - &> /dev/null
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/busybox/busybox.conf b/remote/modules/busybox/busybox.conf
deleted file mode 100644
index d2536ac9..00000000
--- a/remote/modules/busybox/busybox.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_GIT="git://git.busybox.net/busybox"
-REQUIRED_BRANCH="1_22_1"
-REQUIRED_BINARIES="busybox"
-REQUIRED_DIRECTORIES="
- /bin
- /sbin
- /usr/bin
- /usr/sbin
-"
diff --git a/remote/modules/cron/cron.build b/remote/modules/cron/cron.build
deleted file mode 100644
index 932c3e85..00000000
--- a/remote/modules/cron/cron.build
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-
-fetch_source() {
-
- # use our own patched source
- local TARBALL="vixie-cron-4.1-openslx.tgz"
- [ ! -e "${TARBALL}" ] && perror "${TARBALL} not found under ${MODULE_DIR}."
-
- mkdir "${MODULE_DIR}/src" || perror "Could not create ${MODULE_DIR}/src"
- tar xfz "${TARBALL}" -C "${MODULE_DIR}/src" || perror "Could not extract ${TARBALL} to ${MODULE_DIR}/src"
-}
-
-build() {
-
- # compilation
- cd "${MODULE_DIR}/src" || perror "Could not cd to '${MODULE_DIR}/src'. Did fetch_source work?"
- make cron || perror "Could not compile cron using 'make'."
-
- # copy to build dir, since there are no shared libs linked in
- mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/sbin"
- cp "${MODULE_DIR}/src/cron" "${MODULE_BUILD_DIR}/opt/openslx/sbin/" || perror "Could copy cron binary to ${MODULE_BUILD_DIR}"
-
- cd - &>/dev/null
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/cron/cron.conf b/remote/modules/cron/cron.conf
deleted file mode 100644
index 8ecca658..00000000
--- a/remote/modules/cron/cron.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_BINARIES="
- cron
-"
diff --git a/remote/modules/cups/cups.build b/remote/modules/cups/cups.build
deleted file mode 100644
index 0238f1bd..00000000
--- a/remote/modules/cups/cups.build
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/cups/cups.conf b/remote/modules/cups/cups.conf
deleted file mode 100644
index 586e0d12..00000000
--- a/remote/modules/cups/cups.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_BINARIES="
- cupsd
- foomatic-rip
-"
-REQUIRED_DIRECTORIES="
- /usr/lib/cups/
- /usr/share/cups/
-"
-REQUIRED_FILES=""
diff --git a/remote/modules/cups/cups.conf.opensuse b/remote/modules/cups/cups.conf.opensuse
deleted file mode 100644
index d13021ba..00000000
--- a/remote/modules/cups/cups.conf.opensuse
+++ /dev/null
@@ -1,10 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- cups
- cups-libs
- foomatic-filters
-"
-REQUIRED_CONTENT_PACKAGES="
- cups
- cups-libs
- foomatic-filters
-"
diff --git a/remote/modules/cups/cups.conf.ubuntu b/remote/modules/cups/cups.conf.ubuntu
deleted file mode 100644
index 8ca1d1c6..00000000
--- a/remote/modules/cups/cups.conf.ubuntu
+++ /dev/null
@@ -1,10 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- cups
- ghostscript-cups
- foomatic-filters
-"
-REQUIRED_CONTENT_PACKAGES="
- cups
- ghostscript-cups
- foomatic-filters
-"
diff --git a/remote/modules/cups/cups.conf.ubuntu.13 b/remote/modules/cups/cups.conf.ubuntu.13
deleted file mode 100644
index 53c8d62d..00000000
--- a/remote/modules/cups/cups.conf.ubuntu.13
+++ /dev/null
@@ -1,12 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- cups
- cups-daemon
- ghostscript-cups
- foomatic-filters
-"
-REQUIRED_CONTENT_PACKAGES="
- cups
- cups-daemon
- ghostscript-cups
- foomatic-filters
-"
diff --git a/remote/modules/cups/cups.conf.ubuntu.13.10 b/remote/modules/cups/cups.conf.ubuntu.13.10
deleted file mode 100644
index d3fa3b5d..00000000
--- a/remote/modules/cups/cups.conf.ubuntu.13.10
+++ /dev/null
@@ -1,12 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- cups
- cups-daemon
- cups-filters
- foomatic-filters
-"
-REQUIRED_CONTENT_PACKAGES="
- cups
- cups-daemon
- cups-filters
- foomatic-filters
-"
diff --git a/remote/modules/dbus/dbus.build b/remote/modules/dbus/dbus.build
deleted file mode 100644
index c5b2d353..00000000
--- a/remote/modules/dbus/dbus.build
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-
-fetch_source() {
- echo "Extracting from running system..."
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "${COPYLIST}" ] && rm "${COPYLIST}"
-
- list_packet_files >> "${COPYLIST}"
- tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
-
- # Generate systemd files
- mkdir -p "$MODULE_BUILD_DIR/etc/systemd/system"
- # This is ugly, as the command line arguments changed over time. Try to do the right thing (whatever that is)
- # Need to run dbus-uuidgen first?
- local UUIDGEN="# This line intentionally left blank"
- if files_contain "ExecStartPre.*uuidgen" "/lib/systemd/system/dbus.service" "/usr/lib/systemd/system/dbus.service"; then
- UUIDGEN=$(find "$MODULE_BUILD_DIR" -name dbus-uuidgen -executable | head -n 1)
- [ -z "$UUIDGEN" ] && perror "Could not determine dbus-uuidgen location"
- UUIDGEN="ExecStartPre=/${UUIDGEN#$MODULE_BUILD_DIR} --ensure"
- fi
- # Figure out daemon location
- local DAEMON=$(find "$MODULE_BUILD_DIR" -name dbus-daemon -executable | head -n 1)
- [ -z "$DAEMON" ] && perror "Could not determine dbus-daemon location"
- DAEMON="/${DAEMON#$MODULE_BUILD_DIR}"
- local DAEMON_ARGS=""
- # Daemon arguments
- if files_contain "dbus-daemon.*nopidfile" "/lib/systemd/system/dbus.service" "/usr/lib/systemd/system/dbus.service"; then
- DAEMON_ARGS+=" --nopidfile"
- fi
- if files_contain "dbus-daemon.*activation=systemd" "/lib/systemd/system/dbus.service" "/usr/lib/systemd/system/dbus.service"; then
- DAEMON_ARGS+=" --activation=systemd"
- fi
- if files_contain "dbus-daemon.*systemd-activation" "/lib/systemd/system/dbus.service" "/usr/lib/systemd/system/dbus.service"; then
- DAEMON_ARGS+=" --systemd-activation"
- fi
- # dbus-send location
- local SEND=$(find "$MODULE_BUILD_DIR" -name dbus-send -executable | head -n 1)
- [ -z "$SEND" ] && perror "Could not determine dbus-send location"
- SEND="/${SEND#$MODULE_BUILD_DIR}"
- sed "s,%UUIDGEN%,$UUIDGEN,g;s,%DAEMON%,$DAEMON,g;s,%SEND%,$SEND,g;s,%DAEMON_ARGS%,$DAEMON_ARGS,g" "templates/dbus.service" \
- > "$MODULE_BUILD_DIR/etc/systemd/system/dbus.service" \
- || perror "Could not generate $MODULE_BUILD_DIR/etc/systemd/system/dbus.service"
-}
-
-post_copy() {
- :
-}
-
-files_contain () {
- [ $# -lt 2 ] && perror "files_contain needs at least 2 arguments (pattern, file)"
- local PATTERN="$1"
- shift
- local FILE
- for FILE in $@; do
- [ -e "$FILE" ] || continue
- grep -q "$PATTERN" "$FILE" && return 0 # Found
- done
- return 1
-}
-
diff --git a/remote/modules/dbus/dbus.conf b/remote/modules/dbus/dbus.conf
deleted file mode 100644
index 40f8a53d..00000000
--- a/remote/modules/dbus/dbus.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-REQUIRED_BINARIES="
- dbus-cleanup-sockets
- dbus-daemon
- dbus-uuidgen
- dbus-monitor
- dbus-send
- dbus-daemon-launch-helper
- "
-REQUIRED_DIRECTORIES="
- /etc/dbus-1
-"
-REQUIRED_FILES="
- /etc/systemd/system/dbus.service
-"
-
diff --git a/remote/modules/dbus/dbus.conf.debian b/remote/modules/dbus/dbus.conf.debian
deleted file mode 100644
index d007c2ef..00000000
--- a/remote/modules/dbus/dbus.conf.debian
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- dbus
-"
-REQUIRED_DIRECTORIES+="
- /lib/systemd
-"
-REQUIRED_FILES="
- /etc/default/dbus
-"
diff --git a/remote/modules/dbus/dbus.conf.opensuse b/remote/modules/dbus/dbus.conf.opensuse
deleted file mode 100644
index 9bc514e2..00000000
--- a/remote/modules/dbus/dbus.conf.opensuse
+++ /dev/null
@@ -1,4 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- dbus-1
-"
-
diff --git a/remote/modules/dbus/dbus.conf.ubuntu b/remote/modules/dbus/dbus.conf.ubuntu
deleted file mode 100644
index 558eea7f..00000000
--- a/remote/modules/dbus/dbus.conf.ubuntu
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- dbus
-"
-REQUIRED_FILES+="
- /etc/default/dbus
-"
-
diff --git a/remote/modules/debug/debug.build b/remote/modules/debug/debug.build
deleted file mode 100644
index c020181d..00000000
--- a/remote/modules/debug/debug.build
+++ /dev/null
@@ -1,20 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
-
- for BIN in $REQUIRED_BINARIES; do
- [[ "$BIN" == @* ]] && BIN=$(echo "$BIN" | cut -c 2-)
- BIN_LOCATION=$(which ${BIN})
- if [ ! -z ${BIN_LOCATION} -a -e ${BIN_LOCATION} ]; then
- tarcopy "$(get_link_chain ${BIN_LOCATION})" "${MODULE_BUILD_DIR}"
- else
- pwarning "'${BIN}' not found on the system."
- fi
- done
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/debug/debug.conf b/remote/modules/debug/debug.conf
deleted file mode 100644
index 71006514..00000000
--- a/remote/modules/debug/debug.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-REQUIRED_BINARIES="
- strace
- ltrace
- ldd
- setterm
- curl
- nano
- fc-cache
- fc-query
- @xset
- locale
- su
- file
- @htop
- @logger
- @tcpdump
- getfacl
-"
diff --git a/remote/modules/debug/debug.conf.debian b/remote/modules/debug/debug.conf.debian
deleted file mode 100644
index 00bfea2c..00000000
--- a/remote/modules/debug/debug.conf.debian
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- curl
- ltrace
- strace
- nano
- fontconfig
-"
diff --git a/remote/modules/debug/debug.conf.opensuse b/remote/modules/debug/debug.conf.opensuse
deleted file mode 100644
index b7971956..00000000
--- a/remote/modules/debug/debug.conf.opensuse
+++ /dev/null
@@ -1,11 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- curl
- ltrace
- nano
- fontconfig
- fonts-config
- xset
-"
-REQUIRED_BINARIES+="
- fonts-config
-"
diff --git a/remote/modules/debug/debug.conf.ubuntu b/remote/modules/debug/debug.conf.ubuntu
deleted file mode 100644
index 00bfea2c..00000000
--- a/remote/modules/debug/debug.conf.ubuntu
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- curl
- ltrace
- strace
- nano
- fontconfig
-"
diff --git a/remote/modules/dhcpc-busybox/dhcpc-busybox.build b/remote/modules/dhcpc-busybox/dhcpc-busybox.build
deleted file mode 100644
index d8804784..00000000
--- a/remote/modules/dhcpc-busybox/dhcpc-busybox.build
+++ /dev/null
@@ -1,13 +0,0 @@
-
-fetch_source() {
- :
-}
-
-build() {
- :
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/dhcpc-busybox/dhcpc-busybox.conf b/remote/modules/dhcpc-busybox/dhcpc-busybox.conf
deleted file mode 100644
index c01ade29..00000000
--- a/remote/modules/dhcpc-busybox/dhcpc-busybox.conf
+++ /dev/null
@@ -1 +0,0 @@
-# Nothing
diff --git a/remote/modules/dnbd3/dnbd3.build b/remote/modules/dnbd3/dnbd3.build
deleted file mode 100644
index 2651daac..00000000
--- a/remote/modules/dnbd3/dnbd3.build
+++ /dev/null
@@ -1,43 +0,0 @@
-fetch_source() {
- mkdir -p "src/kmod"
- if [ ! -d "src/dnbd3" ]; then
- git clone "$REQUIRED_GIT" "src/dnbd3" || perror "Could not clone dnbd3 git repo"
- fi
- cd src/dnbd3
- #git checkout "$REQUIRED_BRANCH" || perror "Could not checkout requested branch $REQUIRED_BRANCH"
- git checkout "$REQUIRED_COMMIT" || perror "Could not checkout requested commit $REQUIRED_COMMIT"
- cd -
- cp src/dnbd3/Kbuild.in src/dnbd3/src/*.{c,h} src/dnbd3/src/kernel/*.{c,h} src/kmod/ || perror "Could not copy kernel module source files"
- cat > "src/kmod/Makefile" <> "/etc/locale.gen"
- locale-gen || perror "Could not generate locales (debian style)"
- fi
- # Ubuntu's version
- if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/de_DE.utf8 ]; then
- pinfo "Generating locales..."
- grep -q -E -r '^\s*de_DE\.UTF-8' "/var/lib/locales/supported.d" || echo 'de_DE.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
- locale-gen --no-archive --purge "de_DE.UTF-8" || perror "Could not generate locales (ubuntu style)"
- fi
-
- # Put everything we build or get from the system in build dir
- local FILELIST="$MODULE_DIR/list_copy_build"
- rm -f "$FILELIST"
-
- # Copy required directories from source system to build dir
- for FILE in ${REQUIRED_DIRECTORIES}; do
- [ ! -d "${FILE}" ] && perror "Missing required directory $FILE"
- echo ${FILE} >> "${FILELIST}"
- done
-
- # Done collecting file and directory names, copy everything
- tarcopy "$(sort -u "$FILELIST")" "$MODULE_BUILD_DIR"
-
-}
-
-post_copy() {
- for i in LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION; do
- add_env $i de_DE.UTF-8 || perror "$i: add_env function failed."
- done
-}
-
diff --git a/remote/modules/german/german.conf b/remote/modules/german/german.conf
deleted file mode 100644
index e2f82123..00000000
--- a/remote/modules/german/german.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
-REQUIRED_DIRECTORIES="
- /usr/share/X11
-"
diff --git a/remote/modules/german/german.conf.debian b/remote/modules/german/german.conf.debian
deleted file mode 100644
index a43faea2..00000000
--- a/remote/modules/german/german.conf.debian
+++ /dev/null
@@ -1,10 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale
-"
-
diff --git a/remote/modules/german/german.conf.opensuse b/remote/modules/german/german.conf.opensuse
deleted file mode 100644
index 2bb901ff..00000000
--- a/remote/modules/german/german.conf.opensuse
+++ /dev/null
@@ -1,13 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
- glibc-locale
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale/de_DE.utf8
-"
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
-
diff --git a/remote/modules/german/german.conf.scientific b/remote/modules/german/german.conf.scientific
deleted file mode 100644
index 88ac0d27..00000000
--- a/remote/modules/german/german.conf.scientific
+++ /dev/null
@@ -1,8 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
- glibc-common
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data"
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
diff --git a/remote/modules/german/german.conf.ubuntu b/remote/modules/german/german.conf.ubuntu
deleted file mode 100644
index aee3c64b..00000000
--- a/remote/modules/german/german.conf.ubuntu
+++ /dev/null
@@ -1,11 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libx11-data
- language-pack-de
-"
-REQUIRED_CONTENT_PACKAGES="
- libx11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale/de_DE.utf8
-"
-
diff --git a/remote/modules/idleaction/idleaction.build b/remote/modules/idleaction/idleaction.build
deleted file mode 100644
index 1b740aa1..00000000
--- a/remote/modules/idleaction/idleaction.build
+++ /dev/null
@@ -1,16 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- # We ship xprintidle's source as suse doesn't have it in one of the default repos
- # and its just too tiny to do anything fancy like fetching source from somewhere
- mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin"
- gcc -o "$MODULE_BUILD_DIR/opt/openslx/bin/xprintidle" "$MODULE_DIR/xprintidle.c" -lX11 -lXss -lXext \
- || perror "Compilation of xprintidle failed!"
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/idleaction/idleaction.conf b/remote/modules/idleaction/idleaction.conf
deleted file mode 100644
index 1661735b..00000000
--- a/remote/modules/idleaction/idleaction.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-REQUIRED_BINARIES="
- xprintidle
-"
-
diff --git a/remote/modules/idleaction/idleaction.conf.opensuse b/remote/modules/idleaction/idleaction.conf.opensuse
deleted file mode 100644
index d368cbd8..00000000
--- a/remote/modules/idleaction/idleaction.conf.opensuse
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-devel
- libXScrnSaver-devel
- xorg-x11-proto-devel
-"
-
diff --git a/remote/modules/idleaction/idleaction.conf.ubuntu b/remote/modules/idleaction/idleaction.conf.ubuntu
deleted file mode 100644
index 0dad2e48..00000000
--- a/remote/modules/idleaction/idleaction.conf.ubuntu
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libx11-dev
- libxss-dev
- x11proto-scrnsaver-dev
-"
-
diff --git a/remote/modules/iptables-helper/iptables-helper.build b/remote/modules/iptables-helper/iptables-helper.build
deleted file mode 100644
index d8804784..00000000
--- a/remote/modules/iptables-helper/iptables-helper.build
+++ /dev/null
@@ -1,13 +0,0 @@
-
-fetch_source() {
- :
-}
-
-build() {
- :
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/iptables-helper/iptables-helper.conf b/remote/modules/iptables-helper/iptables-helper.conf
deleted file mode 100644
index 34103f5b..00000000
--- a/remote/modules/iptables-helper/iptables-helper.conf
+++ /dev/null
@@ -1 +0,0 @@
-# requires some rootfs that provies iptables
diff --git a/remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.build b/remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.build
deleted file mode 100644
index ccb7c4e1..00000000
--- a/remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.build
+++ /dev/null
@@ -1,13 +0,0 @@
-
-fetch_source () {
- :
-}
-
-build () {
- :
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.conf b/remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.conf
deleted file mode 100644
index 04a7b61d..00000000
--- a/remote/modules/kdm-theme-bwlp/kdm-theme-bwlp.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-REQUIRED_MODULES="kdm"
-
diff --git a/remote/modules/kdm/kdm.build b/remote/modules/kdm/kdm.build
deleted file mode 100644
index d5199340..00000000
--- a/remote/modules/kdm/kdm.build
+++ /dev/null
@@ -1,19 +0,0 @@
-
-fetch_source () {
- :
-}
-
-build () {
- COPYLIST="list_dpkg_output"
- [ -e "${COPYLIST}" ] && rm "${COPYLIST}"
-
- list_packet_files >> "${COPYLIST}"
- tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
-}
-
-post_copy() {
- # copy required icons
- # TODO: Why here? gtk <-> kdm?
- gtk-update-icon-cache-3.0 "${TARGET_BUILD_DIR}/usr/share/icons/oxygen/" || pwarning "update-icon-cache-3.0 failed."
-}
-
diff --git a/remote/modules/kdm/kdm.conf b/remote/modules/kdm/kdm.conf
deleted file mode 100644
index 2778a2bc..00000000
--- a/remote/modules/kdm/kdm.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
-REQUIRED_DIRECTORIES="
- /usr/bin
- /usr/share/dbus-1
- /usr/share/polkit-1
- /usr/share/kde4/services
- /etc/dbus-1
-"
-REQUIRED_LIBRARIES=""
-# non-standard vars
-REQUIRED_SYSTEM_FILES="
- /usr/share/icons/oxygen/16x16/actions/system-reboot.png
- /usr/share/icons/oxygen/16x16/actions/system-shutdown.png
- /usr/share/icons/oxygen/16x16/actions/dialog-cancel.png
- /usr/share/icons/oxygen/index.theme
- /usr/share/icons/default.kde4/index.theme
-"
-# Ignore these libs even if output by ldd
-REQUIRED_LDD_BLACKLIST="\|libQtWebKit\|libGL"
diff --git a/remote/modules/kdm/kdm.conf.debian b/remote/modules/kdm/kdm.conf.debian
deleted file mode 100644
index da0df913..00000000
--- a/remote/modules/kdm/kdm.conf.debian
+++ /dev/null
@@ -1,28 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- kdm
- kde-workspace-kgreet-plugins
-"
-REQUIRED_CONTENT_PACKAGES="
- kdm
- kde-workspace-kgreet-plugins
- libicu48
- libxcursor1
- libxrandr2
- libxfixes3
- libxinerama1
- libxi6
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib
- /etc/pam.d
- /etc/logrotate.d
- /etc/insserv.conf.d
- /etc/kde4/kdm
-"
-# non-standard vars
-REQUIRED_SYSTEM_FILES+="
- /usr/share/kde4/apps/kdm/pics/shutdown.png
- /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
- /usr/share/icons/default/index.theme
-"
-
diff --git a/remote/modules/kdm/kdm.conf.opensuse b/remote/modules/kdm/kdm.conf.opensuse
deleted file mode 100644
index 832baf9c..00000000
--- a/remote/modules/kdm/kdm.conf.opensuse
+++ /dev/null
@@ -1,10 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- kdm
-"
-REQUIRED_CONTENT_PACKAGES="
- kdm
- kde4-kgreeter-plugins
-"
-REQUIRED_DIRECTORIES+="
- /usr/$LIB64/kde4
-"
diff --git a/remote/modules/kdm/kdm.conf.scientific b/remote/modules/kdm/kdm.conf.scientific
deleted file mode 100644
index d61cc8d6..00000000
--- a/remote/modules/kdm/kdm.conf.scientific
+++ /dev/null
@@ -1,20 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- kdm
-"
-REQUIRED_CONTENT_PACKAGES="
- kdm
-"
-REQUIRED_BINARIES=""
-REQUIRED_DIRECTORIES+="
- /usr/$LIB64/kde4
-"
-REQUIRED_FILES=""
-REQUIRED_LIBRARIES=""
-#non-standard vars
-REQUIRED_SYSTEM_FILES="
- /usr/share/icons/oxygen/16x16/actions/system-reboot.png
- /usr/share/icons/oxygen/16x16/actions/system-shutdown.png
- /usr/share/icons/oxygen/16x16/actions/dialog-cancel.png
- /usr/share/icons/oxygen/index.theme
- /usr/share/icons/default.kde4/index.theme
-"
diff --git a/remote/modules/kdm/kdm.conf.ubuntu b/remote/modules/kdm/kdm.conf.ubuntu
deleted file mode 100644
index b91d00e0..00000000
--- a/remote/modules/kdm/kdm.conf.ubuntu
+++ /dev/null
@@ -1,29 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- kdm
- kde-workspace-kgreet-plugins
-"
-REQUIRED_CONTENT_PACKAGES="
- kdm
- kde-workspace-kgreet-plugins
- libicu48
- libxcursor1
- libxrandr2
- libxfixes3
- libxinerama1
- libxi6
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib
- /etc/pam.d
- /etc/logrotate.d
- /etc/insserv.conf.d
- /etc/kde4/kdm
-"
-# non-standard vars
-REQUIRED_SYSTEM_FILES+="
- /usr/share/kde4/apps/kdm/pics/shutdown.png
- /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
- /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf
- /usr/share/icons/default/index.theme
-"
-
diff --git a/remote/modules/kernel-system/kernel-system.build b/remote/modules/kernel-system/kernel-system.build
deleted file mode 100644
index d542a80d..00000000
--- a/remote/modules/kernel-system/kernel-system.build
+++ /dev/null
@@ -1,114 +0,0 @@
-# overloaded get_kernel_version function
-get_kernel_version(){
- pinfo "KERNEL_CURRENT_VERSION: ${KERNEL_CURRENT_VERSION}"
- [ -z "${KERNEL_CURRENT_VERSION}" ] && perror "KERNEL_CURRENT_VERSION is not set, 'uname -r' output: '$(uname -r)'. Aborting..."
-
- # set SYS_UTS_RELEASE and SYS_KERNEL correctly
- declare -rg SYS_UTS_RELEASE="${KERNEL_CURRENT_VERSION}" 2>/dev/null
- declare -rg SYS_KERNEL="$(echo ${KERNEL_CURRENT_VERSION} | grep -o -E '^[0-9\.]+')" 2>/dev/null
-
- # KERNEL_NEW_VERSION is the same as KERNEL_CURRENT_VERSION
- declare -rg KERNEL_NEW_VERSION="$KERNEL_CURRENT_VERSION" 2>/dev/null
-
- # check linux headers directory
- if [ -d "/usr/src/linux-headers-$(uname -r)" ]; then
- declare -rg KERNEL_HEADERS_PATH="/usr/src/linux-headers-$(uname -r)" 2>/dev/null
- else
- # fetch source did not install the headers correctly.
- perror "kernel headers for $KERNEL_CURRENT_VERSION not found! Re-build the kernel-system module"
- fi
-
- # check kernel modules/firmware directory
- if [ -d "/lib/modules/${KERNEL_CURRENT_VERSION}" -a \
- -d "/lib/firmware/${KERNEL_CURRENT_VERSION}" ]; then
- # The expected paths exists, set KERNEL_BASE_DIR to /
- declare -rg KERNEL_BASE_DIR="/" 2>/dev/null
- else
- perror "Could not find kernel modules / firmware for kernel version '$KERNEL_CURRENT_VERSION'. \
- Does '/lib/modules/$KERNEL_CURRENT_VERSION' exist?"
- fi
-
- # print debug info
- pdebug "SYS_UTS_RELEASE: '$SYS_UTS_RELEASE'"
- pdebug "SYS_KERNEL: '$SYS_KERNEL'"
- pdebug "KERNEL_NEW_VERSION: '$KERNEL_NEW_VERSION'"
- pdebug "KERNEL_BASE_DIR: '$KERNEL_BASE_DIR'"
-
- # set KERNEL_HEADERS_PATH
- #get_kernel_headers_path
-}
-
-get_kernel_headers_path(){
- # determine the path to the kernel headers we just installed
- for DIR in $(list_content_package --dirs linux-headers-$(uname -r) ); do
- if [[ "$DIR" =~ .*linux-headers-$(uname -r)$ ]]; then
- # validate candidate
- [ -e "$DIR/./include/generated/utsrelease.h" ] \
- || perror "Could not find utsrelease.h at '$DIR/./include/generated/utsrelease.h'"
- # TODO: maybe check if SYS_UTS_RELEASE is the same as in the header.
-
- # all good, we found it
- pinfo "Kernel headers found at '$DIR'."
- declare -rg KERNEL_HEADERS_PATH="$DIR"
- break
- fi
- done
-
- [ -z "$KERNEL_HEADERS_PATH" ] && perror "KERNEL_HEADERS_PATH was not set correctly."
-
-}
-
-fetch_source() {
-
- # get the source from repos, use meta-package for now
- pinfo "Installing kernel headers from the repositories for version '${KERNEL_CURRENT_VERSION}'"
-
- # the actual install routine is done via config file
- # through the REQUIRED_INSTALLED_PACKAGES variable
-
-}
-
-build() {
-
- # simply copy the kernel from the running system
- # to the build directory as it is.
- local KERNEL_SYSTEM_PATH=""
-
- # 1st "parse" /proc/cmdline for the kernel name
- for i in $(cat /proc/cmdline); do
- [[ "$i" =~ ^BOOT_IMAGE=.* ]] && local BOOT_IMAGE="$(basename $(echo $i|cut -c 12-))"
- done
-
- # exit if KERNEL_SYSTEM_FILENAME is empty, should not happen
- [ -z "${BOOT_IMAGE}" ] && perror "Could not determine the full path to the running kernel..."
-
- # now find it in KERNEL_SYSTEM_SEARCH_PATH
- # NOTE: this variable should be expanded in the future if new locations are to be searched
- local KERNEL_SYSTEM_SEARCH_PATH="/boot"
- local KERNEL_SYSTEM_SEARCH_RESULTS="$(find "${KERNEL_SYSTEM_SEARCH_PATH}" -type f -iname "*${BOOT_IMAGE}*")"
-
- if [ "$(echo $KERNEL_SYSTEM_SEARCH_RESULTS|wc -w)" -eq 1 ]; then
- # we found the running kernel path
- KERNEL_SYSTEM_PATH="${KERNEL_SYSTEM_SEARCH_RESULTS}"
- else
- # we found more than one, shouldn't happen...
- perror "Found more than one kernel named '${BOOT_IMAGE}' inside '${KERNEL_SYSTEM_SEARCH_PATH}'."
- fi
-
- # at this point, we should definitly have KERNEL_SYSTEM_PATH, check just in case :)
- [ -z "${KERNEL_SYSTEM_PATH}" ] && perror "KERNEL_SYSTEM_PATH isn't set, kernel not found. This shouldn't happen!"
- pinfo "Live kernel path: $KERNEL_SYSTEM_PATH"
-
- # copy kernel to build directory
- [ -z "${KERNEL_TARGET_NAME}" ] && perror "KERNEL_TARGET_NAME not set, this mean something is wrong with remote/include/kernel.inc"
- cp "${KERNEL_SYSTEM_PATH}" "${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}" && \
- pinfo "Copied kernel from '${KERNEL_SYSTEM_PATH}' to '${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}'"
- #[ -z "${KERNEL_BUILD_DIR}" ] && KERNEL_BUILD_DIR="${MODULE_BUILD_DIR}"
-}
-
-post_copy() {
- :
- #mkdir -p "$TARGET_BUILD_DIR/../kernel"
- #cp -a "$MODULE_BUILD_DIR/kernel" "$TARGET_BUILD_DIR/../kernel/kernel" || perror "could not copy kernel to remote build dir."
-}
-
diff --git a/remote/modules/kernel-system/kernel-system.conf b/remote/modules/kernel-system/kernel-system.conf
deleted file mode 100644
index 0cd03752..00000000
--- a/remote/modules/kernel-system/kernel-system.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_BINARIES=""
-REQUIRED_LIBRARIES=""
-REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/kernel-system/kernel-system.conf.opensuse b/remote/modules/kernel-system/kernel-system.conf.opensuse
deleted file mode 100644
index 6bfc2078..00000000
--- a/remote/modules/kernel-system/kernel-system.conf.opensuse
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- kernel-desktop-devel
-"
-REQUIRED_CONTENT_PACKAGES="
- kernel-desktop-devel
-"
diff --git a/remote/modules/kernel-system/kernel-system.conf.ubuntu b/remote/modules/kernel-system/kernel-system.conf.ubuntu
deleted file mode 100644
index 4d47b243..00000000
--- a/remote/modules/kernel-system/kernel-system.conf.ubuntu
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- linux-headers-$(uname -r)
-"
-REQUIRED_CONTENT_PACKAGES="
- linux-headers-$(uname -r)
-"
diff --git a/remote/modules/kernel/kernel.build b/remote/modules/kernel/kernel.build
deleted file mode 100644
index f74403f1..00000000
--- a/remote/modules/kernel/kernel.build
+++ /dev/null
@@ -1,155 +0,0 @@
-get_kernel_version() {
- # determine kernel version that will be running in the generated system
- if [ -e "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" ]; then
- # declare kernel version stuff
- declare -rg SYS_UTS_RELEASE=$(grep 'UTS_RELEASE' "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" | awk -F '"' '{print $2}')
- declare -rg SYS_KERNEL=$(echo "$SYS_UTS_RELEASE" | grep -o -E '^[0-9\.]+')
- declare -rg KERNEL_NEW_VERSION="$SYS_UTS_RELEASE"
-
- # declare path to kernel headers and modules/firmware
- declare -rg KERNEL_HEADERS_PATH="$MODULES_DIR/kernel/ksrc"
- declare -rg KERNEL_BASE_DIR="$MODULES_DIR/kernel/build"
-
- else
- # TODO handle
- perror "'$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h' does not exist yes."
- fi
-
- # print debug info
- pdebug "SYS_UTS_RELEASE: '$SYS_UTS_RELEASE'"
- pdebug "SYS_KERNEL: '$SYS_KERNEL'"
- pdebug "KERNEL_NEW_VERSION: '$KERNEL_NEW_VERSION'"
- pdebug "KERNEL_BASE_DIR: '$KERNEL_BASE_DIR'"
-
- # check the headers/src path
-}
-
-fetch_source() {
- pdebug "getting kernel sources via git ...."
- [ -d ./ksrc ] && rm -rf ./ksrc # slightly brutal ...
- git clone --depth 1 ${REQUIRED_GIT} ksrc || perror "Could not clone kernel git."
- # check for aufs
- local RSL=$(find ksrc/ -type d -name aufs)
- if [ -z "$RSL" ]; then
- pinfo "aufs not found in kernel sources, patching it..."
- patch_aufs
- else
- pinfo "aufs detected in kernel source :)"
- fi
- # remember the current kernel version
- echo "${KERNEL_CURRENT_VERSION}" > ksrc/KVERSION
-}
-
-build() {
- local TARGET_CONFIG_FILE="openslx.config"
- [ -e "${TARGET_CONFIG_FILE}" ] && rm -f "${TARGET_CONFIG_FILE}"
- # update config and copy to ksrc
- pinfo "Updating kernel config..."
- update_config
- cp "${TARGET_CONFIG_FILE}" ksrc/.config
- # make kernel with the new config
- cd ksrc || perror "Could not cd to ksrc, was the kernel source fetched properly?"
- pinfo "Preparing kernel for new config ('make oldconfig')."
- if [ "x$MLTK_QUIET" = "x1" ]; then
- yes "" | make oldconfig || perror "make oldconfig failed."
- else
- make oldconfig || perror "make oldconfig failed."
- fi
- make prepare || perror "make prepare failed."
- make scripts || perror "make scripts failed."
-
- pinfo "Compiling kernel... (this will take some time)"
- if gcc --version | grep "4\.7" && which distcc; then
- pinfo "USING DISTCC"
- make CC="distcc gcc-4.7" -j16 || perror "make failed."
- else
- # explicitly state number of cores here, as MAKEFLAGS seems to be overridden
- make "-j$CPU_CORES" || perror "make failed."
- fi
-
- # install modules to build directory
- pinfo "Installing kernel modules..."
- if [ -d "${MODULE_BUILD_DIR}/lib/modules" ]; then
- rm -r "${MODULE_BUILD_DIR}/lib/modules" || pwarning "Could not clean old modules."
- fi
- make INSTALL_MOD_PATH="${MODULE_BUILD_DIR}" INSTALL_MOD_STRIP=1 modules_install || perror "make modules_install failed in ${MODULE_BUILD_DIR}."
- cd - 2> /dev/null
-
- # copy kernel to build
- cp ksrc/arch/x86/boot/bzImage "${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}"
- pinfo "Kernel was successfully built at ${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}"
- [ -z "${KERNEL_BUILD_DIR}" ] && KERNEL_BUILD_DIR="${MODULE_BUILD_DIR}"
-}
-
-post_copy() {
- mkdir -p "$TARGET_BUILD_DIR/../kernel"
- cp -a "$MODULE_BUILD_DIR/kernel" "$TARGET_BUILD_DIR/../kernel/kernel" || perror "could not copy kernel to remote build dir."
-}
-
-# helper function to update the current kernel config with our parameters
-update_config() {
-
- # first we need to update the current config
- local BASE_CONFIG_FILE="/boot/config-$(uname -r)"
- [ -e "${BASE_CONFIG_FILE}" ] || perror "$BASE_CONFIG_FILE could not be found! This should not happen."
-
- # check for our wanted config parameter
- local OPENSLX_WANTED_CONFIG="${ROOT_DIR}/data/kernel.wanted.config"
-
- [ -e "${OPENSLX_WANTED_CONFIG}" ] || perror "$OPENSLX_WANTED_CONFIG does not exist! Please add a list of wanted kernel config parameters."
-
- # copy basic config file
- cp "$BASE_CONFIG_FILE" "$TARGET_CONFIG_FILE"
-
- for WANTED_CONFIG in $(cat $OPENSLX_WANTED_CONFIG|sort -u); do
- local CONFIG_PARAM_NAME="$(echo $WANTED_CONFIG | awk -F "=" '{print $1}')"
- local SEARCH_RESULT="$(grep -E "^\s*$(echo "$CONFIG_PARAM_NAME" | escape_search)=" "$BASE_CONFIG_FILE")"
-
- #echo "Process: $SEARCH_RESULT"
- # analyse results
- if [ "x$SEARCH_RESULT" == "x" ]; then
- # no match, add it
- sed -i -r "s/^\s*#.*\s$(echo "$CONFIG_PARAM_NAME" | escape_search)[^_A-Z0-9].*$//" "$TARGET_CONFIG_FILE"
- echo "$WANTED_CONFIG" >> "$TARGET_CONFIG_FILE"
- else
- # match, change to our setting if they differ
- if [ "x$SEARCH_RESULT" != "x$WANTED_CONFIG" ]; then
- sed -i "s/$(echo "$SEARCH_RESULT" | escape_search)/$(echo "$WANTED_CONFIG" | escape_replace)/" "$TARGET_CONFIG_FILE"
- fi
- fi
- done
-}
-
-# helper to patch aufs
-patch_aufs() {
- pinfo "Cloning aufs3 standalone git"
- cd "$MODULE_DIR"
- [ -d "aufs3-standalone/.git" ] && rm -rf "aufs3-standalone" # if already there, kill it.
- # git: --depth 1 won't work here due to later "checkout origin/branch"
- git clone "git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git" || perror "Cloning aufs3 failed."
- # get the needed version
- [ ! -z ${KERNEL_CURRENT_VERSION} ] && local NEEDED_BRANCH=$(echo $KERNEL_CURRENT_VERSION | awk -F "." '{print $1"."$2}') \
- || perror "KERNEL_CURRENT_VERSION not set, this should not happen!"
- pinfo "Getting branch origin/$NEEDED_BRANCH"
- cd "$MODULE_DIR/aufs3-standalone" || perror "Could not CD to aufs3-standalone"
- git checkout "origin/aufs$NEEDED_BRANCH" || perror "Could not checkout needed branch."
- pinfo "Starting to patch... $NEEDED_BRANCH"
- tarcopy "Documentation fs" "$MODULE_DIR/ksrc"
-
- # Quick-and-dirty aufs_type.h copying:
- [ -e "include/linux/aufs_type.h" ] && cp "include/linux/aufs_type.h" "$MODULE_DIR/ksrc/include/linux/"
- [ -e "include/uapi/linux/aufs_type.h" ] && cp "include/uapi/linux/aufs_type.h" "$MODULE_DIR/ksrc/include/uapi/linux/"
-
- cd "$MODULE_DIR/ksrc" || perror "Could not CD to kernel-source dir ksrc"
-
- patch -p1 < "$MODULE_DIR/aufs3-standalone/aufs3-kbuild.patch" || perror "aufs3-standalone/aufs3-kbuild.patch failed!"
- patch -p1 < "$MODULE_DIR/aufs3-standalone/aufs3-base.patch" || perror "aufs3-standalone/aufs3-base.patch failed!"
-
- # this following 'if' is a burning shame - caused as patching under eg. openSuse 13.1 is always unsuccessful due to hunk failing
- if [ -f "$MODULE_DIR/aufs3-standalone/aufs3-mmap.patch" ]; then
- patch -p1 < "$MODULE_DIR/aufs3-standalone/aufs3-mmap.patch" || pwarning "Problem patching aufs3-mmap.patch: hunks failed?"
- fi
- pinfo "Patched kernel source with aufs-${NEEDED_BRANCH}"
- cd "$MODULE_DIR"
-}
-
diff --git a/remote/modules/kernel/kernel.conf b/remote/modules/kernel/kernel.conf
deleted file mode 100644
index 0cd03752..00000000
--- a/remote/modules/kernel/kernel.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_BINARIES=""
-REQUIRED_LIBRARIES=""
-REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/kernel/kernel.conf.opensuse b/remote/modules/kernel/kernel.conf.opensuse
deleted file mode 100644
index a66564fe..00000000
--- a/remote/modules/kernel/kernel.conf.opensuse
+++ /dev/null
@@ -1,2 +0,0 @@
-REQUIRED_GIT_BRANCH="-b openSUSE-${SYS_VERSION}"
-REQUIRED_GIT="git://kernel.opensuse.org/kernel.git $REQUIRED_GIT_BRANCH"
diff --git a/remote/modules/kernel/kernel.conf.ubuntu b/remote/modules/kernel/kernel.conf.ubuntu
deleted file mode 100644
index 1c876d15..00000000
--- a/remote/modules/kernel/kernel.conf.ubuntu
+++ /dev/null
@@ -1,2 +0,0 @@
-REQUIRED_GIT_BRANCH="-b master"
-REQUIRED_GIT="git://kernel.ubuntu.com/ubuntu/ubuntu-${SYS_CODENAME}.git $REQUIRED_GIT_BRANCH"
diff --git a/remote/modules/kernel/kernel.conf.ubuntu.13.04 b/remote/modules/kernel/kernel.conf.ubuntu.13.04
deleted file mode 100644
index e9192f01..00000000
--- a/remote/modules/kernel/kernel.conf.ubuntu.13.04
+++ /dev/null
@@ -1,2 +0,0 @@
-REQUIRED_GIT_BRANCH="-b master"
-REQUIRED_GIT="git://kernel.ubuntu.com/ubuntu-archive/ubuntu-${SYS_CODENAME}.git $REQUIRED_GIT_BRANCH"
diff --git a/remote/modules/ldm-gtk-greeter/ldm-gtk-greeter.build b/remote/modules/ldm-gtk-greeter/ldm-gtk-greeter.build
deleted file mode 100644
index 27e5a592..00000000
--- a/remote/modules/ldm-gtk-greeter/ldm-gtk-greeter.build
+++ /dev/null
@@ -1,34 +0,0 @@
-#tool/distro specific functions for fetching, building and installing dependencies
-
-fetch_source () {
- download_untar "$URL" "src/"
-}
-
-build () {
- cd "src/$VERSION"
- pinfo "Running configure"
- ./configure --prefix="/" --datarootdir="/usr/share" || perror "failed."
- pinfo "Running make"
- make || perror "failed."
- pinfo "Running make install"
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "failed."
-
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-
- cd -
-}
-
-post_copy() {
- gdk-pixbuf-query-loaders > "${TARGET_BUILD_DIR}/usr/lib/${ARCH_TRIPLET}/gdk-pixbuf-2.0/2.10.0/loaders.cache" || perror "pixbuf-query-loaders failed."
- mkdir -p "${TARGET_BUILD_DIR}/etc/pango" || perror "Making etc/pango failed."
- pango-querymodules > "${TARGET_BUILD_DIR}/etc/pango/pango.modules" || perror "pango-querymodules failed."
- gtk-update-icon-cache-3.0 "${TARGET_BUILD_DIR}/usr/share/icons/hicolor/" || perror "update-icon-cache-3.0 failed."
- update-mime-database "${TARGET_BUILD_DIR}/usr/share/mime" || perror "update-mime-database failed."
- mkdir -p "${TARGET_BUILD_DIR}/var/lib"
- cp -r "/var/lib/polkit-1" "${TARGET_BUILD_DIR}/var/lib/" || perror "Copying -r /var/lib/polkit-1 to '${TARGET_BUILD_DIR}/var/lib/' failed."
-}
-
diff --git a/remote/modules/ldm-gtk-greeter/ldm-gtk-greeter.conf b/remote/modules/ldm-gtk-greeter/ldm-gtk-greeter.conf
deleted file mode 100644
index e9349002..00000000
--- a/remote/modules/ldm-gtk-greeter/ldm-gtk-greeter.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-VERSION=lightdm-gtk-greeter-1.3.1
-URL=https://launchpad.net/lightdm-gtk-greeter/1.4/1.3.1/+download/lightdm-gtk-greeter-1.3.1.tar.gz
-REQUIRED_INSTALLED_PACKAGES="gtk+-3.0 liblightdm-gobject-1-dev libgdk-pixbuf2.0-0 libpango1.0-0 librsvg2-common shared-mime-info gnome-themes-standard"
-REQUIRED_CONTENT_PACKAGES="libgdk-pixbuf2.0-0 libpango1.0-0 librsvg2-common shared-mime-info gnome-themes-standard"
-REQUIRED_BINARIES="lightdm-gtk-greeter"
-REQUIRED_DIRECTORIES="/usr/lib /usr/share/lightdm-gtk-greeter /usr/share/mime /usr/share/xgreeters /usr/share/icons /usr/share/themes /etc /usr/bin"
-REQUIRED_FILES="/etc/lightdm/lightdm-gtk-greeter.conf"
-REQUIRED_MODULES="ldm"
-
diff --git a/remote/modules/ldm/ldm.build b/remote/modules/ldm/ldm.build
deleted file mode 100644
index e88f0b08..00000000
--- a/remote/modules/ldm/ldm.build
+++ /dev/null
@@ -1,34 +0,0 @@
-#tool/distro specific functions for fetching, building and installing dependencies
-
-fetch_source () {
- download_untar "$URL" "src/"
-}
-
-build () {
- cd "src/$VERSION"
- pinfo "Running configure"
- ./configure --prefix="/" --datarootdir="/usr/share" || perror "failed."
- pinfo "Running make"
- make || perror "failed."
- pinfo "Running make install"
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "failed."
-
- COPYLIST="list_dpkg_output"
-
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-
- cd -
-}
-
-post_copy() {
- mkdir -p "${TARGET_BUILD_DIR}/var/lib/lightdm"
- touch "${TARGET_BUILD_DIR}/var/lib/lightdm/.Xauthority" || perror "Cannot touch '${TARGET_BUILD_DIR}/var/lib/lightdm/.Xauthority'"
- local LDMUID=$(add_user "lightdm")
- local LDMGID=$(add_group "lightdm")
- pinfo "lightdm user and group is $LDMUID $LDMGID"
- chown -R "${LDMUID}:${LDMGID}" "${TARGET_BUILD_DIR}/var/lib/lightdm/" || perror "chowning '${TARGET_BUILD_DIR}/var/lib/lightdm/' failed."
-}
-
diff --git a/remote/modules/ldm/ldm.conf b/remote/modules/ldm/ldm.conf
deleted file mode 100644
index 74ab9450..00000000
--- a/remote/modules/ldm/ldm.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-VERSION=lightdm-1.4.0
-URL=https://launchpad.net/lightdm/1.4/1.4.0/+download/lightdm-1.4.0.tar.gz
-REQUIRED_INSTALLED_PACKAGES="libpam-dev itstool liblightdm-gobject-1-dev"
-REQUIRED_CONTENT_PACKAGES=""
-REQUIRED_BINARIES="dm-tool lightdm lightdm-set-defaults gdmflexiserver lightdm-guest-session-wrapper lightdm-set-defaults"
-REQUIRED_DIRECTORIES="/etc /lib"
-REQUIRED_FILES=""
-
diff --git a/remote/modules/nscd/nscd.build b/remote/modules/nscd/nscd.build
deleted file mode 100644
index bd189b66..00000000
--- a/remote/modules/nscd/nscd.build
+++ /dev/null
@@ -1,17 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-
- return 0
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/nscd/nscd.conf b/remote/modules/nscd/nscd.conf
deleted file mode 100644
index 74af4cfb..00000000
--- a/remote/modules/nscd/nscd.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_BINARIES="
- nscd
-"
diff --git a/remote/modules/nscd/nscd.conf.debian b/remote/modules/nscd/nscd.conf.debian
deleted file mode 100644
index 4a61cc19..00000000
--- a/remote/modules/nscd/nscd.conf.debian
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- nscd
-"
-REQUIRED_CONTENT_PACKAGES="
- nscd
-"
diff --git a/remote/modules/nscd/nscd.conf.opensuse b/remote/modules/nscd/nscd.conf.opensuse
deleted file mode 100644
index 4a61cc19..00000000
--- a/remote/modules/nscd/nscd.conf.opensuse
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- nscd
-"
-REQUIRED_CONTENT_PACKAGES="
- nscd
-"
diff --git a/remote/modules/nscd/nscd.conf.ubuntu b/remote/modules/nscd/nscd.conf.ubuntu
deleted file mode 100644
index 4a61cc19..00000000
--- a/remote/modules/nscd/nscd.conf.ubuntu
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- nscd
-"
-REQUIRED_CONTENT_PACKAGES="
- nscd
-"
diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.build b/remote/modules/nvidia_kernel/nvidia_kernel.build
deleted file mode 100644
index a1275c70..00000000
--- a/remote/modules/nvidia_kernel/nvidia_kernel.build
+++ /dev/null
@@ -1,55 +0,0 @@
-fetch_source() {
- mkdir -p src 2>/dev/null
- cd src || perror "Could not change into src directory."
- download "$REQUIRED_URL"
-}
-
-build() {
- local ROOTUPPERDIR="$MODULE_DIR/rootupper"
-
- local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
- local NVIDIAEXTRACTDIR="$ROOTUPPERDIR/NVIDIA"
-
- [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
- pinfo "Unpacking NVidia archive ($NVIDIA) ..."
- sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
-
- pinfo "Ready to chroot - compiling may take some time."
- pdebug "--- chroot ---------------------------------------------------------------------"
- pdebug "- -"
- pdebug "- Notice: This may take a while! -"
- pdebug "- -"
- pdebug "- Please keep note the Nvidia installer _will_ complain about -"
- pdebug "- several warnings and errors. It will do this in any case. -"
- pdebug "- -"
- pdebug "- This does _not_ mean the kernel module compilation was unsuccessful! -"
- pdebug "- -"
- pdebug "--------------------------------------------------------------------------------"
-
-
- chroot_run "$ROOTUPPERDIR" <<-EOF
- /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --kernel-source-path /"$KERNEL_HEADERS_PATH" # Do the work!
- # fake success since the installer will exit with an error due to the module not loading properly.
- exit 0
- EOF
- pinfo "chroot terminated."
-
- pinfo "Stripping kernel modules..."
- strip -g "$ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko" || \
- pwarning "Could not strip kernel module $ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko."
- strip -g "$ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko" || \
- pwarning "Could not strip kernel module $ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko."
-
- pinfo "Copying kernel modules..."
- local NVIDIA_MODULES="$MODULE_BUILD_DIR/lib/modules/nvidia/"
- mkdir -p "$NVIDIA_MODULES"
- cp "$ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia.ko!"
- cp "$ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia-uvm.ko!"
-
- rm -rf "$MODULE_BUILD_DIR/NVIDIA"
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.conf b/remote/modules/nvidia_kernel/nvidia_kernel.conf
deleted file mode 100644
index 9880100d..00000000
--- a/remote/modules/nvidia_kernel/nvidia_kernel.conf
+++ /dev/null
@@ -1,10 +0,0 @@
-REQUIRED_VERSION="331.38"
-REQUIRED_NVIDIA="NVIDIA-Linux-x86_64-$REQUIRED_VERSION.run"
-REQUIRED_URL="http://download.nvidia.com/XFree86/Linux-x86_64/$REQUIRED_VERSION/$REQUIRED_NVIDIA"
-
-REQUIRED_DIRECTORIES="
- /lib/modules/nvidia
-"
-REQUIRED_MODULES="
- kernel
-"
diff --git a/remote/modules/nvidia_libs/nvidia_libs.build b/remote/modules/nvidia_libs/nvidia_libs.build
deleted file mode 100644
index 38f60d09..00000000
--- a/remote/modules/nvidia_libs/nvidia_libs.build
+++ /dev/null
@@ -1,56 +0,0 @@
-fetch_source() {
- mkdir -p src
- cd src || perror "Could not change into src directory."
- download "$REQUIRED_URL"
-}
-
-build() {
- local KERNELSRCDIR="$MODULE_DIR/../kernel/ksrc" # kernel sources
- local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
- local NVIDIAEXTRACTDIR="$MODULE_BUILD_DIR/NVIDIA"
-
- pdebug "Unpacking NVidia-Installer ..."
- [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
- sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
-
- pinfo "Ready to chroot - may take some time."
- pdebug "--- chroot ---------------------------------------------------------------------"
- pdebug "- -"
- pdebug "- Notice: This may take a while! -"
- pdebug "- -"
- pdebug "- Please keep note the Nvidia installer _will_ complain about -"
- pdebug "- several warnings and errors. It will do this in any case. -"
- pdebug "- -"
- pdebug "- This does _not_ mean the library module compilation was unsuccessful! -"
- pdebug "- -"
- pdebug "--------------------------------------------------------------------------------"
-
- chroot_run "${MODULE_BUILD_DIR}" <<-EOF
- /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --no-kernel-module
- EOF
- pinfo "chroot terminated, cleaning up"
-
- # move whiteout list to its /opt/openslx/etc/nvidia.whiteout
- if [ -e "${MODULE_BUILD_DIR}/overlay.whiteout.list" ]; then
- mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/etc"
- mv "${MODULE_BUILD_DIR}/overlay.whiteout.list" "${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
- fi
-
- #pdebug "Handling whiteouts ..."
- #local WHITEOUT_LIST="${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
- #rm -f -- "$WHOUTEOUT_LIST"
- #mkdir -p "$(dirname "$WHITEOUT_LIST")" || perror "Could not create $(dirname "$WHITEOUT_LIST")"
- #pdebug "Searching for overlayfs-whiteouts ..."
- #for WHITEOUT in $(find "$MODULE_BUILD_DIR" -lname "(overlay-whiteout)"); do
-# pdebug "Whiteout found: $WHITEOUT"
-# echo "/./${WHITEOUT#$MODULE_BUILD_DIR}" >> "$WHITEOUT_LIST"
-# rm -f -- "$WHITEOUT" || perror "Could not delete whiteout $WHITEOUT!"
-# done
-
- rm -rf "$MODULE_BUILD_DIR/NVIDIA"
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/nvidia_libs/nvidia_libs.conf b/remote/modules/nvidia_libs/nvidia_libs.conf
deleted file mode 100644
index 12748274..00000000
--- a/remote/modules/nvidia_libs/nvidia_libs.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-REQUIRED_VERSION="331.38"
-REQUIRED_NVIDIA="NVIDIA-Linux-x86_64-$REQUIRED_VERSION.run"
-REQUIRED_URL="http://download.nvidia.com/XFree86/Linux-x86_64/$REQUIRED_VERSION/$REQUIRED_NVIDIA"
-
-REQUIRED_FILES="
- /etc/OpenCL/vendors/nvidia.icd
- /usr/share/nvidia/nvidia-application-profiles-331.38-rc
- /usr/share/applications/nvidia-settings.desktop
- /opt/openslx/etc/nvidia.whiteout
-"
-
-REQUIRED_DIRECTORIES="
- /usr/bin
- /usr/lib
- /var/lib/nvidia
-"
-
diff --git a/remote/modules/nvidia_libs/nvidia_libs.conf.ubuntu b/remote/modules/nvidia_libs/nvidia_libs.conf.ubuntu
deleted file mode 100644
index a3a80bee..00000000
--- a/remote/modules/nvidia_libs/nvidia_libs.conf.ubuntu
+++ /dev/null
@@ -1,13 +0,0 @@
-# libvdpau: While nvidia delivers a linvdpau within it's driver package, nvidia
-# itself recommends using a distribution package if available. So, here we go.
-
-REQUIRED_CONTENT_PACKAGES="
- libvdpau1
-"
-
-REQUIRED_INSTALLED_PACKAGES="
- libvdpau1
-"
-REQUIRED_SYSTEM_FILES+="
- /sbin/ldconfig.real
-"
diff --git a/remote/modules/openbox/openbox.build b/remote/modules/openbox/openbox.build
deleted file mode 100644
index 0cd6aaad..00000000
--- a/remote/modules/openbox/openbox.build
+++ /dev/null
@@ -1,36 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- # FIXME: Hack: openSUSE's rpm -ql lilsts non-existant pango.modules, which makes
- # tarcopy fail. We probably can't fix that, so remove it using grep....
- tarcopy "$(cat "$COPYLIST" | grep -v 'pango\.modules$' | sort -u)" "${MODULE_BUILD_DIR}"
-
- return 0
-}
-
-post_copy() {
- [ ! -d "$TARGET_BUILD_DIR/etc/pango" ] && mkdir -p "$TARGET_BUILD_DIR/etc/pango"
-
- # little Workaround, as under e.g. 64bit Suse the binary is called
- # pango-querymodules-64, not pango-querymodules.
- which pango-querymodules 2>/dev/null 1>&2
- ERR=$?
- if [[ "$ERR" -eq 0 ]]; then
- PANGO_QUERYMODULES_ARCH=pango-querymodules
- else
- which pango-querymodules-64 2>/dev/null 1>&2
- ERR=$?
- if [[ "$ERR" -eq 0 ]]; then
- PANGO_QUERYMODULES_ARCH=pango-querymodules-64
- else
- perror "Could not find either pango-querymodules or pango-querymodules-64!"
- fi
- fi
- $PANGO_QUERYMODULES_ARCH > "$TARGET_BUILD_DIR/etc/pango/pango.modules"
-}
diff --git a/remote/modules/openbox/openbox.conf b/remote/modules/openbox/openbox.conf
deleted file mode 100644
index 8a816b97..00000000
--- a/remote/modules/openbox/openbox.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-REQUIRED_BINARIES="
- openbox
- openbox-session
-"
-REQUIRED_FILES="
- /usr/share/xsessions/openbox.desktop
-"
-REQUIRED_DIRECTORIES="
- /etc
- /usr/share/themes/Clearlooks
-"
diff --git a/remote/modules/openbox/openbox.conf.debian b/remote/modules/openbox/openbox.conf.debian
deleted file mode 100644
index b10bd40d..00000000
--- a/remote/modules/openbox/openbox.conf.debian
+++ /dev/null
@@ -1,15 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- openbox
- libpango1.0-0
- libpango1.0-dev
- libdbus-1-dev
-"
-REQUIRED_CONTENT_PACKAGES="
- openbox
- libpango1.0-0
- libpango1.0-dev
- libdbus-1-dev
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib
-"
diff --git a/remote/modules/openbox/openbox.conf.opensuse b/remote/modules/openbox/openbox.conf.opensuse
deleted file mode 100644
index c06a89b2..00000000
--- a/remote/modules/openbox/openbox.conf.opensuse
+++ /dev/null
@@ -1,13 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- openbox
- libpango-1_0-0
- pango-tools
-"
-REQUIRED_CONTENT_PACKAGES="
- openbox
- libpango-1_0-0
- pango-tools
-"
-REQUIRED_DIRECTORIES+="
- /usr/$LIB64
-"
diff --git a/remote/modules/openbox/openbox.conf.ubuntu b/remote/modules/openbox/openbox.conf.ubuntu
deleted file mode 100644
index b10bd40d..00000000
--- a/remote/modules/openbox/openbox.conf.ubuntu
+++ /dev/null
@@ -1,15 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- openbox
- libpango1.0-0
- libpango1.0-dev
- libdbus-1-dev
-"
-REQUIRED_CONTENT_PACKAGES="
- openbox
- libpango1.0-0
- libpango1.0-dev
- libdbus-1-dev
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib
-"
diff --git a/remote/modules/openbox/openbox.conf.zypper b/remote/modules/openbox/openbox.conf.zypper
deleted file mode 100644
index 1d0b68c5..00000000
--- a/remote/modules/openbox/openbox.conf.zypper
+++ /dev/null
@@ -1,11 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES=" openbox
- libpango-1_0-0"
-REQUIRED_CONTENT_PACKAGES=" openbox
- libpango-1_0-0"
-REQUIRED_BINARIES=" openbox
- openbox-session"
-REQUIRED_FILES=" /usr/share/xsessions/openbox.desktop"
-REQUIRED_DIRECTORIES=" /etc
- /usr/$LIB64
- /usr/share/themes/Clearlooks"
-
diff --git a/remote/modules/pam/pam.build b/remote/modules/pam/pam.build
deleted file mode 100644
index 15828fb8..00000000
--- a/remote/modules/pam/pam.build
+++ /dev/null
@@ -1,45 +0,0 @@
-fetch_source() {
- # get pam-script source
- download_untar "$REQUIRED_PAM_SCRIPT_URL" "src/"
- if [[ "$SYS_DISTRIBUTION" == "opensuse" && "$SYS_VERSION" == "13.1" ]]; then
- pinfo "Downloading $REQUIRED_NSS_LDAPD_URL ..."
- download_untar "$REQUIRED_NSS_LDAPD_URL" "src/"
- fi
-}
-
-build() {
- mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin"
- gcc -o "$MODULE_BUILD_DIR/opt/openslx/bin/sslconnect" "$MODULE_DIR/sslconnect.c" -lssl -lcrypto -O3 || perror "Could not compile sslconnect.c"
- local COPYLIST="$MODULE_BUILD_DIR/list_packet_files"
- # TODO: Hack for SUSE: Ignore file (/var/lib/nfs/state) that does not exist :(
- list_packet_files | grep -v '/var/lib/nfs/state' | sort -u > "$COPYLIST"
- tarcopy "$(cat "$COPYLIST")" "${MODULE_BUILD_DIR}"
-
- # build pam-script separatly since we use a source tarball
- # HACK: find pam_unix.so in MODULE_BUILD_DIR to see where to put pam_script at
- cd "$MODULE_BUILD_DIR"
- local PAM_UNIX_LOCATION=$(find . -name pam_unix.so)
- cd "${MODULE_DIR}/src/pam-script-${REQUIRED_PAM_SCRIPT_VERSION}" || perror "Could not cd to ${MODULE_DIR}/src/pam-script-${REQUIRED_PAM_SCRIPT_VERSION}."
- ./configure --prefix=/ --sysconfdir=/etc/pam-script --libdir="$(dirname ${PAM_UNIX_LOCATION:1})" || perror "pam-script: ./configure failed."
- make DESTDIR="${MODULE_BUILD_DIR}" install || perror "pam-script: make install to ${MODULE_BUILD_DIR} failed."
- # openSuse 13.1 has no package nss-pam-ldapd. So, we compile it.
- if [[ "$SYS_DISTRIBUTION" == "opensuse" && "$SYS_VERSION" == "13.1" ]]; then
- cd "${MODULE_DIR}/src/$REQUIRED_NSS_LDAPD_VERSION"
- pinfo "compiling pam-nss-ldapd for openSuse 13.1 ..."
- ./configure || perror "openSuse 13.1 - pam-nss-ldapd: ./configure failed."
- make DESTDIR="${MODULE_BUILD_DIR}" install || perror "openSuse 13.1 - pam-nss-ldapd: make install to ${MODULE_BUILD_DIR} failed."
- cd "$MODULE_BUILD_DIR"
- local NSLCD_PATH=$(find . -executable -name "nslcd") # Not in path, so we 'find' below MODULE_BUILD_DIR
- else
- cd "$MODULE_BUILD_DIR"
- local NSLCD_PATH=$(which nslcd)
- fi
- [ -z "$NSLCD_PATH" ] && perror "Could not 'which nslcd'"
- # Build nslcd service file
- mkdir -p "etc/systemd/system"
- sed "s,%PATH%,$NSLCD_PATH,g" "$MODULE_DIR/templates/nslcd-systemd.service" > "etc/systemd/system/nslcd.service" || perror "Could not fill nslcd.service template"
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/pam/pam.conf b/remote/modules/pam/pam.conf
deleted file mode 100644
index c0a21a79..00000000
--- a/remote/modules/pam/pam.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-REQUIRED_BINARIES="
- ldapsearch
- nslcd
- rpc.gssd
- rpc.idmapd
- sslconnect
-"
-REQUIRED_LIBRARIES="
- nsswitch
- static
- umich_ldap
- libnfsidmap
- pam_script
-"
-REQUIRED_DIRECTORIES="
- /etc/security
-"
-REQUIRED_FILES="
- /etc/systemd/system/nslcd.service
-"
-REQUIRED_SYSTEM_FILES="
- /etc/login.defs
- /etc/securetty
-"
-REQUIRED_PAM_SCRIPT_VERSION="1.1.6"
-REQUIRED_PAM_SCRIPT_URL="http://downloads.sourceforge.net/project/pam-script/pam-script-${REQUIRED_PAM_SCRIPT_VERSION}.tar.gz"
diff --git a/remote/modules/pam/pam.conf.debian b/remote/modules/pam/pam.conf.debian
deleted file mode 100644
index d424f1f7..00000000
--- a/remote/modules/pam/pam.conf.debian
+++ /dev/null
@@ -1,51 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libpam-ldap
- libnss-ldapd
- nslcd
- libpam-ck-connector
- libpam-cap
- krb5-user
- krb5-config
- libpam-krb5
- libssl-dev
- ldap-utils
- libnfsidmap2
- nfs-common
- libpam0g-dev
- ncpfs
-"
-REQUIRED_CONTENT_PACKAGES="
- libpam0g
- libpam-modules
- libpam-ck-connector
- libpam-cap
- libldap-2.4-2
- libpam-ldap
- libnss-ldapd
- nslcd
- krb5-user
- krb5-config
- libpam-krb5
- ldap-utils
- libnfsidmap2
- nfs-common
- ncpfs
-"
-REQUIRED_BINARIES+="
- nwmsg
- ncpmount
- ncpumount
- mount.ncp
- mount.ncpfs
-"
-REQUIRED_DIRECTORIES+="
- /lib
- /usr/lib
-"
-REQUIRED_SYSTEM_FILES+="
- /etc/pam.conf
- /etc/default/locale
- /lib/security
- /lib/${ARCH_TRIPLET}/security
- /sbin/mkhomedir_helper
-"
diff --git a/remote/modules/pam/pam.conf.opensuse b/remote/modules/pam/pam.conf.opensuse
deleted file mode 100644
index adef3174..00000000
--- a/remote/modules/pam/pam.conf.opensuse
+++ /dev/null
@@ -1,43 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- pam
- pam_krb5
- pam-devel
- nss-pam-ldapd
- pam-modules
- libopenssl-devel
- openldap2-client
- nfsidmap
- nfs-client
- glibc
- pam-devel
-"
-REQUIRED_CONTENT_PACKAGES="
- pam
- pam_krb5
- pam-devel
- pam-modules
- nss-pam-ldapd
- nss-mdns
- openldap2-client
- nfsidmap
- nfs-client
- glibc
-"
-REQUIRED_BINARIES+="
- mkhomedir_helper
-"
-REQUIRED_LIBRARIES+="
- libnss_compat
- libnss_db
- libnss_dns
- libnss_files
- libnss_nis
-"
-REQUIRED_DIRECTORIES+="
- /$LIB64
- /usr/$LIB64
-"
-REQUIRED_SYSTEM_FILES+="
- /$LIB64/security
-"
-
diff --git a/remote/modules/pam/pam.conf.opensuse.13.1 b/remote/modules/pam/pam.conf.opensuse.13.1
deleted file mode 100644
index 9fe1de17..00000000
--- a/remote/modules/pam/pam.conf.opensuse.13.1
+++ /dev/null
@@ -1,47 +0,0 @@
-REQUIRED_NSS_LDAPD_VERSION="nss-pam-ldapd-0.8.13"
-REQUIRED_NSS_LDAPD_URL="http://arthurdejong.org/nss-pam-ldapd/$REQUIRED_NSS_LDAPD_VERSION.tar.gz"
-
-REQUIRED_BINARIES+="
- mkhomedir_helper
-"
-
-REQUIRED_INSTALLED_PACKAGES="
- pam
- pam_krb5
- pam-devel
- pam-modules
- libopenssl-devel
- openldap2-client
- nfsidmap
- nfs-client
- glibc
- pam-devel
- openldap2-devel
- krb5-devel
-"
-REQUIRED_CONTENT_PACKAGES="
- pam
- pam_krb5
- pam-devel
- pam-modules
- nss-mdns
- openldap2-client
- nfsidmap
- nfs-client
- glibc
-"
-REQUIRED_LIBRARIES+="
- libnss_compat
- libnss_db
- libnss_dns
- libnss_files
- libnss_nis
-"
-REQUIRED_DIRECTORIES+="
- /$LIB64
- /usr/$LIB64
-"
-REQUIRED_SYSTEM_FILES+="
- /$LIB64/security
-"
-
diff --git a/remote/modules/pam/pam.conf.ubuntu b/remote/modules/pam/pam.conf.ubuntu
deleted file mode 100644
index 31023197..00000000
--- a/remote/modules/pam/pam.conf.ubuntu
+++ /dev/null
@@ -1,51 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libpam-ldap
- libnss-ldapd
- nslcd
- krb5-user
- krb5-config
- libpam-krb5
- libssl-dev
- ldap-utils
- libnfsidmap2
- nfs-common
- libpam0g-dev
- ncpfs
- cifs-utils
-"
-REQUIRED_CONTENT_PACKAGES="
- libpam0g
- libpam-modules
- libpam-cap
- libldap-2.4-2
- libpam-ldap
- libnss-ldapd
- nslcd
- krb5-user
- krb5-config
- libpam-krb5
- ldap-utils
- libnfsidmap2
- nfs-common
- ncpfs
- cifs-utils
-"
-REQUIRED_BINARIES+="
- nwmsg
- ncpmount
- ncpumount
- mount.ncp
- mount.ncpfs
- mount.cifs
-"
-REQUIRED_DIRECTORIES+="
- /lib
- /usr/lib
-"
-REQUIRED_SYSTEM_FILES+="
- /etc/pam.conf
- /etc/default/locale
- /lib/security
- /lib/${ARCH_TRIPLET}/security
- /sbin/mkhomedir_helper
-"
diff --git a/remote/modules/plymouth/plymouth.build b/remote/modules/plymouth/plymouth.build
deleted file mode 100644
index 67b7734e..00000000
--- a/remote/modules/plymouth/plymouth.build
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-fetch_source() {
- download_untar "$REQUIRED_URL" "src/"
-}
-
-build() {
- cd "src/$REQUIRED_VERSION"
- pinfo "Running configure"
- ./configure --enable-systemd-integration --disable-gtk --disable-static --prefix="$REQUIRED_PREFIX"|| perror "failed."
- pinfo "Running make"
- make || perror "failed"
- pinfo "Running make install"
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "failed"
- cd -
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/plymouth/plymouth.conf b/remote/modules/plymouth/plymouth.conf
deleted file mode 100644
index d8827529..00000000
--- a/remote/modules/plymouth/plymouth.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-REQUIRED_VERSION="plymouth-0.8.6.1"
-REQUIRED_URL="http://www.freedesktop.org/software/plymouth/releases/${REQUIRED_VERSION}.tar.bz2"
-REQUIRED_PREFIX="/usr"
-REQUIRED_BINARIES="
- plymouth
- plymouthd
-"
-REQUIRED_DIRECTORIES="
- $REQUIRED_PREFIX/bin
- $REQUIRED_PREFIX/etc
- $REQUIRED_PREFIX/lib
- $REQUIRED_PREFIX/sbin
- $REQUIRED_PREFIX/var/lib
- $REQUIRED_PREFIX/var/spool
-"
diff --git a/remote/modules/plymouth/plymouth.conf.debian b/remote/modules/plymouth/plymouth.conf.debian
deleted file mode 100644
index 0c6e00a4..00000000
--- a/remote/modules/plymouth/plymouth.conf.debian
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libpng-dev
- libpango1.0-dev
- libcairo-dev
- libgtk2.0-dev
- libdrm-dev
-"
diff --git a/remote/modules/plymouth/plymouth.conf.opensuse b/remote/modules/plymouth/plymouth.conf.opensuse
deleted file mode 100644
index 034af2ad..00000000
--- a/remote/modules/plymouth/plymouth.conf.opensuse
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libpng12-devel
- pango-devel
- cairo-devel
- gtk2-devel
- libdrm-devel
-"
diff --git a/remote/modules/plymouth/plymouth.conf.ubuntu b/remote/modules/plymouth/plymouth.conf.ubuntu
deleted file mode 100644
index 0c6e00a4..00000000
--- a/remote/modules/plymouth/plymouth.conf.ubuntu
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libpng-dev
- libpango1.0-dev
- libcairo-dev
- libgtk2.0-dev
- libdrm-dev
-"
diff --git a/remote/modules/polkit/polkit.build b/remote/modules/polkit/polkit.build
deleted file mode 100644
index 10203209..00000000
--- a/remote/modules/polkit/polkit.build
+++ /dev/null
@@ -1,25 +0,0 @@
-#tool/distro specific functions for fetching, building and installing dependencies
-
-
-fetch_source () {
- pinfo "Extracting from running system..."
-}
-
-build () {
- local COPYLIST="$MODULE_DIR/list_dpkg_output"
- list_packet_files > "$COPYLIST"
- [ -n "$REQUIRED_DIR_STRUCT" ] && find $REQUIRED_DIR_STRUCT -type d >> "$COPYLIST"
- tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
- local POLPATH=$(find "$MODULE_BUILD_DIR" -name polkitd -executable | head -n 1)
- POLPATH="/${POLPATH#$MODULE_BUILD_DIR}"
- mkdir -p "$MODULE_BUILD_DIR/etc/systemd/system" "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services" "$MODULE_BUILD_DIR/var/lib/polkit"
- sed "s,%POLKITD%,${POLPATH},g" "templates/systemd.service" > "$MODULE_BUILD_DIR/etc/systemd/system/polkit.service" || perror "Could not generate polkit.service for systemd"
- sed "s,%POLKITD%,${POLPATH},g" "templates/dbus.service" > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service" || perror "Could not generate polkit.service for dbus"
-}
-
-post_copy() {
- #Add Polkit User/Group/Shadow to Stage3.2, required on opensuse
- pinfo "Adding polkitd user to target system..."
- add_user "polkitd"
-}
-
diff --git a/remote/modules/polkit/polkit.conf b/remote/modules/polkit/polkit.conf
deleted file mode 100644
index 97d4b892..00000000
--- a/remote/modules/polkit/polkit.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-REQUIRED_DIRECTORIES="
- /etc/pam.d
- /etc/polkit-1
- /usr/bin
- /usr/share/polkit-1
- /etc/dbus-1/system.d
-"
-REQUIRED_FILES="
- /usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service
- /etc/systemd/system/polkit.service
-"
-REQUIRED_LIBRARIES="libmozjs185"
-
diff --git a/remote/modules/polkit/polkit.conf.debian b/remote/modules/polkit/polkit.conf.debian
deleted file mode 100644
index 5684a504..00000000
--- a/remote/modules/polkit/polkit.conf.debian
+++ /dev/null
@@ -1,19 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libmozjs185-1.0
- policykit-1
-"
-REQUIRED_CONTENT_PACKAGES="
- libmozjs185-1.0
- policykit-1
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/policykit-1
- /usr/lib/${ARCH_TRIPLET}/polkit-1
- /var/lib/polkit-1
-"
-# Module specific: Root of dirstructs we need directly from system
-REQUIRED_DIR_STRUCT="
- /var/lib/polkit-1
- /etc/polkit-1
-"
-
diff --git a/remote/modules/polkit/polkit.conf.opensuse b/remote/modules/polkit/polkit.conf.opensuse
deleted file mode 100644
index e7c1f369..00000000
--- a/remote/modules/polkit/polkit.conf.opensuse
+++ /dev/null
@@ -1,12 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libmozjs185-1_0
-"
-REQUIRED_CONTENT_PACKAGES="
- libmozjs185-1_0
- polkit
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/polkit-1
- /var/lib/polkit
-"
-
diff --git a/remote/modules/polkit/polkit.conf.ubuntu b/remote/modules/polkit/polkit.conf.ubuntu
deleted file mode 100644
index eb2f88d1..00000000
--- a/remote/modules/polkit/polkit.conf.ubuntu
+++ /dev/null
@@ -1,19 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libmozjs185-1.0
-"
-REQUIRED_CONTENT_PACKAGES="
- libmozjs185-1.0
- policykit-1
- policykit-desktop-privileges
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/policykit-1
- /usr${ARCH_LIB_DIR}/polkit-1
- /var/lib/polkit-1
-"
-# Module specific: Root of dirstructs we need directly from system
-REQUIRED_DIR_STRUCT="
- /var/lib/polkit-1
- /etc/polkit-1
-"
-
diff --git a/remote/modules/printergui/printergui.build b/remote/modules/printergui/printergui.build
deleted file mode 100644
index 2ee49154..00000000
--- a/remote/modules/printergui/printergui.build
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-
-fetch_source() {
- git clone "${REQUIRED_GIT}" src
- cd src
- git checkout "$REQUIRED_COMMIT"
- cd ..
-}
-
-build() {
- local SRCDIR="${MODULE_DIR}/src/"
- local DESTDIR="$MODULE_BUILD_DIR/opt/openslx/cups"
-
- mkdir -p "$DESTDIR"
- cd "$DESTDIR" || perror "Could not cd to $DESTDIR!"
- pinfo "Running cmake"
- cmake "$SRCDIR/" || perror "'cmake' failed (e.g. not installed)."
- pinfo "Running make"
- make || perror "'make' failed."
- chmod 0700 "$DESTDIR/printpwgui" # So picky cupsd won't drop privileges to lp
-}
-post_copy() {
- :
-}
-
diff --git a/remote/modules/printergui/printergui.conf b/remote/modules/printergui/printergui.conf
deleted file mode 100644
index 17203d3e..00000000
--- a/remote/modules/printergui/printergui.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_GIT="git://git.openslx.org/openslx-ng/printergui.git"
-REQUIRED_COMMIT="HEAD"
-REQUIRED_BINARIES="
- printergui
- printpwgui
-"
-REQUIRED_SYSTEM_FILES="
-"
-
diff --git a/remote/modules/printergui/printergui.conf.opensuse b/remote/modules/printergui/printergui.conf.opensuse
deleted file mode 100644
index 2d4c7a95..00000000
--- a/remote/modules/printergui/printergui.conf.opensuse
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
-cups-devel
-libqt4-devel
-"
-REQUIRED_CONTENT_PACKAGES="
-cups-devel
-"
diff --git a/remote/modules/printergui/printergui.conf.ubuntu b/remote/modules/printergui/printergui.conf.ubuntu
deleted file mode 100644
index 2f679912..00000000
--- a/remote/modules/printergui/printergui.conf.ubuntu
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
-libcups2-dev
-libqt4-dev
-"
-REQUIRED_CONTENT_PACKAGES="
-libcups2-dev
-"
diff --git a/remote/modules/qemukvm/qemukvm.build b/remote/modules/qemukvm/qemukvm.build
deleted file mode 100644
index 6d8ad7be..00000000
--- a/remote/modules/qemukvm/qemukvm.build
+++ /dev/null
@@ -1,16 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
- list_packet_files >> "$COPYLIST"
-
-
- tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/qemukvm/qemukvm.conf b/remote/modules/qemukvm/qemukvm.conf
deleted file mode 100644
index 32df73a5..00000000
--- a/remote/modules/qemukvm/qemukvm.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-REQUIRED_DIRECTORIES="
- /etc
- /lib
- /usr/bin
- /usr/sbin
- /usr/lib
- /usr/share/lintian
- /usr/share/qemu
- /usr/share/seabios
- /usr/share/vgabios
-"
diff --git a/remote/modules/qemukvm/qemukvm.conf.ubuntu b/remote/modules/qemukvm/qemukvm.conf.ubuntu
deleted file mode 100644
index d0fdc5f3..00000000
--- a/remote/modules/qemukvm/qemukvm.conf.ubuntu
+++ /dev/null
@@ -1,37 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- qemu
- qemu-kvm
-"
-
-REQUIRED_CONTENT_PACKAGES="
- qemu
- qemu-kvm
- ipxe-qemu
- qemu-keymaps
- qemu-system
- qemu-system-arm
- qemu-system-common
- qemu-system-mips
- qemu-system-misc
- qemu-system-ppc
- qemu-system-sparc
- qemu-system-x86
- qemu-user
- qemu-utils
- seabios
- vgabios
- cpu-checker
- kvm-ipxe
- libaio1
- libboost-thread1.49.0
- libfdt1
- librados2
- librbd1
- libsdl1.2debian
- libseccomp1
- libspice-server1
- libxen-4.2
- libxenstore3.0
- msr-tools
- sharutils
-"
diff --git a/remote/modules/redsocks/redsocks.build b/remote/modules/redsocks/redsocks.build
deleted file mode 100644
index f6a05350..00000000
--- a/remote/modules/redsocks/redsocks.build
+++ /dev/null
@@ -1,24 +0,0 @@
-#tool/distro specific functions for fetching, building and installing dependencies
-
-
-fetch_source () {
- mkdir -p src
- cd src || perror "Could not cd to src"
- if [ ! -d "redsocks" ]; then
- git clone "$REQUIRED_GIT" "redsocks" || perror "Could not clone redoscks from github"
- fi
- cd redsocks || perror "Could not cd to src/redsocks"
- git checkout "$REQUIRED_REVISION" || perror "Could not checkout revision $REQUIRED_REVISION"
-}
-
-build () {
- cd "$MODULE_DIR/src/redsocks" || perror "src/redsocks not found"
- make || perror "make failed."
- mkdir -p "$MODULE_BUILD_DIR/sbin"
- cp "redsocks" "$MODULE_BUILD_DIR/sbin/" || perror "Could not copy redsocks binary to build dir"
-}
-
-post_copy() {
- add_user redsocks
-}
-
diff --git a/remote/modules/redsocks/redsocks.conf b/remote/modules/redsocks/redsocks.conf
deleted file mode 100644
index 62c15c70..00000000
--- a/remote/modules/redsocks/redsocks.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_GIT="git://github.com/darkk/redsocks.git"
-REQUIRED_REVISION="2e3f648809e27cc19cb7a8702f19b553a7ef9a81"
-REQUIRED_BINARIES="
- redsocks
-"
-
diff --git a/remote/modules/redsocks/redsocks.conf.debian b/remote/modules/redsocks/redsocks.conf.debian
deleted file mode 100644
index da41b04e..00000000
--- a/remote/modules/redsocks/redsocks.conf.debian
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libevent-dev
-"
diff --git a/remote/modules/redsocks/redsocks.conf.opensuse b/remote/modules/redsocks/redsocks.conf.opensuse
deleted file mode 100644
index fcc0fb45..00000000
--- a/remote/modules/redsocks/redsocks.conf.opensuse
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libevent-devel
-"
diff --git a/remote/modules/redsocks/redsocks.conf.ubuntu b/remote/modules/redsocks/redsocks.conf.ubuntu
deleted file mode 100644
index da41b04e..00000000
--- a/remote/modules/redsocks/redsocks.conf.ubuntu
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libevent-dev
-"
diff --git a/remote/modules/rsyslogd/rsyslogd.build b/remote/modules/rsyslogd/rsyslogd.build
deleted file mode 100644
index c35d07b7..00000000
--- a/remote/modules/rsyslogd/rsyslogd.build
+++ /dev/null
@@ -1,34 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-
- return 0
-}
-
-post_copy() {
-
-
- # pwd = module's build dir
- mkdir -p "${TARGET_BUILD_DIR}"/var/spool/rsyslog
-
- local RSL="$(find /usr/lib/ /lib/ -name rsyslog.service | head -1)"
- [ -z "$RSL" -o ! -e "$RSL" ] && perror "rsyslog.service not found on vorlage"
- [ ! -d "$TARGET_BUILD_DIR/etc/systemd/system" ] && mkdir -p "$TARGET_BUILD_DIR/etc/systemd/system"
- cp -L "$RSL" "$TARGET_BUILD_DIR/etc/systemd/system/"
- sed -i 's/\/bin\/systemctl/-\/usr\/bin\/systemctl/g' "${TARGET_BUILD_DIR}"/etc/systemd/system/rsyslog.service
- sed -i 's/^Before=udev/#&/' "${TARGET_BUILD_DIR}"/etc/systemd/system/rsyslog.service
-
- # activate the service
- ln -sf rsyslog.service "${TARGET_BUILD_DIR}"/etc/systemd/system/syslog.service
- [ ! -d "${TARGET_BUILD_DIR}"/etc/systemd/system/basic.target.wants ] && mkdir -p "${TARGET_BUILD_DIR}"/etc/systemd/system/basic.target.wants
- ln -sf ../syslog.service "${TARGET_BUILD_DIR}"/etc/systemd/system/basic.target.wants/syslog.service
- # TODO: more checks
- sed -i.bak '/^After\=var-run.mount/d;/^Requires\=var-run.mount/d;/^Before\=syslog.target/d' "$TARGET_BUILD_DIR/etc/systemd/system/rsyslog.service"
-}
diff --git a/remote/modules/rsyslogd/rsyslogd.conf b/remote/modules/rsyslogd/rsyslogd.conf
deleted file mode 100644
index ba36aadf..00000000
--- a/remote/modules/rsyslogd/rsyslogd.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_BINARIES="
- rsyslogd
-"
-REQUIRED_FILES="
- /etc/rsyslog.conf
-"
diff --git a/remote/modules/rsyslogd/rsyslogd.conf.debian b/remote/modules/rsyslogd/rsyslogd.conf.debian
deleted file mode 100644
index 79aba761..00000000
--- a/remote/modules/rsyslogd/rsyslogd.conf.debian
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- rsyslog
-"
-REQUIRED_DIRECTORIES="
- /usr/lib/rsyslog
-"
diff --git a/remote/modules/rsyslogd/rsyslogd.conf.opensuse b/remote/modules/rsyslogd/rsyslogd.conf.opensuse
deleted file mode 100644
index 51ce0e47..00000000
--- a/remote/modules/rsyslogd/rsyslogd.conf.opensuse
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- rsyslog
-"
-REQUIRED_BINARIES+="
- rsyslog-service-prepare
-"
-REQUIRED_DIRECTORIES="
- /usr/$LIB64/rsyslog
-"
diff --git a/remote/modules/rsyslogd/rsyslogd.conf.ubuntu b/remote/modules/rsyslogd/rsyslogd.conf.ubuntu
deleted file mode 100644
index 79aba761..00000000
--- a/remote/modules/rsyslogd/rsyslogd.conf.ubuntu
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- rsyslog
-"
-REQUIRED_DIRECTORIES="
- /usr/lib/rsyslog
-"
diff --git a/remote/modules/samba/samba.build b/remote/modules/samba/samba.build
deleted file mode 100644
index a0a60831..00000000
--- a/remote/modules/samba/samba.build
+++ /dev/null
@@ -1,26 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- if [ "x$PACKET_MANAGER" == "xzypper" ]; then
- if [ $(zypper lr | grep -ci filesystems) -eq 0 ]; then
- zypper addrepo http://download.opensuse.org/repositories/filesystems/openSUSE_${SYS_VERSION} Filesystems
- pinfo "Repository added: OpenSuse Build filesystems"
- fi
- # Ubuntu writes to /etc, Suse does not:
- mkdir "$MODULE_BUILD_DIR"/etc/
- cp /usr/share/doc/packages/smbnetfs/smbnetfs.conf "$MODULE_BUILD_DIR"/etc/
- fi
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
- return 0
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/samba/samba.conf b/remote/modules/samba/samba.conf
deleted file mode 100644
index 00063187..00000000
--- a/remote/modules/samba/samba.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-REQUIRED_BINARIES="
- smbd
- nmbd
- smbclient
- winbindd
- smbnetfs
- fusermount
- keyctl
- request-key
- key.dns_resolver
-"
-REQUIRED_FILES="
- /etc/smbnetfs.conf
- /etc/request-key.conf
- /etc/request-key.d
-"
-# TODO dont copy all the binaries, strip the list down.
-REQUIRED_DIRECTORIES="
- /usr/bin
-"
-# TODO check if the /var/lib/samba/*.tdg can be generated by mltk.
-REQUIRED_SYSTEM_FILES="
- /var/lib/samba
-"
diff --git a/remote/modules/samba/samba.conf.opensuse b/remote/modules/samba/samba.conf.opensuse
deleted file mode 100644
index fd06e50a..00000000
--- a/remote/modules/samba/samba.conf.opensuse
+++ /dev/null
@@ -1,24 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- samba
- samba-client
- samba-winbind
- krb5-client
- cifs-utils
- smbnetfs
- fuse
- keyutils
-"
-REQUIRED_CONTENT_PACKAGES="
- samba
- samba-client
- samba-winbind
- krb5-client
- cifs-utils
- smbnetfs
- fuse
- keyutils
-"
-
-# This is just a list for grep excludes used in samba.build opensuse branch
-# Please use pipe symbol and backslash (\|) as separator as being used in grep
-REQUIRED_PACKET_FILES_BLACKLIST="/etc/samba/smbpasswd\|/ding/dong"
diff --git a/remote/modules/samba/samba.conf.ubuntu b/remote/modules/samba/samba.conf.ubuntu
deleted file mode 100644
index 20bb46ba..00000000
--- a/remote/modules/samba/samba.conf.ubuntu
+++ /dev/null
@@ -1,20 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- samba
- smbclient
- winbind
- krb5-user
- cifs-utils
- smbnetfs
- fuse
- keyutils
-"
-REQUIRED_CONTENT_PACKAGES="
- samba
- smbclient
- winbind
- krb5-user
- cifs-utils
- smbnetfs
- fuse
- keyutils
-"
diff --git a/remote/modules/smartctl/smartctl.build b/remote/modules/smartctl/smartctl.build
deleted file mode 100644
index 435a7b10..00000000
--- a/remote/modules/smartctl/smartctl.build
+++ /dev/null
@@ -1,13 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- list_packet_files > "$COPYLIST"
- tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/smartctl/smartctl.conf b/remote/modules/smartctl/smartctl.conf
deleted file mode 100644
index 9ea1ed03..00000000
--- a/remote/modules/smartctl/smartctl.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-REQUIRED_BINARIES="
- smartctl
-"
-REQUIRED_LIBRARIES=""
-REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/smartctl/smartctl.conf.opensuse b/remote/modules/smartctl/smartctl.conf.opensuse
deleted file mode 100644
index d699f2f0..00000000
--- a/remote/modules/smartctl/smartctl.conf.opensuse
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- smartmontools
-"
-REQUIRED_INSTALLED_PACKAGES="
- smartmontools
-"
diff --git a/remote/modules/smartctl/smartctl.conf.ubuntu b/remote/modules/smartctl/smartctl.conf.ubuntu
deleted file mode 100644
index d699f2f0..00000000
--- a/remote/modules/smartctl/smartctl.conf.ubuntu
+++ /dev/null
@@ -1,6 +0,0 @@
-REQUIRED_CONTENT_PACKAGES="
- smartmontools
-"
-REQUIRED_INSTALLED_PACKAGES="
- smartmontools
-"
diff --git a/remote/modules/smbclient/smbclient.build b/remote/modules/smbclient/smbclient.build
deleted file mode 100644
index dc28dd26..00000000
--- a/remote/modules/smbclient/smbclient.build
+++ /dev/null
@@ -1,20 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-
- local BIN_LOCATION="$(which smbspool)"
- if [ ! -z "${BIN_LOCATION}" -a -e "${BIN_LOCATION}" ]; then
- ln -sf "${BIN_LOCATION}" "${MODULE_BUILD_DIR}/usr/lib/cups/backend/smb"
- fi
-}
-
-post_copy() {
- :
-}
diff --git a/remote/modules/smbclient/smbclient.conf b/remote/modules/smbclient/smbclient.conf
deleted file mode 100644
index 460c57b5..00000000
--- a/remote/modules/smbclient/smbclient.conf
+++ /dev/null
@@ -1,10 +0,0 @@
-REQUIRED_BINARIES="
- smbspool
- smbcacls
- rpcclient
- smbcquotas
- smbget
- smbclient
- smbtree
- smbtar
-"
diff --git a/remote/modules/smbclient/smbclient.conf.opensuse b/remote/modules/smbclient/smbclient.conf.opensuse
deleted file mode 100644
index f524d100..00000000
--- a/remote/modules/smbclient/smbclient.conf.opensuse
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- samba-client
-"
-REQUIRED_CONTENT_PACKAGES="
- samba-client
-"
-REQUIRED_FILES="
- /usr/lib/cups/backend/smb
-"
diff --git a/remote/modules/smbclient/smbclient.conf.ubuntu b/remote/modules/smbclient/smbclient.conf.ubuntu
deleted file mode 100644
index 4b33f4bd..00000000
--- a/remote/modules/smbclient/smbclient.conf.ubuntu
+++ /dev/null
@@ -1,9 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- smbclient
-"
-REQUIRED_CONTENT_PACKAGES="
- smbclient
-"
-REQUIRED_FILES="
- /usr/lib/cups/backend/smb
-"
diff --git a/remote/modules/splash-openslx/splash-openslx.build b/remote/modules/splash-openslx/splash-openslx.build
deleted file mode 100644
index ccb7c4e1..00000000
--- a/remote/modules/splash-openslx/splash-openslx.build
+++ /dev/null
@@ -1,13 +0,0 @@
-
-fetch_source () {
- :
-}
-
-build () {
- :
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/splash-openslx/splash-openslx.conf b/remote/modules/splash-openslx/splash-openslx.conf
deleted file mode 100644
index 6778a258..00000000
--- a/remote/modules/splash-openslx/splash-openslx.conf
+++ /dev/null
@@ -1 +0,0 @@
-# (void)
diff --git a/remote/modules/sshd/sshd.build b/remote/modules/sshd/sshd.build
deleted file mode 100644
index ebf42c12..00000000
--- a/remote/modules/sshd/sshd.build
+++ /dev/null
@@ -1,20 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
-
- local BIN_LOCATION="$(which sshd)"
- [ ! -z "${BIN_LOCATION}" ] && BIN_LOCATION=$(readlink -f "$BIN_LOCATION")
- if [ ! -z "${BIN_LOCATION}" -a -e "${BIN_LOCATION}" ]; then
- tarcopy "${BIN_LOCATION}" "${MODULE_BUILD_DIR}"
- else
- perror "'sshd' not found on the system! Please install it."
- fi
-}
-
-post_copy() {
- mkdir -p "${TARGET_BUILD_DIR}/var/lib/empty" # suse
-
- chmod go-rwx "${TARGET_BUILD_DIR}/etc/ssh/"* # no space, " before *
-}
diff --git a/remote/modules/sshd/sshd.conf b/remote/modules/sshd/sshd.conf
deleted file mode 100644
index 25793c72..00000000
--- a/remote/modules/sshd/sshd.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_BINARIES="sshd"
-REQUIRED_LIBRARIES=""
-REQUIRED_DIRECTORIES=""
diff --git a/remote/modules/swiss/swiss.build b/remote/modules/swiss/swiss.build
deleted file mode 100644
index 1f016f6b..00000000
--- a/remote/modules/swiss/swiss.build
+++ /dev/null
@@ -1,55 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- CH_LOCALES="de_CH.UTF-8 fr_CH.UTF-8 it_CH.UTF-8"
-
- # Debian-like
- if [ -e "/etc/locale.gen" ] && ! grep -q -E '^\s*de_CH\.UTF-8' "/etc/locale.gen"; then
- pinfo "Generating locales..."
- echo 'de_CH.UTF-8 UTF-8' >> "/etc/locale.gen"
- echo 'fr_CH.UTF-8 UTF-8' >> "/etc/locale.gen"
- echo 'it_CH.UTF-8 UTF-8' >> "/etc/locale.gen"
- locale-gen || perror "Could not generate locales (debian style)"
- fi
-
- # Ubuntu's version
- if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/de_CH.utf8 ]; then
- pinfo "Generating locales..."
- grep -q -E -r '^\s*de_CH\.UTF-8' "/var/lib/locales/supported.d" || echo 'de_CH.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
- locale-gen --no-archive --purge "de_CH.UTF-8" || perror "Could not generate locales (ubuntu style)"
- fi
- if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/fr_CH.utf8 ]; then
- pinfo "Generating locales..."
- grep -q -E -r '^\s*fr_CH\.UTF-8' "/var/lib/locales/supported.d" || echo 'fr_CH.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
- locale-gen --no-archive "fr_CH.UTF-8" || perror "Could not generate locales (ubuntu style)"
- fi
- if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/it_CH.utf8 ]; then
- pinfo "Generating locales..."
- grep -q -E -r '^\s*it_CH\.UTF-8' "/var/lib/locales/supported.d" || echo 'it_CH.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
- locale-gen --no-archive "it_CH.UTF-8" || perror "Could not generate locales (ubuntu style)"
- fi
-
-
- # Put everything we build or get from the system in build dir
- local FILELIST="$MODULE_DIR/list_copy_build"
- rm -f "$FILELIST"
-
- # Copy required directories from source system to build dir
- for FILE in ${REQUIRED_DIRECTORIES}; do
- [ ! -d "${FILE}" ] && perror "Missing required directory $FILE"
- echo ${FILE} >> "${FILELIST}"
- done
-
- # Done collecting file and directory names, copy everything
- tarcopy "$(sort -u "$FILELIST")" "$MODULE_BUILD_DIR"
-
-}
-
-post_copy() {
- for i in LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION; do
- add_env $i de_CH.UTF-8 || perror "$i: add_env function failed."
- done
-}
-
diff --git a/remote/modules/swiss/swiss.conf b/remote/modules/swiss/swiss.conf
deleted file mode 100644
index e2f82123..00000000
--- a/remote/modules/swiss/swiss.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
-REQUIRED_DIRECTORIES="
- /usr/share/X11
-"
diff --git a/remote/modules/swiss/swiss.conf.debian b/remote/modules/swiss/swiss.conf.debian
deleted file mode 100644
index a43faea2..00000000
--- a/remote/modules/swiss/swiss.conf.debian
+++ /dev/null
@@ -1,10 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale
-"
-
diff --git a/remote/modules/swiss/swiss.conf.opensuse b/remote/modules/swiss/swiss.conf.opensuse
deleted file mode 100644
index 1311ac97..00000000
--- a/remote/modules/swiss/swiss.conf.opensuse
+++ /dev/null
@@ -1,14 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
- glibc-locale
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale/de_DE.utf8
- /usr/lib/locale/de_CH.utf8
-"
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
-
diff --git a/remote/modules/swiss/swiss.conf.scientific b/remote/modules/swiss/swiss.conf.scientific
deleted file mode 100644
index 88ac0d27..00000000
--- a/remote/modules/swiss/swiss.conf.scientific
+++ /dev/null
@@ -1,8 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
- glibc-common
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data"
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
diff --git a/remote/modules/swiss/swiss.conf.ubuntu b/remote/modules/swiss/swiss.conf.ubuntu
deleted file mode 100644
index 69694914..00000000
--- a/remote/modules/swiss/swiss.conf.ubuntu
+++ /dev/null
@@ -1,17 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libx11-data
- language-pack-de
- language-pack-fr
- language-pack-it
- language-pack-en
-"
-REQUIRED_CONTENT_PACKAGES="
- libx11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale/C.UTF-8
- /usr/lib/locale/de_CH.utf8
- /usr/lib/locale/fr_CH.utf8
- /usr/lib/locale/it_CH.utf8
-"
-
diff --git a/remote/modules/systemd/systemd.build b/remote/modules/systemd/systemd.build
deleted file mode 100644
index 95576548..00000000
--- a/remote/modules/systemd/systemd.build
+++ /dev/null
@@ -1,72 +0,0 @@
-#tool/distro specific functions for fetching, building and installing dependencies
-
-fetch_source () {
- # systemd
- download_untar "$REQUIRED_URL" "src/"
- # Patch PATH, HOME, USER environment
- # TODO: Newer systemd versions support DefaultEnvironment=xxx in /etc/systemd/system.conf
- # However, there were lots of changes after systemd 204, so we didn't update yet
- # See http://cgit.freedesktop.org/systemd/systemd/tree/NEWS for changes.
- patch -p0 src/systemd-*/src/core/main.c < systemd-openslx.patch || perror "Failed to apply openslx systemd patch."
-
- # libkmod
- download_untar "$REQUIRED_LIBKMOD_URL" "src/"
-}
-
-build () {
- #build libkmod
- pinfo "Building libkmod"
- cd "${MODULE_DIR}/src/$REQUIRED_LIBKMOD_VERSION"
- ./configure || perror "./configure kmod failed."
- make || perror "kmod make failed."
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "kmod make install failed."
- cd - &> /dev/null
-
- #build systemd
- pinfo "Building systemd"
- cd "${MODULE_DIR}/src/$REQUIRED_VERSION"
- pinfo "calling configure"
-
- # Save potentially pre-used paths/flages
- OLDLDFLAGS="$LDFLAGS"
- OLDCPPFLAGS="$CPPFLAGS"
- OLDPKG_CONFIG_PATH="$PKG_CONFIG_PATH"
- OLDLD_LIBRARY_PATH="$LD_LIBRARY_PATH"
-
- export LDFLAGS="$LDFLAGS -L${MODULE_BUILD_DIR}/usr/lib"
- export CPPFLAGS="-I${MODULE_BUILD_DIR}/usr/include"
- export PKG_CONFIG_PATH="${MODULE_BUILD_DIR}/usr/lib64/pkgconfig:${MODULE_BUILD_DIR}/usr/lib/pkgconfig"
- export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${MODULE_BUILD_DIR}/usr/lib:${MODULE_BUILD_DIR}/usr/lib64"
-
- ./configure --disable-manpages --enable-split-usr --sysconfdir="/etc" --enable-gtk-doc-html=no --disable-nls \
- --disable-microhttpd --disable-bootchart --disable-quotacheck --disable-hostnamed --disable-timedated \
- --disable-localed --disable-coredump --disable-keymap --without-python --enable-blkid --enable-acl --enable-pam \
- --enable-kmod \
- || perror "configure failed."
- pinfo "calling make"
- make || perror "make failed."
- pinfo "calling make install"
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "make install failed."
- cd - &> /dev/null
-
- # Restore used flags/paths:
- export LDFLAGS="$OLDLDFLAGS"
- export CPPFLAGS="$OLDCPPFLAGS"
- export PKG_CONFIG_PATH="$OLDPKG_CONFIG_PATH"
- export LD_LIBRARY_PATH="$OLDLD_LIBRARY_PATH"
-}
-
-post_copy() {
- #old agetty version doesn't support --noclear option in getty service
- if [ "x$(dpkg -s util-linux | grep Version: | cut -d' ' -f2)" == "x2.19.1-2ubuntu3" ]; then
- sed -i "s/ExecStart=-\/sbin\/agetty --noclear %I 38400 linux/ExecStart=-\/sbin\/agetty %I 38400 linux/g" "${TARGET_BUILD_DIR}/usr/lib/systemd/system/getty@.service"
- fi
-
- # add pam_systemd.so to pam modules directory
- if [ -e "${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so" ]; then
- cp "${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so" "${TARGET_BUILD_DIR}/lib/security/"
- else
- pdebug "No such file: ${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so"
- fi
-}
-
diff --git a/remote/modules/systemd/systemd.build.scientific b/remote/modules/systemd/systemd.build.scientific
deleted file mode 100644
index 12170d81..00000000
--- a/remote/modules/systemd/systemd.build.scientific
+++ /dev/null
@@ -1,178 +0,0 @@
-#tool/distro specific functions for fetching, building and installing dependencies
-
-# Please read systemd.build.scientific.README before using this script!
-
-fetch_source () {
- download_untar "$REQUIRED_URL" "src/"
- download_untar "$REQUIRED_LIBKMOD_URL" "src/"
-
- # Another nice hack for Scientific Linux - experimental.
- if [ "$SYS_DISTRIBUTION" == "scientific" ]; then
- download_untar "$REQUIRED_UTILLINUX_URL" "src/" || perror "Cannot download util-linux!"
- download_untar "$REQUIRED_M4_URL" "src/" || perror "Cannot download m4 version $REQUIRED_AUTOMAKE_VERSION!"
- download_untar "$REQUIRED_AUTOCONF_URL" "src/" || perror "Cannot download autoconf version $REQUIRED_AUTOCONF_VERSION!"
- download_untar "$REQUIRED_AUTOMAKE_URL" "src/" || perror "Cannot download automake version $REQUIRED_AUTOMAKE_VERSION!"
- download_untar "$REQUIRED_DBUS_URL" "src/" || perror "Cannot download dbus version $REQUIRED_DBUS_VERSION!"
- fi
-
- # Patch PATH environment
- sed -s -i -r 's#"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin(:/sbin:/bin)?"#& ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin"#g' src/systemd-*/src/core/main.c
- sed -s -i -r 's#"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"#& ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin"#g' src/systemd-*/src/nspawn/nspawn.c
-}
-
-build () {
-
- config_systemd () {
- pinfo "Building systemd"
- cd "${MODULE_DIR}/src/$REQUIRED_VERSION"
- pinfo "calling configure"
- ./configure --disable-manpages --enable-split-usr --sysconfdir="/etc" --enable-gtk-doc-html=no --disable-nls \
- --disable-microhttpd --disable-bootchart --disable-quotacheck --disable-hostnamed --disable-timedated \
- --disable-localed --disable-coredump --disable-keymap --without-python --enable-blkid --enable-acl --enable-pam \
- || perror "configure systemd failed."
- }
-
- #build libkmod
- pinfo "Building libkmod"
- cd "${MODULE_DIR}/src/$REQUIRED_LIBKMOD_VERSION"
- ./configure || perror "./configure kmod failed."
- make || perror "kmod make failed."
- make install || perror "kmod make install failed."
- cd - &> /dev/null
-
- # Scientific Linux specials
- if [ "$SYS_DISTRIBUTION" == "scientific" ]; then
- pinfo "Scientific Linux detected ..." # Freude, schöner Götterfunke!
-
- # Some path mainpulations for following utilities, save some envvars for later restituting
- OLDPATH=$PATH
- export PATH="${MODULE_BUILD_DIR}/sbin:${MODULE_BUILD_DIR}/usr/local/bin/:$PATH" # for stuff installed at BUILD_DIR.
- OLDPKG_CONFIG_PATH="$PKG_CONFIG_PATH"
- OLDCPPFLAGS="$CPPFLAGS"
- OLDLDFLAGS="$LDFLAGS"
-
- # Utillinux stuff
- pinfo "Building util-linux"
- cd "${MODULE_DIR}/src/$REQUIRED_UTILLINUX_VERSION"
- ./configure --disable-libuuid --disable-libmount --without-ncurses \
- --disable-mount --disable-losetup --disable-cytune --disable-fsck --disable-partx --disable-uuidd \
- --disable-mountpoint --disable-fallocate --disable-unshare --disable-nsenter --disable-setpriv \
- --disable-eject --disable-agetty --disable-cramfs --disable-bfs --disable-fdformat --disable-hwclock \
- --disable-wdctl --disable-switch_root --disable-pivot_root --disable-kill --disable-utmpdump --disable-raw \
- --disable-rename --disable-login --disable-sulogin --disable-su --disable-runuser --disable-ul --disable-more \
- --disable-pg --disable-schedutils --disable-wall --disable-bash-completion \
- || perror "./configure util-linux failed."
- make || perror "util-linux make failed."
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "util-linux make install failed."
- cd - &> /dev/null
-
- # Let's have some starting fun with m4, as we want systemd, which wants automake 1.13, which wants autoconf,
- # which wants m4 ...
- pinfo "Building m4 Version $REQUIRED_M4_VERSION."
- cd "${MODULE_DIR}/src/$REQUIRED_M4_VERSION"
- ./configure || perror "./configure m4 failed."
- make || perror "m4 make failed."
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "m4 make install failed."
- cd - &> /dev/null
-
- # And have some more fun with autoconf, chain see above:
- pinfo "Building autoconf Version $REQUIRED_AUTOCONF_VERSION."
- cd "${MODULE_DIR}/src/$REQUIRED_AUTOCONF_VERSION"
- ./configure || perror "./configure autoconf failed."
- make || perror "autoconf make failed."
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "autoconf make install failed."
- cd - &> /dev/null
-
- # Now let's have some fun with automake, as config.log/automake will whine later about SL's automake 1.11:
- # AUTOMAKE='${SHELL} [...] missing automake-1.13'. We use a newer automake than 1.11, if we are at it.
- # Link fun, as configure searches in /usr/local/bin, ignores PATH above, also 'share':
- ln -s "${MODULE_BUILD_DIR}/usr/local/bin/autom4te" /usr/local/bin/autom4te
- ln -s "${MODULE_BUILD_DIR}/usr/local/share/autoconf" /usr/local/share/autoconf
- # ... and manipulate perl library path, as else the libs will not be found by (system) perl:
- OLDPERL5LIB="$PERL5LIB"
- export PERL5LIB="${MODULE_BUILD_DIR}/usr/local/share/autoconf/:$PERL5LIB"
-
- pinfo "Building automake Version $REQUIRED_AUTOMAKE_VERSION."
- cd "${MODULE_DIR}/src/$REQUIRED_AUTOMAKE_VERSION"
- ./configure || perror "./configure automake failed."
- make || perror "automake make failed."
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "automake make install failed."
- cd - &> /dev/null
-
- # We are having so much compiling fun, why leave out dbus, then?
- pinfo "Building dbus Version $REQUIRED_AUTOMAKE_VERSION."
- cd "${MODULE_DIR}/src/$REQUIRED_DBUS_VERSION"
- ./configure || perror "./configure dbus failed."
- make || perror "dbus make failed."
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "automake make install failed."
- cd - &> /dev/null
-
- # patching configure for Scientific Linux - cave - ugly hack!
- # pinfo "Scientific Linux detected; patching systemd/configure..."
- # cd "${MODULE_DIR}/src/$REQUIRED_VERSION"
- # sed 's/dbus-1 >= 1.3.2/dbus-1 >= 1.2.24/g' configure > configure.patched
- # mv configure configure.orig
- # mv configure.patched configure
- # chmod +x configure
-
- # For compiling systemd later
- export PKG_CONFIG_PATH="${MODULE_BUILD_DIR}/usr/lib/pkgconfig/:${MODULE_BUILD_DIR}/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
- export CPPFLAGS="$CPPFLAGS -I${MODULE_BUILD_DIR}/usr/include/ -I${MODULE_BUILD_DIR}/usr/local/include/ -I${MODULE_BUILD_DIR}/usr/local/include/dbus-1.0 -I${MODULE_BUILD_DIR}/usr/local/lib/dbus-1.0/include/"
- export LDFLAGS="$LDFLAGS -L${MODULE_BUILD_DIR}/usr/lib/ -L${MODULE_BUILD_DIR}/usr/local/lib/ -ldl"
- ln -s ${MODULE_BUILD_DIR}/usr/local/include/dbus-1.0 /usr/local/include/dbus-1.0
- ln -s ${MODULE_BUILD_DIR}/usr/local/lib/dbus-1.0 /usr/local/lib/dbus-1.0
- cd - &> /dev/null
-
- config_systemd
-
- # ... and tidy our manipulations with path, perllib, links etc.
- export PERL5LIB="$OLDPERL5LIB"
- export PATH="$OLDPATH"
- unlink /usr/local/bin/autom4te
- unlink /usr/local/share/autoconf
- unlink /usr/local/lib/dbus-1.0
- unlink /usr/local/include/dbus-1.0
- else
- config_systemd # Non-Scientific-Linux branch
- fi
-
- pinfo "calling make"
- make || perror "systemd make failed."
- pinfo "calling make install"
- DESTDIR="${MODULE_BUILD_DIR}" make install || perror "systemd make install failed."
- cd - &> /dev/null
-
-
- # Delete unneeded services
- pinfo "Deleting unneeded services"
- local SERVICE=
- local OTHER=
- for SERVICE in $REQUIRED_DISABLED_SERVICES; do
- find "${MODULE_BUILD_DIR}" -name "$SERVICE" -exec rm -r {} \;
- for OTHER in $(grep -l -r "$SERVICE" "$MODULE_BUILD_DIR/usr/lib/systemd/system"); do
- sed -i -r "s#\s*$SERVICE\s*# #g" "$OTHER"
- done
- done
-}
-
-post_copy() {
- # dont clear systemd log at startup
- sed -i "s/TTYVTDisallocate=yes/TTYVTDisallocate=no/g" "${TARGET_BUILD_DIR}/usr/lib/systemd/system/getty@.service"
-
- #old agetty version doesn't support --noclear option in getty service
- if [ "x$(dpkg -s util-linux | grep Version: | cut -d' ' -f2)" == "x2.19.1-2ubuntu3" ];
- then
- sed -i.bak "s/ExecStart=-\/sbin\/agetty --noclear %I 38400 linux/ExecStart=-\/sbin\/agetty %I 38400 linux/g" "${TARGET_BUILD_DIR}/usr/lib/systemd/system/getty@.service"
- fi
-
- # add nfs to modules-load list
- echo "nfs" > "${TARGET_BUILD_DIR}/etc/modules-load.d/nfs.conf"
-
- # add pam_systemd.so to pam modules directory
- if [ -e "${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so" ]; then
- cp "${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so" "${TARGET_BUILD_DIR}/lib/security/"
- else
- pdebug "No such file: ${MODULE_BUILD_DIR}/usr/lib/security/pam_systemd.so"
- fi
-}
-
diff --git a/remote/modules/systemd/systemd.build.scientific.README b/remote/modules/systemd/systemd.build.scientific.README
deleted file mode 100644
index bad5a2d4..00000000
--- a/remote/modules/systemd/systemd.build.scientific.README
+++ /dev/null
@@ -1,11 +0,0 @@
-Building systemd under Scientific Linux 6.4
-
-Unfortunately this is not possible, as, at the end of a long chain
-of prerequisites (compiling autoconf, automake, m4, utillinux (blkid),
-dbus the last requisite cannot be met:
-udev-builtin-input_id.c:166: error: 'BTN_TRIGGER_HAPPY' undeclared.
-
-This 'BTN_TRIGGER_HAPPY' should be provided by kernel headers, but seems
-to be intruduced in the headers of kernel 2.6.34 (linux/input.h).
-
-Scientific Linux uses 2.6.32.
diff --git a/remote/modules/systemd/systemd.conf b/remote/modules/systemd/systemd.conf
deleted file mode 100644
index 4ca11365..00000000
--- a/remote/modules/systemd/systemd.conf
+++ /dev/null
@@ -1,65 +0,0 @@
-REQUIRED_VERSION="systemd-204"
-REQUIRED_URL="http://www.freedesktop.org/software/systemd/${REQUIRED_VERSION}.tar.xz"
-REQUIRED_LIBKMOD_VERSION="kmod-14"
-REQUIRED_LIBKMOD_URL="http://www.kernel.org/pub/linux/utils/kernel/kmod/${REQUIRED_LIBKMOD_VERSION}.tar.gz"
-REQUIRED_BINARIES="
- journalctl
- loginctl
- systemctl
- systemd-analyze
- systemd-ask-password
- systemd-cat
- systemd-cgls
- systemd-cgtop
- systemd-delta
- systemd-detect-virt
- systemd-inhibit
- systemd-machine-id-setup
- systemd-notify
- systemd-nspawn
- systemd-stdio-bridge
- systemd-tmpfiles
- systemd-tty-ask-password-agent
- udevadm
- systemd
- systemd-ac-power
- systemd-binfmt
- systemd-cgroups-agent
- systemd-fsck
- systemd-initctl
- systemd-journald
- systemd-logind
- systemd-modules-load
- systemd-multi-seat-x
- systemd-random-seed
- systemd-readahead
- systemd-remount-fs
- systemd-reply-password
- systemd-shutdown
- systemd-shutdownd
- systemd-sleep
- systemd-sysctl
- systemd-timestamp
- systemd-udevd
- systemd-update-utmp
- systemd-user-sessions
- systemd-vconsole-setup
- systemd-fstab-generator
- systemd-getty-generator
- systemd-rc-local-generator
- systemd-system-update-generator
- accelerometer
- ata_id
- cdrom_id
- collect
- mtd_probe
- scsi_id
- v4l_id"
-REQUIRED_DIRECTORIES="
- /etc
- /usr/include
- /usr/share/dbus-1
- /usr/share/polkit-1
- /usr/lib/udev
- /usr/lib/tmpfiles.d
-"
diff --git a/remote/modules/systemd/systemd.conf.debian b/remote/modules/systemd/systemd.conf.debian
deleted file mode 100644
index 2768b51c..00000000
--- a/remote/modules/systemd/systemd.conf.debian
+++ /dev/null
@@ -1,13 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- intltool
- gperf
- dbus
- pkg-config
- libcap-dev
- libudev-dev
- libdbus-1-dev
- xsltproc
- libblkid-dev
- libacl1-dev
- libpam-dev
-"
diff --git a/remote/modules/systemd/systemd.conf.opensuse b/remote/modules/systemd/systemd.conf.opensuse
deleted file mode 100644
index 9326a7dc..00000000
--- a/remote/modules/systemd/systemd.conf.opensuse
+++ /dev/null
@@ -1,11 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- intltool
- gperf
- pkg-config
- libcap-devel
- libudev-devel
- dbus-1-devel
- libxslt-tools
- libblkid-devel
- libacl-devel
-"
diff --git a/remote/modules/systemd/systemd.conf.scientific b/remote/modules/systemd/systemd.conf.scientific
deleted file mode 100644
index 54e62b96..00000000
--- a/remote/modules/systemd/systemd.conf.scientific
+++ /dev/null
@@ -1,37 +0,0 @@
-REQUIRED_VERSION="systemd-204"
-REQUIRED_URL="http://www.freedesktop.org/software/systemd/${REQUIRED_VERSION}.tar.xz"
-
-REQUIRED_LIBKMOD_VERSION="kmod-12"
-REQUIRED_LIBKMOD_URL="http://www.kernel.org/pub/linux/utils/kernel/kmod/${REQUIRED_LIBKMOD_VERSION}.tar.gz"
-
-REQUIRED_UTILLINUX_VERSION="util-linux-2.23"
-REQUIRED_UTILLINUX_URL="ftp://ftp.kernel.org/pub/linux/utils/util-linux/v${REQUIRED_UTILLINUX_VERSION}/util-linux-${REQUIRED_UTILLINUX_VERSION}.tar.xz"
-
-REQUIRED_M4_VERSION="m4-1.4.16"
-REQUIRED_M4_URL="ftp://ftp.gnu.org/gnu/m4/${REQUIRED_M4_VERSION}.tar.xz"
-
-REQUIRED_AUTOCONF_VERSION="autoconf-2.69"
-REQUIRED_AUTOCONF_URL="ftp://ftp.gnu.org/gnu/autoconf/${REQUIRED_AUTOCONF_VERSION}.tar.xz"
-
-REQUIRED_AUTOMAKE_VERSION="automake-1.13"
-REQUIRED_AUTOMAKE_URL="ftp://ftp.gnu.org/gnu/automake/${REQUIRED_AUTOMAKE_VERSION}.tar.xz"
-
-REQUIRED_DBUS_VERSION="dbus-1.6.8"
-REQUIRED_DBUS_URL="http://dbus.freedesktop.org/releases/dbus/${REQUIRED_DBUS_VERSION}.tar.gz"
-
-
-
-REQUIRED_INSTALLED_PACKAGES="
- intltool
- gperf
- pkgconfig
- libcap-devel
- libudev-devel
- dbus-devel
- libxslt
- libblkid-devel
- libacl-devel
- pam-devel
- glib2-devel
- expat-devel
-"
diff --git a/remote/modules/systemd/systemd.conf.ubuntu b/remote/modules/systemd/systemd.conf.ubuntu
deleted file mode 100644
index 2768b51c..00000000
--- a/remote/modules/systemd/systemd.conf.ubuntu
+++ /dev/null
@@ -1,13 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- intltool
- gperf
- dbus
- pkg-config
- libcap-dev
- libudev-dev
- libdbus-1-dev
- xsltproc
- libblkid-dev
- libacl1-dev
- libpam-dev
-"
diff --git a/remote/modules/udisks/udisks.build b/remote/modules/udisks/udisks.build
deleted file mode 100644
index ab9df016..00000000
--- a/remote/modules/udisks/udisks.build
+++ /dev/null
@@ -1,53 +0,0 @@
-
-fetch_source () {
- :
-}
-
-build () {
- COPYLIST="list_dpkg_output"
- rm -f "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "$MODULE_BUILD_DIR"
- if [ -d "$MODULE_BUILD_DIR/lib/udev" ]; then
- cp -a "$MODULE_BUILD_DIR/lib/udev" "$MODULE_BUILD_DIR/usr/lib/" || perror "Could not move /lib/udev to /usr/lib/udev"
- fi
- mkdir -p "$MODULE_BUILD_DIR/etc/systemd/system/basic.target.wants" "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services"
- local FOUND=no
- local BINARY=$(find "$MODULE_BUILD_DIR" -name udisksd -executable | head -n 1)
- [ -z "$BINARY" ] && BINARY=$(find "$MODULE_BUILD_DIR" -name udisks2d -executable | head -n 1)
- [ -z "$BINARY" ] && BINARY=$(find "$MODULE_BUILD_DIR" -name udisksd2 -executable | head -n 1)
- VER=none
- if [ -n "$BINARY" ]; then
- VER=udisks
- [[ "$BINARY" == *udisks2* || -d "$MODULE_BUILD_DIR/usr/lib/udisks2" ]] && VER=udisks2
- create_udisks_service "$VER" "$BINARY"
- FOUND=yes
- fi
- if [ "$VER" != "udisks" ]; then
- BINARY=$(find "$MODULE_BUILD_DIR" -name udisks-daemon -executable | head -n 1)
- [ "$VER" == "none" -a -z "$BINARY" ] && perror "Could not determine the udisks(1/2) daemon binary from inspecting $MODULE_BUILD_DIR"
- [ -n "$BINARY" ] && create_udisks_service "udisks" "$BINARY"
- fi
-}
-
-post_copy () {
- :
-}
-
-create_udisks_service () {
- [ $# -ne 2 ] && perror "Call create_udisks_service with TWO params!"
- local BINARY="/${2#$MODULE_BUILD_DIR}"
- if [ "$1" == "udisks2" ]; then
- # assume udisks v2
- sed "s,%UDISKSD%,$BINARY,g" templates/udisks2.systemd.service > "$MODULE_BUILD_DIR/etc/systemd/system/udisks2.service" || perror "Error creating systemd service for udisks2 $BINARY"
- sed "s,%UDISKSD%,$BINARY,g" templates/udisks2.dbus.service > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.UDisks2.service" || perror "Error creating dbus service for udisks2"
- ln -s "../udisks2.service" "$MODULE_BUILD_DIR/etc/systemd/system/basic.target.wants/udisks2.service"
- else
- # assume udisks v1
- sed "s,%UDISKSD%,$BINARY,g" templates/udisks.systemd.service > "$MODULE_BUILD_DIR/etc/systemd/system/udisks.service" || perror "Error creating systemd service for udisks $BINARY"
- sed "s,%UDISKSD%,$BINARY,g" templates/udisks.dbus.service > "$MODULE_BUILD_DIR/usr/share/dbus-1/system-services/org.freedesktop.UDisks.service" || perror "Error creating dbus service for udisks"
- ln -s "../udisks.service" "$MODULE_BUILD_DIR/etc/systemd/system/basic.target.wants/udisks.service"
- fi
-}
-
diff --git a/remote/modules/udisks/udisks.conf b/remote/modules/udisks/udisks.conf
deleted file mode 100644
index 8ef6f29c..00000000
--- a/remote/modules/udisks/udisks.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-# This module is a little special, as it's supposed to be compatible
-# with udisks 1 and 2. suse 12.3 and ubuntu 13.04 use udisks2, ubuntu 12.04
-# uses udisks1. The build script looks a little hacky
-REQUIRED_DIRECTORIES="
- /etc/dbus-1
- /usr/lib/udev/rules.d
- /usr/share/dbus-1
- /usr/share/polkit-1
- /etc/systemd/system
-"
-REQUIRED_BINARIES="
- udisksd
-"
-
diff --git a/remote/modules/udisks/udisks.conf.debian b/remote/modules/udisks/udisks.conf.debian
deleted file mode 100644
index c32a5f24..00000000
--- a/remote/modules/udisks/udisks.conf.debian
+++ /dev/null
@@ -1,32 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- udisks
-"
-REQUIRED_CONTENT_PACKAGES="
- udisks
-"
-# Override: Only udisks1 is available
-REQUIRED_BINARIES="
- udisks-helper-linux-md-check
- udisks-daemon
- udisks-helper-change-luks-password
- udisks-helper-create-partition-table
- udisks-helper-mdadm-expand
- udisks-helper-drive-benchmark
- udisks-helper-drive-detach
- udisks-helper-mkfs
- udisks-helper-ata-smart-collect
- udisks-helper-change-filesystem-label
- udisks-helper-modify-partition
- udisks-helper-delete-partition
- udisks-helper-create-partition
- udisks-helper-fstab-mounter
- udisks-helper-linux-md-remove-component
- udisks-helper-ata-smart-selftest
- udisks-helper-drive-poll
- udisks-dm-export
- udisks-lvm-pv-export
- udisks-part-id
- udisks-probe-ata-smart
- udisks-probe-sas-expander
-"
-
diff --git a/remote/modules/udisks/udisks.conf.opensuse b/remote/modules/udisks/udisks.conf.opensuse
deleted file mode 100644
index abf12be7..00000000
--- a/remote/modules/udisks/udisks.conf.opensuse
+++ /dev/null
@@ -1,7 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- udisks2
-"
-REQUIRED_CONTENT_PACKAGES="
- udisks2
-"
-
diff --git a/remote/modules/udisks/udisks.conf.ubuntu b/remote/modules/udisks/udisks.conf.ubuntu
deleted file mode 100644
index 3d127619..00000000
--- a/remote/modules/udisks/udisks.conf.ubuntu
+++ /dev/null
@@ -1,34 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- udisks
- udisks2
-"
-REQUIRED_CONTENT_PACKAGES="
- udisks
- udisks2
-"
-# Add these for udisks 1 (required by kde)
-REQUIRED_BINARIES+="
- udisks-helper-linux-md-check
- udisks-daemon
- udisks-helper-change-luks-password
- udisks-helper-create-partition-table
- udisks-helper-mdadm-expand
- udisks-helper-drive-benchmark
- udisks-helper-drive-detach
- udisks-helper-mkfs
- udisks-helper-ata-smart-collect
- udisks-helper-change-filesystem-label
- udisks-helper-modify-partition
- udisks-helper-delete-partition
- udisks-helper-create-partition
- udisks-helper-fstab-mounter
- udisks-helper-linux-md-remove-component
- udisks-helper-ata-smart-selftest
- udisks-helper-drive-poll
- udisks-dm-export
- udisks-lvm-pv-export
- udisks-part-id
- udisks-probe-ata-smart
- udisks-probe-sas-expander
-"
-
diff --git a/remote/modules/udisks/udisks.conf.ubuntu.12 b/remote/modules/udisks/udisks.conf.ubuntu.12
deleted file mode 100644
index b962ec65..00000000
--- a/remote/modules/udisks/udisks.conf.ubuntu.12
+++ /dev/null
@@ -1,31 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- udisks
-"
-REQUIRED_CONTENT_PACKAGES="
- udisks
-"
-REQUIRED_BINARIES="
- udisks-helper-linux-md-check
- udisks-daemon
- udisks-helper-change-luks-password
- udisks-helper-create-partition-table
- udisks-helper-mdadm-expand
- udisks-helper-drive-benchmark
- udisks-helper-drive-detach
- udisks-helper-mkfs
- udisks-helper-ata-smart-collect
- udisks-helper-change-filesystem-label
- udisks-helper-modify-partition
- udisks-helper-delete-partition
- udisks-helper-create-partition
- udisks-helper-fstab-mounter
- udisks-helper-linux-md-remove-component
- udisks-helper-ata-smart-selftest
- udisks-helper-drive-poll
- udisks-dm-export
- udisks-lvm-pv-export
- udisks-part-id
- udisks-probe-ata-smart
- udisks-probe-sas-expander
-"
-
diff --git a/remote/modules/vbox/vbox.build b/remote/modules/vbox/vbox.build
deleted file mode 100644
index f095b4e2..00000000
--- a/remote/modules/vbox/vbox.build
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/bin/bash
-
-patch_vbox_scripts() {
- # patching some virtualbox utility scripts to include openslx-busybox paths. Strange sed-ing, as the added
- # openslx paths need to be at the end of PATH to not impede with system binaries to not impede with system binaries
- pinfo "Patching virtual box scripts to include openslx (busybox)-paths ..."
- # vboxmanage is a link to VBox; will get unlinked. Original link will be vboxmanage.original
- for i in virtualbox vboxmanage vboxheadless; do
- pinfo "Patching virtual box script $i ..."
- SCRIPTPATH=$(grep -m 1 PATH "${MODULE_BUILD_DIR}/usr/bin/$i"|sed 's/"//g') # assume first hit is real path
- sed -i "-i.original" "/^PATH=/c ${SCRIPTPATH}:/opt/openslx/bin:/opt/openslx/usr/bin:/opt/openslx/sbin"\
- "${MODULE_BUILD_DIR}/usr/bin/$i" # append openslx paths
- done
-}
-
-extract_extpack() {
- pinfo "Unpacking Extension Pack ..."
- mkdir -p ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
- cp ${MODULE_DIR}/src/vbox/extpack/[EP][xX][tE]* ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
- if [ x${AMD64_X86} == "xamd64" ]; then
- pinfo "Unpacking 64bit branch of Extension Pack ..."
- cp -r ${MODULE_DIR}/src/vbox/extpack/linux.amd64 ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
- else # then we assume 32bit x86...
- pinfo "Unpacking32bit branch of Extension Pack ..."
- cp -r ${MODULE_DIR}/src/vbox/extpack/linux.x86 ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
- fi
-}
-
-build_modules() {
- pinfo "Recompiling VirtualBox kernel modules ..."
- # Set some variables to use/patch VBox scripts
- local MODULE_SRC="${MODULE_BUILD_DIR}/usr/share/virtualbox/src/vboxhost"
- local BUILDINTMP="$MODULE_SRC/build_in_tmp"
- local BUILDSUBDIR="modules"
-
- # Some Vars for VBs kernel module makefiles
- MODULE_DIR_ALT="$MODULE_DIR" # save usual MODULE_DIR
- export KERN_DIR="${MODULE_DIR}/../kernel/build/lib/modules/$(ls ${MODULE_DIR}/../kernel/build/lib/modules/)/build/"
- # export MODULE_DIR="${MODULE_DIR}/../kernel/build/lib/modules/$(ls ${MODULE_DIR}/../kernel/build/lib/modules/)/kernel/misc"
- export MODULE_DIR="${MODULE_DIR}/build/lib/modules/vbox"
-
- pinfo "Recompiling VirtualBox kernel module vboxdrv ..."
- if ! $BUILDINTMP \
- --save-module-symvers /tmp/vboxdrv-Module.symvers \
- --module-source "$MODULE_SRC/vboxdrv" \
- --no-print-directory install;
- then
- perror "[vbox]: Error compiling VirtualBox kernel module vboxdrv"
- fi
- pinfo "Recompiling VirtualBox kernel module vboxnetflt ..."
- if ! $BUILDINTMP \
- --use-module-symvers /tmp/vboxdrv-Module.symvers \
- --module-source "$MODULE_SRC/vboxnetflt" \
- --no-print-directory install;
- then
- perror "[vbox]: Error compiling VirtualBox kernel module vboxnetflt"
- fi
- pinfo "Recompiling VirtualBox kernel module vboxnetadp ..."
- if ! $BUILDINTMP \
- --use-module-symvers /tmp/vboxdrv-Module.symvers \
- --module-source "$MODULE_SRC/vboxnetadp" \
- --no-print-directory install;
- then
- perror "[vbox]: Error compiling VirtualBox kernel module vboxnetadp"
- fi
- pinfo "Recompiling VirtualBox kernel module vboxpci ..."
- if ! $BUILDINTMP \
- --use-module-symvers /tmp/vboxdrv-Module.symvers \
- --module-source "$MODULE_SRC/vboxpci" \
- --no-print-directory install;
- then
- perror "[vbox]: Error compiling VirtualBox kernel module vboxpci"
- fi
- pinfo "Compiled successfully the VirtualBox kernel modules."
- export MODULE_DIR="$MODULE_DIR_ALT" # re-set MODULE_DIR
-}
-
-
-fetch_source() {
- mkdir -p "src/vbox"
- cd src/vbox
- # pinfo "Downloading $REQUIRED_VBOXBASEURL"
- download "$REQUIRED_VBOXBASEURL"
- # pinfo "Downloading $REQUIRED_VBOXEXTURL"
- download_untar "$REQUIRED_VBOXEXTURL" "extpack" "vbox_extpack.tar.gz"
- cd -
-}
-
-
-build() {
- case "$PACKET_HANDLER" in
- rpm)
- pinfo "Unpacking rpm ..."
- cd build || perror "Cannot cd to build directory!"
- rpm2cpio ../src/vbox/$(basename "$REQUIRED_VBOXBASEURL")|cpio -idmv || perror "Could not unpack rpm-archive!"
- # it seems that sometimes directories from rpm will be created with 700-permissions,
- # if that directory is not explicitly mentioned to create. So eg. usr, etc will carry the
- # permissions 700, which is no fun. So we search for these directories and correct them.
- find . -type d -perm 700 -exec chmod 755 {} \;
- ;;
- dpkg )
- pinfo "Unpacking deb ..."
- cd build || perror "Cannot cd to build directory!"
- dpkg -x ../src/vbox/$(basename "$REQUIRED_VBOXBASEURL") . || perror "Could not unpack deb-archive!"
- # VirtualBox needs to be suid-root:
- for i in VBoxHeadless VBoxNetAdpCtl VBoxNetDHCP VBoxSDL VBoxVolInfo VirtualBox; do
- chmod u+s ${MODULE_BUILD_DIR}/usr/lib/virtualbox/$i || pwarning "(Debian/Ubuntu) Could not suid $i executable!"
- done
- ;;
- *) perror "Unknown Distribution: $SYS_DISTRIBUTION - Please specify its packet manager in remote/setup_target" ;;
- esac
-
- build_modules
- patch_vbox_scripts
- extract_extpack
-
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-}
-
-post_copy() {
- # clean a bit, as sometimes there are residual files in /tmp/vbox.*/
- rm -rf /tmp/vbox.*/
-}
-
diff --git a/remote/modules/vbox/vbox.conf b/remote/modules/vbox/vbox.conf
deleted file mode 100644
index 29067791..00000000
--- a/remote/modules/vbox/vbox.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-REQUIRED_VBOXEXTURL="http://download.virtualbox.org/virtualbox/4.2.16/Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack"
-
-# Just for local usage, development:
-# REQUIRED_VBOXEXTURL="http://132.230.8.69/Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack"
-
-REQUIRED_DIRECTORIES="
- /etc
- /lib
- /usr
-"
-# REQUIRED_LDD_BLACKLIST: Keep in minde the leading '\|'!
-REQUIRED_LDD_BLACKLIST="\|VBoxVMM"
diff --git a/remote/modules/vbox/vbox.conf.opensuse b/remote/modules/vbox/vbox.conf.opensuse
deleted file mode 100644
index e69de29b..00000000
diff --git a/remote/modules/vbox/vbox.conf.opensuse.12.3 b/remote/modules/vbox/vbox.conf.opensuse.12.3
deleted file mode 100644
index ae42e8aa..00000000
--- a/remote/modules/vbox/vbox.conf.opensuse.12.3
+++ /dev/null
@@ -1,19 +0,0 @@
-REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/VirtualBox-4.2-4.2.16_86992_openSUSE114-1.${X86_64_I586}.rpm"
-
-# Just for local usage, development:
-# REQUIRED_VBOXBASEURL="http://132.230.8.69/VirtualBox-4.2-4.2.16_86992_openSUSE114-1.${X86_64_I586}.rpm"
-
-REQUIRED_CONTENT_PACKAGES="
- libSDL-1_2-0
- libpng12-0
-"
-
-REQUIRED_INSTALLED_PACKAGES="
- libSDL-1_2-0
- libpng12-0
-"
-
-REQUIRED_LIBRARIES="
- libSDL-1.2
- libpng12
-"
diff --git a/remote/modules/vbox/vbox.conf.ubuntu b/remote/modules/vbox/vbox.conf.ubuntu
deleted file mode 100644
index 4efbd571..00000000
--- a/remote/modules/vbox/vbox.conf.ubuntu
+++ /dev/null
@@ -1,18 +0,0 @@
-REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb"
-
-# Just for local usage, development:
-# REQUIRED_VBOXBASEURL="http://132.230.8.69/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb"
-
-REQUIRED_CONTENT_PACKAGES="
- libsdl1.2debian
- libpng12-0
-"
-
-REQUIRED_INSTALLED_PACKAGES="
- libsdl1.2debian
- libpng12-0
-"
-
-REQUIRED_LIBRARIES="
- libpng12
-"
diff --git a/remote/modules/vbox/vbox.conf.ubuntu.13.04 b/remote/modules/vbox/vbox.conf.ubuntu.13.04
deleted file mode 100644
index fbef8447..00000000
--- a/remote/modules/vbox/vbox.conf.ubuntu.13.04
+++ /dev/null
@@ -1,18 +0,0 @@
-REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/virtualbox-4.2_4.2.16-86992~Ubuntu~raring_${AMD64_I386}.deb"
-
-# Just for local usage, development:
-# REQUIRED_VBOXBASEURL="http://132.230.8.69/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb"
-
-REQUIRED_CONTENT_PACKAGES="
- libsdl1.2debian
- libpng12-0
-"
-
-REQUIRED_INSTALLED_PACKAGES="
- libsdl1.2debian
- libpng12-0
-"
-
-REQUIRED_LIBRARIES="
- libpng12
-"
diff --git a/remote/modules/vmchooser/vmchooser.build b/remote/modules/vmchooser/vmchooser.build
deleted file mode 100644
index eb0a2d48..00000000
--- a/remote/modules/vmchooser/vmchooser.build
+++ /dev/null
@@ -1,36 +0,0 @@
-
-fetch_source() {
- git clone "${REQUIRED_GIT}" src
-}
-
-build() {
- local SRCDIR="${MODULE_DIR}/src/"
-
- [ ! -d "${MODULE_BUILD_DIR}/${REQUIRED_PREFIX}" ] && mkdir -p "${MODULE_BUILD_DIR}/${REQUIRED_PREFIX}"
- cd "${MODULE_BUILD_DIR}/${REQUIRED_PREFIX}"
-
- # patch globals.cpp and globals.h to use standardised paths /opt/openslx/...
- if ! grep -q VMCHOOSER_SCRIPTS_PATH "$SRCDIR/src/globals.h"; then
- sed -i 's/^#define VMCHOOSER_BIN_PATH.*/#define VMCHOOSER_BIN_PATH "\/opt\/openslx\/bin"/g' "${SRCDIR}"/src/globals.h
- sed -i 's/^#define VMCHOOSER_ETC_BASE_PATH.*/#define VMCHOOSER_ETC_BASE_PATH "\/opt\/openslx\/vmchooser\/config"/g' "${SRCDIR}"/src/globals.h
- sed -i 's/^#define VMCHOOSER_BIN_PATH.*/#define VMCHOOSER_BIN_PATH "\/opt\/openslx\/bin"\n#define VMCHOOSER_SCRIPTS_PATH "\/opt\/openslx\/scripts"/g' "${SRCDIR}"/src/globals.h
- sed -i 's/^#define VMCHOOSER_THEME_BASE.*/#define VMCHOOSER_THEME_BASE "\/opt\/openslx\/vmchooser\/themes"/g' "${SRCDIR}"/src/globals.h
-
- sed -i 's/^QString binPath(VMCHOOSER_BIN_PATH);/QString binPath(VMCHOOSER_BIN_PATH);\nQString scriptsPath(VMCHOOSER_SCRIPTS_PATH);/g' "${SRCDIR}"/src/globals.cpp
- sed -i 's/^QString runVmScript(binPath + "\/run-virt.sh");/QString runVmScript(scriptsPath + "\/vmchooser-run_virt");/g' "${SRCDIR}"/src/globals.cpp
- sed -i 's/^QString filterScript(binPath + "\/xmlfilter.sh");/QString filterScript(scriptsPath + "\/vmchooser-xml_filter");/g' "${SRCDIR}"/src/globals.cpp
- sed -i 's/^#define VMCHOOSER_VMPATH.*/#define VMCHOOSER_VMPATH "\/mnt\/vmstore"/g' "${SRCDIR}"/src/globals.h
- fi
-
- pinfo "Running cmake"
- ln -sf qt4.conf /usr/share/qtchooser/default.conf
- cmake "$SRCDIR" || perror "'cmake $SRCDIR' failed."
- make || perror "'make' failed."
-
- cd - &> /dev/null
-}
-
-post_copy() {
- :
-}
-
diff --git a/remote/modules/vmchooser/vmchooser.conf b/remote/modules/vmchooser/vmchooser.conf
deleted file mode 100644
index 686eb8bf..00000000
--- a/remote/modules/vmchooser/vmchooser.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-REQUIRED_GIT="git://git.openslx.org/openslx/tools/vmchooser.git"
-REQUIRED_PREFIX="/opt/openslx/bin"
-REQUIRED_BINARIES="vmchooser"
diff --git a/remote/modules/vmchooser/vmchooser.conf.debian b/remote/modules/vmchooser/vmchooser.conf.debian
deleted file mode 100644
index 2953ac63..00000000
--- a/remote/modules/vmchooser/vmchooser.conf.debian
+++ /dev/null
@@ -1,4 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- cmake
- libqt4-dev
-"
diff --git a/remote/modules/vmchooser/vmchooser.conf.opensuse b/remote/modules/vmchooser/vmchooser.conf.opensuse
deleted file mode 100644
index 75cb7dd6..00000000
--- a/remote/modules/vmchooser/vmchooser.conf.opensuse
+++ /dev/null
@@ -1,4 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- cmake
- libqt4-devel
-"
diff --git a/remote/modules/vmchooser/vmchooser.conf.ubuntu b/remote/modules/vmchooser/vmchooser.conf.ubuntu
deleted file mode 100644
index 2953ac63..00000000
--- a/remote/modules/vmchooser/vmchooser.conf.ubuntu
+++ /dev/null
@@ -1,4 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- cmake
- libqt4-dev
-"
diff --git a/remote/modules/vmware/vmware.build b/remote/modules/vmware/vmware.build
deleted file mode 100644
index 98ee2b8d..00000000
--- a/remote/modules/vmware/vmware.build
+++ /dev/null
@@ -1,65 +0,0 @@
-fetch_source() {
- [ -e "${MODULE_DIR}/src" -a -d "${MODULE_DIR}/src" ] && \
- { rm -r "${MODULE_DIR}/src" || perror "Could not delete old src dir."; }
- mkdir -p "${MODULE_DIR}/src" || perror "Could not mkdir src"
- cd "${MODULE_DIR}/src" || perror "cd fail."
-
- # Get directory listing
- wget -O "index.html" "$REQUIRED_DOWNLOAD_BASE" || perror "Could not download vmware dir index"
-
- VMWARE_BUNDLE_FILE=$(grep -E -o -i "href=\"VMware-$REQUIRED_TYPE-[^\"]+[\._\-]$ARCHREGEX[\._\-][^\"]+\"" "index.html" | head -n 1 | awk -F '"' '{printf $2}')
- [ -z "$VMWARE_BUNDLE_FILE" ] && perror "Could not determine vmware $REQUIRED_TYPE bundle file for current arch from $MODULE_DIR/src/index.html"
- # Download file
- wget -O "$VMWARE_BUNDLE_FILE" "$REQUIRED_DOWNLOAD_BASE/$VMWARE_BUNDLE_FILE" || perror "Could not download $VMWARE_BUNDLE_FILE from $REQUIRED_DOWNLOAD_BASE"
- if [[ "$VMWARE_BUNDLE_FILE" == *.tar ]]; then
- tar -x "${VMWARE_BUNDLE_FILE%.tar}" -f "$VMWARE_BUNDLE_FILE" || perror "Could not untar downloaded $VMWARE_BUNDLE_FILE"
- unlink "$VMWARE_BUNDLE_FILE"
- VMWARE_BUNDLE_FILE="${VMWARE_BUNDLE_FILE%.tar}"
- fi
-
- cd - >/dev/null
-}
-
-build() {
- local DELETE_FILES
- DELETE_FILES=$(for LINE in $REQUIRED_VMWARE_DELETIONS;do echo rm -rf $LINE; done)
-
- # prepare the build directory with the files needed during the chroot
- cp "${MODULE_DIR}/src/$VMWARE_BUNDLE_FILE" "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
- cp -r "${MODULE_DIR}/patches" "${MODULE_BUILD_DIR}"
-
- # sanity check to see if KERNEL_HEADERS_PATH is set and exists
- [ -z "${KERNEL_HEADERS_PATH}" -o ! -e "${KERNEL_HEADERS_PATH}" ] && perror "KERNEL_HEADERS_PATH ('"${KERNEL_HEADERS_PATH}"') not found. Was the kernel module built?"
-
- pinfo "Installing vmware per chroot..."
- chroot_run "${MODULE_BUILD_DIR}" <<-EOF
- # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
- $DELETE_FILES
- yes | sh /"${VMWARE_BUNDLE_FILE}" --eulas-agreed --console --required
- vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmnet
- vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmmon
- # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot
- EOF
-
- # cleanup unneeded files
- rm -rf -- "${MODULE_BUILD_DIR}/etc/vmware-installer"
- rm -rf -- "${MODULE_BUILD_DIR}/usr/lib/vmware-installer"
- rm -rf -- "${MODULE_BUILD_DIR}/usr/lib/vmware-ovftool"
- unlink "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE"
-
-}
-
-post_copy() {
- # FIXME: gconftool is copied without dependencies
- tarcopy "$(find /usr/lib/ /usr/lib64 -name gconv -type d)" "$TARGET_BUILD_DIR"
-
- # Update Icon cache for vmplayer
- gtk-update-icon-cache-3.0 "${TARGET_BUILD_DIR}/usr/share/icons/hicolor/" || pwarning "update-icon-cache-3.0 failed."
-
- # fix vmware-usbarbitrator bug
- date +'%Y.%m.%d' >"${TARGET_BUILD_DIR}/etc/arch-release"
-
- mkdir -p "$TARGET_BUILD_DIR/lib/modules/vmware/"
- cp "${MODULE_BUILD_DIR}/lib/modules/$SYS_UTS_RELEASE/vmplayer/"* "$TARGET_BUILD_DIR/lib/modules/vmware/" || perror "Could not cp vmware modules to target!"
-}
-
diff --git a/remote/modules/vmware/vmware.conf b/remote/modules/vmware/vmware.conf
deleted file mode 100644
index 017d1d5b..00000000
--- a/remote/modules/vmware/vmware.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-REQUIRED_DOWNLOAD_BASE="http://softwareupdate.vmware.com/cds/vmw-desktop/ws/10.0.1/1379776/linux/core/"
-REQUIRED_TYPE="workstation"
-REQUIRED_MODULES="kernel"
-REQUIRED_DIRECTORIES="
- /etc/vmware
- /usr/sbin
- /usr/lib/vmware/bin
- /usr/lib/vmware/hostd
- /usr/lib/vmware/icu
- /usr/lib/vmware/lib
- /usr/lib/vmware/libconf
- /usr/lib/vmware/licenses
- /usr/lib/vmware/resources
- /usr/lib/vmware/scripts
- /usr/lib/vmware/share
- /usr/lib/vmware/xkeymap
-"
-REQUIRED_FILES="
- /usr/lib/vmware/config
- /usr/bin/vmware-usbarbitrator
-"
-REQUIRED_BINARIES="
- vmnet-netifup
-"
diff --git a/remote/modules/vmware/vmware.conf.ubuntu b/remote/modules/vmware/vmware.conf.ubuntu
deleted file mode 100644
index c75ee906..00000000
--- a/remote/modules/vmware/vmware.conf.ubuntu
+++ /dev/null
@@ -1,136 +0,0 @@
-REQUIRED_VMWARE_DELETIONS="
- /var/lib/vmware
- /etc/vmware-vix
- /etc/rc0.d/K08vmware
- /etc/rc0.d/K06vmware-workstation-server
- /etc/rc0.d/K06vmamqpd
- /etc/pam.d/vmware-authd
- /etc/rc3.d/S19vmware
- /etc/rc3.d/S55vmware-workstation-server
- /etc/rc3.d/S25vmamqpd
- /etc/rc3.d/K08vmware-USBArbitrator
- /etc/rc3.d/S50vmware-USBArbitrator
- /etc/rc5.d/K08vmware-USBArbitrator
- /etc/rc5.d/S50vmware-USBArbitrator
- /etc/rc2.d/S19vmware
- /etc/rc2.d/S55vmware-workstation-server
- /etc/rc2.d/S25vmamqpd
- /etc/rc2.d/K08vmware-USBArbitrator
- /etc/rc2.d/S50vmware-USBArbitrator
- /etc/xdg/menus/applications-merged
- /etc/rc6.d/K08vmware
- /etc/rc6.d/K06vmware-workstation-server
- /etc/rc6.d/K06vmamqpd
- /etc/rc4.d/S19vmware
- /etc/rc4.d/S55vmware-workstation-server
- /etc/rc4.d/S25vmamqpd
- /etc/init.d/vmamqpd
- /etc/init.d/vmware-USBArbitrator
- /etc/init.d/vmware-workstation-server
- /etc/init.d/vmware
- /etc/thnuclnt
- /etc/vmware-installer
- /etc/cups/thnuclnt.convs
- /etc/cups/thnuclnt.types
- /etc/vmware/netmap.conf
- /etc/vmware/icu
- /etc/vmware/hostd
- /etc/vmware/installer.sh
- /etc/vmware/bootstrap
- /etc/vmware/ssl
- /etc/vmware/config
- /etc/vmware/locations
- /etc/modprobe.d/vmware-fuse.conf
- /lib/modules/3.11.0-13-generic/misc/vmnet.ko
- /lib/modules/3.11.0-13-generic/misc/vmmon.ko
- /usr/share/mime/packages/vmware-player.xml
- /usr/share/applications/vmware-workstation.desktop
- /usr/share/applications/vmware-player.desktop
- /usr/share/applications/vmware-netcfg.desktop
- /usr/share/desktop-directories/vmware-ace-vms.directory
- /usr/share/man/man1/vmware.1.gz
- /usr/share/doc/vmware-vix
- /usr/share/doc/vmware-workstation
- /usr/share/doc/vmware-player
- /usr/share/icons/hicolor/32x32/mimetypes/application-certificate.png
- /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-easter-egg.png
- /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-team.png
- /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm-legacy.png
- /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm-clone.png
- /usr/share/icons/hicolor/32x32/mimetypes/application-x-vmware-vm.png
- /usr/share/icons/hicolor/32x32/apps/vmware-player.png
- /usr/share/icons/hicolor/32x32/apps/vmware-workstation.png
- /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vmfoundry.png
- /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vmdisk.png
- /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-easter-egg.png
- /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-team.png
- /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm-legacy.png
- /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm-clone.png
- /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-snapshot.png
- /usr/share/icons/hicolor/48x48/mimetypes/application-x-vmware-vm.png
- /usr/share/icons/hicolor/48x48/apps/vmware-player.png
- /usr/share/icons/hicolor/48x48/apps/vmware-workstation.png
- /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-easter-egg.svg
- /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-team.svg
- /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm-clone.svg
- /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-snapshot.svg
- /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm-legacy.svg
- /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vmfoundry.svg
- /usr/share/icons/hicolor/scalable/mimetypes/application-certificate.svg
- /usr/share/icons/hicolor/scalable/mimetypes/application-x-vmware-vm.svg
- /usr/share/icons/hicolor/scalable/apps/vmware-workstation.svg
- /usr/share/icons/hicolor/16x16/mimetypes/application-certificate.png
- /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-easter-egg.png
- /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-team.png
- /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm-legacy.png
- /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm-clone.png
- /usr/share/icons/hicolor/16x16/mimetypes/application-x-vmware-vm.png
- /usr/share/icons/hicolor/16x16/apps/vmware-player.png
- /usr/share/icons/hicolor/16x16/apps/vmware-netcfg.png
- /usr/share/icons/hicolor/16x16/apps/vmware-workstation.png
- /usr/share/icons/hicolor/24x24/mimetypes
- /usr/share/icons/hicolor/24x24/apps/vmware-player.png
- /usr/share/icons/hicolor/24x24/apps/vmware-netcfg.png
- /usr/share/icons/hicolor/24x24/apps/vmware-workstation.png
- /usr/bin/vmnet-dhcpd
- /usr/bin/vmware-unity-helper
- /usr/bin/ovftool
- /usr/bin/vmrun
- /usr/bin/vmware-vim-cmd
- /usr/bin/vmware-wssc-adminTool
- /usr/bin/vmnet-bridge
- /usr/bin/vmplayer
- /usr/bin/vmnet-sniffer
- /usr/bin/vmss2core
- /usr/bin/vmware-usbarbitrator
- /usr/bin/vmware-netcfg
- /usr/bin/vmware-modconfig
- /usr/bin/vmware-tray
- /usr/bin/vmware-mount
- /usr/bin/vm-support
- /usr/bin/vmware-vdiskmanager
- /usr/bin/vmware-license-enter.sh
- /usr/bin/vmware-license-check.sh
- /usr/bin/vmnet-natd
- /usr/bin/vmware-uninstall
- /usr/bin/vmware-vprobe
- /usr/bin/vmware-fuseUI
- /usr/bin/vmware-installer
- /usr/bin/vmware-ping
- /usr/bin/vmware-gksu
- /usr/bin/vmnet-netifup
- /usr/bin/vmware-networks
- /usr/bin/vmware
- /usr/bin/vmware-hostd
- /usr/include/vmware-vix
- /usr/lib/vmware-vix
- /usr/lib/vmware-ovftool
- /usr/lib/vmware-installer
- /usr/lib/libvixAllProducts.so
- /usr/lib/cups/filter/thnucups
- /usr/lib/diskLibWrapper.so
- /usr/lib/vmware
- /usr/local/share/applications
- /usr/sbin/vmware-authdlauncher
- /usr/sbin/vmware-authd
-"
diff --git a/remote/modules/xorg/xorg.build b/remote/modules/xorg/xorg.build
deleted file mode 100644
index 16e0bb5b..00000000
--- a/remote/modules/xorg/xorg.build
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-
-fetch_source() {
- :
-}
-
-build() {
- COPYLIST="list_dpkg_output"
- [ -e "$COPYLIST" ] && rm "$COPYLIST"
-
- list_packet_files >> "$COPYLIST"
- tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"
-
- # copy udev rules to correct location
- [ -d "${MODULE_BUILD_DIR}/lib/udev" ] && mv "${MODULE_BUILD_DIR}/lib/udev" "${MODULE_BUILD_DIR}/usr/lib/"
-}
-
-post_copy() {
- mkdir -p "${TARGET_BUILD_DIR}/etc/X11"
- [ ! -e ${TARGET_BUILD_DIR}/etc/X11/X ] && ln -s /usr/bin/Xorg ${TARGET_BUILD_DIR}/etc/X11/X
-}
-
diff --git a/remote/modules/xorg/xorg.conf b/remote/modules/xorg/xorg.conf
deleted file mode 100644
index b99f0e2a..00000000
--- a/remote/modules/xorg/xorg.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-REQUIRED_BINARIES="
- X
- Xorg
- gtf
- cvt
- setxkbmap
- xkbvleds
- xkbprint
- xkbwatch
- xkbbell
- xkbevd
- xrandr
- xkbcomp
- vmmouse_detect
-"
-REQUIRED_DIRECTORIES="
- /usr/share/X11
-"
-REQUIRED_FILES=""
diff --git a/remote/modules/xorg/xorg.conf.debian b/remote/modules/xorg/xorg.conf.debian
deleted file mode 100644
index 2cc9d6f1..00000000
--- a/remote/modules/xorg/xorg.conf.debian
+++ /dev/null
@@ -1,40 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
-"
-REQUIRED_CONTENT_PACKAGES="
- xserver-xorg$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-core$UBUNTU_XORG_PKG_SUFFIX
- libgl1-mesa-dri$UBUNTU_XORG_PKG_SUFFIX
- libgl1-mesa-glx$UBUNTU_XORG_PKG_SUFFIX
- xkb-data
- x11-xkb-utils
- x11-xserver-utils
- xserver-xorg-input-evdev$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-input-mouse$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-input-vmmouse$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-intel$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-ati$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-vesa$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-mga$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-sis$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-vmware$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-fbdev$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-radeon$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-sisusb$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-nouveau$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-openchrome$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-savage$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-trident$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-mach64$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-qxl$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-siliconmotion$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-cirrus$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-r128$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-neomagic$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-geode$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-s3$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-tdfx$UBUNTU_XORG_PKG_SUFFIX
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib
-"
-REQUIRED_FILES=""
diff --git a/remote/modules/xorg/xorg.conf.opensuse b/remote/modules/xorg/xorg.conf.opensuse
deleted file mode 100644
index 1e6f5ff1..00000000
--- a/remote/modules/xorg/xorg.conf.opensuse
+++ /dev/null
@@ -1,59 +0,0 @@
-# xkbutils, xkbprint, setxkbmap, xkbevd for 64-bit openSuse
-REQUIRED_INSTALLED_PACKAGES="
-"
-REQUIRED_CONTENT_PACKAGES="
- xorg-x11
- xorg-x11-server
- xorg-x11-driver-input
- xorg-x11-driver-video
- xorg-x11-driver-video-nouveau
- xf86-video-vmware
- xf86-video-ati
- xf86-video-nv
- xf86-video-intel
- xf86-video-i128
- xf86-video-geode
- xf86-video-vesa
- xf86-video-fbdev
- xf86-video-modesetting
- xf86-input-vmmouse
- xf86-input-wacom
- xf86-input-evdev
- xf86-input-joystick
- xf86-input-keyboard
- xf86-input-mouse
- xf86-input-synaptics
- xf86-input-void
- xkeyboard-config
- xkbcomp
- dejavu-fonts
- libxcb-glx0
- kdm-branding-openSUSE
- Mesa
- xkbutils
- xkbprint
- setxkbmap
- xkbevd
- libpixman-1-0
- xrandr
- vaapi-intel-driver
-"
-REQUIRED_LIBRARIES="
- libI810XvMC
- libxcb-glx
- libIntelXvMC
- i965_dri
- vmwgfx_dri
- i915_dri
- i965_drv_video
- libpixman-1
-"
-REQUIRED_DIRECTORIES+="
- /usr/bin
- /usr/lib/udev
- /usr/$LIB64/xorg
- /usr/share/fonts
-"
-REQUIRED_FILES="
- /var/adm/fillup-templates/sysconfig.displaymanager-kdm
-"
diff --git a/remote/modules/xorg/xorg.conf.opensuse.13.1 b/remote/modules/xorg/xorg.conf.opensuse.13.1
deleted file mode 100644
index 6199ed15..00000000
--- a/remote/modules/xorg/xorg.conf.opensuse.13.1
+++ /dev/null
@@ -1,95 +0,0 @@
-# xkbutils, xkbprint, setxkbmap, xkbevd for 64-bit openSuse
-REQUIRED_INSTALLED_PACKAGES="
- xorg-x11
- xorg-x11
- xorg-x11-server
- xorg-x11-driver-input
- xorg-x11-driver-video
- xorg-x11-driver-video-nouveau
- xf86-video-vmware
- xf86-video-ati
- xf86-video-nv
- xf86-video-intel
- xf86-video-i128
- xf86-video-geode
- xf86-video-vesa
- xf86-video-fbdev
- xf86-video-modesetting
- xf86-input-vmmouse
- xf86-input-wacom
- xf86-input-evdev
- xf86-input-joystick
- xf86-input-keyboard
- xf86-input-mouse
- xf86-input-synaptics
- xf86-input-void
- xkeyboard-config
- xkbcomp
- dejavu-fonts
- libxcb-glx0
- kdm-branding-openSUSE
- Mesa
- xkbutils
- xkbprint
- setxkbmap
- xkbevd
- libpixman-1-0
- xrandr
- vaapi-intel-driver
-"
-REQUIRED_CONTENT_PACKAGES="
- xorg-x11
- xorg-x11-server
- xorg-x11-driver-input
- xorg-x11-driver-video
- xorg-x11-driver-video-nouveau
- xf86-video-vmware
- xf86-video-ati
- xf86-video-nv
- xf86-video-intel
- xf86-video-i128
- xf86-video-geode
- xf86-video-vesa
- xf86-video-fbdev
- xf86-video-modesetting
- xf86-input-vmmouse
- xf86-input-wacom
- xf86-input-evdev
- xf86-input-joystick
- xf86-input-keyboard
- xf86-input-mouse
- xf86-input-synaptics
- xf86-input-void
- xkeyboard-config
- xkbcomp
- dejavu-fonts
- libxcb-glx0
- kdm-branding-openSUSE
- Mesa
- xkbutils
- xkbprint
- setxkbmap
- xkbevd
- libpixman-1-0
- xrandr
- vaapi-intel-driver
-"
-REQUIRED_LIBRARIES="
- libI810XvMC
- libxcb-glx
- libIntelXvMC
- i965_dri
- vmwgfx_dri
- i915_dri
- i965_drv_video
- libpixman-1
-"
-REQUIRED_DIRECTORIES+="
- /usr/bin
- /usr/lib/udev
- /usr/$LIB64/xorg
- /usr/share/fonts
-"
-REQUIRED_FILES="
- /var/adm/fillup-templates/sysconfig.displaymanager-kdm
-"
diff --git a/remote/modules/xorg/xorg.conf.ubuntu b/remote/modules/xorg/xorg.conf.ubuntu
deleted file mode 100644
index 69c3e64c..00000000
--- a/remote/modules/xorg/xorg.conf.ubuntu
+++ /dev/null
@@ -1,40 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
-"
-REQUIRED_CONTENT_PACKAGES="
- xserver-xorg$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-core$UBUNTU_XORG_PKG_SUFFIX
- libgl1-mesa-dri$UBUNTU_XORG_PKG_SUFFIX
- libgl1-mesa-glx$UBUNTU_XORG_PKG_SUFFIX
- xkb-data
- x11-xkb-utils
- x11-xserver-utils
- xserver-xorg-input-evdev$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-input-mouse$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-input-vmmouse$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-intel$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-ati$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-vesa$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-mga$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-sis$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-vmware$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-fbdev$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-radeon$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-sisusb$UBUNTU_XORG_PKG_SUFFIX
- xserver-xorg-video-nouveau$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-openchrome$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-savage$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-trident$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-mach64$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-qxl$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-siliconmotion$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-cirrus$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-r128$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-neomagic$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-geode$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-s3$UBUNTU_XORG_PKG_SUFFIX
- @xserver-xorg-video-tdfx$UBUNTU_XORG_PKG_SUFFIX
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib
-"
-REQUIRED_FILES=""
--
cgit v1.2.3-55-g7522
From a861349dd000e175accbeda3228c6135a716fd95 Mon Sep 17 00:00:00 2001
From: Christian Rößler
Date: Tue, 25 Mar 2014 16:15:49 +0100
Subject: [vmware] module.conf: entries generalized, no sp. ubuntu conf
---
remote/modules/vmware/module.conf | 44 +++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
(limited to 'remote/modules')
diff --git a/remote/modules/vmware/module.conf b/remote/modules/vmware/module.conf
index 017d1d5b..749a0838 100644
--- a/remote/modules/vmware/module.conf
+++ b/remote/modules/vmware/module.conf
@@ -22,3 +22,47 @@ REQUIRED_FILES="
REQUIRED_BINARIES="
vmnet-netifup
"
+
+REQUIRED_VMWARE_DELETIONS="
+ /var/lib/vmware
+ /etc/vmw*
+ /etc/rc?.d/???vmware*
+ /etc/rc0.d/K06vmware-workstation-server
+ /etc/pam.d/vmware-authd
+ /etc/rc3.d/S25vmamqpd
+ /etc/xdg/menus/applications-merged
+ /etc/init.d/vmamqpd
+ /etc/init.d/vmware*
+ /etc/thnuclnt
+ /etc/cups/thnuclnt.convs
+ /etc/cups/thnuclnt.types
+ /etc/modprobe.d/vmware-fuse.conf
+ /lib/modules/3.11.0-13-generic/misc/vmnet.ko
+ /lib/modules/3.11.0-13-generic/misc/vmmon.ko
+ /usr/share/mime/packages/vmware-player.xml
+ /usr/share/applications/vmware*
+ /usr/share/desktop-directories/vmware-ace-vms.directory
+ /usr/share/man/man1/vmware.1.gz
+ /usr/share/doc/vmware*
+ /usr/share/icons/hicolor/*/mimetypes/application-certificate.png
+ /usr/share/icons/hicolor/*/apps/vmware*
+ /usr/share/icons/hicolor/*/mimetypes/*vmware*
+ /usr/bin/vmnet-dhcpd
+ /usr/bin/ovftool
+ /usr/bin/vmrun
+ /usr/bin/vmware-wssc-adminTool
+ /usr/bin/vmnet-bridge
+ /usr/bin/vmplayer
+ /usr/bin/vmnet-sniffer
+ /usr/bin/vmss2core
+ /usr/bin/vm-support
+ /usr/bin/vmnet-natd
+ /usr/bin/vmnet-netifup
+ /usr/bin/vmware*
+ /usr/include/vmware-vix
+ /usr/lib/libvixAllProducts.so
+ /usr/lib/cups/filter/thnucups
+ /usr/lib/diskLibWrapper.so
+ /usr/lib/vmware*
+ /usr/sbin/vmware*
+"
--
cgit v1.2.3-55-g7522
From 98b85314872a1b5a5d09155863914724055e236a Mon Sep 17 00:00:00 2001
From: Christian Rößler
Date: Tue, 25 Mar 2014 16:46:36 +0100
Subject: [vbox] + creating required standard directory
---
remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env | 3 +++
1 file changed, 3 insertions(+)
mode change 100755 => 100644 remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
(limited to 'remote/modules')
diff --git a/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env b/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
old mode 100755
new mode 100644
index a69719ac..ece8c9f1
--- a/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
+++ b/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
@@ -19,6 +19,9 @@ export PATH="$PATH":/opt/openslx/bin:/opt/openslx/sbin:/opt/openslx/usr/bin:/opt
VBOX_CONF_DIR=/opt/openslx/etc/vbox
VBOXMANAGE=$(which vboxmanage)
+# create required standard directories
+mkdir -p "/tmp/virt/virtualbox" -m 1777
+
# load required Vbox modules
for module in vboxdrv.ko vboxnetadp.ko vboxnetflt.ko vboxpci.ko ; do
insmod /lib/modules/vbox/${module} || slxlog "vbox-systemd" "Loading of ${module} failed."
--
cgit v1.2.3-55-g7522
From 356c912b2bd07ac8b2d5ba93b6c9ea365bc53f1d Mon Sep 17 00:00:00 2001
From: Christian Rößler
Date: Tue, 25 Mar 2014 16:51:54 +0100
Subject: [vbox] Added vmchooser-xml_filter
---
.../data/opt/openslx/scripts/vmchooser-xml_filter | 74 ++++++++++++++++++++++
1 file changed, 74 insertions(+)
create mode 100644 remote/modules/vbox/data/opt/openslx/scripts/vmchooser-xml_filter
(limited to 'remote/modules')
diff --git a/remote/modules/vbox/data/opt/openslx/scripts/vmchooser-xml_filter b/remote/modules/vbox/data/opt/openslx/scripts/vmchooser-xml_filter
new file mode 100644
index 00000000..c50b01a5
--- /dev/null
+++ b/remote/modules/vbox/data/opt/openslx/scripts/vmchooser-xml_filter
@@ -0,0 +1,74 @@
+#!/bin/bash
+# Probably needs bash somewhere
+# -----------------------------------------------------------------------------
+# Copyright (c) 2007..2009 - RZ Uni FR
+# Copyright (c) 2007..2011 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# xmlfilter.sh
+# - This script is invoked by the vmchooser tool. It simply filters xml-
+# files (taking the path to these files in $1). You might modify it in any
+# way to match your needs, e.g. ask some database instead. You can re-
+# implement it in any other programming language too. You simply have to
+# return a list of proper xml files to be interpreted by the vmchooser
+# binary). Please check for vmchooser.sh too ...
+# -----------------------------------------------------------------------------
+
+# This script .
+#
+# currently:
+# - filter for slxgrp (which comes from /etc/machine-setup)
+#
+
+# include default directories
+. /opt/openslx/config
+
+if [ -f "${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf" ]; then
+ . "${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf"
+fi
+
+function handlePersistentVM() {
+ if grep --extended-regexp -q " "$CRONFILE"
echo "SHELL=/bin/ash" >> "$CRONFILE"
echo "PATH=/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin" >> "$CRONFILE"
@@ -116,5 +118,14 @@ if [ -n "$SLX_SHUTDOWN_SCHEDULE" ] && [ ! -e "$CRONFILE" ]; then
[ "$MINUTE" -lt 0 -o "$MINUTE" -gt 59 ] && invalid_time && continue
echo "$MINUTE $HOUR * * * root /opt/openslx/scripts/idleaction-scheduled_poweroff" >> "$CRONFILE"
done
+ # do it again for SLX_REBOOT_SCHEDULE
+ for time in $SLX_REBOOT_SCHEDULE; do
+ HOUR=${time%%:*}
+ MINUTE=${time##*:}
+ [ -z "$HOUR$MINUTE" ] && invalid_time && continue
+ [ "$HOUR" -lt 0 -o "$HOUR" -gt 23 ] && invalid_time && continue
+ [ "$MINUTE" -lt 0 -o "$MINUTE" -gt 59 ] && invalid_time && continue
+ echo "$MINUTE $HOUR * * * root /opt/openslx/scripts/idleaction-scheduled_reboot" >> "$CRONFILE"
+ done
fi
diff --git a/remote/modules/idleaction/data/opt/openslx/scripts/idleaction-scheduled_reboot b/remote/modules/idleaction/data/opt/openslx/scripts/idleaction-scheduled_reboot
new file mode 100755
index 00000000..fa3adf65
--- /dev/null
+++ b/remote/modules/idleaction/data/opt/openslx/scripts/idleaction-scheduled_reboot
@@ -0,0 +1,6 @@
+#!/bin/ash
+
+# TODO: Warn user, wait 5 minutes, etc...
+
+echo 'b' > /proc/sysrq-trigger
+
--
cgit v1.2.3-55-g7522
From ced6605909a7364200fa9c3fcf0d695f6486c604 Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Wed, 26 Mar 2014 17:20:09 +0100
Subject: [vmchooser] More debug output if dnbd3 fails
---
remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
(limited to 'remote/modules')
diff --git a/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt b/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt
index 2cd92776..f9b4aaf1 100755
--- a/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt
+++ b/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt
@@ -472,6 +472,7 @@ cp "$VMCHOOSER_DIR/data/openslx.exe" "$VMCHOOSER_DIR/fd-loop/"
unset vm_diskfile
unset vm_revision
unset dnbd3
+unset dnbd3error
if [ -n "$SLX_DNBD3_SERVERS" -o -n "$SLX_DNBD3_PRIO_SERVERS" ] && [ "x$SLX_VM_DNBD3" = "xyes" ]; then
if [ -e "/dev/dnbd0" -a -e "/var/run/dnbd3.socket" ]; then
# Shuffle server list
@@ -486,9 +487,11 @@ if [ -n "$SLX_DNBD3_SERVERS" -o -n "$SLX_DNBD3_PRIO_SERVERS" ] && [ "x$SLX_VM_DN
vmpath="$vm_diskfile"
break
fi
+ dnbd3error="$dnbd3error ($RET/$dnbd3)"
+ usleep 200000
done
if [ -z "$vm_diskfile" ]; then
- slxlog "virt-dnbd3" "No dnbd3 server for ${vmpath#/mnt/vmstore/} found ($SLX_DNBD3_PRIO_SERVERS $TMP_SERVERS), trying NFS..."
+ slxlog "virt-dnbd3" "No dnbd3 server for ${vmpath#/mnt/vmstore/} found ($SLX_DNBD3_PRIO_SERVERS $TMP_SERVERS $dnbd3error), trying NFS..."
writelog "No working dnbd3 server found :-("
fi
else
--
cgit v1.2.3-55-g7522
From 2c2d9e3beb24208587d01f85334510745ec048c2 Mon Sep 17 00:00:00 2001
From: Christian Rößler
Date: Fri, 28 Mar 2014 14:55:18 +0100
Subject: [vbox] re-set permissions: openslx/script entries
---
remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env | 0
remote/modules/vbox/data/opt/openslx/scripts/vmchooser-xml_filter | 0
2 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
mode change 100644 => 100755 remote/modules/vbox/data/opt/openslx/scripts/vmchooser-xml_filter
(limited to 'remote/modules')
diff --git a/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env b/remote/modules/vbox/data/opt/openslx/scripts/systemd-vbox_env
old mode 100644
new mode 100755
diff --git a/remote/modules/vbox/data/opt/openslx/scripts/vmchooser-xml_filter b/remote/modules/vbox/data/opt/openslx/scripts/vmchooser-xml_filter
old mode 100644
new mode 100755
--
cgit v1.2.3-55-g7522
From 8af674be93d22ec576ef075614ab0a57d13c46e6 Mon Sep 17 00:00:00 2001
From: Michael Pereira Neves
Date: Mon, 31 Mar 2014 16:33:27 -0300
Subject: [module] adapt brazilian module to new naming scheme
---
remote/modules/brazilian/brazilian.build | 40 ----------------------
remote/modules/brazilian/brazilian.conf | 5 ---
remote/modules/brazilian/brazilian.conf.debian | 10 ------
remote/modules/brazilian/brazilian.conf.opensuse | 13 -------
remote/modules/brazilian/brazilian.conf.scientific | 8 -----
remote/modules/brazilian/brazilian.conf.ubuntu | 12 -------
remote/modules/brazilian/module.build | 40 ++++++++++++++++++++++
remote/modules/brazilian/module.conf | 5 +++
remote/modules/brazilian/module.conf.debian | 10 ++++++
remote/modules/brazilian/module.conf.opensuse | 13 +++++++
remote/modules/brazilian/module.conf.scientific | 8 +++++
remote/modules/brazilian/module.conf.ubuntu | 12 +++++++
12 files changed, 88 insertions(+), 88 deletions(-)
delete mode 100644 remote/modules/brazilian/brazilian.build
delete mode 100644 remote/modules/brazilian/brazilian.conf
delete mode 100644 remote/modules/brazilian/brazilian.conf.debian
delete mode 100644 remote/modules/brazilian/brazilian.conf.opensuse
delete mode 100644 remote/modules/brazilian/brazilian.conf.scientific
delete mode 100644 remote/modules/brazilian/brazilian.conf.ubuntu
create mode 100644 remote/modules/brazilian/module.build
create mode 100644 remote/modules/brazilian/module.conf
create mode 100644 remote/modules/brazilian/module.conf.debian
create mode 100644 remote/modules/brazilian/module.conf.opensuse
create mode 100644 remote/modules/brazilian/module.conf.scientific
create mode 100644 remote/modules/brazilian/module.conf.ubuntu
(limited to 'remote/modules')
diff --git a/remote/modules/brazilian/brazilian.build b/remote/modules/brazilian/brazilian.build
deleted file mode 100644
index 78e1b1b2..00000000
--- a/remote/modules/brazilian/brazilian.build
+++ /dev/null
@@ -1,40 +0,0 @@
-fetch_source() {
- :
-}
-
-build() {
- # Debian-like
- if [ -e "/etc/locale.gen" ] && ! grep -q -E '^\s*pt_BR\.UTF-8' "/etc/locale.gen"; then
- pinfo "Generating locales..."
- echo 'pt_BR.UTF-8 UTF-8' >> "/etc/locale.gen"
- locale-gen || perror "Could not generate locales (debian style)"
- fi
-
- # Ubuntu's version
- if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/pt_BR.utf8 ]; then
- pinfo "Generating locales..."
- grep -q -E -r '^\s*pt_BR\.UTF-8' "/var/lib/locales/supported.d" || echo 'pt_BR.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
- locale-gen --no-archive --purge "pt_BR.UTF-8" || perror "Could not generate locales (ubuntu style)"
- fi
-
- # Put everything we build or get from the system in build dir
- local FILELIST="$MODULE_DIR/list_copy_build"
- rm -f "$FILELIST"
-
- # Copy required directories from source system to build dir
- for FILE in ${REQUIRED_DIRECTORIES}; do
- [ ! -d "${FILE}" ] && perror "Missing required directory $FILE"
- echo ${FILE} >> "${FILELIST}"
- done
-
- # Done collecting file and directory names, copy everything
- tarcopy "$(sort -u "$FILELIST")" "$MODULE_BUILD_DIR"
-
-}
-
-post_copy() {
- for i in LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION; do
- add_env $i pt_BR.UTF-8 || perror "$i: add_env function failed."
- done
-}
-
diff --git a/remote/modules/brazilian/brazilian.conf b/remote/modules/brazilian/brazilian.conf
deleted file mode 100644
index e2f82123..00000000
--- a/remote/modules/brazilian/brazilian.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
-REQUIRED_DIRECTORIES="
- /usr/share/X11
-"
diff --git a/remote/modules/brazilian/brazilian.conf.debian b/remote/modules/brazilian/brazilian.conf.debian
deleted file mode 100644
index a43faea2..00000000
--- a/remote/modules/brazilian/brazilian.conf.debian
+++ /dev/null
@@ -1,10 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale
-"
-
diff --git a/remote/modules/brazilian/brazilian.conf.opensuse b/remote/modules/brazilian/brazilian.conf.opensuse
deleted file mode 100644
index 43cce6e6..00000000
--- a/remote/modules/brazilian/brazilian.conf.opensuse
+++ /dev/null
@@ -1,13 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
- glibc-locale
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale/pt_BR.utf8
-"
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
-
diff --git a/remote/modules/brazilian/brazilian.conf.scientific b/remote/modules/brazilian/brazilian.conf.scientific
deleted file mode 100644
index 88ac0d27..00000000
--- a/remote/modules/brazilian/brazilian.conf.scientific
+++ /dev/null
@@ -1,8 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libX11-data
- glibc-common
-"
-REQUIRED_CONTENT_PACKAGES="
- libX11-data"
-REQUIRED_BINARIES=""
-REQUIRED_FILES=""
diff --git a/remote/modules/brazilian/brazilian.conf.ubuntu b/remote/modules/brazilian/brazilian.conf.ubuntu
deleted file mode 100644
index 2558791f..00000000
--- a/remote/modules/brazilian/brazilian.conf.ubuntu
+++ /dev/null
@@ -1,12 +0,0 @@
-REQUIRED_INSTALLED_PACKAGES="
- libx11-data
- language-pack-pt
-"
-REQUIRED_CONTENT_PACKAGES="
- libx11-data
-"
-REQUIRED_DIRECTORIES+="
- /usr/lib/locale/C.UTF-8
- /usr/lib/locale/pt_BR.utf8
-"
-
diff --git a/remote/modules/brazilian/module.build b/remote/modules/brazilian/module.build
new file mode 100644
index 00000000..78e1b1b2
--- /dev/null
+++ b/remote/modules/brazilian/module.build
@@ -0,0 +1,40 @@
+fetch_source() {
+ :
+}
+
+build() {
+ # Debian-like
+ if [ -e "/etc/locale.gen" ] && ! grep -q -E '^\s*pt_BR\.UTF-8' "/etc/locale.gen"; then
+ pinfo "Generating locales..."
+ echo 'pt_BR.UTF-8 UTF-8' >> "/etc/locale.gen"
+ locale-gen || perror "Could not generate locales (debian style)"
+ fi
+
+ # Ubuntu's version
+ if [ -d "/var/lib/locales/supported.d" ] && [ ! -d /usr/lib/locale/pt_BR.utf8 ]; then
+ pinfo "Generating locales..."
+ grep -q -E -r '^\s*pt_BR\.UTF-8' "/var/lib/locales/supported.d" || echo 'pt_BR.UTF-8 UTF-8' >> "/var/lib/locales/supported.d/openslx"
+ locale-gen --no-archive --purge "pt_BR.UTF-8" || perror "Could not generate locales (ubuntu style)"
+ fi
+
+ # Put everything we build or get from the system in build dir
+ local FILELIST="$MODULE_DIR/list_copy_build"
+ rm -f "$FILELIST"
+
+ # Copy required directories from source system to build dir
+ for FILE in ${REQUIRED_DIRECTORIES}; do
+ [ ! -d "${FILE}" ] && perror "Missing required directory $FILE"
+ echo ${FILE} >> "${FILELIST}"
+ done
+
+ # Done collecting file and directory names, copy everything
+ tarcopy "$(sort -u "$FILELIST")" "$MODULE_BUILD_DIR"
+
+}
+
+post_copy() {
+ for i in LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION; do
+ add_env $i pt_BR.UTF-8 || perror "$i: add_env function failed."
+ done
+}
+
diff --git a/remote/modules/brazilian/module.conf b/remote/modules/brazilian/module.conf
new file mode 100644
index 00000000..e2f82123
--- /dev/null
+++ b/remote/modules/brazilian/module.conf
@@ -0,0 +1,5 @@
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+REQUIRED_DIRECTORIES="
+ /usr/share/X11
+"
diff --git a/remote/modules/brazilian/module.conf.debian b/remote/modules/brazilian/module.conf.debian
new file mode 100644
index 00000000..a43faea2
--- /dev/null
+++ b/remote/modules/brazilian/module.conf.debian
@@ -0,0 +1,10 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale
+"
+
diff --git a/remote/modules/brazilian/module.conf.opensuse b/remote/modules/brazilian/module.conf.opensuse
new file mode 100644
index 00000000..43cce6e6
--- /dev/null
+++ b/remote/modules/brazilian/module.conf.opensuse
@@ -0,0 +1,13 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+ glibc-locale
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale/pt_BR.utf8
+"
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
+
diff --git a/remote/modules/brazilian/module.conf.scientific b/remote/modules/brazilian/module.conf.scientific
new file mode 100644
index 00000000..88ac0d27
--- /dev/null
+++ b/remote/modules/brazilian/module.conf.scientific
@@ -0,0 +1,8 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libX11-data
+ glibc-common
+"
+REQUIRED_CONTENT_PACKAGES="
+ libX11-data"
+REQUIRED_BINARIES=""
+REQUIRED_FILES=""
diff --git a/remote/modules/brazilian/module.conf.ubuntu b/remote/modules/brazilian/module.conf.ubuntu
new file mode 100644
index 00000000..2558791f
--- /dev/null
+++ b/remote/modules/brazilian/module.conf.ubuntu
@@ -0,0 +1,12 @@
+REQUIRED_INSTALLED_PACKAGES="
+ libx11-data
+ language-pack-pt
+"
+REQUIRED_CONTENT_PACKAGES="
+ libx11-data
+"
+REQUIRED_DIRECTORIES+="
+ /usr/lib/locale/C.UTF-8
+ /usr/lib/locale/pt_BR.utf8
+"
+
--
cgit v1.2.3-55-g7522