Package: vkeybd Version: 1:0.1.17b-2 Severity: important Tags: patch *** Please type your report below this line ***
If your keymap is designed for keys that are not displayed in the piano keyboard, pressing the corresponding keys of your computer keyboard will raise an error with the key note number. Moreover the same error keeps raising afterwards for any other key pressed because the unexpected key note number stays in the key stack. Error message looks like this: ---------------------------------------------------- can't read "keyitem(36)": no such element in array can't read "keyitem(36)": no such element in array while executing "$keywin itemconfigure $keyitem($key) -fill blue" (procedure "KeyStart" line 8) invoked from within […] ---------------------------------------------------- To get this message you may use the french layout on a 3 octaves piano: $ vkeybd --keymap /usr/share/vkeybd/vkeybdmap-french Then press the “!” key. Using a “catch” instruction in both KeyStart and KeyStop procedures of the file “/usr/share/vkeybd/vkeybd.tcl” make it possible to avoid error raising whatever the key pressed and the piano octaves displayed. Here is the small patch: --- /usr/share/vkeybd/vkeybd.tcl.orig 2009-05-08 22:09:03.000000000 +0200 +++ /usr/share/vkeybd/vkeybd.tcl 2009-05-08 22:21:58.000000000 +0200 @@ -170,10 +170,12 @@ proc KeyStart {key button} { global keybase keywin keyitem keyvel activekey SeqOn - if {$button == 1} { - set activekey $keyitem($key) + catch { + if {$button == 1} { + set activekey $keyitem($key) + } + $keywin itemconfigure $keyitem($key) -fill blue } - $keywin itemconfigure $keyitem($key) -fill blue set key [expr $key + $keybase] SeqStartNote $key $keyvel } @@ -181,11 +183,13 @@ proc KeyStop {key button} { global keybase keywin keyitem keyindex keycolor activekey SeqOn - if {$button == 1 && $activekey != ""} { - set key $keyindex($activekey) - set activekey "" + catch { + if {$button == 1 && $activekey != ""} { + set key $keyindex($activekey) + set activekey "" + } + $keywin itemconfigure $keyitem($key) -fill $keycolor($key) } - $keywin itemconfigure $keyitem($key) -fill $keycolor($key) set key [expr $key + $keybase] SeqStopNote $key 0 } Regards, JM. Philippe -- System Information: Debian Release: 5.0.1 APT prefers stable APT policy: (500, 'stable') Architecture: i386 (i686) Kernel: Linux 2.6.26-2-686 (SMP w/1 CPU core) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages vkeybd depends on: ii libasound2 1.0.16-2 ALSA library ii libc6 2.7-18 GNU C Library: Shared libraries ii libx11-6 2:1.1.5-2 X11 client-side library ii tcl8.4 8.4.19-2 Tcl (the Tool Command Language) v8 ii tk8.4 8.4.19-2 Tk toolkit for Tcl and X11, v8.4 - vkeybd recommends no packages. vkeybd suggests no packages. -- no debconf information