
proc readMouse {raw} { binary scan [string range $raw 12 13] s pos if {[string index $raw 10] == "\x01"} { #up/down set ::pointery [expr {int($::screenh * ($pos / 1024.00))}] } else { #left/right set ::pointerx [expr {int($::screenw * ($pos / 1024.00))}] } TkXext.move.pointer $::pointerx $::pointery } proc readKey {raw} { binary scan [string index $raw 10] c key incr key -32 if {[string index $raw 12] == "\x01"} { #key pressed TkXext.send.string [string index $::keymap $key] } } proc processEvent {fh} { if {[catch {set raw [read $fh 16]}]} { fileevent $fh readable {} catch {close $fh} after 5000 detectUnit return } if {[string index $raw 8] == "\x01"} {readKey $raw} if {[string index $raw 8] == "\x03"} {readMouse $raw} } proc detectUnit {} { set fh [open /proc/bus/input/devices r] set deviceinfo [read $fh] close $fh set found 0 foreach line [split $deviceinfo \n] { if {$found} { if {[string first "Handlers" $line] == -1} {continue} break } if {[string first "Saitek Pro Gamer Command Unit" $line] == -1} {continue} set found 1 } set device [file join /dev/input/[lindex [split [string trim $line] =] 1]] if {$found} { set evfh [open $device RDONLY] fconfigure $evfh -translation binary fileevent $evfh readable "processEvent $evfh" } else { after 5000 detectUnit } } proc main {} { package require Tk load [file join $::starkit::topdir TkXext.so] wm geometry . 0x0+0+0 wm overrideredirect . 1 set ::keymap "qwertyuiopasdfghjklzxcvbnm,./" set ::screenh [winfo screenheight .] set ::screenw [winfo screenwidth .] set ::pointerx 512 set ::pointery 512 after 100 detectUnit } mainDownload a finished zipkit here: [1]. To use it, plug in your Command Unit to a USB, then run the following command:
tclkit saitekdriver.binand thats it! The joypad should move your mouse about the display, and each key is mapped to a letter in the alphabet.
09-11-2007 Built a new quad-core computer, 8gig RAM with dual 30" LCDs driven by two Nvidia 8800s, here a pic:


Tips for cigar smokers: To maximize the flavor of a cigar, dont knock off the ash until its 2 inches long or longer, then relight the cigar just to get a continuous even burn.
Heres my first wiki contibution, a quick hack-up demo to rotate text and or graphics drawn on a canvas. Rotate text and images using img extension It unfortunately relies on a feature of the img extension, but, since its not difficult to place img into a tclkit, I find this preferable to using BLT to accomplish the same.07-08-2003 My mission for today was to create a tcl DNS server. I compiled the tcludp extension on Linux, which was a snap. Next, I sat down with some books, packet captures, and an xterm running dig. Alas 12 hours later, I have a minimal Tcl DNS server.11-27-2003 Finally got tclkit built on Windows in MinGW! With the help of Wojciech Kocjan's genkit which needed a little updating, I blended Wojciech's script with JCW's current genkit to develop a smooth working version that currently only works on Windows.Details are here: Building tclkit in MinGW on WIndows2004-02-08 Contributed weeCalc .
2004-05-19 Discuss SPF .
2004-05-22 TEA Streaming encryption extension
2004-06-09 Greylisting
2004-06-12 Network Activity Indicator
2004-06-16 Linux Console Text Editor In Pure TCL
2004-06-17 Diffie-Hellman Key Agreement Protocol
2004-08-28 Printing a text file to a lpr printer
2005-08-28 Enhancing Satellite Weather Images
2006-02-06 Generating The Wake On Lan Magic Packet
2006-05-01 Uploading Type1 fonts to a network printer
2008-01-19 Barcode generation to create code 128 B barcodes Springboard Code
2008-06-1 Modbus PLC Communications Driver
2010-09-18 Creating an OpenOffice Spreadsheet in pure Tcl
2010-09-19 Validating an International Bank Account Number