#!/usr/bin/tclsh fconfigure stdout -buffering line fconfigure stdin -buffering line set MAXDISPSTRLEN 64 set gdispstr "" set gfnotexit 1 set gfnumenting 0 set gax 0 set gbx 0 set gbinop "" set kbd { "Off" 2628095 "C" 2628095 " 0} { if {[string length $gdispstr] == 1} { dispstr "0" 6052991 } set gdispstr [string range $gdispstr 0 end-1] dispstr $gdispstr 6052991 } elseif {$rowcol == 18 && [string length $gdispstr] > 0} { if {[string index $gdispstr 0] eq "-"} { set gdispstr [string range $gdispstr 1 end] } else { set gdispstr "-$gdispstr" } dispstr $gdispstr 6052991 } elseif {$rowcol == 3 || $rowcol == 7 || $rowcol == 11 || $rowcol == 15} { set gbinop [lindex $kbd [expr {$rowcol * 2}]] set gax [expr {double($gdispstr)}] set gfnumenting 0 set gdispstr "" } elseif {$rowcol == 19} { if {$gfnumenting == 1} { set gbx [expr {double($gdispstr)}] set gfnumenting 0 } if {$gbinop eq "*"} { set gax [expr {$gax * $gbx}] } if {$gbinop eq "/"} { set gax [expr {double($gax) / double($gbx)}] } if {$gbinop eq "+"} { set gax [expr {$gax + $gbx}] } if {$gbinop eq "-"} { set gax [expr {$gax - $gbx}] } set gdispstr $gax dispstr $gdispstr 6052991 } } while {$gfnotexit && [gets stdin line] >= 0} { if {$line eq "drawapp"} { myputs "Fo 0 611 3\nFo 1 400 3\nFo 2 140 3\nF 0 16777215\nFR 0 0 0 10000 10000\nZ \n" dispstr "0" 6052991 myputs "B 0 12632256\n" for {set i 0} {$i < 20} {incr i} { myputs "F 0 10526880\n" itorect $i "FR" 220 1220 2080 2280 myputs "F 0 986895\n" itorect $i "R" 200 1200 2100 2300 set j [expr {$i * 2}] set k [expr {$i * 2 + 1}] myputs "F 0 [lindex $kbd $k]\n" set cx [expr {($i % 4) * 2000 + 1100}] set cy [expr {($i / 4) * 1200 + 1700}] myputs "C$ 0 $cx $cy \"[lindex $kbd $j]\"\n" } myputs "F 1 16711680\nC$ 1 5000 800 \"tcl cloud app transparent shell stdinout\"\nZ \n" myputs "F 2 255\nC$ 2 5000 7200 \"Corrie Zucker Technologies LLC.\"\nC$ 2 5000 7340 \"d/b/a CZ Technologies\"\nZ \n" } elseif {$line eq "QUERY_REMOTE"} { myputs "Rz 1200 900\n" } else { set parts [split $line] if {[llength $parts] >= 3} { set btn [lindex $parts 0]; set x [lindex $parts 1]; set y [lindex $parts 2] if {$x >= 0} { keytoexe [expr {($y - 1200) / 1200}] [expr {($x - 200) / 2000}] } elseif {$x == -2} { switch -- $btn { 79 - 111 { keytoexe 0 0 } 99 - 67 { keytoexe 0 1 } 8 { keytoexe 0 2 } 42 { keytoexe 0 3 } 55 { keytoexe 1 0 } 56 { keytoexe 1 1 } 57 { keytoexe 1 2 } 47 { keytoexe 1 3 } 52 { keytoexe 2 0 } 53 { keytoexe 2 1 } 54 { keytoexe 2 2 } 43 { keytoexe 2 3 } 49 { keytoexe 3 0 } 50 { keytoexe 3 1 } 51 { keytoexe 3 2 } 45 { keytoexe 3 3 } 48 { keytoexe 4 0 } 46 { keytoexe 4 1 } 105 - 73 { keytoexe 4 2 } 61 { keytoexe 4 3 } } } elseif {$x == -4} { myputs "Rz $btn $y \n" } elseif {$x == -5} { myputs "Mv $btn $y \n" } elseif {$x == -98} { after 100 } } } }