[JM] 2018/12/4 Using and stripped-down version of [A scale with Arduino and AndroWish] here is an interface to a PS2 keyboard. The arduino is programmed with this: https://github.com/PaulStoffregen/PS2Keyboard While Androwish (I actually used Undroidwish on a PC) is running this: ====== # AndroWish script to interface Arduino with PS2 Keyboard # # Wiring: # # +--------------+ +-------------+ +-----------------+ # | Android | | +5V|---| PS2 | # | Device |--USB--| Arduino GND|---| Keyboard | # | w/ AndroWish | | D4|---|DATA | # +--------------+ | D3|---|CK | # +-------------+ +-----------------+ console show wm attributes . -fullscreen 1 catch {borg screenorientation landscape} sdltk screensaver 0 option add *Radiobutton.borderWidth 3 option add *Radiobutton.highlightThickness 0 option add *Button.borderWidth 3 option add *Button.highlightThickness 0 # Open/reopen serial line to Arduino proc reopen {} { after cancel reopen if {[sdltk android]} { if {[catch { set dev [lindex [usbserial] 0] set ::SCALE(chan) [usbserial $dev] fconfigure $::SCALE(chan) -blocking 0 -translation binary \ -mode 9600,n,8,1 fileevent $::SCALE(chan) readable readv set ::SCALE(value) "online" puts -nonewline $::SCALE(chan) "S" } err]} { sdltk log verbose $err set ::SCALE(value) "offline" after 1000 reopen return } } else { if {[catch { set ::SCALE(chan) [open "COM4" {RDWR}] fconfigure $::SCALE(chan) -translation binary -mode 9600,n,8,1 fileevent $::SCALE(chan) readable readv set ::SCALE(value) "online" } err]} { sdltk log verbose $err puts $err set ::SCALE(value) "off..line" after 1000 reopen return } } # sendc 5 S } # Read data from Arduino proc readv {} { if {[eof $::SCALE(chan)]} { sdltk log verbose "EOF detected" puts "EOF detected" catch {close $::SCALE(chan)} set ::SCALE(value) "offline" after 1000 reopen return } if {[catch {gets $::SCALE(chan) v} err]} { sdltk log verbose $err puts $err catch {close $::SCALE(chan)} set ::SCALE(value) "offline" after 1000 reopen return } puts $v set ::SCALE(value) $v } # Main screen label .weight -textvariable SCALE(value) -font {Courier -160} grid .weight -row 0 -column 0 -columnspan 9 -sticky news grid columnconfigure . 0 -uniform largebutton grid rowconfigure . 0 -weight 12 grid columnconfigure . all -weight 1 reopen ======