SHOW:
|
|
- or go back to the newest paste.
| 1 | #!/bin/sh | |
| 2 | ||
| 3 | # The ramdisk /bin/sh uses "\c" at end of line to suppress newlines. | |
| 4 | - | # |
| 4 | + | # Oher shells use -ne and -e. So define c or the other two. |
| 5 | c=\\c | |
| 6 | - | K="\033[1;30m" |
| 6 | + | #ne=-ne; e=-e |
| 7 | - | R="\033[1;31m" |
| 7 | + | |
| 8 | - | G="\033[1;32m" |
| 8 | + | E=$(printf "\033") |
| 9 | - | Y="\033[1;33m" |
| 9 | + | ESC=$(printf "\033") |
| 10 | - | B="\033[1;34m" |
| 10 | + | C_D=$(printf "\004") |
| 11 | - | M="\033[1;35m" |
| 11 | + | C_H=$(printf "\010") |
| 12 | - | C="\033[1;36m" |
| 12 | + | TAB=$(printf "\011") |
| 13 | - | W="\033[1;37m" |
| 13 | + | BS=$(printf "\177") |
| 14 | - | N="\033[0m" |
| 14 | + | |
| 15 | - | BOLD="\033[1m" |
| 15 | + | |
| 16 | - | REV="\033[7m" |
| 16 | + | |
| 17 | - | ITAL="\033[3m" |
| 17 | + | |
| 18 | - | UNDR="\033[4m" |
| 18 | + | K="${E}[1;30m"
|
| 19 | - | BLNK="\033[5m" |
| 19 | + | R="${E}[1;31m"
|
| 20 | G="${E}[1;32m"
| |
| 21 | - | WB="\033[44;37m" |
| 21 | + | Y="${E}[1;33m"
|
| 22 | - | BW="\033[47;34m" |
| 22 | + | B="${E}[1;34m"
|
| 23 | M="${E}[1;35m"
| |
| 24 | - | DRAW="\033(0" |
| 24 | + | C="${E}[1;36m"
|
| 25 | - | TEXT="\033(B" |
| 25 | + | W="${E}[1;37m"
|
| 26 | N="${E}[0m"
| |
| 27 | - | #ESC=$(printf "\033") |
| 27 | + | BOLD="${E}[1m"
|
| 28 | - | ESC=`echo "\033"` |
| 28 | + | REV="${E}[7m"
|
| 29 | - | TAB=`echo "\011"` |
| 29 | + | ITAL="${E}[3m"
|
| 30 | UNDR="${E}[4m"
| |
| 31 | BLNK="${E}[5m"
| |
| 32 | - | EMPTY=" " |
| 32 | + | |
| 33 | - | EMPTYLINE="${EMPTY}${EMPTY}${EMPTY}${EMPTY}${EMPTY}${EMPTY}${EMPTY}${EMPTY}"
|
| 33 | + | WB="${E}[1;44;37m"
|
| 34 | BW="${E}[0;47;34m"
| |
| 35 | ||
| 36 | - | SERV="irc.freenode.net" |
| 36 | + | DRAW="${E}(0"
|
| 37 | TEXT="${E}(B"
| |
| 38 | ||
| 39 | #NICK="zippy" | |
| 40 | DSRV="irc.freenode.net" | |
| 41 | - | printf "${ESC}[%d;%dH" ${1:-1} ${2:-1}
|
| 41 | + | SERV=$DSRV |
| 42 | - | [ $# -gt 2 ] && {
|
| 42 | + | |
| 43 | - | shift 2 |
| 43 | + | |
| 44 | - | printf "%s" "$*" |
| 44 | + | |
| 45 | - | } |
| 45 | + | |
| 46 | printf "${ESC}[%d;%dH" ${1:-1} ${2:-1}
| |
| 47 | [ $# -gt 2 ] && {
| |
| 48 | - | spaceat() |
| 48 | + | shift 2 |
| 49 | printf "%s" "$*" | |
| 50 | - | blanks=`echo $EMPTYLINE | head -c $3` |
| 50 | + | } |
| 51 | - | printf "${ESC}[%d;%dH${blanks}" ${1:-1} ${2:-1}
|
| 51 | + | |
| 52 | ||
| 53 | sreplace() | |
| 54 | {
| |
| 55 | S1=$(expr substr "$STR" 1 $1) | |
| 56 | - | case $1 in |
| 56 | + | [ $# -lt 2 ] && S1=$(expr substr $STR 1 $(($1 - 1))) |
| 57 | - | 0) printf "${ESC}[?25l" ;;
|
| 57 | + | S2=$(expr substr "$STR" $(($1 + 1)) ${#STR})
|
| 58 | - | *) printf "${ESC}[?12l${ESC}[?25h" ;;
|
| 58 | + | STR="${S1}${2}${S2}"
|
| 59 | } | |
| 60 | ||
| 61 | cursor() | |
| 62 | {
| |
| 63 | case $1 in | |
| 64 | - | case $1 in |
| 64 | + | 0) printf "${ESC}[?25l" ;;
|
| 65 | - | 0) printf "${ESC}[22m" ;;
|
| 65 | + | *) printf "${ESC}[?12l${ESC}[?25h" ;;
|
| 66 | - | *) printf "${ESC}[1m" ;;
|
| 66 | + | |
| 67 | } | |
| 68 | ||
| 69 | bold() | |
| 70 | {
| |
| 71 | case $1 in | |
| 72 | - | if [ -t 0 ] |
| 72 | + | 0) printf "${ESC}[22m" ;;
|
| 73 | *) printf "${ESC}[1m" ;;
| |
| 74 | - | if [ -z "$_STTY" ] |
| 74 | + | |
| 75 | - | then |
| 75 | + | |
| 76 | - | _STTY=$(stty -g) |
| 76 | + | |
| 77 | - | stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
|
| 77 | + | |
| 78 | - | elif [ -n "$GET_TMOUT$GET_MIN" ] |
| 78 | + | |
| 79 | - | then |
| 79 | + | if [ -t 0 ] |
| 80 | - | stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
|
| 80 | + | then |
| 81 | - | fi |
| 81 | + | if [ -z "$_STTY" ] |
| 82 | then | |
| 83 | - | # _KEY=$(dd bs=1 count=1 2>/dev/null; printf '.') |
| 83 | + | _STTY=$(stty -g) |
| 84 | - | _KEY=$(dd bs=1 count=1 2>/dev/null; echo '.') |
| 84 | + | stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
|
| 85 | - | _KEY=${_KEY%.}
|
| 85 | + | elif [ -n "$GET_TMOUT$GET_MIN" ] |
| 86 | - | [ -n "$_KEY" ] |
| 86 | + | |
| 87 | stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
| |
| 88 | fi | |
| 89 | fi | |
| 90 | # _KEY=$(dd bs=1 count=1 2>/dev/null; printf '.') | |
| 91 | - | while : |
| 91 | + | _KEY=$(dd bs=1 count=1 2>/dev/null; echo '.') |
| 92 | - | do |
| 92 | + | _KEY=${_KEY%.}
|
| 93 | - | GET_TMOUT=5 get && break ## Half second timeout on each loop |
| 93 | + | [ -n "$_KEY" ] |
| 94 | - | done |
| 94 | + | |
| 95 | ||
| 96 | - | case $_KEY in |
| 96 | + | |
| 97 | - | "${ESC}")
|
| 97 | + | |
| 98 | - | stty -echo -icanon time 0 min 0 |
| 98 | + | while : |
| 99 | - | read _KEY |
| 99 | + | do |
| 100 | - | if [ -z "$_KEY" ] |
| 100 | + | GET_TMOUT=5 get && break ## Half second timeout on each loop |
| 101 | - | then |
| 101 | + | done |
| 102 | - | # _KEY='?' |
| 102 | + | |
| 103 | - | _KEY="${ESC}"
|
| 103 | + | case $_KEY in |
| 104 | - | fi |
| 104 | + | "${ESC}")
|
| 105 | - | ;; |
| 105 | + | stty -echo -icanon time 0 min 0 |
| 106 | read _KEY | |
| 107 | if [ -z "$_KEY" ] | |
| 108 | then | |
| 109 | # _KEY='?' | |
| 110 | _KEY="${ESC}"
| |
| 111 | fi | |
| 112 | - | # Now draw the GUI |
| 112 | + | ;; |
| 113 | - | echo "\033[2J\033[1;1H" |
| 113 | + | |
| 114 | } | |
| 115 | ||
| 116 | ||
| 117 | - | echo $WB$DRAW"\c" |
| 117 | + | # Define GUI Widgets (StrName, FieldLength, AtLoc, EmptyStr, Type) |
| 118 | - | echo "\033[1;1Hlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk" |
| 118 | + | WS1="NICK"; WL1=39; WA1="${E}[2;13H"; WE1="${WA1}$(printf "%-39s")"
|
| 119 | - | echo "x NICK x" |
| 119 | + | WS2="ID"; WL2=39; WA2="${E}[3;13H"; WE2="${WA2}$(printf "%-39s")"
|
| 120 | - | echo "x IDENTIFY x" |
| 120 | + | WS3="IPAS"; WL3=39; WA3="${E}[4;13H"; WE3="${WA3}$(printf "%-39s")"
|
| 121 | - | echo "x PASSWORD x" |
| 121 | + | WS4="SERV"; WL4=39; WA4="${E}[6;13H"; WE4="${WA4}$(printf "%-39s")"
|
| 122 | - | echo "tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu" |
| 122 | + | WS5="PORT"; WL5=39; WA5="${E}[7;13H"; WE5="${WA5}$(printf "%-39s")"
|
| 123 | - | echo "x SERVER x" |
| 123 | + | WS6="NPAS"; WL6=39; WA6="${E}[8;13H"; WE6="${WA6}$(printf "%-39s")"
|
| 124 | - | echo "x PORT x" |
| 124 | + | WS7="PASS"; WL7=39; WA7="${E}[9;13H"; WE7="${WA7}$(printf "%-39s")"
|
| 125 | - | echo "x NEEDPASS x" |
| 125 | + | WS8="CH1"; WL8=24; WA8="${E}[11;3H"; WE8="${WA8}$(printf "%-24s")"
|
| 126 | - | echo "x PASSWORD x" |
| 126 | + | WS9="CH2"; WL9=24; WA9="${E}[12;3H"; WE9="${WA9}$(printf "%-24s")"
|
| 127 | - | echo "t CHANNELS qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu" |
| 127 | + | WS10="CH3"; WL10=24; WA10="${E}[13;3H"; WE10="${WA10}$(printf "%-24s")"
|
| 128 | - | echo "x KEY x" |
| 128 | + | WS11="CH4"; WL11=24; WA11="${E}[14;3H"; WE11="${WA11}$(printf "%-24s")"
|
| 129 | - | echo "x KEY x" |
| 129 | + | WS12="NK1"; WL12=3; WA12="${E}[11;32H"; WE12="${WA12}$(printf "%-3s")"
|
| 130 | - | echo "x KEY x" |
| 130 | + | WS13="NK2"; WL13=3; WA13="${E}[12;32H"; WE13="${WA13}$(printf "%-3s")"
|
| 131 | - | echo "x KEY x" |
| 131 | + | WS14="NK3"; WL14=3; WA14="${E}[13;32H"; WE14="${WA14}$(printf "%-3s")"
|
| 132 | - | echo "mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj" |
| 132 | + | WS15="NK4"; WL15=3; WA15="${E}[14;32H"; WE15="${WA15}$(printf "%-3s")"
|
| 133 | - | echo $TEXT$BW"\c" |
| 133 | + | WS16="KEY1"; WL16=15; WA16="${E}[11;37H"; WE16="${WA16}$(printf "%-15s")"
|
| 134 | - | echo "\033[14A\033[13G " |
| 134 | + | WS17="KEY2"; WL17=15; WA17="${E}[12;37H"; WE17="${WA17}$(printf "%-15s")"
|
| 135 | - | echo "\033[13G " |
| 135 | + | WS18="KEY3"; WL18=15; WA18="${E}[13;37H"; WE18="${WA18}$(printf "%-15s")"
|
| 136 | - | echo "\033[13G " |
| 136 | + | WS19="KEY4"; WL19=15; WA19="${E}[14;37H"; WE19="${WA19}$(printf "%-15s")"
|
| 137 | - | echo "\033[1B\033[13G " |
| 137 | + | |
| 138 | - | echo "\033[13G " |
| 138 | + | ################### |
| 139 | - | echo "\033[13G " |
| 139 | + | |
| 140 | - | echo "\033[13G " |
| 140 | + | |
| 141 | - | echo "\033[1B\033[3G \033[32G \033[37G " |
| 141 | + | printf "${ESC}[2J"
|
| 142 | - | echo "\033[3G \033[32G \033[37G " |
| 142 | + | |
| 143 | - | echo "\033[3G \033[32G \033[37G " |
| 143 | + | |
| 144 | - | echo "\033[3G \033[32G \033[37G " |
| 144 | + | |
| 145 | - | echo "\033[13A\033[13G${NICK}"
|
| 145 | + | printat 1 1 "$WB$DRAW" |
| 146 | - | echo "\033[13G${ID}"
|
| 146 | + | echo "lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk" |
| 147 | - | echo "\033[13G${IPAS}"
|
| 147 | + | echo "x NICK x" |
| 148 | - | echo "\033[1B\033[13G${SERV}"
|
| 148 | + | echo "x IDENTIFY x" |
| 149 | - | echo "\033[13G${PORT}"
|
| 149 | + | echo "x PASSWORD x" |
| 150 | - | echo "\033[13G${NPAS}"
|
| 150 | + | echo "tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu" |
| 151 | - | echo "\033[13G${PASS}"
|
| 151 | + | echo "x SERVER x" |
| 152 | - | echo "\033[1B\033[3G${CH1}\033[32G${NK1}\033[37G$KEY1"
|
| 152 | + | echo "x PORT x" |
| 153 | - | echo "\033[3G${CH2}\033[32G${NK2}\033[37G$KEY2"
|
| 153 | + | echo "x NEEDPASS x" |
| 154 | - | echo "\033[3G${CH3}\033[32G${NK3}\033[37G$KEY3"
|
| 154 | + | echo "x PASSWORD x" |
| 155 | - | echo "\033[3G${CH4}\033[32G${NK4}\033[37G$KEY4"
|
| 155 | + | echo "t CHANNELS qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu" |
| 156 | - | echo $N |
| 156 | + | echo "x KEY x" |
| 157 | echo "x KEY x" | |
| 158 | echo "x KEY x" | |
| 159 | echo "x KEY x" | |
| 160 | echo "mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj" | |
| 161 | printf "$TEXT$BW" | |
| 162 | # | |
| 163 | echo "${WE1}${WA1}${NICK}"
| |
| 164 | echo "${WE2}${WA2}${ID}"
| |
| 165 | echo "${WE3}${WA3}${IPAS}"
| |
| 166 | echo "${WE4}${WA4}${SERV}"
| |
| 167 | echo "${WE5}${WA5}${PORT}"
| |
| 168 | echo "${WE6}${WA6}${NPAS}"
| |
| 169 | echo "${WE7}${WA7}${PASS}"
| |
| 170 | echo "${WE8}${WA8}${CH1}${WE12}${WA12}${NK1}${WE16}${WA16}${KEY1}"
| |
| 171 | echo "${WE9}${WA9}${CH2}${WE13}${WA13}${NK2}${WE17}${WA17}${KEY2}"
| |
| 172 | echo "${WE10}${WA10}${CH3}${WE14}${WA14}${NK3}${WE18}${WA18}${KEY3}"
| |
| 173 | echo "${WE11}${WA11}${CH4}${WE15}${WA15}${NK4}${WE19}${WA19}${KEY4}"
| |
| 174 | #echo $N | |
| 175 | } | |
| 176 | ||
| 177 | # Open the tinyirc wrapper script and read lines until one starts with tinyirc. | |
| 178 | IRC=/usr/local/bin/irc | |
| 179 | if [ -r $IRC ] ; then | |
| 180 | exec 3<$IRC | |
| 181 | # Find SERV NICK PORT | |
| 182 | while read line <&3 | |
| 183 | do | |
| 184 | if [ "${line%% *}" = "tinyirc" ] ; then
| |
| 185 | # Tries to remove the first word | |
| 186 | CFG="${line#tinyirc }"
| |
| 187 | # Check if we removed anything | |
| 188 | if [ "$CFG" != "$line" ] ; then | |
| 189 | for ARG in $CFG | |
| 190 | do | |
| 191 | case $ARG in | |
| 192 | - | CHAN=${SERV#*/}
|
| 192 | + | |
| 193 | -i) ID="yes" ;; | |
| 194 | -*) ARGS="$ARGS $ARG" ;; | |
| 195 | ''|*[!0-9]*) NICK="$ARG" ;; | |
| 196 | *) PORT="$ARG" ;; | |
| 197 | esac | |
| 198 | done | |
| 199 | fi | |
| 200 | - | #for J in 1 2 3 4 |
| 200 | + | |
| 201 | done | |
| 202 | - | while [ $J -lt 5 ] |
| 202 | + | |
| 203 | fi | |
| 204 | ||
| 205 | # Remove irc:// from SERV | |
| 206 | case $SERV in | |
| 207 | *://*) SERV=${SERV#*://} ;;
| |
| 208 | esac | |
| 209 | # Split SERV at first / | |
| 210 | case $SERV in | |
| 211 | */*) CHAN=${SERV#*/} ;;
| |
| 212 | *) CHAN="" ;; | |
| 213 | esac | |
| 214 | SERV=${SERV%%/*}
| |
| 215 | # Split SERV at first : | |
| 216 | case $SERV in | |
| 217 | *:*) PORT=${SERV#*:} ; SERV=${SERV%%:*} ;;
| |
| 218 | esac | |
| 219 | ||
| 220 | # Get the channels | |
| 221 | J=1; while [ $J -lt 5 ] | |
| 222 | do | |
| 223 | - | else |
| 223 | + | |
| 224 | - | # We got some server opts (no channel) |
| 224 | + | |
| 225 | */*) CHAN=${CHAN#*/} ;;
| |
| 226 | *) CHAN="" ;; | |
| 227 | esac | |
| 228 | case $CH in | |
| 229 | *[\?\&,]*) OPTS=${CH#*[[\?\&,]} ; CH=${CH%%[\?\&,]*} ;;
| |
| 230 | *) OPTS="" ;; | |
| 231 | esac | |
| 232 | echo "$J CH=<$CH> OPTS=<$OPTS>" | |
| 233 | if [ -n "$CH" ] ; then | |
| 234 | eval CH$J=$CH ; eval OPTS$J=$OPTS ; | |
| 235 | case $OPTS in | |
| 236 | *key=*) CK=${OPTS#key=} ; CK=${CK#*[[\?\&,]} ; eval KEY$J=$CK ;;
| |
| 237 | *needkey*) eval NK$J="yes" ;; | |
| 238 | esac | |
| 239 | J=`expr $J + 1` ; | |
| 240 | elif [ -z "$OPTS" ] ; then | |
| 241 | J=`expr $J + 1` ; | |
| 242 | else # We got some server opts (no channel) | |
| 243 | SOPT="$SOPT,$OPTS" | |
| 244 | fi | |
| 245 | case $OPTS in | |
| 246 | *identify=*) IPAS=${OPTS#identify=} ; IPAS=${IPAS#*[[\?\&,]} ;;
| |
| 247 | esac | |
| 248 | case $OPTS in | |
| 249 | *pass=*) PASS=${OPTS#pass=} ; PASS=${PASS#*[[\?\&,]} ;;
| |
| 250 | *needpass*) NPAS="yes" ;; | |
| 251 | esac | |
| 252 | done | |
| 253 | ||
| 254 | # Check if various passwords are needed | |
| 255 | if [ -n "$ID" ] ; then ID="yes" ; | |
| 256 | elif [ -n "$IPAS" ] ; then ID="yes" ; | |
| 257 | else ID="no" ; | |
| 258 | fi | |
| 259 | if [ -n "$NPAS" ] ; then NPAS="yes" ; | |
| 260 | elif [ -n "$PASS" ] ; then NPAS="yes" ; | |
| 261 | else NPAS="no" ; | |
| 262 | fi | |
| 263 | - | #echo "IDENT=<$IPAS>" |
| 263 | + | |
| 264 | - | #echo "PASS=<$PASS>" |
| 264 | + | |
| 265 | - | #echo "NPAS=<$NPAS>" |
| 265 | + | |
| 266 | - | # |
| 266 | + | |
| 267 | - | #echo "CH1=<$CH1> <$OPTS1>" |
| 267 | + | |
| 268 | - | #echo "CH2=<$CH2> <$OPTS2>" |
| 268 | + | |
| 269 | - | #echo "CH3=<$CH3> <$OPTS3>" |
| 269 | + | |
| 270 | - | #echo "CH4=<$CH4> <$OPTS4>" |
| 270 | + | |
| 271 | - | #echo "CHAN=<$CHAN> <$SOPT>" |
| 271 | + | |
| 272 | - | # |
| 272 | + | |
| 273 | - | #case "" in |
| 273 | + | |
| 274 | - | #X) |
| 274 | + | |
| 275 | fi | |
| 276 | - | #;; |
| 276 | + | |
| 277 | - | #esac |
| 277 | + | |
| 278 | else NK4="no" ; | |
| 279 | fi | |
| 280 | - | #echo "Edit TinyIRC Configuration? [y/"$B"n"$N"] \c" |
| 280 | + | |
| 281 | - | #read -s -n1 EDIT |
| 281 | + | |
| 282 | - | #echo "$EDIT" |
| 282 | + | ################## Now draw and run the GUI. |
| 283 | ShowGUI | |
| 284 | ||
| 285 | #cursor 0 | |
| 286 | - | pick=1 |
| 286 | + | |
| 287 | y=2 | |
| 288 | x=13 | |
| 289 | xo=13 | |
| 290 | - | # Run main dialog box until q. |
| 290 | + | STR=$NICK |
| 291 | ||
| 292 | # Run main dialog box until ESC | |
| 293 | - | printat $y $x "" |
| 293 | + | |
| 294 | do | |
| 295 | printat $y $x | |
| 296 | get_key | |
| 297 | MV=0 # Handle widget traversal (UP,DN,TAB). | |
| 298 | case $_KEY in | |
| 299 | - | _KEY=$pick |
| 299 | + | |
| 300 | #_KEY=$J | |
| 301 | eval SP=\$WS$J | |
| 302 | - | [ "$pick" -gt 11 ] && pick=$(( $pick - 4 )) |
| 302 | + | eval $SP=$STR |
| 303 | x=$xo | |
| 304 | - | [ "$pick" -gt 7 ] && [ "$pick" -lt 16 ] && pick=$(( $pick + 4 )) |
| 304 | + | |
| 305 | - | ;; '[A')printat 1 24 "key=[UP]" |
| 305 | + | ;; '[A')printat 1 24 "key=[UP]" ; MV=$J |
| 306 | - | [ "$pick" -eq 12 ] && pick=8 |
| 306 | + | [ "$J" -eq 12 ] && J=8 |
| 307 | - | [ "$pick" -eq 16 ] && pick=8 |
| 307 | + | [ "$J" -eq 16 ] && J=8 |
| 308 | - | pick=$(( $pick - 1 )) |
| 308 | + | J=$(($J - 1)) |
| 309 | - | ;; '[B')printat 1 24 "key=[DN]" |
| 309 | + | ;; '[B')printat 1 24 "key=[DN]" ; MV=$J |
| 310 | - | [ "$pick" -ne 11 ] && [ "$pick" -ne 15 ] && pick=$(( $pick + 1 )) |
| 310 | + | [ "$J" -ne 11 ] && [ "$J" -ne 15 ] && J=$(($J + 1)) |
| 311 | - | ;; "${TAB}")printat 1 24 "key=[TB]"
|
| 311 | + | ;; "${TAB}")printat 1 24 "key=[TB]" ; MV=$J
|
| 312 | - | [ "$pick" -eq 19 ] && pick=0 |
| 312 | + | [ "$J" -eq 19 ] && J=0 |
| 313 | - | pick=$(( $pick + 1 )) |
| 313 | + | [ "$J" -gt 7 ] && J=$(($J + 4)) |
| 314 | [ "$J" -gt 19 ] && J=$(($J - 11)) | |
| 315 | [ "$J" -le 7 ] && J=$(($J + 1)) | |
| 316 | ;; '[D')printat 1 24 "key=[<<]" | |
| 317 | [ $x -gt $xo ] && x=$(($x - 1)) | |
| 318 | - | ;; *)printat 1 24 "key=[${_KEY}]"
|
| 318 | + | |
| 319 | [ $x -lt $((${#STR} + $xo)) ] && x=$(($x + 1))
| |
| 320 | ;; '[5~')printat 1 24 "key=[V+]" | |
| 321 | ;; '[6~')printat 1 24 "key=[V-]" | |
| 322 | - | if [ "$pick" -lt 1 ] ; then pick=1 |
| 322 | + | |
| 323 | - | elif [ "$pick" -gt 19 ] ; then pick=19 |
| 323 | + | |
| 324 | ;; "${C_D}")printat 1 24 "key=[^D]"
| |
| 325 | - | if [ "$pick" -lt 4 ] ; then y=$(( $pick + 1 )) ; x=13 |
| 325 | + | ;; "${C_H}")printat 1 24 "key=[^H]"
|
| 326 | - | elif [ "$pick" -lt 8 ] ; then y=$(( $pick + 2 )) ; x=13 |
| 326 | + | ;; "${BS}")printat 1 24 "key=[BS]"
|
| 327 | - | elif [ "$pick" -lt 12 ] ; then y=$(( $pick + 3 )) ; x=3 |
| 327 | + | [ $x -gt $xo ] && {
|
| 328 | - | elif [ "$pick" -lt 16 ] ; then y=$(( $pick - 1 )) ; x=32 |
| 328 | + | sreplace $(($x - $xo)) |
| 329 | - | elif [ "$pick" -lt 20 ] ; then y=$(( $pick - 5 )) ; x=37 |
| 329 | + | x=$(($x - 1)) |
| 330 | printat $y $xo "$STR " | |
| 331 | printat $y $x | |
| 332 | } | |
| 333 | - | # Goto top left corner (1,1) and set normal text, fix tty, turn on the cursor. |
| 333 | + | ;; [[:cntrl:]]) printat 1 24 "key=[CTL]" |
| 334 | - | printat 1 1 "${ESC}[0m"
|
| 334 | + | ;; [[:graph:]]) printat 1 24 "key=[${_KEY}]"
|
| 335 | sreplace $(($x - $xo)) "${_KEY}"
| |
| 336 | printat $y $xo $STR | |
| 337 | - | cursor 1 |
| 337 | + | x=$(($x + 1)) |
| 338 | printat $y $x | |
| 339 | ;; *)printat 1 24 "key=[HUH]" | |
| 340 | ;; | |
| 341 | esac | |
| 342 | ||
| 343 | # Set x and y if traversing between widgets | |
| 344 | if [ $MV -ne 0 ] ; then | |
| 345 | eval WL=\$WL$MV | |
| 346 | printat $y $xo; printf "%-${WL}s"
| |
| 347 | eval SP=\$WS$MV | |
| 348 | eval STR=\$"$SP" | |
| 349 | eval printat $y $xo $STR | |
| 350 | # Should erase from xo+$(#STR) to widgetlength. | |
| 351 | if [ "$J" -lt 1 ] ; then J=1 | |
| 352 | elif [ "$J" -gt 19 ] ; then J=19 | |
| 353 | fi | |
| 354 | if [ "$J" -lt 4 ] ; then y=$(($J + 1)) ; x=13 | |
| 355 | elif [ "$J" -lt 8 ] ; then y=$(($J + 2)) ; x=13 | |
| 356 | elif [ "$J" -lt 12 ] ; then y=$(($J + 3)) ; x=3 | |
| 357 | elif [ "$J" -lt 16 ] ; then y=$(($J - 1)) ; x=32 | |
| 358 | elif [ "$J" -lt 20 ] ; then y=$(($J - 5)) ; x=37 | |
| 359 | fi | |
| 360 | xo=$x | |
| 361 | eval SP=\$WS$J | |
| 362 | eval STR=\$"$SP" | |
| 363 | eval printat $y $xo $STR | |
| 364 | fi | |
| 365 | done | |
| 366 | ||
| 367 | # Goto top left corner (1,1), set normal text, fix tty, turn on the cursor. | |
| 368 | printat 1 1 $N | |
| 369 | stty sane | |
| 370 | clear | |
| 371 | cursor 1 | |
| 372 | ||
| 373 | ### Construct a tinyirc command line to save. | |
| 374 | CMD="tinyirc $NICK $PORT ${SERV:-$DSRV}"
| |
| 375 | ||
| 376 | OPS="" | |
| 377 | OP=\? | |
| 378 | case "$ID" in y*|Y*) OPS="${OP}identify=$IPAS"; OP=\& ;; esac
| |
| 379 | if [ -n "$PASS" ] ; then | |
| 380 | OPS="${OPS}${OP}pass=${PASS}";
| |
| 381 | else case "$NPAS" in | |
| 382 | y*|Y*) OPS="${OPS}${OP}needpass" ;; esac
| |
| 383 | fi | |
| 384 | [ -n "$OPS" ] && CMD="${CMD}/$OPS"
| |
| 385 | ||
| 386 | for J in 1 2 3 4 | |
| 387 | do | |
| 388 | eval CH="\$CH$J"; eval NK="\$NK$J"; eval KEY="\$KEY$J" | |
| 389 | [ -n "$CH" ] && {
| |
| 390 | CMD="${CMD}/$CH"
| |
| 391 | if [ -n "$KEY" ] ; then | |
| 392 | CMD="${CMD},key=${KEY}"
| |
| 393 | else case "$NK" in | |
| 394 | y*|Y*) CMD="${CMD},needkey" ;; esac
| |
| 395 | fi | |
| 396 | } | |
| 397 | done | |
| 398 | ||
| 399 | echo $CMD |