diff options
| author | Jonathan Bauer | 2013-06-10 13:35:57 +0200 |
|---|---|---|
| committer | Jonathan Bauer | 2013-06-10 13:35:57 +0200 |
| commit | 10407481f74a8486cb5c7fe159d0564418dea8c2 (patch) | |
| tree | c0d916089dab9fc763ef4bb645e6c7ffa43193f8 | |
| parent | [rootfs-stage31] revert changing mac of eth0 (diff) | |
| parent | Keyboard translations now not gzipped. (diff) | |
| download | tm-scripts-10407481f74a8486cb5c7fe159d0564418dea8c2.tar.gz tm-scripts-10407481f74a8486cb5c7fe159d0564418dea8c2.tar.xz tm-scripts-10407481f74a8486cb5c7fe159d0564418dea8c2.zip | |
Merge branch 'master' of simonslx:openslx-ng/tm-scripts
20 files changed, 1963 insertions, 39 deletions
diff --git a/helper/binutil.inc b/helper/binutil.inc index 261ccf16..72a43ad2 100644 --- a/helper/binutil.inc +++ b/helper/binutil.inc @@ -3,24 +3,45 @@ # Common functions to copy binaries and their dependancies. # ############################################################ +# This will parse the output of ldd on given binaries +# and echo the location of these libs to STDOUT +# The output of this function has to be used in some +# way, it only echos! # -# Usage: get_dynamic_dependencies [-l <searchdir>] <binary_list> -# * the list must be seperated by spaces -# * the search for lib needed by a binary can be done locally, -# using the -l <searchdir> option +# About local search: +# It is required that we can search for the dynamic +# libraries in a specific directory, namely the one +# where we (potentially) built the binary. If a +# corresponding library is found, it should take +# precedence over ones found on the system. +# This can be done by using the '-l' switch, see below. # -# Ouput: -# Will simply echo list of required libraries - -# List of libraries to exclude from +############################################################ +# We use a blacklist mechanism to exclude common libraries. +# This improve runtime quite a bit... BLACKLIST="ld-linux linux-gate linux-vdso libc.so" + +# Initialise flag and path for local search LOCALSEARCH=0 LOCALSEARCHDIR="" +# replace ' ' by '|' in the blacklist, so grep can use it directly. CURRENT_BLACKLIST=$(echo ${BLACKLIST} | sed 's/ /\\|/g') +############################################################ +# +# Usage: +# get_dynamic_dependencies [-l <searchdir>] <binary_list> +# * the list must be seperated by spaces +# * the search for lib needed by a binary can be done locally, +# using the -l <searchdir> option +# +# Ouput: +# Will simply echo list of required libraries + get_dynamic_dependencies() { - + # check if local search is activated by the '-l' switch + # if so the following argument is the path. if [ "x$1" == "x-l" ]; then LOCALSEARCH=1 shift @@ -29,22 +50,25 @@ get_dynamic_dependencies() { shift fi + # main loop over the list of binaries while [ $# != 0 ]; do local BINARY=$1 shift + # now run ldd on it and save the output in $LDD_OUT local LDD_OUT="ldd_output" if ldd $BINARY > $LDD_OUT; then - # Case 1: dynamic + # Case 1: file is a dynamic executable for LIB in $(cat $LDD_OUT | grep -v "${CURRENT_BLACKLIST}" | awk '{print $1 $2 $3}'); do # split the entry into an array, ex: # libm.so.6 => /lib/libm.so.6 would be split into: # LIBLINK[0] LIBLINK[1] local LIBLINK=(${LIB//=>/ }) + # call helper function to find the correct lib lib_search done else - # Case 2: not a dynamic + # Case 2: not a dynamic, do nothing pdebug "\t\t\t(Not a dynamic.)" rm -f $LDD_OUT continue @@ -54,6 +78,20 @@ get_dynamic_dependencies() { } +############################################################ +# +# Usage: +# lib_search +# +# Output: +# List of the path including any possible symbolic links +# of the found libraries. +# +# Note: This function takes no argument. It takes the library +# to look for from the local array LIBLINK. +# If the local was activated in get_dynamic_dependencies +# this will search for the library in LOCALSEARCHDIR first. +# If its not found, then it will look system-wide. lib_search(){ # if activated, start by searching the lib locally @@ -85,13 +123,14 @@ lib_search(){ } ############################################################ # -# Usage: get_link_chain <link> [prefix] -# -# <link> must be in absolute form- -# [prefix] is the prefix to strip from the ouput. +# Usage: +# get_link_chain <link> [prefix] +# * <link> must be in absolute form- +# * [prefix] is the prefix to strip from the ouput. # # Output: # Lists the symlink chain until a hardlink is found. +# get_link_chain() { # sanity checks @@ -156,8 +195,15 @@ get_link_chain() { done pdebug "\t\t$CHAIN" } - -# Function to get libc and ld-linux +############################################################ +# +# Usage: +# list_basic_libs +# +# Output: +# list the path of following basic system libraries: +# - libc.so, ld-linux.so +# list_basic_libs() { for i in $(ldd ${SHELL}) do diff --git a/helper/keyvalueutil.inc b/helper/keyvalueutil.inc new file mode 100644 index 00000000..a0a89db7 --- /dev/null +++ b/helper/keyvalueutil.inc @@ -0,0 +1,32 @@ +# Helper file for managing key-value containing files +# There are some specialized conveinience functions here first +# that mostly just pass a predefined filename to the genric function +# at the end + +# Add the given environment variable to /etc/environment +add_env () { + [ $# -ne 2 ] && perror "Usage: $0 'key' 'value'" + [ -z "$1" ] && perror "$0: Empty key!" + add_key_value "/etc/environment" "$1" "$2" +} + +# +# Adds the given key-value-pair to a given file +# The file will be relative to the current target build dir, +# even if it starts with a slash. +# Will perror if the key already exists with a different value +add_key_value () { + [ $# -ne 3 ] && perror "Usage: $0 'file' 'key' 'value'" + [ -z "$TARGET_BUILD_DIR" ] && perror "No TARGET_BUILD_DIR set. Aborting for safety." + local FILE="$TARGET_BUILD_DIR/$1" + local KEY="$2" + local VALUE="$(echo "$3" | sed "s/'/\\\\'/g")" # \\\\\\\\\\\\\\\\\\\\\\ßß + if [ -s "$FILE" ]; then + local CURRENT="$(grep -E "^\s*$KEY=.*$" "$FILE" | awk -F '=' '{$1=""; printf $0}' | itrim)" + [ -n "$CURRENT" -a "'$VALUE'" != "$CURRENT" ] && perror "Cannot set $KEY to '$VALUE' as it is already set to $CURRENT" + [ -n "$CURRENT" ] && return 0 + fi + mkdir -p "$(dirname "$FILE")" + echo "$KEY='$VALUE'" >> "$FILE" +} + diff --git a/helper/string.inc b/helper/string.inc index 9f18e4e0..04809a93 100644 --- a/helper/string.inc +++ b/helper/string.inc @@ -7,6 +7,11 @@ trim() { echo -n "$var" } +# Inline version of trim, use when piping +itrim () { + sed -r 's/^\s+//g;s/\s+$//g' +} + # usage: CANONICALIZED_STRING=$(canonalize <path>) # usage with relative path requires you to be in the correct directory. canonicalize() { @@ -20,7 +20,12 @@ SELF="$(readlink -f $0)" ROOT_DIR="$(dirname "${SELF}")" MLTK_PID="$$" +# Checking for needed development tools, compilers etc. # Required: m4 make gcc g++ binutils +DEVTOOLS="gcc c++ g++ make m4 strip" # 'strip' as marker for binutils +for i in $DEVTOOLS; do + which "$i" 2>/dev/null 1>&2 || { echo "Essential development tool $i not found - exiting."; exit 1; } +done # Make apt-get install non-interactive when it comes to postinstall questions # ie. kdm asking which dm you want to set as default @@ -32,6 +37,7 @@ qnd_exit() { [ $# -ge 1 ] && kill "$1" } +# source all helper functions files that are found under helper/*.inc for HELPER in $ROOT_DIR/helper/*.inc; do . "$HELPER" && continue unset_quiet @@ -100,7 +106,15 @@ initial_checks() { pinfo "Kernel version: $KERNEL_VERSION" pinfo "System's packet manager is $PACKET_MANAGER" - # setup_target and export_target + # source the 2 central scripts: + # setup_target + # - builds all modules activated under the target directory + # (basic targets are 'stage31' and 'stage32') + # export_target + # - pack given target as a cpio or squashfs depending on + # the export type: + # stage31 (cpio archive of the complete stage31-filesystem) + # stage32 (cpio archive containing the squashfs'ed stage32-filesystem) REMOTE_SETUP_TARGET="${ROOT_DIR}/remote/setup_target" SERVER_EXPORT_TARGET="${ROOT_DIR}/server/export_target" @@ -111,7 +125,11 @@ initial_checks() { read_params() { local MODE="" local SUBMODE="" - # select mode: remote or server + # mltk knows two modes in which to run: + # - remote: functions to be run on the reference system + # from which to build the mini-linux + # - server: functions for rsyncing the generated stage31/stage32 + # to a server, exporting the stage31-/stage32-filesystems case "$1" in server) MODE="SERVER" @@ -130,8 +148,20 @@ read_params() { esac shift + # A target represents a set of modules to be build for a specific stage. + # i.e. a very basic stage31 includes: + # - busybox + # - kernel + # - rootfs-stage31 + # a basic stage32 would also contain these and additionally: + # - systemd + # - dbus + # - pam + # for a GUI, you could add: + # - xorg + # - kdm + # - plymouth TARGET="" - # set target. if [[ $1 != "-"* ]]; then TARGET=$1 shift diff --git a/remote/modules/german/data/etc/systemd/system/basic.target.wants/load-german-keymap.service b/remote/modules/german/data/etc/systemd/system/basic.target.wants/load-german-keymap.service new file mode 120000 index 00000000..88db2273 --- /dev/null +++ b/remote/modules/german/data/etc/systemd/system/basic.target.wants/load-german-keymap.service @@ -0,0 +1 @@ +../../system/load-german-keymap.service
\ No newline at end of file diff --git a/remote/modules/german/data/etc/systemd/system/load-german-keymap.service b/remote/modules/german/data/etc/systemd/system/load-german-keymap.service new file mode 100644 index 00000000..28046dcd --- /dev/null +++ b/remote/modules/german/data/etc/systemd/system/load-german-keymap.service @@ -0,0 +1,10 @@ +[Unit] +Description=Setup german keyboard layout +DefaultDependencies=no +After=sysinit.target +Before=shutdown.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/opt/openslx/bin/load_german_keymaps diff --git a/remote/modules/german/data/opt/openslx/bin/load_german_keymaps b/remote/modules/german/data/opt/openslx/bin/load_german_keymaps new file mode 100755 index 00000000..c7dbbb33 --- /dev/null +++ b/remote/modules/german/data/opt/openslx/bin/load_german_keymaps @@ -0,0 +1,22 @@ +#!/bin/bash +# 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/german_qwertz_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. +else + loadkeys /opt/openslx/keymaps/german_qwertz_keyboard_translation.map # insert a keymap without compose lines + ERR=$? +fi + +# if at this point the second keymap insertion failed we pass the errorlevel to +# systemd - we cannot do more at this point. + +exit $ERR diff --git a/remote/modules/german/data/opt/openslx/keymaps/german_qwertz_compose_keyboard_translation.map b/remote/modules/german/data/opt/openslx/keymaps/german_qwertz_compose_keyboard_translation.map new file mode 100644 index 00000000..9d0c73d0 --- /dev/null +++ b/remote/modules/german/data/opt/openslx/keymaps/german_qwertz_compose_keyboard_translation.map @@ -0,0 +1,967 @@ +keymaps 0-2,4-6,8-10,12 +keycode 1 = Escape Escape + alt keycode 1 = Meta_Escape + shift alt keycode 1 = Meta_Escape +keycode 2 = one exclam + alt keycode 2 = Meta_one + shift alt keycode 2 = Meta_exclam +keycode 3 = two quotedbl twosuperior nul + alt keycode 3 = Meta_two + shift alt keycode 3 = Meta_quotedbl + control alt keycode 3 = Meta_nul +keycode 4 = three section threesuperior Escape + alt keycode 4 = Meta_three + control alt keycode 4 = Meta_Escape +keycode 5 = four dollar + alt keycode 5 = Meta_four + shift alt keycode 5 = Meta_dollar +keycode 6 = five percent + alt keycode 6 = Meta_five + shift alt keycode 6 = Meta_percent +keycode 7 = six ampersand + control keycode 7 = Control_asciicircum + alt keycode 7 = Meta_six + shift alt keycode 7 = Meta_ampersand +keycode 8 = seven slash braceleft + alt keycode 8 = Meta_seven + shift alt keycode 8 = Meta_slash + altgr alt keycode 8 = Meta_braceleft +keycode 9 = eight parenleft bracketleft + alt keycode 9 = Meta_eight + shift alt keycode 9 = Meta_parenleft + altgr alt keycode 9 = Meta_bracketleft +keycode 10 = nine parenright bracketright + altgr control keycode 10 = Control_bracketright + alt keycode 10 = Meta_nine + shift alt keycode 10 = Meta_parenright + altgr alt keycode 10 = Meta_bracketright +keycode 11 = zero equal braceright + alt keycode 11 = Meta_zero + shift alt keycode 11 = Meta_equal + altgr alt keycode 11 = Meta_braceright +keycode 12 = ssharp question backslash + altgr control keycode 12 = Control_backslash + shift alt keycode 12 = Meta_question + altgr alt keycode 12 = Meta_backslash +keycode 13 = apostrophe grave + alt keycode 13 = 0x08b4 + shift alt keycode 13 = Meta_grave +keycode 14 = Delete Delete + alt keycode 14 = Meta_Delete + shift alt keycode 14 = Meta_Delete +keycode 15 = Tab Meta_Tab + alt keycode 15 = Meta_Tab +keycode 16 = +q +Q at Control_q Control_q nul Meta_q Meta_Q Meta_at Meta_Control_q +keycode 17 = w +keycode 18 = +e +E currency Control_e Control_e Control_e Meta_e Meta_E Meta_e Meta_Control_e +keycode 19 = r +keycode 20 = t +keycode 21 = z +keycode 22 = u +keycode 23 = i +keycode 24 = o +keycode 25 = p +keycode 26 = +udiaeresis +Udiaeresis +keycode 27 = plus asterisk asciitilde + alt keycode 27 = Meta_plus + shift alt keycode 27 = Meta_asterisk +keycode 28 = Return + alt keycode 28 = Meta_Control_m +keycode 29 = Control +keycode 30 = a +keycode 31 = s +keycode 32 = d +keycode 33 = f +keycode 34 = g +keycode 35 = h +keycode 36 = j +keycode 37 = k +keycode 38 = l +keycode 39 = +odiaeresis +Odiaeresis +keycode 40 = +adiaeresis +Adiaeresis +keycode 41 = asciicircum degree Meta_asciicircum Control_asciicircum + control alt keycode 41 = Meta_Control_asciicircum +keycode 42 = Shift +keycode 43 = numbersign apostrophe + alt keycode 43 = Meta_numbersign + shift alt keycode 43 = Meta_apostrophe +keycode 44 = y +keycode 45 = x +keycode 46 = +c +C cent Control_c Control_c Control_c Meta_c Meta_C Meta_c Meta_Control_c +keycode 47 = v +keycode 48 = b +keycode 49 = n +keycode 50 = +m +M mu Control_m Control_m Control_m Meta_m Meta_M Meta_m Meta_Control_m +keycode 51 = comma semicolon + alt keycode 51 = Meta_comma + shift alt keycode 51 = Meta_semicolon +keycode 52 = period colon + alt keycode 52 = Meta_period + shift alt keycode 52 = Meta_colon +keycode 53 = minus underscore Meta_minus + shift control keycode 53 = Control_underscore + alt keycode 53 = Meta_minus + shift alt keycode 53 = Meta_underscore +keycode 54 = Shift +keycode 55 = KP_Multiply + altgr keycode 55 = Hex_C +keycode 56 = Alt +keycode 57 = space space Meta_space nul + alt keycode 57 = Meta_space + shift alt keycode 57 = Meta_space + control alt keycode 57 = Meta_nul +keycode 58 = Caps_Lock +keycode 59 = F1 F13 Console_13 F25 + alt keycode 59 = Console_1 + control alt keycode 59 = Console_1 +keycode 60 = F2 F14 Console_14 F26 + alt keycode 60 = Console_2 + control alt keycode 60 = Console_2 +keycode 61 = F3 F15 Console_15 F27 + alt keycode 61 = Console_3 + control alt keycode 61 = Console_3 +keycode 62 = F4 F16 Console_16 F28 + alt keycode 62 = Console_4 + control alt keycode 62 = Console_4 +keycode 63 = F5 F17 Console_17 F29 + alt keycode 63 = Console_5 + control alt keycode 63 = Console_5 +keycode 64 = F6 F18 Console_18 F30 + alt keycode 64 = Console_6 + control alt keycode 64 = Console_6 +keycode 65 = F7 F19 Console_19 F31 + alt keycode 65 = Console_7 + control alt keycode 65 = Console_7 +keycode 66 = F8 F20 Console_20 F32 + alt keycode 66 = Console_8 + control alt keycode 66 = Console_8 +keycode 67 = F9 F21 Console_21 F33 + alt keycode 67 = Console_9 + control alt keycode 67 = Console_9 +keycode 68 = F10 F22 Console_22 F34 + alt keycode 68 = Console_10 + control alt keycode 68 = Console_10 +keycode 69 = Num_Lock + altgr keycode 69 = Hex_A +keycode 70 = Scroll_Lock Show_Memory Show_Registers Show_State + alt keycode 70 = Scroll_Lock +keycode 71 = KP_7 + altgr keycode 71 = Hex_7 + alt keycode 71 = Ascii_7 +keycode 72 = KP_8 + altgr keycode 72 = Hex_8 + alt keycode 72 = Ascii_8 +keycode 73 = KP_9 + altgr keycode 73 = Hex_9 + alt keycode 73 = Ascii_9 +keycode 74 = KP_Subtract + altgr keycode 74 = Hex_D +keycode 75 = KP_4 + altgr keycode 75 = Hex_4 + alt keycode 75 = Ascii_4 +keycode 76 = KP_5 + altgr keycode 76 = Hex_5 + alt keycode 76 = Ascii_5 +keycode 77 = KP_6 + altgr keycode 77 = Hex_6 + alt keycode 77 = Ascii_6 +keycode 78 = KP_Add + altgr keycode 78 = Hex_E +keycode 79 = KP_1 + altgr keycode 79 = Hex_1 + alt keycode 79 = Ascii_1 +keycode 80 = KP_2 + altgr keycode 80 = Hex_2 + alt keycode 80 = Ascii_2 +keycode 81 = KP_3 + altgr keycode 81 = Hex_3 + alt keycode 81 = Ascii_3 +keycode 82 = KP_0 + altgr keycode 82 = Hex_0 + alt keycode 82 = Ascii_0 +keycode 83 = KP_Comma + altgr control keycode 83 = Boot + control alt keycode 83 = Boot +keycode 84 = Last_Console +keycode 85 = +keycode 86 = less greater bar + alt keycode 86 = Meta_less + shift alt keycode 86 = Meta_greater + altgr alt keycode 86 = Meta_bar +keycode 87 = F11 F23 Console_23 F35 + alt keycode 87 = Console_11 + control alt keycode 87 = Console_11 +keycode 88 = F12 F24 Console_24 F36 + alt keycode 88 = Console_12 + control alt keycode 88 = Console_12 +keycode 89 = +keycode 90 = +keycode 91 = +keycode 92 = +keycode 93 = +keycode 94 = +keycode 95 = +keycode 96 = KP_Enter + altgr keycode 96 = Hex_F +keycode 97 = Control +keycode 98 = KP_Divide + altgr keycode 98 = Hex_B +keycode 99 = Compose + control keycode 99 = Control_backslash + alt keycode 99 = Control_backslash + control alt keycode 99 = Meta_Control_backslash +keycode 100 = AltGr + alt keycode 100 = Compose +keycode 101 = Break +keycode 102 = Find +keycode 103 = Up + alt keycode 103 = KeyboardSignal +keycode 104 = Prior + shift keycode 104 = Scroll_Backward +keycode 105 = Left + alt keycode 105 = Decr_Console +keycode 106 = Right + alt keycode 106 = Incr_Console +keycode 107 = Select +keycode 108 = Down +keycode 109 = Next + shift keycode 109 = Scroll_Forward +keycode 110 = Insert +keycode 111 = Remove + altgr control keycode 111 = Boot + control alt keycode 111 = Boot +keycode 112 = Macro + altgr control keycode 112 = VoidSymbol + shift alt keycode 112 = VoidSymbol + altgr alt keycode 112 = VoidSymbol +keycode 113 = F13 + altgr control keycode 113 = VoidSymbol + shift alt keycode 113 = VoidSymbol + altgr alt keycode 113 = VoidSymbol +keycode 114 = F14 + altgr control keycode 114 = VoidSymbol + shift alt keycode 114 = VoidSymbol + altgr alt keycode 114 = VoidSymbol +keycode 115 = Help + altgr control keycode 115 = VoidSymbol + shift alt keycode 115 = VoidSymbol + altgr alt keycode 115 = VoidSymbol +keycode 116 = Do + altgr control keycode 116 = VoidSymbol + shift alt keycode 116 = VoidSymbol + altgr alt keycode 116 = VoidSymbol +keycode 117 = F17 + altgr control keycode 117 = VoidSymbol + shift alt keycode 117 = VoidSymbol + altgr alt keycode 117 = VoidSymbol +keycode 118 = KP_MinPlus + altgr control keycode 118 = VoidSymbol + shift alt keycode 118 = VoidSymbol + altgr alt keycode 118 = VoidSymbol +keycode 119 = Pause +keycode 120 = +keycode 121 = +keycode 122 = +keycode 123 = +keycode 124 = +keycode 125 = +keycode 126 = +keycode 127 = +keycode 128 = nul + altgr control keycode 128 = VoidSymbol + shift alt keycode 128 = VoidSymbol + altgr alt keycode 128 = VoidSymbol +keycode 129 = nul + altgr control keycode 129 = VoidSymbol + shift alt keycode 129 = VoidSymbol + altgr alt keycode 129 = VoidSymbol +keycode 130 = nul + altgr control keycode 130 = VoidSymbol + shift alt keycode 130 = VoidSymbol + altgr alt keycode 130 = VoidSymbol +keycode 131 = nul + altgr control keycode 131 = VoidSymbol + shift alt keycode 131 = VoidSymbol + altgr alt keycode 131 = VoidSymbol +keycode 132 = nul + altgr control keycode 132 = VoidSymbol + shift alt keycode 132 = VoidSymbol + altgr alt keycode 132 = VoidSymbol +keycode 133 = nul + altgr control keycode 133 = VoidSymbol + shift alt keycode 133 = VoidSymbol + altgr alt keycode 133 = VoidSymbol +keycode 134 = nul + altgr control keycode 134 = VoidSymbol + shift alt keycode 134 = VoidSymbol + altgr alt keycode 134 = VoidSymbol +keycode 135 = nul + altgr control keycode 135 = VoidSymbol + shift alt keycode 135 = VoidSymbol + altgr alt keycode 135 = VoidSymbol +keycode 136 = nul + altgr control keycode 136 = VoidSymbol + shift alt keycode 136 = VoidSymbol + altgr alt keycode 136 = VoidSymbol +keycode 137 = nul + altgr control keycode 137 = VoidSymbol + shift alt keycode 137 = VoidSymbol + altgr alt keycode 137 = VoidSymbol +keycode 138 = nul + altgr control keycode 138 = VoidSymbol + shift alt keycode 138 = VoidSymbol + altgr alt keycode 138 = VoidSymbol +keycode 139 = nul + altgr control keycode 139 = VoidSymbol + shift alt keycode 139 = VoidSymbol + altgr alt keycode 139 = VoidSymbol +keycode 140 = nul + altgr control keycode 140 = VoidSymbol + shift alt keycode 140 = VoidSymbol + altgr alt keycode 140 = VoidSymbol +keycode 141 = nul + altgr control keycode 141 = VoidSymbol + shift alt keycode 141 = VoidSymbol + altgr alt keycode 141 = VoidSymbol +keycode 142 = nul + altgr control keycode 142 = VoidSymbol + shift alt keycode 142 = VoidSymbol + altgr alt keycode 142 = VoidSymbol +keycode 143 = nul + altgr control keycode 143 = VoidSymbol + shift alt keycode 143 = VoidSymbol + altgr alt keycode 143 = VoidSymbol +keycode 144 = nul + altgr control keycode 144 = VoidSymbol + shift alt keycode 144 = VoidSymbol + altgr alt keycode 144 = VoidSymbol +keycode 145 = nul + altgr control keycode 145 = VoidSymbol + shift alt keycode 145 = VoidSymbol + altgr alt keycode 145 = VoidSymbol +keycode 146 = nul + altgr control keycode 146 = VoidSymbol + shift alt keycode 146 = VoidSymbol + altgr alt keycode 146 = VoidSymbol +keycode 147 = nul + altgr control keycode 147 = VoidSymbol + shift alt keycode 147 = VoidSymbol + altgr alt keycode 147 = VoidSymbol +keycode 148 = nul + altgr control keycode 148 = VoidSymbol + shift alt keycode 148 = VoidSymbol + altgr alt keycode 148 = VoidSymbol +keycode 149 = nul + altgr control keycode 149 = VoidSymbol + shift alt keycode 149 = VoidSymbol + altgr alt keycode 149 = VoidSymbol +keycode 150 = nul + altgr control keycode 150 = VoidSymbol + shift alt keycode 150 = VoidSymbol + altgr alt keycode 150 = VoidSymbol +keycode 151 = nul + altgr control keycode 151 = VoidSymbol + shift alt keycode 151 = VoidSymbol + altgr alt keycode 151 = VoidSymbol +keycode 152 = nul + altgr control keycode 152 = VoidSymbol + shift alt keycode 152 = VoidSymbol + altgr alt keycode 152 = VoidSymbol +keycode 153 = nul + altgr control keycode 153 = VoidSymbol + shift alt keycode 153 = VoidSymbol + altgr alt keycode 153 = VoidSymbol +keycode 154 = nul + altgr control keycode 154 = VoidSymbol + shift alt keycode 154 = VoidSymbol + altgr alt keycode 154 = VoidSymbol +keycode 155 = nul + altgr control keycode 155 = VoidSymbol + shift alt keycode 155 = VoidSymbol + altgr alt keycode 155 = VoidSymbol +keycode 156 = nul + altgr control keycode 156 = VoidSymbol + shift alt keycode 156 = VoidSymbol + altgr alt keycode 156 = VoidSymbol +keycode 157 = nul + altgr control keycode 157 = VoidSymbol + shift alt keycode 157 = VoidSymbol + altgr alt keycode 157 = VoidSymbol +keycode 158 = nul + altgr control keycode 158 = VoidSymbol + shift alt keycode 158 = VoidSymbol + altgr alt keycode 158 = VoidSymbol +keycode 159 = nul + altgr control keycode 159 = VoidSymbol + shift alt keycode 159 = VoidSymbol + altgr alt keycode 159 = VoidSymbol +keycode 160 = nul + altgr control keycode 160 = VoidSymbol + shift alt keycode 160 = VoidSymbol + altgr alt keycode 160 = VoidSymbol +keycode 161 = nul + altgr control keycode 161 = VoidSymbol + shift alt keycode 161 = VoidSymbol + altgr alt keycode 161 = VoidSymbol +keycode 162 = nul + altgr control keycode 162 = VoidSymbol + shift alt keycode 162 = VoidSymbol + altgr alt keycode 162 = VoidSymbol +keycode 163 = nul + altgr control keycode 163 = VoidSymbol + shift alt keycode 163 = VoidSymbol + altgr alt keycode 163 = VoidSymbol +keycode 164 = nul + altgr control keycode 164 = VoidSymbol + shift alt keycode 164 = VoidSymbol + altgr alt keycode 164 = VoidSymbol +keycode 165 = nul + altgr control keycode 165 = VoidSymbol + shift alt keycode 165 = VoidSymbol + altgr alt keycode 165 = VoidSymbol +keycode 166 = nul + altgr control keycode 166 = VoidSymbol + shift alt keycode 166 = VoidSymbol + altgr alt keycode 166 = VoidSymbol +keycode 167 = nul + altgr control keycode 167 = VoidSymbol + shift alt keycode 167 = VoidSymbol + altgr alt keycode 167 = VoidSymbol +keycode 168 = nul + altgr control keycode 168 = VoidSymbol + shift alt keycode 168 = VoidSymbol + altgr alt keycode 168 = VoidSymbol +keycode 169 = nul + altgr control keycode 169 = VoidSymbol + shift alt keycode 169 = VoidSymbol + altgr alt keycode 169 = VoidSymbol +keycode 170 = nul + altgr control keycode 170 = VoidSymbol + shift alt keycode 170 = VoidSymbol + altgr alt keycode 170 = VoidSymbol +keycode 171 = nul + altgr control keycode 171 = VoidSymbol + shift alt keycode 171 = VoidSymbol + altgr alt keycode 171 = VoidSymbol +keycode 172 = nul + altgr control keycode 172 = VoidSymbol + shift alt keycode 172 = VoidSymbol + altgr alt keycode 172 = VoidSymbol +keycode 173 = nul + altgr control keycode 173 = VoidSymbol + shift alt keycode 173 = VoidSymbol + altgr alt keycode 173 = VoidSymbol +keycode 174 = nul + altgr control keycode 174 = VoidSymbol + shift alt keycode 174 = VoidSymbol + altgr alt keycode 174 = VoidSymbol +keycode 175 = nul + altgr control keycode 175 = VoidSymbol + shift alt keycode 175 = VoidSymbol + altgr alt keycode 175 = VoidSymbol +keycode 176 = nul + altgr control keycode 176 = VoidSymbol + shift alt keycode 176 = VoidSymbol + altgr alt keycode 176 = VoidSymbol +keycode 177 = nul + altgr control keycode 177 = VoidSymbol + shift alt keycode 177 = VoidSymbol + altgr alt keycode 177 = VoidSymbol +keycode 178 = nul + altgr control keycode 178 = VoidSymbol + shift alt keycode 178 = VoidSymbol + altgr alt keycode 178 = VoidSymbol +keycode 179 = nul + altgr control keycode 179 = VoidSymbol + shift alt keycode 179 = VoidSymbol + altgr alt keycode 179 = VoidSymbol +keycode 180 = nul + altgr control keycode 180 = VoidSymbol + shift alt keycode 180 = VoidSymbol + altgr alt keycode 180 = VoidSymbol +keycode 181 = nul + altgr control keycode 181 = VoidSymbol + shift alt keycode 181 = VoidSymbol + altgr alt keycode 181 = VoidSymbol +keycode 182 = nul + altgr control keycode 182 = VoidSymbol + shift alt keycode 182 = VoidSymbol + altgr alt keycode 182 = VoidSymbol +keycode 183 = nul + altgr control keycode 183 = VoidSymbol + shift alt keycode 183 = VoidSymbol + altgr alt keycode 183 = VoidSymbol +keycode 184 = nul + altgr control keycode 184 = VoidSymbol + shift alt keycode 184 = VoidSymbol + altgr alt keycode 184 = VoidSymbol +keycode 185 = nul + altgr control keycode 185 = VoidSymbol + shift alt keycode 185 = VoidSymbol + altgr alt keycode 185 = VoidSymbol +keycode 186 = nul + altgr control keycode 186 = VoidSymbol + shift alt keycode 186 = VoidSymbol + altgr alt keycode 186 = VoidSymbol +keycode 187 = nul + altgr control keycode 187 = VoidSymbol + shift alt keycode 187 = VoidSymbol + altgr alt keycode 187 = VoidSymbol +keycode 188 = nul + altgr control keycode 188 = VoidSymbol + shift alt keycode 188 = VoidSymbol + altgr alt keycode 188 = VoidSymbol +keycode 189 = nul + altgr control keycode 189 = VoidSymbol + shift alt keycode 189 = VoidSymbol + altgr alt keycode 189 = VoidSymbol +keycode 190 = nul + altgr control keycode 190 = VoidSymbol + shift alt keycode 190 = VoidSymbol + altgr alt keycode 190 = VoidSymbol +keycode 191 = nul + altgr control keycode 191 = VoidSymbol + shift alt keycode 191 = VoidSymbol + altgr alt keycode 191 = VoidSymbol +keycode 192 = nul + altgr control keycode 192 = VoidSymbol + shift alt keycode 192 = VoidSymbol + altgr alt keycode 192 = VoidSymbol +keycode 193 = nul + altgr control keycode 193 = VoidSymbol + shift alt keycode 193 = VoidSymbol + altgr alt keycode 193 = VoidSymbol +keycode 194 = nul + altgr control keycode 194 = VoidSymbol + shift alt keycode 194 = VoidSymbol + altgr alt keycode 194 = VoidSymbol +keycode 195 = nul + altgr control keycode 195 = VoidSymbol + shift alt keycode 195 = VoidSymbol + altgr alt keycode 195 = VoidSymbol +keycode 196 = nul + altgr control keycode 196 = VoidSymbol + shift alt keycode 196 = VoidSymbol + altgr alt keycode 196 = VoidSymbol +keycode 197 = nul + altgr control keycode 197 = VoidSymbol + shift alt keycode 197 = VoidSymbol + altgr alt keycode 197 = VoidSymbol +keycode 198 = nul + altgr control keycode 198 = VoidSymbol + shift alt keycode 198 = VoidSymbol + altgr alt keycode 198 = VoidSymbol +keycode 199 = nul + altgr control keycode 199 = VoidSymbol + shift alt keycode 199 = VoidSymbol + altgr alt keycode 199 = VoidSymbol +keycode 200 = nul + altgr control keycode 200 = VoidSymbol + shift alt keycode 200 = VoidSymbol + altgr alt keycode 200 = VoidSymbol +keycode 201 = nul + altgr control keycode 201 = VoidSymbol + shift alt keycode 201 = VoidSymbol + altgr alt keycode 201 = VoidSymbol +keycode 202 = nul + altgr control keycode 202 = VoidSymbol + shift alt keycode 202 = VoidSymbol + altgr alt keycode 202 = VoidSymbol +keycode 203 = nul + altgr control keycode 203 = VoidSymbol + shift alt keycode 203 = VoidSymbol + altgr alt keycode 203 = VoidSymbol +keycode 204 = nul + altgr control keycode 204 = VoidSymbol + shift alt keycode 204 = VoidSymbol + altgr alt keycode 204 = VoidSymbol +keycode 205 = nul + altgr control keycode 205 = VoidSymbol + shift alt keycode 205 = VoidSymbol + altgr alt keycode 205 = VoidSymbol +keycode 206 = nul + altgr control keycode 206 = VoidSymbol + shift alt keycode 206 = VoidSymbol + altgr alt keycode 206 = VoidSymbol +keycode 207 = nul + altgr control keycode 207 = VoidSymbol + shift alt keycode 207 = VoidSymbol + altgr alt keycode 207 = VoidSymbol +keycode 208 = nul + altgr control keycode 208 = VoidSymbol + shift alt keycode 208 = VoidSymbol + altgr alt keycode 208 = VoidSymbol +keycode 209 = nul + altgr control keycode 209 = VoidSymbol + shift alt keycode 209 = VoidSymbol + altgr alt keycode 209 = VoidSymbol +keycode 210 = nul + altgr control keycode 210 = VoidSymbol + shift alt keycode 210 = VoidSymbol + altgr alt keycode 210 = VoidSymbol +keycode 211 = nul + altgr control keycode 211 = VoidSymbol + shift alt keycode 211 = VoidSymbol + altgr alt keycode 211 = VoidSymbol +keycode 212 = nul + altgr control keycode 212 = VoidSymbol + shift alt keycode 212 = VoidSymbol + altgr alt keycode 212 = VoidSymbol +keycode 213 = nul + altgr control keycode 213 = VoidSymbol + shift alt keycode 213 = VoidSymbol + altgr alt keycode 213 = VoidSymbol +keycode 214 = nul + altgr control keycode 214 = VoidSymbol + shift alt keycode 214 = VoidSymbol + altgr alt keycode 214 = VoidSymbol +keycode 215 = nul + altgr control keycode 215 = VoidSymbol + shift alt keycode 215 = VoidSymbol + altgr alt keycode 215 = VoidSymbol +keycode 216 = nul + altgr control keycode 216 = VoidSymbol + shift alt keycode 216 = VoidSymbol + altgr alt keycode 216 = VoidSymbol +keycode 217 = nul + altgr control keycode 217 = VoidSymbol + shift alt keycode 217 = VoidSymbol + altgr alt keycode 217 = VoidSymbol +keycode 218 = nul + altgr control keycode 218 = VoidSymbol + shift alt keycode 218 = VoidSymbol + altgr alt keycode 218 = VoidSymbol +keycode 219 = nul + altgr control keycode 219 = VoidSymbol + shift alt keycode 219 = VoidSymbol + altgr alt keycode 219 = VoidSymbol +keycode 220 = nul + altgr control keycode 220 = VoidSymbol + shift alt keycode 220 = VoidSymbol + altgr alt keycode 220 = VoidSymbol +keycode 221 = nul + altgr control keycode 221 = VoidSymbol + shift alt keycode 221 = VoidSymbol + altgr alt keycode 221 = VoidSymbol +keycode 222 = nul + altgr control keycode 222 = VoidSymbol + shift alt keycode 222 = VoidSymbol + altgr alt keycode 222 = VoidSymbol +keycode 223 = nul + altgr control keycode 223 = VoidSymbol + shift alt keycode 223 = VoidSymbol + altgr alt keycode 223 = VoidSymbol +keycode 224 = nul + altgr control keycode 224 = VoidSymbol + shift alt keycode 224 = VoidSymbol + altgr alt keycode 224 = VoidSymbol +keycode 225 = nul + altgr control keycode 225 = VoidSymbol + shift alt keycode 225 = VoidSymbol + altgr alt keycode 225 = VoidSymbol +keycode 226 = nul + altgr control keycode 226 = VoidSymbol + shift alt keycode 226 = VoidSymbol + altgr alt keycode 226 = VoidSymbol +keycode 227 = nul + altgr control keycode 227 = VoidSymbol + shift alt keycode 227 = VoidSymbol + altgr alt keycode 227 = VoidSymbol +keycode 228 = nul + altgr control keycode 228 = VoidSymbol + shift alt keycode 228 = VoidSymbol + altgr alt keycode 228 = VoidSymbol +keycode 229 = nul + altgr control keycode 229 = VoidSymbol + shift alt keycode 229 = VoidSymbol + altgr alt keycode 229 = VoidSymbol +keycode 230 = nul + altgr control keycode 230 = VoidSymbol + shift alt keycode 230 = VoidSymbol + altgr alt keycode 230 = VoidSymbol +keycode 231 = nul + altgr control keycode 231 = VoidSymbol + shift alt keycode 231 = VoidSymbol + altgr alt keycode 231 = VoidSymbol +keycode 232 = nul + altgr control keycode 232 = VoidSymbol + shift alt keycode 232 = VoidSymbol + altgr alt keycode 232 = VoidSymbol +keycode 233 = nul + altgr control keycode 233 = VoidSymbol + shift alt keycode 233 = VoidSymbol + altgr alt keycode 233 = VoidSymbol +keycode 234 = nul + altgr control keycode 234 = VoidSymbol + shift alt keycode 234 = VoidSymbol + altgr alt keycode 234 = VoidSymbol +keycode 235 = nul + altgr control keycode 235 = VoidSymbol + shift alt keycode 235 = VoidSymbol + altgr alt keycode 235 = VoidSymbol +keycode 236 = nul + altgr control keycode 236 = VoidSymbol + shift alt keycode 236 = VoidSymbol + altgr alt keycode 236 = VoidSymbol +keycode 237 = nul + altgr control keycode 237 = VoidSymbol + shift alt keycode 237 = VoidSymbol + altgr alt keycode 237 = VoidSymbol +keycode 238 = nul + altgr control keycode 238 = VoidSymbol + shift alt keycode 238 = VoidSymbol + altgr alt keycode 238 = VoidSymbol +keycode 239 = nul + altgr control keycode 239 = VoidSymbol + shift alt keycode 239 = VoidSymbol + altgr alt keycode 239 = VoidSymbol +keycode 240 = nul + altgr control keycode 240 = VoidSymbol + shift alt keycode 240 = VoidSymbol + altgr alt keycode 240 = VoidSymbol +keycode 241 = nul + altgr control keycode 241 = VoidSymbol + shift alt keycode 241 = VoidSymbol + altgr alt keycode 241 = VoidSymbol +keycode 242 = nul + altgr control keycode 242 = VoidSymbol + shift alt keycode 242 = VoidSymbol + altgr alt keycode 242 = VoidSymbol +keycode 243 = nul + altgr control keycode 243 = VoidSymbol + shift alt keycode 243 = VoidSymbol + altgr alt keycode 243 = VoidSymbol +keycode 244 = nul + altgr control keycode 244 = VoidSymbol + shift alt keycode 244 = VoidSymbol + altgr alt keycode 244 = VoidSymbol +keycode 245 = nul + altgr control keycode 245 = VoidSymbol + shift alt keycode 245 = VoidSymbol + altgr alt keycode 245 = VoidSymbol +keycode 246 = nul + altgr control keycode 246 = VoidSymbol + shift alt keycode 246 = VoidSymbol + altgr alt keycode 246 = VoidSymbol +keycode 247 = nul + altgr control keycode 247 = VoidSymbol + shift alt keycode 247 = VoidSymbol + altgr alt keycode 247 = VoidSymbol +keycode 248 = nul + altgr control keycode 248 = VoidSymbol + shift alt keycode 248 = VoidSymbol + altgr alt keycode 248 = VoidSymbol +keycode 249 = nul + altgr control keycode 249 = VoidSymbol + shift alt keycode 249 = VoidSymbol + altgr alt keycode 249 = VoidSymbol +keycode 250 = nul + altgr control keycode 250 = VoidSymbol + shift alt keycode 250 = VoidSymbol + altgr alt keycode 250 = VoidSymbol +keycode 251 = nul + altgr control keycode 251 = VoidSymbol + shift alt keycode 251 = VoidSymbol + altgr alt keycode 251 = VoidSymbol +keycode 252 = nul + altgr control keycode 252 = VoidSymbol + shift alt keycode 252 = VoidSymbol + altgr alt keycode 252 = VoidSymbol +keycode 253 = nul + altgr control keycode 253 = VoidSymbol + shift alt keycode 253 = VoidSymbol + altgr alt keycode 253 = VoidSymbol +keycode 254 = nul + altgr control keycode 254 = VoidSymbol + shift alt keycode 254 = VoidSymbol + altgr alt keycode 254 = VoidSymbol +keycode 255 = nul + altgr control keycode 255 = VoidSymbol + shift alt keycode 255 = VoidSymbol + altgr alt keycode 255 = VoidSymbol +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 '-' 'a' to U+00aa +compose '-' 'A' to U+00aa +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' to U+00c5 +compose '°' '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 '^' '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 '^' 'D' to U+00d0 +compose '^' 'd' to U+00f0 +compose '~' 'N' to U+00d1 +compose '~' 'n' to U+00f1 +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 '-' 'o' to U+00ba +compose '-' 'O' to U+00ba +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 'n' 'n' to U+00f1 +compose 'n' 'h' to U+00f1 +compose 'N' 'Y' to U+00d1 +compose 'N' 'N' to U+00d1 +compose 'N' 'H' to U+00d1 +compose 'N' 'y' to U+00d1 +compose 'N' 'n' to U+00d1 +compose 'N' 'h' to U+00d1 +compose '-' 'L' to U+00a3 +compose '<' '<' to U+00ab +compose '>' '>' to U+00bb +compose '?' '?' to U+00bf +compose '^' '?' to U+00bf +compose '!' '!' to U+00a1 +compose '^' '!' to U+00a1 +compose '^' '1' to U+00b9 +compose '^' '2' to U+00b2 +compose '^' '3' to U+00b3 +compose '+' '-' to U+00b1 +compose 'c' '=' to U+00a2 +compose 'c' '/' to U+00a2 +compose '/' 'c' to U+00a2 +compose '-' 'c' to U+00a2 +compose '-' 'C' to U+00a2 +compose '|' 'c' to U+00a2 +compose '|' 'C' to U+00a2 +compose 'L' '=' to U+00a3 +compose '-' 'L' to U+00a3 +compose '-' 'l' to U+00a3 +compose '^' '*' to U+00d7 +compose '^' 'x' to U+00d7 +compose 'x' 'x' to U+00d7 +compose '^' '.' to U+00b7 +compose '.' '.' to U+00b7 +compose '^' '/' to U+00f7 +compose '^' ':' to U+00f7 +compose '-' ':' to U+00f7 +compose ':' '-' to U+00f7 +compose 'Y' '=' to U+00a5 +compose '=' 'Y' to U+00a5 +compose '-' 'Y' to U+00a5 +compose '-' 'l' to U+00a5 +compose '(' 'c' to U+00a9 +compose '"' 'c' to U+00a9 +compose 'O' 'C' to U+00a9 +compose '(' 'C' to U+00a9 +compose 'C' ')' to U+00a9 +compose '-' 'a' to U+00aa +compose '-' 'A' to U+00aa +compose '-' 'o' to U+00ba +compose '-' 'O' to U+00ba +compose '(' 'r' to U+00ae +compose '"' 'r' to U+00ae +compose 'O' 'R' to U+00ae +compose '(' 'R' to U+00ae +compose 'R' ')' to U+00ae +compose 'm' 'u' to U+00b5 +compose 'P' 'P' to U+00b6 +compose '1' '4' to U+00bc +compose '1' '2' to U+00bd +compose '3' '4' to U+00be +compose 'e' '=' to U+00a4 +compose '-' 'e' to U+00a4 +compose '-' 'E' to U+00a4 +compose '=' 'E' to U+00a4 +compose 'v' 'S' to U+00a6 +compose '^' 'S' to U+00a6 +compose 'v' 's' to U+00a8 +compose '^' 's' to U+00a8 +compose 'v' 'Z' to U+00b4 +compose '^' 'Z' to U+00b4 +compose 'v' 'z' to U+00b8 +compose '^' 'z' to U+00b8 +compose 'O' 'E' to U+00bc +compose 'O' 'e' to U+00bc +compose 'o' 'e' to U+00bd +compose '"' 'Y' to U+00be +compose 'i' 'j' to U+00ff +compose 'I' 'J' to U+00be diff --git a/remote/modules/german/data/opt/openslx/keymaps/german_qwertz_keyboard_translation.map b/remote/modules/german/data/opt/openslx/keymaps/german_qwertz_keyboard_translation.map new file mode 100644 index 00000000..d5069876 --- /dev/null +++ b/remote/modules/german/data/opt/openslx/keymaps/german_qwertz_keyboard_translation.map @@ -0,0 +1,809 @@ +keymaps 0-2,4-6,8-10,12 +keycode 1 = Escape Escape + alt keycode 1 = Meta_Escape + shift alt keycode 1 = Meta_Escape +keycode 2 = one exclam + alt keycode 2 = Meta_one + shift alt keycode 2 = Meta_exclam +keycode 3 = two quotedbl twosuperior nul + alt keycode 3 = Meta_two + shift alt keycode 3 = Meta_quotedbl + control alt keycode 3 = Meta_nul +keycode 4 = three section threesuperior Escape + alt keycode 4 = Meta_three + control alt keycode 4 = Meta_Escape +keycode 5 = four dollar + alt keycode 5 = Meta_four + shift alt keycode 5 = Meta_dollar +keycode 6 = five percent + alt keycode 6 = Meta_five + shift alt keycode 6 = Meta_percent +keycode 7 = six ampersand + control keycode 7 = Control_asciicircum + alt keycode 7 = Meta_six + shift alt keycode 7 = Meta_ampersand +keycode 8 = seven slash braceleft + alt keycode 8 = Meta_seven + shift alt keycode 8 = Meta_slash + altgr alt keycode 8 = Meta_braceleft +keycode 9 = eight parenleft bracketleft + alt keycode 9 = Meta_eight + shift alt keycode 9 = Meta_parenleft + altgr alt keycode 9 = Meta_bracketleft +keycode 10 = nine parenright bracketright + altgr control keycode 10 = Control_bracketright + alt keycode 10 = Meta_nine + shift alt keycode 10 = Meta_parenright + altgr alt keycode 10 = Meta_bracketright +keycode 11 = zero equal braceright + alt keycode 11 = Meta_zero + shift alt keycode 11 = Meta_equal + altgr alt keycode 11 = Meta_braceright +keycode 12 = ssharp question backslash + altgr control keycode 12 = Control_backslash + shift alt keycode 12 = Meta_question + altgr alt keycode 12 = Meta_backslash +keycode 13 = apostrophe grave + alt keycode 13 = 0x08b4 + shift alt keycode 13 = Meta_grave +keycode 14 = Delete Delete + alt keycode 14 = Meta_Delete + shift alt keycode 14 = Meta_Delete +keycode 15 = Tab Meta_Tab + alt keycode 15 = Meta_Tab +keycode 16 = +q +Q at Control_q Control_q nul Meta_q Meta_Q Meta_at Meta_Control_q +keycode 17 = w +keycode 18 = +e +E currency Control_e Control_e Control_e Meta_e Meta_E Meta_e Meta_Control_e +keycode 19 = r +keycode 20 = t +keycode 21 = z +keycode 22 = u +keycode 23 = i +keycode 24 = o +keycode 25 = p +keycode 26 = +udiaeresis +Udiaeresis +keycode 27 = plus asterisk asciitilde + alt keycode 27 = Meta_plus + shift alt keycode 27 = Meta_asterisk +keycode 28 = Return + alt keycode 28 = Meta_Control_m +keycode 29 = Control +keycode 30 = a +keycode 31 = s +keycode 32 = d +keycode 33 = f +keycode 34 = g +keycode 35 = h +keycode 36 = j +keycode 37 = k +keycode 38 = l +keycode 39 = +odiaeresis +Odiaeresis +keycode 40 = +adiaeresis +Adiaeresis +keycode 41 = asciicircum degree Meta_asciicircum Control_asciicircum + control alt keycode 41 = Meta_Control_asciicircum +keycode 42 = Shift +keycode 43 = numbersign apostrophe + alt keycode 43 = Meta_numbersign + shift alt keycode 43 = Meta_apostrophe +keycode 44 = y +keycode 45 = x +keycode 46 = +c +C cent Control_c Control_c Control_c Meta_c Meta_C Meta_c Meta_Control_c +keycode 47 = v +keycode 48 = b +keycode 49 = n +keycode 50 = +m +M mu Control_m Control_m Control_m Meta_m Meta_M Meta_m Meta_Control_m +keycode 51 = comma semicolon + alt keycode 51 = Meta_comma + shift alt keycode 51 = Meta_semicolon +keycode 52 = period colon + alt keycode 52 = Meta_period + shift alt keycode 52 = Meta_colon +keycode 53 = minus underscore Meta_minus + shift control keycode 53 = Control_underscore + alt keycode 53 = Meta_minus + shift alt keycode 53 = Meta_underscore +keycode 54 = Shift +keycode 55 = KP_Multiply + altgr keycode 55 = Hex_C +keycode 56 = Alt +keycode 57 = space space Meta_space nul + alt keycode 57 = Meta_space + shift alt keycode 57 = Meta_space + control alt keycode 57 = Meta_nul +keycode 58 = Caps_Lock +keycode 59 = F1 F13 Console_13 F25 + alt keycode 59 = Console_1 + control alt keycode 59 = Console_1 +keycode 60 = F2 F14 Console_14 F26 + alt keycode 60 = Console_2 + control alt keycode 60 = Console_2 +keycode 61 = F3 F15 Console_15 F27 + alt keycode 61 = Console_3 + control alt keycode 61 = Console_3 +keycode 62 = F4 F16 Console_16 F28 + alt keycode 62 = Console_4 + control alt keycode 62 = Console_4 +keycode 63 = F5 F17 Console_17 F29 + alt keycode 63 = Console_5 + control alt keycode 63 = Console_5 +keycode 64 = F6 F18 Console_18 F30 + alt keycode 64 = Console_6 + control alt keycode 64 = Console_6 +keycode 65 = F7 F19 Console_19 F31 + alt keycode 65 = Console_7 + control alt keycode 65 = Console_7 +keycode 66 = F8 F20 Console_20 F32 + alt keycode 66 = Console_8 + control alt keycode 66 = Console_8 +keycode 67 = F9 F21 Console_21 F33 + alt keycode 67 = Console_9 + control alt keycode 67 = Console_9 +keycode 68 = F10 F22 Console_22 F34 + alt keycode 68 = Console_10 + control alt keycode 68 = Console_10 +keycode 69 = Num_Lock + altgr keycode 69 = Hex_A +keycode 70 = Scroll_Lock Show_Memory Show_Registers Show_State + alt keycode 70 = Scroll_Lock +keycode 71 = KP_7 + altgr keycode 71 = Hex_7 + alt keycode 71 = Ascii_7 +keycode 72 = KP_8 + altgr keycode 72 = Hex_8 + alt keycode 72 = Ascii_8 +keycode 73 = KP_9 + altgr keycode 73 = Hex_9 + alt keycode 73 = Ascii_9 +keycode 74 = KP_Subtract + altgr keycode 74 = Hex_D +keycode 75 = KP_4 + altgr keycode 75 = Hex_4 + alt keycode 75 = Ascii_4 +keycode 76 = KP_5 + altgr keycode 76 = Hex_5 + alt keycode 76 = Ascii_5 +keycode 77 = KP_6 + altgr keycode 77 = Hex_6 + alt keycode 77 = Ascii_6 +keycode 78 = KP_Add + altgr keycode 78 = Hex_E +keycode 79 = KP_1 + altgr keycode 79 = Hex_1 + alt keycode 79 = Ascii_1 +keycode 80 = KP_2 + altgr keycode 80 = Hex_2 + alt keycode 80 = Ascii_2 +keycode 81 = KP_3 + altgr keycode 81 = Hex_3 + alt keycode 81 = Ascii_3 +keycode 82 = KP_0 + altgr keycode 82 = Hex_0 + alt keycode 82 = Ascii_0 +keycode 83 = KP_Comma + altgr control keycode 83 = Boot + control alt keycode 83 = Boot +keycode 84 = Last_Console +keycode 85 = +keycode 86 = less greater bar + alt keycode 86 = Meta_less + shift alt keycode 86 = Meta_greater + altgr alt keycode 86 = Meta_bar +keycode 87 = F11 F23 Console_23 F35 + alt keycode 87 = Console_11 + control alt keycode 87 = Console_11 +keycode 88 = F12 F24 Console_24 F36 + alt keycode 88 = Console_12 + control alt keycode 88 = Console_12 +keycode 89 = +keycode 90 = +keycode 91 = +keycode 92 = +keycode 93 = +keycode 94 = +keycode 95 = +keycode 96 = KP_Enter + altgr keycode 96 = Hex_F +keycode 97 = Control +keycode 98 = KP_Divide + altgr keycode 98 = Hex_B +keycode 99 = Compose + control keycode 99 = Control_backslash + alt keycode 99 = Control_backslash + control alt keycode 99 = Meta_Control_backslash +keycode 100 = AltGr + alt keycode 100 = Compose +keycode 101 = Break +keycode 102 = Find +keycode 103 = Up + alt keycode 103 = KeyboardSignal +keycode 104 = Prior + shift keycode 104 = Scroll_Backward +keycode 105 = Left + alt keycode 105 = Decr_Console +keycode 106 = Right + alt keycode 106 = Incr_Console +keycode 107 = Select +keycode 108 = Down +keycode 109 = Next + shift keycode 109 = Scroll_Forward +keycode 110 = Insert +keycode 111 = Remove + altgr control keycode 111 = Boot + control alt keycode 111 = Boot +keycode 112 = Macro + altgr control keycode 112 = VoidSymbol + shift alt keycode 112 = VoidSymbol + altgr alt keycode 112 = VoidSymbol +keycode 113 = F13 + altgr control keycode 113 = VoidSymbol + shift alt keycode 113 = VoidSymbol + altgr alt keycode 113 = VoidSymbol +keycode 114 = F14 + altgr control keycode 114 = VoidSymbol + shift alt keycode 114 = VoidSymbol + altgr alt keycode 114 = VoidSymbol +keycode 115 = Help + altgr control keycode 115 = VoidSymbol + shift alt keycode 115 = VoidSymbol + altgr alt keycode 115 = VoidSymbol +keycode 116 = Do + altgr control keycode 116 = VoidSymbol + shift alt keycode 116 = VoidSymbol + altgr alt keycode 116 = VoidSymbol +keycode 117 = F17 + altgr control keycode 117 = VoidSymbol + shift alt keycode 117 = VoidSymbol + altgr alt keycode 117 = VoidSymbol +keycode 118 = KP_MinPlus + altgr control keycode 118 = VoidSymbol + shift alt keycode 118 = VoidSymbol + altgr alt keycode 118 = VoidSymbol +keycode 119 = Pause +keycode 120 = +keycode 121 = +keycode 122 = +keycode 123 = +keycode 124 = +keycode 125 = +keycode 126 = +keycode 127 = +keycode 128 = nul + altgr control keycode 128 = VoidSymbol + shift alt keycode 128 = VoidSymbol + altgr alt keycode 128 = VoidSymbol +keycode 129 = nul + altgr control keycode 129 = VoidSymbol + shift alt keycode 129 = VoidSymbol + altgr alt keycode 129 = VoidSymbol +keycode 130 = nul + altgr control keycode 130 = VoidSymbol + shift alt keycode 130 = VoidSymbol + altgr alt keycode 130 = VoidSymbol +keycode 131 = nul + altgr control keycode 131 = VoidSymbol + shift alt keycode 131 = VoidSymbol + altgr alt keycode 131 = VoidSymbol +keycode 132 = nul + altgr control keycode 132 = VoidSymbol + shift alt keycode 132 = VoidSymbol + altgr alt keycode 132 = VoidSymbol +keycode 133 = nul + altgr control keycode 133 = VoidSymbol + shift alt keycode 133 = VoidSymbol + altgr alt keycode 133 = VoidSymbol +keycode 134 = nul + altgr control keycode 134 = VoidSymbol + shift alt keycode 134 = VoidSymbol + altgr alt keycode 134 = VoidSymbol +keycode 135 = nul + altgr control keycode 135 = VoidSymbol + shift alt keycode 135 = VoidSymbol + altgr alt keycode 135 = VoidSymbol +keycode 136 = nul + altgr control keycode 136 = VoidSymbol + shift alt keycode 136 = VoidSymbol + altgr alt keycode 136 = VoidSymbol +keycode 137 = nul + altgr control keycode 137 = VoidSymbol + shift alt keycode 137 = VoidSymbol + altgr alt keycode 137 = VoidSymbol +keycode 138 = nul + altgr control keycode 138 = VoidSymbol + shift alt keycode 138 = VoidSymbol + altgr alt keycode 138 = VoidSymbol +keycode 139 = nul + altgr control keycode 139 = VoidSymbol + shift alt keycode 139 = VoidSymbol + altgr alt keycode 139 = VoidSymbol +keycode 140 = nul + altgr control keycode 140 = VoidSymbol + shift alt keycode 140 = VoidSymbol + altgr alt keycode 140 = VoidSymbol +keycode 141 = nul + altgr control keycode 141 = VoidSymbol + shift alt keycode 141 = VoidSymbol + altgr alt keycode 141 = VoidSymbol +keycode 142 = nul + altgr control keycode 142 = VoidSymbol + shift alt keycode 142 = VoidSymbol + altgr alt keycode 142 = VoidSymbol +keycode 143 = nul + altgr control keycode 143 = VoidSymbol + shift alt keycode 143 = VoidSymbol + altgr alt keycode 143 = VoidSymbol +keycode 144 = nul + altgr control keycode 144 = VoidSymbol + shift alt keycode 144 = VoidSymbol + altgr alt keycode 144 = VoidSymbol +keycode 145 = nul + altgr control keycode 145 = VoidSymbol + shift alt keycode 145 = VoidSymbol + altgr alt keycode 145 = VoidSymbol +keycode 146 = nul + altgr control keycode 146 = VoidSymbol + shift alt keycode 146 = VoidSymbol + altgr alt keycode 146 = VoidSymbol +keycode 147 = nul + altgr control keycode 147 = VoidSymbol + shift alt keycode 147 = VoidSymbol + altgr alt keycode 147 = VoidSymbol +keycode 148 = nul + altgr control keycode 148 = VoidSymbol + shift alt keycode 148 = VoidSymbol + altgr alt keycode 148 = VoidSymbol +keycode 149 = nul + altgr control keycode 149 = VoidSymbol + shift alt keycode 149 = VoidSymbol + altgr alt keycode 149 = VoidSymbol +keycode 150 = nul + altgr control keycode 150 = VoidSymbol + shift alt keycode 150 = VoidSymbol + altgr alt keycode 150 = VoidSymbol +keycode 151 = nul + altgr control keycode 151 = VoidSymbol + shift alt keycode 151 = VoidSymbol + altgr alt keycode 151 = VoidSymbol +keycode 152 = nul + altgr control keycode 152 = VoidSymbol + shift alt keycode 152 = VoidSymbol + altgr alt keycode 152 = VoidSymbol +keycode 153 = nul + altgr control keycode 153 = VoidSymbol + shift alt keycode 153 = VoidSymbol + altgr alt keycode 153 = VoidSymbol +keycode 154 = nul + altgr control keycode 154 = VoidSymbol + shift alt keycode 154 = VoidSymbol + altgr alt keycode 154 = VoidSymbol +keycode 155 = nul + altgr control keycode 155 = VoidSymbol + shift alt keycode 155 = VoidSymbol + altgr alt keycode 155 = VoidSymbol +keycode 156 = nul + altgr control keycode 156 = VoidSymbol + shift alt keycode 156 = VoidSymbol + altgr alt keycode 156 = VoidSymbol +keycode 157 = nul + altgr control keycode 157 = VoidSymbol + shift alt keycode 157 = VoidSymbol + altgr alt keycode 157 = VoidSymbol +keycode 158 = nul + altgr control keycode 158 = VoidSymbol + shift alt keycode 158 = VoidSymbol + altgr alt keycode 158 = VoidSymbol +keycode 159 = nul + altgr control keycode 159 = VoidSymbol + shift alt keycode 159 = VoidSymbol + altgr alt keycode 159 = VoidSymbol +keycode 160 = nul + altgr control keycode 160 = VoidSymbol + shift alt keycode 160 = VoidSymbol + altgr alt keycode 160 = VoidSymbol +keycode 161 = nul + altgr control keycode 161 = VoidSymbol + shift alt keycode 161 = VoidSymbol + altgr alt keycode 161 = VoidSymbol +keycode 162 = nul + altgr control keycode 162 = VoidSymbol + shift alt keycode 162 = VoidSymbol + altgr alt keycode 162 = VoidSymbol +keycode 163 = nul + altgr control keycode 163 = VoidSymbol + shift alt keycode 163 = VoidSymbol + altgr alt keycode 163 = VoidSymbol +keycode 164 = nul + altgr control keycode 164 = VoidSymbol + shift alt keycode 164 = VoidSymbol + altgr alt keycode 164 = VoidSymbol +keycode 165 = nul + altgr control keycode 165 = VoidSymbol + shift alt keycode 165 = VoidSymbol + altgr alt keycode 165 = VoidSymbol +keycode 166 = nul + altgr control keycode 166 = VoidSymbol + shift alt keycode 166 = VoidSymbol + altgr alt keycode 166 = VoidSymbol +keycode 167 = nul + altgr control keycode 167 = VoidSymbol + shift alt keycode 167 = VoidSymbol + altgr alt keycode 167 = VoidSymbol +keycode 168 = nul + altgr control keycode 168 = VoidSymbol + shift alt keycode 168 = VoidSymbol + altgr alt keycode 168 = VoidSymbol +keycode 169 = nul + altgr control keycode 169 = VoidSymbol + shift alt keycode 169 = VoidSymbol + altgr alt keycode 169 = VoidSymbol +keycode 170 = nul + altgr control keycode 170 = VoidSymbol + shift alt keycode 170 = VoidSymbol + altgr alt keycode 170 = VoidSymbol +keycode 171 = nul + altgr control keycode 171 = VoidSymbol + shift alt keycode 171 = VoidSymbol + altgr alt keycode 171 = VoidSymbol +keycode 172 = nul + altgr control keycode 172 = VoidSymbol + shift alt keycode 172 = VoidSymbol + altgr alt keycode 172 = VoidSymbol +keycode 173 = nul + altgr control keycode 173 = VoidSymbol + shift alt keycode 173 = VoidSymbol + altgr alt keycode 173 = VoidSymbol +keycode 174 = nul + altgr control keycode 174 = VoidSymbol + shift alt keycode 174 = VoidSymbol + altgr alt keycode 174 = VoidSymbol +keycode 175 = nul + altgr control keycode 175 = VoidSymbol + shift alt keycode 175 = VoidSymbol + altgr alt keycode 175 = VoidSymbol +keycode 176 = nul + altgr control keycode 176 = VoidSymbol + shift alt keycode 176 = VoidSymbol + altgr alt keycode 176 = VoidSymbol +keycode 177 = nul + altgr control keycode 177 = VoidSymbol + shift alt keycode 177 = VoidSymbol + altgr alt keycode 177 = VoidSymbol +keycode 178 = nul + altgr control keycode 178 = VoidSymbol + shift alt keycode 178 = VoidSymbol + altgr alt keycode 178 = VoidSymbol +keycode 179 = nul + altgr control keycode 179 = VoidSymbol + shift alt keycode 179 = VoidSymbol + altgr alt keycode 179 = VoidSymbol +keycode 180 = nul + altgr control keycode 180 = VoidSymbol + shift alt keycode 180 = VoidSymbol + altgr alt keycode 180 = VoidSymbol +keycode 181 = nul + altgr control keycode 181 = VoidSymbol + shift alt keycode 181 = VoidSymbol + altgr alt keycode 181 = VoidSymbol +keycode 182 = nul + altgr control keycode 182 = VoidSymbol + shift alt keycode 182 = VoidSymbol + altgr alt keycode 182 = VoidSymbol +keycode 183 = nul + altgr control keycode 183 = VoidSymbol + shift alt keycode 183 = VoidSymbol + altgr alt keycode 183 = VoidSymbol +keycode 184 = nul + altgr control keycode 184 = VoidSymbol + shift alt keycode 184 = VoidSymbol + altgr alt keycode 184 = VoidSymbol +keycode 185 = nul + altgr control keycode 185 = VoidSymbol + shift alt keycode 185 = VoidSymbol + altgr alt keycode 185 = VoidSymbol +keycode 186 = nul + altgr control keycode 186 = VoidSymbol + shift alt keycode 186 = VoidSymbol + altgr alt keycode 186 = VoidSymbol +keycode 187 = nul + altgr control keycode 187 = VoidSymbol + shift alt keycode 187 = VoidSymbol + altgr alt keycode 187 = VoidSymbol +keycode 188 = nul + altgr control keycode 188 = VoidSymbol + shift alt keycode 188 = VoidSymbol + altgr alt keycode 188 = VoidSymbol +keycode 189 = nul + altgr control keycode 189 = VoidSymbol + shift alt keycode 189 = VoidSymbol + altgr alt keycode 189 = VoidSymbol +keycode 190 = nul + altgr control keycode 190 = VoidSymbol + shift alt keycode 190 = VoidSymbol + altgr alt keycode 190 = VoidSymbol +keycode 191 = nul + altgr control keycode 191 = VoidSymbol + shift alt keycode 191 = VoidSymbol + altgr alt keycode 191 = VoidSymbol +keycode 192 = nul + altgr control keycode 192 = VoidSymbol + shift alt keycode 192 = VoidSymbol + altgr alt keycode 192 = VoidSymbol +keycode 193 = nul + altgr control keycode 193 = VoidSymbol + shift alt keycode 193 = VoidSymbol + altgr alt keycode 193 = VoidSymbol +keycode 194 = nul + altgr control keycode 194 = VoidSymbol + shift alt keycode 194 = VoidSymbol + altgr alt keycode 194 = VoidSymbol +keycode 195 = nul + altgr control keycode 195 = VoidSymbol + shift alt keycode 195 = VoidSymbol + altgr alt keycode 195 = VoidSymbol +keycode 196 = nul + altgr control keycode 196 = VoidSymbol + shift alt keycode 196 = VoidSymbol + altgr alt keycode 196 = VoidSymbol +keycode 197 = nul + altgr control keycode 197 = VoidSymbol + shift alt keycode 197 = VoidSymbol + altgr alt keycode 197 = VoidSymbol +keycode 198 = nul + altgr control keycode 198 = VoidSymbol + shift alt keycode 198 = VoidSymbol + altgr alt keycode 198 = VoidSymbol +keycode 199 = nul + altgr control keycode 199 = VoidSymbol + shift alt keycode 199 = VoidSymbol + altgr alt keycode 199 = VoidSymbol +keycode 200 = nul + altgr control keycode 200 = VoidSymbol + shift alt keycode 200 = VoidSymbol + altgr alt keycode 200 = VoidSymbol +keycode 201 = nul + altgr control keycode 201 = VoidSymbol + shift alt keycode 201 = VoidSymbol + altgr alt keycode 201 = VoidSymbol +keycode 202 = nul + altgr control keycode 202 = VoidSymbol + shift alt keycode 202 = VoidSymbol + altgr alt keycode 202 = VoidSymbol +keycode 203 = nul + altgr control keycode 203 = VoidSymbol + shift alt keycode 203 = VoidSymbol + altgr alt keycode 203 = VoidSymbol +keycode 204 = nul + altgr control keycode 204 = VoidSymbol + shift alt keycode 204 = VoidSymbol + altgr alt keycode 204 = VoidSymbol +keycode 205 = nul + altgr control keycode 205 = VoidSymbol + shift alt keycode 205 = VoidSymbol + altgr alt keycode 205 = VoidSymbol +keycode 206 = nul + altgr control keycode 206 = VoidSymbol + shift alt keycode 206 = VoidSymbol + altgr alt keycode 206 = VoidSymbol +keycode 207 = nul + altgr control keycode 207 = VoidSymbol + shift alt keycode 207 = VoidSymbol + altgr alt keycode 207 = VoidSymbol +keycode 208 = nul + altgr control keycode 208 = VoidSymbol + shift alt keycode 208 = VoidSymbol + altgr alt keycode 208 = VoidSymbol +keycode 209 = nul + altgr control keycode 209 = VoidSymbol + shift alt keycode 209 = VoidSymbol + altgr alt keycode 209 = VoidSymbol +keycode 210 = nul + altgr control keycode 210 = VoidSymbol + shift alt keycode 210 = VoidSymbol + altgr alt keycode 210 = VoidSymbol +keycode 211 = nul + altgr control keycode 211 = VoidSymbol + shift alt keycode 211 = VoidSymbol + altgr alt keycode 211 = VoidSymbol +keycode 212 = nul + altgr control keycode 212 = VoidSymbol + shift alt keycode 212 = VoidSymbol + altgr alt keycode 212 = VoidSymbol +keycode 213 = nul + altgr control keycode 213 = VoidSymbol + shift alt keycode 213 = VoidSymbol + altgr alt keycode 213 = VoidSymbol +keycode 214 = nul + altgr control keycode 214 = VoidSymbol + shift alt keycode 214 = VoidSymbol + altgr alt keycode 214 = VoidSymbol +keycode 215 = nul + altgr control keycode 215 = VoidSymbol + shift alt keycode 215 = VoidSymbol + altgr alt keycode 215 = VoidSymbol +keycode 216 = nul + altgr control keycode 216 = VoidSymbol + shift alt keycode 216 = VoidSymbol + altgr alt keycode 216 = VoidSymbol +keycode 217 = nul + altgr control keycode 217 = VoidSymbol + shift alt keycode 217 = VoidSymbol + altgr alt keycode 217 = VoidSymbol +keycode 218 = nul + altgr control keycode 218 = VoidSymbol + shift alt keycode 218 = VoidSymbol + altgr alt keycode 218 = VoidSymbol +keycode 219 = nul + altgr control keycode 219 = VoidSymbol + shift alt keycode 219 = VoidSymbol + altgr alt keycode 219 = VoidSymbol +keycode 220 = nul + altgr control keycode 220 = VoidSymbol + shift alt keycode 220 = VoidSymbol + altgr alt keycode 220 = VoidSymbol +keycode 221 = nul + altgr control keycode 221 = VoidSymbol + shift alt keycode 221 = VoidSymbol + altgr alt keycode 221 = VoidSymbol +keycode 222 = nul + altgr control keycode 222 = VoidSymbol + shift alt keycode 222 = VoidSymbol + altgr alt keycode 222 = VoidSymbol +keycode 223 = nul + altgr control keycode 223 = VoidSymbol + shift alt keycode 223 = VoidSymbol + altgr alt keycode 223 = VoidSymbol +keycode 224 = nul + altgr control keycode 224 = VoidSymbol + shift alt keycode 224 = VoidSymbol + altgr alt keycode 224 = VoidSymbol +keycode 225 = nul + altgr control keycode 225 = VoidSymbol + shift alt keycode 225 = VoidSymbol + altgr alt keycode 225 = VoidSymbol +keycode 226 = nul + altgr control keycode 226 = VoidSymbol + shift alt keycode 226 = VoidSymbol + altgr alt keycode 226 = VoidSymbol +keycode 227 = nul + altgr control keycode 227 = VoidSymbol + shift alt keycode 227 = VoidSymbol + altgr alt keycode 227 = VoidSymbol +keycode 228 = nul + altgr control keycode 228 = VoidSymbol + shift alt keycode 228 = VoidSymbol + altgr alt keycode 228 = VoidSymbol +keycode 229 = nul + altgr control keycode 229 = VoidSymbol + shift alt keycode 229 = VoidSymbol + altgr alt keycode 229 = VoidSymbol +keycode 230 = nul + altgr control keycode 230 = VoidSymbol + shift alt keycode 230 = VoidSymbol + altgr alt keycode 230 = VoidSymbol +keycode 231 = nul + altgr control keycode 231 = VoidSymbol + shift alt keycode 231 = VoidSymbol + altgr alt keycode 231 = VoidSymbol +keycode 232 = nul + altgr control keycode 232 = VoidSymbol + shift alt keycode 232 = VoidSymbol + altgr alt keycode 232 = VoidSymbol +keycode 233 = nul + altgr control keycode 233 = VoidSymbol + shift alt keycode 233 = VoidSymbol + altgr alt keycode 233 = VoidSymbol +keycode 234 = nul + altgr control keycode 234 = VoidSymbol + shift alt keycode 234 = VoidSymbol + altgr alt keycode 234 = VoidSymbol +keycode 235 = nul + altgr control keycode 235 = VoidSymbol + shift alt keycode 235 = VoidSymbol + altgr alt keycode 235 = VoidSymbol +keycode 236 = nul + altgr control keycode 236 = VoidSymbol + shift alt keycode 236 = VoidSymbol + altgr alt keycode 236 = VoidSymbol +keycode 237 = nul + altgr control keycode 237 = VoidSymbol + shift alt keycode 237 = VoidSymbol + altgr alt keycode 237 = VoidSymbol +keycode 238 = nul + altgr control keycode 238 = VoidSymbol + shift alt keycode 238 = VoidSymbol + altgr alt keycode 238 = VoidSymbol +keycode 239 = nul + altgr control keycode 239 = VoidSymbol + shift alt keycode 239 = VoidSymbol + altgr alt keycode 239 = VoidSymbol +keycode 240 = nul + altgr control keycode 240 = VoidSymbol + shift alt keycode 240 = VoidSymbol + altgr alt keycode 240 = VoidSymbol +keycode 241 = nul + altgr control keycode 241 = VoidSymbol + shift alt keycode 241 = VoidSymbol + altgr alt keycode 241 = VoidSymbol +keycode 242 = nul + altgr control keycode 242 = VoidSymbol + shift alt keycode 242 = VoidSymbol + altgr alt keycode 242 = VoidSymbol +keycode 243 = nul + altgr control keycode 243 = VoidSymbol + shift alt keycode 243 = VoidSymbol + altgr alt keycode 243 = VoidSymbol +keycode 244 = nul + altgr control keycode 244 = VoidSymbol + shift alt keycode 244 = VoidSymbol + altgr alt keycode 244 = VoidSymbol +keycode 245 = nul + altgr control keycode 245 = VoidSymbol + shift alt keycode 245 = VoidSymbol + altgr alt keycode 245 = VoidSymbol +keycode 246 = nul + altgr control keycode 246 = VoidSymbol + shift alt keycode 246 = VoidSymbol + altgr alt keycode 246 = VoidSymbol +keycode 247 = nul + altgr control keycode 247 = VoidSymbol + shift alt keycode 247 = VoidSymbol + altgr alt keycode 247 = VoidSymbol +keycode 248 = nul + altgr control keycode 248 = VoidSymbol + shift alt keycode 248 = VoidSymbol + altgr alt keycode 248 = VoidSymbol +keycode 249 = nul + altgr control keycode 249 = VoidSymbol + shift alt keycode 249 = VoidSymbol + altgr alt keycode 249 = VoidSymbol +keycode 250 = nul + altgr control keycode 250 = VoidSymbol + shift alt keycode 250 = VoidSymbol + altgr alt keycode 250 = VoidSymbol +keycode 251 = nul + altgr control keycode 251 = VoidSymbol + shift alt keycode 251 = VoidSymbol + altgr alt keycode 251 = VoidSymbol +keycode 252 = nul + altgr control keycode 252 = VoidSymbol + shift alt keycode 252 = VoidSymbol + altgr alt keycode 252 = VoidSymbol +keycode 253 = nul + altgr control keycode 253 = VoidSymbol + shift alt keycode 253 = VoidSymbol + altgr alt keycode 253 = VoidSymbol +keycode 254 = nul + altgr control keycode 254 = VoidSymbol + shift alt keycode 254 = VoidSymbol + altgr alt keycode 254 = VoidSymbol +keycode 255 = nul + altgr control keycode 255 = VoidSymbol + shift alt keycode 255 = VoidSymbol + altgr alt keycode 255 = VoidSymbol +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/german/german.build b/remote/modules/german/german.build index 49ce31d7..aa64e0ad 100644 --- a/remote/modules/german/german.build +++ b/remote/modules/german/german.build @@ -22,9 +22,10 @@ build() { # Done collecting file and directory names, copy everything tarcopy "$(sort -u "$FILELIST")" "$MODULE_BUILD_DIR" + } post_copy() { - : + add_env LANG de_DE.utf-8 || perror "add_env function failed." } diff --git a/remote/modules/rsyslogd/rsyslogd.conf b/remote/modules/rsyslogd/rsyslogd.conf index f5d60989..d0d46e77 100644 --- a/remote/modules/rsyslogd/rsyslogd.conf +++ b/remote/modules/rsyslogd/rsyslogd.conf @@ -1,4 +1,4 @@ REQUIRED_CONTENT_PACKAGES=" rsyslog" REQUIRED_BINARIES=" rsyslogd" REQUIRED_FILES=" /etc/rsyslog.conf" -REQUIRED_DIRECTORIES=" /usr/$LIB64/rsyslog" +REQUIRED_DIRECTORIES=" /usr/lib/rsyslog" diff --git a/remote/modules/rsyslogd/rsyslogd.conf.zypper b/remote/modules/rsyslogd/rsyslogd.conf.zypper index 0a61d61b..173aa71e 100644 --- a/remote/modules/rsyslogd/rsyslogd.conf.zypper +++ b/remote/modules/rsyslogd/rsyslogd.conf.zypper @@ -1,3 +1,4 @@ REQUIRED_BINARIES=" rsyslogd rsyslog-service-prepare" +REQUIRED_DIRECTORIES=" /usr/$LIB64/rsyslog" REQUIRED_CONTENT_PACKAGES=" rsyslog" diff --git a/remote/modules/systemd/data/etc/systemd/system/load-german-keymap.service b/remote/modules/systemd/data/etc/systemd/system/load-german-keymap.service deleted file mode 100644 index fa4cf5f2..00000000 --- a/remote/modules/systemd/data/etc/systemd/system/load-german-keymap.service +++ /dev/null @@ -1,5 +0,0 @@ -[Unit] -Description=Setup german keyboard layout - -[Service] -ExecStart=/bin/bash -c 'exec /opt/openslx/sbin/loadkmap < /etc/keymaps/de_DE' diff --git a/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/mount-lib-virt b/remote/modules/vmchooser/data/opt/openslx/bin/mount-lib-virt index ac0dd1a4..27a8f55c 100755 --- a/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/mount-lib-virt +++ b/remote/modules/vmchooser/data/opt/openslx/bin/mount-lib-virt @@ -2,7 +2,7 @@ . /opt/openslx/config || exit 1 -export PATH=/opt/openslx/bin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin +export PATH="$PATH:/opt/openslx/bin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/usr/sbin" mkdir -p /var/lib/virt mount -t nfs -o ro,async,nolock,vers=3 "$SLX_VM_NFS" /var/lib/virt diff --git a/remote/rootfs/rootfs-stage31/data/init b/remote/rootfs/rootfs-stage31/data/init index ee90cf15..bf11d9aa 100755 --- a/remote/rootfs/rootfs-stage31/data/init +++ b/remote/rootfs/rootfs-stage31/data/init @@ -15,7 +15,7 @@ # debug shell drop_shell() { [ $# -gt 0 ] && echo $@ - echo "Dropping debug shell. CTRL + D will continue booting." + echo "CTRL + D will continue booting." setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1' } @@ -49,8 +49,8 @@ read KCL < /proc/cmdline export KCL for opts in ${KCL}; do case ${opts} in - debug*) - DEBUG=1 ;; + debug=*) + DEBUG=${opts#debug=} ;; splash*) SPLASH=1 ;; ip=*) @@ -79,6 +79,8 @@ fi mkdir -p /dev/shm/union /dev/shm/uniontmp /rorootfs mount -n -t tmpfs none /dev/shm/uniontmp +[ $DEBUG -ge 4 ] && drop_shell "Requested Debug Shell (before network)." + echo "Setup networking..." # Source script so the variables are still available to us . "/bin/setup_network" || echo "Error setting up network" @@ -93,7 +95,7 @@ else mount -t squashfs /mnt/*.sqfs /rorootfs || drop_shell "Problem mounting Squashfs." fi -[ $DEBUG -ge 1 ] && drop_shell "Requested Debug Shell." +[ $DEBUG -ge 3 ] && drop_shell "Requested Debug Shell: squashfs/nfs mounted, before aufs." echo "Building aufs..." mv /mnt/modprobing /dev/shm/uniontmp @@ -102,6 +104,8 @@ mount -n -t aufs -o br:/dev/shm/uniontmp:/rorootfs=ro none /mnt || drop_shell "P mkdir -p /mnt/uniontmp /mnt/tmp mount -n --move /dev/shm/uniontmp /mnt/uniontmp || drop_shell "Problem moving uniontmp." +[ $DEBUG -ge 2 ] && drop_shell "Requested Debug Shell: after aufs'ing." + # create udev rule for nic we booted from cat > "/mnt/etc/udev/rules.d/70-net-boot-nic-name.rules" <<HEREEND SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="$MAC", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" @@ -118,6 +122,8 @@ SLX_PXE_DNS='$DNS_SERVER' SLX_PXE_MAC='$BRIDGEMAC' HEREEND +[ $DEBUG -ge 1 ] && drop_shell "Requested Debug Shell: before switch_root." + for mnt in proc sys run ; do umount -n "$mnt" done diff --git a/remote/rootfs/rootfs-stage31/rootfs-stage31.conf b/remote/rootfs/rootfs-stage31/rootfs-stage31.conf index 521b45ed..b493c370 100644 --- a/remote/rootfs/rootfs-stage31/rootfs-stage31.conf +++ b/remote/rootfs/rootfs-stage31/rootfs-stage31.conf @@ -7,6 +7,7 @@ REQUIRED_KERNEL_MODULES=" kernel/drivers/video/sis/sisfb.ko kernel/drivers/acpi/button.ko kernel/drivers/gpu/drm/drm*.ko kernel/drivers/gpu/drm/*/*.ko + kernel/drivers/hid/hid-generic.ko kernel/drivers/i2c/algos/i2c-algo-bit.ko kernel/drivers/i2c/i2c-core.ko kernel/drivers/usb/usb-common.ko diff --git a/remote/rootfs/rootfs-stage32/rootfs-stage32.build b/remote/rootfs/rootfs-stage32/rootfs-stage32.build index 162dcdc2..a796f738 100644 --- a/remote/rootfs/rootfs-stage32/rootfs-stage32.build +++ b/remote/rootfs/rootfs-stage32/rootfs-stage32.build @@ -70,8 +70,7 @@ post_copy() { "${TARGET_BUILD_DIR}"/dev || perror "Copying devices from running system failed." # set /etc/environment to include /opt/openslx/bin and /opt/openslx/sbin - echo "PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/sbin:/opt/openslx/bin\"" \ - > "${TARGET_BUILD_DIR}/etc/environment" + add_env PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/sbin:/opt/openslx/bin" # copy static files cp -r "${MODULE_DIR}"/data/* "${TARGET_BUILD_DIR}" || perror "Copying static files from data/* failed." diff --git a/remote/rootfs/rootfs-stage32/rootfs-stage32.conf b/remote/rootfs/rootfs-stage32/rootfs-stage32.conf index 27421166..a2dd3987 100644 --- a/remote/rootfs/rootfs-stage32/rootfs-stage32.conf +++ b/remote/rootfs/rootfs-stage32/rootfs-stage32.conf @@ -50,8 +50,7 @@ REQUIRED_LIBRARIES=" libcap libresolv libau" REQUIRED_DIRECTORIES="/lib/xtables" -REQUIRED_FILES=" /etc/environment - /etc/issue +REQUIRED_FILES=" /etc/issue /etc/inputrc /etc/localtime /etc/login.defs diff --git a/remote/rootfs/rootfs-stage32/rootfs-stage32.conf.zypper b/remote/rootfs/rootfs-stage32/rootfs-stage32.conf.zypper index af6f2546..89ffb6a1 100644 --- a/remote/rootfs/rootfs-stage32/rootfs-stage32.conf.zypper +++ b/remote/rootfs/rootfs-stage32/rootfs-stage32.conf.zypper @@ -1,7 +1,7 @@ REQUIRED_MODULES=" kernel" REQUIRED_INSTALLED_PACKAGES="nfs-client xfsprogs squashfs timezone" REQUIRED_CONTENT_PACKAGES="timezone" -REQUIRED_DIRECTORIES="/usr/lib/xtables" +REQUIRED_DIRECTORIES="/usr/$LIB64/xtables" REQUIRED_LIBRARIES=" libcap libcidn libcom_err @@ -20,8 +20,7 @@ REQUIRED_LIBRARIES=" libcap libtinfo libresolv libau" -REQUIRED_FILES=" /etc/environment - /etc/issue +REQUIRED_FILES=" /etc/issue /etc/inputrc /etc/localtime /etc/login.defs diff --git a/remote/targets/stage32-opensuse/german b/remote/targets/stage32-opensuse/german new file mode 120000 index 00000000..4469f96e --- /dev/null +++ b/remote/targets/stage32-opensuse/german @@ -0,0 +1 @@ +../../modules/german
\ No newline at end of file |
