.fvwm/FvwmKbdd.pl
changeset 478 2913a8a1a474
equal deleted inserted replaced
477:d0c29482707d 478:2913a8a1a474
       
     1 #!/usr/bin/perl -w
       
     2 
       
     3 use lib `fvwm-perllib dir`;
       
     4 use FVWM::Module;
       
     5 use General::Parse;
       
     6 use Net::DBus;
       
     7 
       
     8 # dbus-send --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.set_layout uint32:1
       
     9 
       
    10 # Net::DBus
       
    11 my $bus = Net::DBus->session();
       
    12 # Net::DBus::RemoteService
       
    13 my $service = $bus->get_service("ru.gentoo.KbddService");
       
    14 # Net::DBus::RemoteObject
       
    15 my $object = $service->get_object("/ru/gentoo/KbddService");
       
    16 
       
    17 my $module = new FVWM::Module(
       
    18   Name => "FvwmKbdd",
       
    19   Mask => M_STRING,
       
    20   Debug => 1,
       
    21 );
       
    22 
       
    23 sub kbdd {
       
    24   my ($module, $event) = @_;
       
    25   my ($action, @args) = get_tokens($event->_text);
       
    26   if ($action eq "hello") {
       
    27     $module->send("Echo Hello from Kbdd...");
       
    28   } elsif ($action eq "hel") {
       
    29     $module->send("Echo xxx...");
       
    30   } elsif ($action eq "kbdd") {
       
    31     my $no = $args[0];
       
    32     if ((0 <= $no) && ($no < 4)) {
       
    33       $object->set_layout(Net::DBus::dbus_uint32($no));
       
    34     } else {
       
    35       $module->send("Echo Error: Kbdd no " . $no . "is not in 1..4 range");
       
    36     }
       
    37   } elsif ($action eq "stop") {
       
    38     $module->send("Echo Kbdd exit...");
       
    39     $module->terminate;
       
    40   } else {
       
    41     $module->send("Echo Kbdd unknown action: " . $action);
       
    42   }
       
    43 }
       
    44 
       
    45 $module->addHandler(M_STRING, \&kbdd);
       
    46 
       
    47 $module->send("Echo Kbdd loaded...");
       
    48 
       
    49 # Terminate itself after 5 sec.
       
    50 # my $scheduler = $module->track('Scheduler');
       
    51 # $scheduler->schedule(5, sub { $module->terminate; });
       
    52 
       
    53 $module->event_loop;
       
    54