--- mcore-src/trunk/mcore-tools/daemon/client/include/input.client.class 2011/02/02 20:20:24 1248 +++ mcore-src/trunk/mcore-tools/daemon/client/include/input.client.class 2013/05/08 12:40:39 2060 @@ -1,11 +1,16 @@ # $Id$ provide basic-input +require fluxbox help_input_keymap() { + mecho "get input.keymap" + mecho " prints current keymap of xorg" + mecho mecho "set input.keymap [keymap]" - mecho " de, us, en, gr, etc" + mecho " set keymap of xorg to [keymap]" + mecho " keymaps may be: de, us, en, gr, etc" } # set_input_mouse @@ -17,27 +22,69 @@ # set_input_keyboard set_input_keyboard() { - return 0 + local value="$1" + local rate + local CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/fluxbox/autostart/keyboard" + + case ${value} in + slow) rate="1000 10" ;; + fast) rate="250 100" ;; + normal) rate="" ;; + *) help_input_keyboard && return 1 ;; + esac + + clearconfig + addconfig "# ${value}" + addconfig "[startup] { nohup xset r rate ${rate} &}" + + # rebuild autostart file + helper_rebuild_fluxbox_autostart + + if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] + then + x11runas "xset r rate ${rate}" + fi +} + +get_input_keymap() +{ + local keymap + if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] && pidof X &> /dev/null + then + keymap=$(x11runas "setxkbmap -query" | grep layout | awk '{print $2}') + else + keymap=$(grep "Option.*XkbLayout" ${MROOT}/etc/X11/xorg.conf.d/00-keyboard.conf \ + | sed -e 's:\"::g' -e 's:.*XkbLayout\(.*\):\1:' -e 's:[\ \t]::g') + fi + rvecho "${keymap}" } # set_input_keyboard set_input_keymap() { local value="$1" - local CONFIG="/etc/X11/xorg.conf.d/25-layout.conf" + local CONFIG="${MROOT}/etc/X11/xorg.conf.d/00-keyboard.conf" [[ -z ${value} ]] && help_input_keymap && return 1 - clearconfig - - addconfig 'Section "InputClass"' - addconfig ' Identifier "keyboard layout"' - addconfig ' MatchIsKeyboard "on"' - addconfig " Option \"XkbLayout\" \"${value}\"" - addconfig 'EndSection' + # systemd support + if [ -x $(type -P localectl) ] + then + # console keymap + localectl set-keymap "${value}" + # x11 keymaps + localectl set-x11-keymap "${value}" + else + clearconfig + addconfig 'Section "InputClass"' + addconfig ' Identifier "keyboard layout"' + addconfig ' MatchIsKeyboard "on"' + addconfig " Option \"XkbLayout\" \"${value}\"" + addconfig 'EndSection' + fi - if pidof X + if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] then - x11runas "DISPLAY=:0 setxkbmap ${value}" + x11runas "setxkbmap ${value}" fi }