Files
kinto/system-config/xactive.sh

124 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
class_name='konsole'
internalkb=$1
internalid=$2
usbkb=$3
usbid=$4
swapbehavior=$5
# echo $1 $2 $3 $4
internalgui="setxkbmap -device $internalid -option "
internalterm="$internalgui"
usbgui="setxkbmap -device $usbid -option "
usbterm="$usbgui"
if [[ $internalkb == "windows" ]]; then
internalgui+="altwin:ctrl_alt_win"
internalterm+="altwin:swap_alt_win"
internalgrep_term="-q ctrl_alt_win"
internalgrep_gui="-v ctrl_alt_win\ 1>/dev/null"
elif [[ $internalkb == "chromebook" ]]; then
internalgui="xkbcomp -w0 -I$HOME/.xkb -i $internalid ~/.xkb/keymap/kbd.gui $DISPLAY"
internalterm+="altwin:swap_lalt_lwin"
# internalgrep_term="-vq swap_lalt_lwin"
internalgrep_term="-q swap_lalt_lwin"
internalgrep_gui="-v swap_lalt_lwin 1>/dev/null"
elif [[ $internalkb == "mac" ]]; then
internalgui+="ctrl:swap_lwin_lctl"
#mac term is blank
internalterm=""
internalgrep_term="-q swap_lwin_lctl"
internalgrep_gui="-v swap_lwin_lctl 1>/dev/null"
fi
if [[ $usbkb == "windows" ]]; then
usbgui+="altwin:ctrl_alt_win"
usbterm+="altwin:swap_alt_win"
usbgrep_term="-q ctrl_alt_win"
usbgrep_gui="-v ctrl_alt_win 1>/dev/null"
elif [[ $usbkb == "chromebook" ]]; then
usbgui="xkbcomp -w0 -I$HOME/.xkb -i $usbid ~/.xkb/keymap/kbd.gui $DISPLAY"
usbterm+="altwin:swap_lalt_lwin"
usbgrep_term="-q swap_lalt_lwin"
usbgrep_gui="-v swap_lalt_lwin 1>/dev/null"
elif [[ $usbkb == "mac" ]]; then
usbgui+="ctrl:swap_lwin_lctl"
#mac term is blank
usbterm=""
usbgrep_term="-q swap_lwin_lctl"
usbgrep_gui="-v swap_lwin_lctl 1>/dev/null"
fi
# echo "$internalgui"
# echo "$internalterm"
# echo "$usbgui"
# echo "$usbterm"
# exit
# regex for extracting hex id's
grep_id='0[xX][a-zA-Z0-9]\{7\}'
#Storing timestamp and will use timediff to prevent xprop duplicates
timestp=$(date +%s)
xprop -spy -root _NET_ACTIVE_WINDOW | grep --line-buffered -o $grep_id |
while read -r id; do
class="`xprop -id $id WM_CLASS | grep $class_name`"
newtime=$(date +%s)
timediff=$((newtime-timestp))
if [ $timediff -gt 0 ]; then
if [ -n "$class" ]; then
# Set keymap for terminal, Alt is Super, Ctrl is Ctrl, Super is Alt
if [[ $internalid -gt 0 ]]; then
echo "internal gui to term"
echo "$internalgrep_gui"
eval "setxkbmap -query | grep $internalgrep_gui"
if [ $? -eq 0 ]; then
echo "* inside internal gui to term"
echo "* $internalterm"
eval setxkbmap -device $internalid -option
eval $internalterm
fi
fi
if [[ $usbid -gt 0 ]]; then
echo "usb gui to term"
echo "$usbgrep_gui"
eval "setxkbmap -query | grep $usbgrep_gui"
if [ $? -eq 0 ]; then
echo "* inside usb gui to term"
echo "* $usbterm"
eval setxkbmap -device $usbid -option
eval $usbterm
fi
fi
else
# Set keymap for gui, Alt is Ctrl,Super is Alt, Ctrl is Super
if [[ $internalid -gt 0 ]]; then
echo "internal term to gui"
echo "$internalgrep_term"
eval "setxkbmap -query | grep $internalgrep_term"
if [ $? -eq 0 ]; then
echo "** inside internal term to gui"
echo "** $internalgui"
eval "setxkbmap -device $internalid -option"
eval "$internalgui"
fi
fi
if [[ $usbid -gt 0 ]]; then
echo "usb term to gui"
echo "$usbgrep_term"
eval "setxkbmap -query | grep $usbgrep_term"
if [ $? -eq 0 ]; then
echo "** inside usb term to gui"
eval setxkbmap -device $usbid -option
eval $usbgui
fi
fi
fi
timestp=$(date +%s)
fi
done