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] } ) ) {