Package: clusterssh
Version: 4.00.05-3
Severity: normal
Tags: upstream

I use a german keyboard layout (qwertz) and when I paste "a@b" into the
clusterssh input box, it has a problem getting the keysym for the @.
On my keyboard the @ is [Alt Gr] + [Q] ( q, Q and @ are on this key ). I
attached the debug output of clusterssh. In the first part I typed a@b by hand
(no problems) and in the second part it is pasted.

The bug also appears in the current upstream version ClusterSSH-4.00_10 from
2011-07-08.

The entry in @keyboard is:
##########
          [
            113, # q
            81, # Q
            113, # q
            81, # Q
            64, # @
            2009,
            64 # @
          ],
    # @keyboard arry
    #  0 = plain key
    #  1 = with shift
    #  2 = with Alt-GR
    #  3 = with shift + AltGr
    #  4 = same as 2 - control/alt?
    #  5 = same as 3 - shift-control-alt?
##########

I traced it back and it might be a problem in
X11::Protocol->GetKeyboardMapping.
The attached patch is not really a solution because I think it only works with
the german keyboard layout.


-- System Information:
Debian Release: 6.0.2
  APT prefers stable
  APT policy: (500, 'stable'), (1, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages clusterssh depends on:
ii  libx11-protocol-perl      0.56-2         Perl module for the X Window Syste
ii  openssh-client            1:5.5p1-6      secure shell (SSH) client, for sec
ii  perl-tk                   1:804.029-1+b1 Perl module providing the Tk graph
ii  xterm                     261-1          X terminal emulator

clusterssh recommends no packages.

clusterssh suggests no packages.

-- no debconf information

*** /home/r.lindner/bin/App-ClusterSSH-4.00_10/bin/csshbug.txt
11:10:58: =========
11:10:58: event    =KeyPress
11:10:58: keysym   =a (state=Mod2-)
11:10:58: keysymdec=97
11:10:58: keycode  =38
11:10:58: state    =Mod2-
11:10:58: codetosym=a
11:10:58: symtocode=97
11:10:58: keyboard =n38
11:10:58: combo=a
11:10:58: key=:Alt-n:
11:10:58: key=:Alt-r:
11:10:58: key=:Control-q:
11:10:58: key=:Control-Shift-plus:
11:10:58: key=:Alt-h:
11:10:58: key=:Control-v:
11:10:58: Sending event KeyPress with code 38 (state=Mod2-) to window 169869327
11:10:58: =========
11:10:58: event    =KeyRelease
11:10:58: keysym   =a (state=Mod2-)
11:10:58: keysymdec=97
11:10:58: keycode  =38
11:10:58: state    =Mod2-
11:10:58: codetosym=a
11:10:58: symtocode=97
11:10:58: keyboard =n38
11:10:58: combo=a
11:10:58: key=:Alt-n:
11:10:58: key=:Alt-r:
11:10:58: key=:Control-q:
11:10:58: key=:Control-Shift-plus:
11:10:58: key=:Alt-h:
11:10:58: key=:Control-v:
11:10:58: Sending event KeyRelease with code 38 (state=Mod2-) to window
169869327
11:11:00: =========
11:11:00: event    =KeyPress
11:11:00: keysym   =ISO_Level3_Shift (state=Mod2-)
11:11:00: keysymdec=65027
11:11:00: keycode  =108
11:11:00: state    =Mod2-
11:11:00: codetosym=ISO_Level3_Shift
11:11:00: symtocode=65027
11:11:00: keyboard =n108
11:11:00: combo=ISO_Level3_Shift
11:11:00: key=:Alt-n:
11:11:00: key=:Alt-r:
11:11:00: key=:Control-q:
11:11:00: key=:Control-Shift-plus:
11:11:00: key=:Alt-h:
11:11:00: key=:Control-v:
11:11:00: Sending event KeyPress with code 108 (state=Mod2-) to window
169869327
11:11:00: =========
11:11:00: event    =KeyPress
11:11:00: keysym   =0 (state=Mod2-Mod5-)
11:11:00: keysymdec=0
11:11:00: keycode  =24
11:11:00: state    =Mod2-Mod5-
11:11:00: symtocode=48
11:11:00: keyboard =n19
11:11:00: combo=Mod5-0
11:11:00: key=:Alt-n:
11:11:00: key=:Alt-r:
11:11:00: key=:Control-q:
11:11:00: key=:Control-Shift-plus:
11:11:00: key=:Alt-h:
11:11:00: key=:Control-v:
11:11:00: Sending event KeyPress with code 24 (state=Mod2-Mod5-) to window
169869327
11:11:01: =========
11:11:01: event    =KeyRelease
11:11:01: keysym   =0 (state=Mod2-Mod5-)
11:11:01: keysymdec=0
11:11:01: keycode  =24
11:11:01: state    =Mod2-Mod5-
11:11:01: symtocode=48
11:11:01: keyboard =n19
11:11:01: combo=Mod5-0
11:11:01: key=:Alt-n:
11:11:01: key=:Alt-r:
11:11:01: key=:Control-q:
11:11:01: key=:Control-Shift-plus:
11:11:01: key=:Alt-h:
11:11:01: key=:Control-v:
11:11:01: Sending event KeyRelease with code 24 (state=Mod2-Mod5-) to window
169869327
11:11:01: =========
11:11:01: event    =KeyRelease
11:11:01: keysym   =0 (state=Mod2-Mod5-)
11:11:01: keysymdec=0
11:11:01: keycode  =108
11:11:01: state    =Mod2-Mod5-
11:11:01: symtocode=48
11:11:01: keyboard =n19
11:11:01: combo=Mod5-0
11:11:01: key=:Alt-n:
11:11:01: key=:Alt-r:
11:11:01: key=:Control-q:
11:11:01: key=:Control-Shift-plus:
11:11:01: key=:Alt-h:
11:11:01: key=:Control-v:
11:11:01: Sending event KeyRelease with code 108 (state=Mod2-Mod5-) to window
169869327
11:11:04: =========
11:11:04: event    =KeyPress
11:11:04: keysym   =b (state=Mod2-)
11:11:04: keysymdec=98
11:11:04: keycode  =56
11:11:04: state    =Mod2-
11:11:04: codetosym=b
11:11:04: symtocode=98
11:11:04: keyboard =n56
11:11:04: combo=b
11:11:04: key=:Alt-n:
11:11:04: key=:Alt-r:
11:11:04: key=:Control-q:
11:11:04: key=:Control-Shift-plus:
11:11:04: key=:Alt-h:
11:11:04: key=:Control-v:
11:11:04: Sending event KeyPress with code 56 (state=Mod2-) to window 169869327
11:11:04: =========
11:11:04: event    =KeyRelease
11:11:04: keysym   =b (state=Mod2-)
11:11:04: keysymdec=98
11:11:04: keycode  =56
11:11:04: state    =Mod2-
11:11:04: codetosym=b
11:11:04: symtocode=98
11:11:04: keyboard =n56
11:11:04: combo=b
11:11:04: key=:Alt-n:
11:11:04: key=:Alt-r:
11:11:04: key=:Control-q:
11:11:04: key=:Control-Shift-plus:
11:11:04: key=:Alt-h:
11:11:04: key=:Control-v:
11:11:04: Sending event KeyRelease with code 56 (state=Mod2-) to window
169869327


11:11:25: PASTE EVENT
11:11:25: Got text :a@b:
11:11:25: servers{server }{wid}=169869327
11:11:25: Sending to 'server ' text:a@b:
11:11:25: Looking for char :a: with ord :97:
11:11:25: Looking for keycode :97:
11:11:25: Looking for keysym  :a:
11:11:25: Looking for keyboardmap :n38:
11:11:25: keyboardmap=:n38:
11:11:25: state=n, code=38
11:11:25: returning state=:0: code=:38:
11:11:25: Got state :0: code :38:
11:11:25: sending event=KeyPress code=:38: state=:0:
11:11:25: sending event=KeyRelease code=:38: state=:0:
11:11:25: Looking for char :@: with ord :64:
11:11:25: Looking for keycode :64:
11:11:25: Looking for keysym  :at:
11:11:25: Use of uninitialized value $_[1] in print at /home/r.lindner/bin/App-
ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 182.
Looking for keyboardmap ::
Use of uninitialized value within %keyboardmap in pattern match (m//) at
/home/r.lindner/bin/App-ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line
585.
11:11:25: Use of uninitialized value $_[1] in print at /home/r.lindner/bin/App-
ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 182.
keyboardmap=::
Use of uninitialized value $state in concatenation (.) or string at
/home/r.lindner/bin/App-ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line
589.
Use of uninitialized value $code in concatenation (.) or string at
/home/r.lindner/bin/App-ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line
589.
11:11:25: state=, code=
Use of uninitialized value $_ in pattern match (m//) at /home/r.lindner/bin
/App-ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 592.
Use of uninitialized value $_ in pattern match (m//) at /home/r.lindner/bin
/App-ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 596.
Use of uninitialized value $_ in pattern match (m//) at /home/r.lindner/bin
/App-ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 600.
Use of uninitialized value $_ in pattern match (m//) at /home/r.lindner/bin
/App-ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 604.
Tk::Error: Should never reach here at /home/r.lindner/bin/App-
ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 609.
 App::ClusterSSH::get_keycode_state at /home/r.lindner/bin/App-
ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 609
 App::ClusterSSH::send_text at /home/r.lindner/bin/App-
ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 863
 App::ClusterSSH::__ANON__ at /home/r.lindner/bin/App-
ClusterSSH-4.00_10/bin/../lib/App/ClusterSSH.pm line 1771
 <<Paste>>
--- App-ClusterSSH-4.00_10/lib/App/ClusterSSH.pm        2011-07-08 
13:45:12.000000000 +0200
+++ /tmp/ClusterSSH.pm  2011-07-26 14:51:10.000000000 +0200
@@ -528,6 +528,21 @@
 
     logmsg( 1, "Loading keymaps and keycodes" );
 
+    # BEGIN WORKAROUND
+    my %__workaround = (
+        ord("7") => ord("{"),
+        ord("8") => ord("["),
+        ord("9") => ord("]"),
+        ord("0") => ord("}"),
+        223 => ord("\\"),
+        ord("+") => ord("~"),
+        ord("q") => ord("@"),
+        ord("<") => ord("|"),
+        #ord("e") => ord("€"),
+    );
+    @keyboard = map { defined($__workaround{$_->[0]}) and $_->[2] = 
$__workaround{$_->[0]}; $_ } @keyboard;
+    # END WORKAROUND
+
     foreach ( 0 .. $#keyboard ) {
         if ( defined $keyboard[$_][3] ) {
             if ( defined( $keycodetosym{ $keyboard[$_][3] } ) ) {

Reply via email to