[X2Go-Commits] [x2goserver] 02/02: x2goserver/bin/x2gosetkeyboard: make compatible with changes in Arctica's nxagent.
git-admin at x2go.org
git-admin at x2go.org
Fri Mar 3 16:32:15 CET 2017
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2goserver.
commit fd68fe4fba70ee6f6260e40ec97662923428bdcb
Author: Mihai Moldovan <ionic at ionic.de>
Date: Fri Mar 3 12:36:54 2017 +0100
x2goserver/bin/x2gosetkeyboard: make compatible with changes in Arctica's nxagent.
Also change to an all-bash algorithm.
Cherry-picked from release/4.0.1.x branch.
---
debian/changelog | 2 ++
x2goserver/bin/x2gosetkeyboard | 53 ++++++++++++++++++++++++++----------------
2 files changed, 35 insertions(+), 20 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 3049b39..7896175 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -247,6 +247,8 @@ x2goserver (4.0.1.21-0x2go1) UNRELEASED; urgency=medium
pure bash and let script fail if no display port is available.
- x2goserver/sbin/x2gocleansessions: fix syntax error introduced in last
change to this file.
+ - x2goserver/bin/x2gosetkeyboard: make compatible with changes in
+ Arctica's nxagent. Also change to an all-bash algorithm.
* x2goserver.spec:
- Add mandatory perl-generators Build-Requires as per
https://fedoraproject.org/wiki/Changes/Build_Root_Without_Perl
diff --git a/x2goserver/bin/x2gosetkeyboard b/x2goserver/bin/x2gosetkeyboard
index 4b79f7e..e5961d2 100755
--- a/x2goserver/bin/x2gosetkeyboard
+++ b/x2goserver/bin/x2gosetkeyboard
@@ -53,15 +53,39 @@ if ! [ -f ${X2GO_CLIENT_KBD_FILE} ]; then
exit 0
fi
-read_keyboard_file() {
-
- # retrieve keyboard settings from keyboard file in X2Go session dir
- XKB_RULES="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^rules.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)"
- XKB_MODEL="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^model.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)"
- XKB_LAYOUT="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^layout.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)"
- XKB_VARIANT="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^variant.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)"
- XKB_OPTIONS="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^options.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)"
+# Used to hold options to setxkbcomp.
+typeset -a setxkbcomp_opts
+# retrieve keyboard settings from keyboard file in X2Go session dir
+read_keyboard_file() {
+ # Cache file contents.
+ typeset -a file_content
+ typeset line=''
+ while IFS='' read -r line; do
+ file_content+=("${line}")
+ done < "${X2GO_CLIENT_KBD_FILE}"
+
+ # Append last line if not terminated by a newline.
+ [[ "${line}" ]] && file_content+=("${line}")
+
+ for line in "${file_content[@]}"; do
+ # Extract the keys, their values and add to setxkbcomp_opts.
+ typeset key=''
+ for key in "rules" "model" "layout" "variant" "options"; do
+ typeset regexp='^[[:space]]*'"${key}"'[[:space:]]*=[[:space:]]*"?(.*)"?[[:space:]]*'
+ if [[ "${line}" =~ ${regexp} ]]; then
+ typeset value="${BASH_REMATCH[0]}"
+
+ if [ -n "${value}" ]; then
+ # Handle a special substitution case for evdev-based rules.
+ # FIXME: find out why that substitution is needed in the first place!
+ [ "${key}" = 'rules' ] && value="${value//evdev/base}"
+
+ setxkbcomp_opts+=("-${key}" "${value}")
+ fi
+ fi
+ done
+ done
}
reset_keymap() {
@@ -69,19 +93,8 @@ reset_keymap() {
}
update_keymap() {
-
- if [ "$XKB_RULES" = "evdev" ]; then
- XKB_RULES="base"
- fi
- # prepare for setxkbmap call
- [ -n "$XKB_RULES" ] && XKB_RULES="-rules $XKB_RULES"
- [ -n "$XKB_MODEL" ] && XKB_MODEL="-model $XKB_MODEL"
- [ -n "$XKB_LAYOUT" ] && XKB_LAYOUT="-layout $XKB_LAYOUT"
- [ -n "$XKB_VARIANT" ] && XKB_VARIANT="-variant $XKB_VARIANT"
- [ -n "$XKB_OPTIONS" ] && XKB_OPTIONS="-option $XKB_OPTIONS"
-
# update keyboard map
- setxkbmap $XKB_RULES $XKB_MODEL $XKB_LAYOUT $XKB_VARIANT $XKB_OPTIONS
+ setxkbmap "${setxkbcomp_opts[@]}"
}
### main ###
--
Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
More information about the x2go-commits
mailing list