Problems? Is your data what you think it is? | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
That seems to work. Most helpful, thank you. Here is the updated PerlTk program (tested on NetBSD 1.6.1_STABLE)
#!/usr/pkg/bin/perl # gus_kbds.pl version 1.01 # Copyright (c) 2003 by Gan Uesli Starling use Tk; use strict; use vars qw( $programo_1 $xmodmap_verda $xmodmap_alia $e_feedback $feedback $pid_1 ); sub set_defaults { $xmodmap_verda = "/home/aplonis/.Xmodmap_verda"; $xmodmap_alia = "/usr/X11R6/lib/X11/etc/xmodmap.std"; $programo_1 = "xterm -u8 -fn -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1 -name FOO"; } set_defaults; # Do right away. # Give initial feedback hint. $feedback = "Premu butonon."; # The main window. my $mw_kbd = MainWindow->new(-title=>'Klavo-sxangxilo'); # Frame for buttons. my $fm_kbds = $mw_kbd->Frame(-relief=>'flat',-borderwidth=>5); my $bn_tajpu = $fm_kbds->Button( -relief=>'raised',-text=>"Tajpu",-command=>\&tajpu,-width=>5, -background=>'gray',-activebackground=>'orange'); my $bn_eo = $fm_kbds->Button( -relief=>'raised',-text=>"Verda",-command=>\&kbd_eo,-width=>5, -background=>'gray',-activebackground=>'green'); my $bn_en = $fm_kbds->Button( -relief=>'raised',-text=>"Alia",-command=>\&kbd_en,-width=>5, -background=>'gray',-activebackground=>'blue'); my $b_cls = $fm_kbds->Button( -relief=>'raised',-text=>"Finu",-command=>\&quit_MainLoop, -background=>"gray",-activebackground=>"red"); $bn_tajpu->pack(-side=>'left',-expand=>1,-fill=>'x'); $bn_en->pack(-side=>'left',-expand=>1,-fill=>'x'); $bn_eo->pack(-side=>'left',-expand=>1,-fill=>'x'); $b_cls->pack(-side=>'left'); $fm_kbds->pack(-side=>'top',-expand=>0,-fill=>'x'); ################################ # BEGIN PROBLEM AREA -- SOLVED # ################################ sub tajpu { local $SIG{CHLD} = 'IGNORE'; # don't wait for child # exit status. avoids # zombies. die "fork failed: $!" unless defined($pid_1 = fork); return if $pid_1; $feedback = $programo_1; exec("$programo_1"); warn "exec failed: $!"; CORE::exit(1); } ############################## # END PROBLEM AREA -- SOLVED # ############################## sub kbd_eo { $feedback = 'Klavaro verdas!'; `xmodmap $xmodmap_verda`; } sub kbd_en { $feedback = 'Klavaro malverdas.'; `xmodmap $xmodmap_alia`; } # Frame for info. my $fm_btm = $mw_kbd->Frame(-relief=>'flat',-borderwidth=>5); my $e_feedback = $fm_btm->Entry( -width=>20, -textvariable=>\$feedback,-font =>'courier', -background=>"white",-foreground=>'blue'); $e_feedback->pack(-side=>'left',-expand=>1,-fill=>'x'); $fm_btm->pack(-side=>'bottom',-expand=>0,-fill=>'x'); # Backup results and quit program. sub quit_MainLoop { $mw_kbd->destroy() if Tk::Exists($mw_kbd); } MainLoop;And, just for completeness, here is the xternal Esperanto file ~/.Xmodmap_verda which Perl feeds to xmodmap for XFree86. It was created with the /usr/pkgsrc/x11/xkeycaps package. ! ! This is an `xmodmap' input file for ! PC 101 key, thin Delete, tall Enter (XFree86; US) keyboards. ! Automatically generated on Thu May 29 01:33:57 2003 by aplonis with ! XKeyCaps 2.46; Copyright (c) 1999 Jamie Zawinski <jwz@jwz.org>. ! http://www.jwz.org/xkeycaps/ ! keycode 0x6F = Print Sys_Req keycode 0x18 = ccircumflex Ccircumflex keycode 0x19 = ubreve Ubreve keycode 0x1D = jcircumflex Jcircumflex keycode 0x22 = gcircumflex Gcircumflex keycode 0x23 = hcircumflex Hcircumflex keycode 0x35 = scircumflex Scircumflex keycode 0x40 = Alt_L Meta_L keycode 0x71 = Alt_R Meta_RI will write up a howto for this and post it first on the following URL: starling.us/gus_netbsd ...then sometime later, translate it for... esperanto.us In reply to Re: Re: Launch from Tk
by aplonis
|
|