# A silly little script to demonstrate what a remote keyboard might look like. # Currently *very* brain dead, it only handles ASCII, doesn't have a spacebar, # ctrl-key shift-key caps-lock arrows or any other possible symbols on a keyboard. set target {} frame .menus -relief raised -bd 2 menubutton .menus.f -text "File" -menu .menus.f.m menu .menus.f.m .menus.f.m add cascade -label "Select Interpreter" -menu .menus.f.m.m menu .menus.f.m.m -postcommand {refresh_interps .menus.f.m.m} -tearoff 0 .menus.f.m add command -label "Quit" -command {destroy .} pack .menus.f -side left grid .menus -row 0 -column 0 -columnspan 50 -sticky ew #pack .menus -side top proc refresh_interps {m} { while {[$m index last] != "none"} { $m delete 0 } foreach q [winfo interps] { $m add command -label $q -command "set_target $q" } } proc set_target {interp} { global target set target $interp } set i 0 proc make_row {col row list} { set i $col foreach q $list { if {$q == "."} { set name .adot button $name -text "." -command "do ." grid $name -row $row -column [incr i 3] -columnspan 3 } else { set name .a[list $q] button $name -text $q -command "do [list $q]" grid $name -row $row -column [incr i 3] -columnspan 3 } } } set col 1 set row 0 make_row [incr col] [incr row] {\` 1 2 3 4 5 6 7 8 9 0 - = \\} make_row [incr col] [incr row] {q w e r t y u i o p \[ \]} make_row [incr col] [incr row] {a s d f g h j k l ; \'} make_row [incr col] [incr row] {z x c v b n m , / .} proc do {key} { global target send $target "set s \[focus -lastfor .\];\ puts \"focusing on \$s.\";\ focus -force \$s;\ event generate \$s " }