--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/.fvwm/FvwmKbdd.pl Sat Jul 07 02:25:52 2012 +0300
@@ -0,0 +1,54 @@
+#!/usr/bin/perl -w
+
+use lib `fvwm-perllib dir`;
+use FVWM::Module;
+use General::Parse;
+use Net::DBus;
+
+# dbus-send --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.set_layout uint32:1
+
+# Net::DBus
+my $bus = Net::DBus->session();
+# Net::DBus::RemoteService
+my $service = $bus->get_service("ru.gentoo.KbddService");
+# Net::DBus::RemoteObject
+my $object = $service->get_object("/ru/gentoo/KbddService");
+
+my $module = new FVWM::Module(
+ Name => "FvwmKbdd",
+ Mask => M_STRING,
+ Debug => 1,
+);
+
+sub kbdd {
+ my ($module, $event) = @_;
+ my ($action, @args) = get_tokens($event->_text);
+ if ($action eq "hello") {
+ $module->send("Echo Hello from Kbdd...");
+ } elsif ($action eq "hel") {
+ $module->send("Echo xxx...");
+ } elsif ($action eq "kbdd") {
+ my $no = $args[0];
+ if ((0 <= $no) && ($no < 4)) {
+ $object->set_layout(Net::DBus::dbus_uint32($no));
+ } else {
+ $module->send("Echo Error: Kbdd no " . $no . "is not in 1..4 range");
+ }
+ } elsif ($action eq "stop") {
+ $module->send("Echo Kbdd exit...");
+ $module->terminate;
+ } else {
+ $module->send("Echo Kbdd unknown action: " . $action);
+ }
+}
+
+$module->addHandler(M_STRING, \&kbdd);
+
+$module->send("Echo Kbdd loaded...");
+
+# Terminate itself after 5 sec.
+# my $scheduler = $module->track('Scheduler');
+# $scheduler->schedule(5, sub { $module->terminate; });
+
+$module->event_loop;
+