From cb31a5025127f8e16c705c88f439a8f819952827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Haoran=20S=2E=20Diao=20=28=E5=88=81=E6=B5=A9=E7=84=B6=29?= <0@hairydiode.xyz> Date: Sat, 25 Nov 2023 03:45:16 -0800 Subject: Moved everything out of dotfiles --- ims | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 ims (limited to 'ims') diff --git a/ims b/ims new file mode 100755 index 0000000..9571158 --- /dev/null +++ b/ims @@ -0,0 +1,58 @@ +#!/bin/bash +#meant to be opened as an i3 floating terminal window, launch with iml script + +#gets current window id of IME and puts it here +code="" +clear +while true; do + #need IFS="" so read reads spaces + OIFS=$IFS + export IFS=""; read -rsn1 i + export IFS=$OIFS + #echo ".$i." + if [[ "$i" = [abcdefghijklmnopqrstuvwxyz,.] ]]; then + clear + #escape periods + i=$(echo $i |sed 's/\./\\\./g') + code=$code$i + opt=$(grep "^$code\s" ~/lang/zh/boshiamy/ibus-boshiamy/boshiamy.txt |\ + #remove simplfied + grep -v 98|\ + awk '{print $3" "$2}' |\ + sort -nr|\ + awk '{print $2}') + echo $opt + echo $code + elif [[ "$i" = [0123456789] ]]; then + if [ "$code" == "" ]; then + char=$i + else + clear + char=$(echo $opt | awk "{print \$$i}") + code="" + fi + imeboxid=$(cat /tmp/imeboxid) + xdotool type --window "$1" "$char" + #dirty hack for detecting space + elif [ "<$i>" == "< >" ]; then + if [ "$code" == "" ]; then + char=" " + else + clear + char=$(echo $opt | awk "{print \$1}") + code="" + fi + xdotool type --window "$1" "$char" + #delete, too lazy to do control characters + elif [[ "$i" = '`' ]]; then + clear + #code=${code::-1} + code="" + #if enter is pressed then I am done and want to return to the previous + #window + elif [[ "$i" = "" ]]; then + xdotool windowfocus $1 + else + xdotool type --window "$1" "$i" + fi +done -- cgit v1.1