betlog

BFBC2-monitorBinds.sh

Nov 5th, 2019
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.69 KB | None | 0 0
  1. #!/bin/bash
  2. # betlog 2019-11-11--18-44-32
  3. #
  4. quakestatFile="/home/user/.steamdata/BFBC2serverList.qstat"
  5. evrouterFile="/home/user/.steamdata/BFBC2.evrouterrc"
  6. frequency=20
  7. # ========================
  8. xmodmapUnBound=1
  9. # ....
  10. # default base port for BFBC2 -  gametracker.com lists these next to the server IP
  11. portBase=19567
  12. # required to convert game port into query port. ie: 19567+29321=48888
  13. portOffset=29321
  14. touch /tmp/temp.qstat #didnt work the first time till i did this
  15. tick=$frequency
  16. # ------------------------
  17. sleep 1s
  18. for p in $(xdotool search --name ${0##*/}); do
  19.     name="$(xdotool getwindowname $p)"
  20.     if [[ ${name/Konsole/} != $name ]];then
  21.         if [[ $(xdotool getactivewindow) -ne $p ]]; then
  22.             xdotool windowkill $p
  23.         fi
  24.     fi
  25. done
  26. # ------------------------
  27. # EVROUTER
  28. if [[ -z $(ps -C evrouter -o pid=|sed 's/\ //') ]]; then
  29.     evrouter -q &> /dev/null
  30.     rm -f /tmp/.evrouter* &> /dev/null
  31. #     evrouterDevices=$(evrouter -D /dev/input/event* 2> /dev/null |grep 'Logitech Unifying Device'|sed -E 's/^.*( \/.*)/\1/;s/ //;s/:.*//'|tr '\n' ' ')
  32. #     evrouterDevices=$(evrouter -D /dev/input/event* 2> /dev/null |grep 'Logitech Unifying Device'|sed -E 's/^.*( \/.*)/\1/;s/ //;s/:.*//'|head -n 1)
  33. #     evrouterDevices=$(evrouter -D /dev/input/event* |grep 'Logitech Unifying Device'|sed -E 's/^.*( \/.*)/\1/;s/ //;s/:.*//'|tail -n 1)
  34.     evrouterDevice=$(evrouter -D /dev/input/event* |grep 'Logitech Unifying Device\|Logitech Performance MX'|head -n 1|awk '{print $3}'|sed 's/://')
  35.     setsid evrouter -c "${evrouterFile}" "${evrouterDevice}" 1> /dev/null &
  36. #     evrouterDevices=$(evrouter -D /dev/input/event*|grep 'Logitech Unifying Device'|sed -E 's/^.*( \/.*)/\1/;s/ //;s/:.*//'|tr '\n' ' ')
  37. #     evrouter -c "$evrouterFile" "$evrouterDevices"
  38.  
  39.    
  40.     if [[ -z $(ps -C evrouter -o pid=|sed 's/\ //') ]]; then
  41.         echo "[$(date +%Y-%m-%d--%H-%M-%S)] - EVROUTER FAILED"
  42.     fi
  43. fi    
  44. # ------------------------
  45. # START BFBC2
  46. bfbc2=$(ps -C steam -o args=)
  47. if [[ ${bfbc2/BFBC2Game.exe/} != $bfbc2 ]]; then
  48.     wmctrl -R 'Battlefield: Bad Company 2'
  49. else
  50.     setsid steam steam://rungameid/24960 &
  51. fi
  52. # ------------------------
  53. # MANAGE XMODMAP - xmodmap -pke
  54. while sleep 1s; do
  55.     if [[ "$(xdotool getwindowname $(xdotool getactivewindow 2> /dev/null) 2> /dev/null )" == "Battlefield: Bad Company 2" ]]; then
  56.         if [[ 1 -eq $xmodmapUnBound ]];then
  57.             xmodmapUnBound=$((1-xmodmapUnBound))
  58. # Key    Shift+Key    Mode_switch+Key    Mode_switch+Shift+Key    ISO_Level3_Shift+Key    ISO_Level3_Shift+Shift+Key
  59.             xmodmap -e "keycode 36 = KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter KP_Enter"
  60.             xmodmap -e "keycode 104 = Return Return Return Return Return Return"
  61.         fi
  62.     else
  63.         if [[ 0 -eq $xmodmapUnBound ]];then
  64. #             echo "[$(date +%Y-%m-%d--%H-%M-%S)] - XMODMAP unbound"        
  65.             xmodmapUnBound=$((1-xmodmapUnBound))
  66.             xmodmap -e "keycode 104 = KP_Enter"
  67.             xmodmap -e "keycode 36 = Return"
  68.         fi
  69. # list active servers        
  70.         if [[ $tick -eq $frequency ]];then
  71.             awk -v offset="$portOffset" -v base="$portBase" -F':' \
  72.             '{sum=$2+offset; if(sum==offset)sum=base+offset; print $1":"sum > "/tmp/temp.qstat"}' $quakestatFile
  73.             clear
  74.             echo "[$(date +%Y-%m-%d--%H-%M-%S)]"
  75.             quakestat -nocfg -u -allowserverdups -default bfbc2 -ne -nh -f /tmp/temp.qstat|\
  76.             awk '{printf "%s\t%10s\t",$2,$8;for(i=9; i<=NF; ++i) printf "%s ", $i; print ""}'
  77.             tick=0
  78.         fi
  79.         tick=$((tick+1))    
  80.         echo -ne "\\t$(( $frequency-$tick )) \\r"
  81.     fi
  82. done
  83. # ------------------------
Advertisement
Add Comment
Please, Sign In to add comment