Hi all.<br><br>A simple solution was found :)<br><br>I hacked the "KP_Prior" and "KP_Next" keys, and now they are used for making-window-smaller and restoring-original-window-size respectively :)<br><br>
All thanks to <br> * /usr/share/X11/xkb/keycodes/evdev<br> * sugar/src/jarabe/view/keyhandler.py<br><br><br><br>Just one thing I noticed when I tried to have the above keys take effect ONLY in ebook-mode (via the "evtest --query" test), that when I ran this again and again via the "suprocess" module, the XO-4 behaved very erratically. However, when I made the keys take effect irrespective of the test of ebook-mode, things worked cool. However, I will keep on looking into the reason.<br>
<br><br>Thanks a ton to all :)<br><br><br><div class="gmail_quote">On Thu, Jan 24, 2013 at 10:45 PM, Paul Fox <span dir="ltr"><<a href="mailto:pgf@laptop.org" target="_blank">pgf@laptop.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">gonzalo wrote:<br>
> Write does not know what is the ebook switch state, that logic is in the<br>
> osk.<br>
><br>
> Looking in the wiki and sugar code, I could not find information about how<br>
> read the switch,<br>
> but in ticket <a href="http://dev.laptop.org/ticket/12326" target="_blank">http://dev.laptop.org/ticket/12326</a> found this:<br>
><br>
> If you do:<br>
><br>
> evtest --query /dev/input/event4 EV_SW SW_TABLET_MODE; echo $?<br>
><br>
><br>
> If the xo is in ebook mode returns 10, if not, returns 0.<br>
><br>
> There are any official doc about the switches I am missing? There are a way<br>
> to catch a event when the switch is activated, using dbus or something<br>
> similar?<br>
<br>
</div>if you open the device and read it, you'll get a stream of "struct<br>
input_event" structures (/usr/include/linux/input.h) representing<br>
opening and closing of the SW_TABLET_MODE switch. here's a C code<br>
snippet from olpc-switchd (part of powerd):<br>
<br>
void ebook_event()<br>
{<br>
struct input_event ev[1];<br>
<br>
if (read(ebk_fd, ev, sizeof(ev)) != sizeof(ev))<br>
die("bad read from ebook switch");<br>
<br>
dbg(3, "ebk: ev sec %d usec %d type %d code %d value %d",<br>
ev->time.tv_sec, ev->time.tv_usec,<br>
ev->type, ev->code, ev->value);<br>
<br>
if (ev->type == EV_SW && ev->code == SW_TABLET_MODE) {<br>
if (ev->value)<br>
send_event("ebookclose", round_secs(ev), ebk_device);<br>
else<br>
send_event("ebookopen", round_secs(ev), ebk_device);<br>
}<br>
}<br>
<br>
<br>
perhaps there's an evdev to dbus gateway of some sort, but i don't know<br>
about it, if so.<br>
<br>
the "evtest" commandline example, above, uses an ioctl on the input<br>
device to determine current state. here's snippet from the evtest source:<br>
(full source: git://<a href="http://anongit.freedesktop.org/evtest" target="_blank">anongit.freedesktop.org/evtest</a>)<br>
<br>
static int query_device(const char *device, const struct query_mode *query_mode><br>
{<br>
int fd;<br>
int r;<br>
unsigned long state[NBITS(query_mode->max)];<br>
<br>
fd = open(device, O_RDONLY);<br>
if (fd < 0) {<br>
perror("open");<br>
return EXIT_FAILURE;<br>
}<br>
memset(state, 0, sizeof(state));<br>
r = ioctl(fd, query_mode->rq, state);<br>
close(fd);<br>
<br>
if (r == -1) {<br>
perror("ioctl");<br>
return EXIT_FAILURE;<br>
}<br>
<br>
if (test_bit(keycode, state))<br>
return 10; /* different from EXIT_FAILURE */<br>
else<br>
return 0;<br>
}<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
paul<br>
</font></span><div class="im HOEnZb"><br>
<br>
><br>
> Gonzalo<br>
><br>
><br>
> On Thu, Jan 24, 2013 at 12:16 PM, Martin Langhoff <<a href="mailto:martin.langhoff@gmail.com">martin.langhoff@gmail.com</a><br>
> > wrote:<br>
><br>
> > On Thu, Jan 24, 2013 at 10:13 AM, Paul Fox <<a href="mailto:pgf@laptop.org">pgf@laptop.org</a>> wrote:<br>
> > > i believe sugar already has code to detect the two modes, since<br>
> > > that's how it knows whether to present the OSK or not.<br>
> ><br>
> > Yep. Ajay, I think Write shows you the way :-)<br>
> ><br>
> ><br>
> ><br>
> ><br>
> > m<br>
> > --<br>
> > <a href="mailto:martin.langhoff@gmail.com">martin.langhoff@gmail.com</a><br>
> > <a href="mailto:martin@laptop.org">martin@laptop.org</a> -- Software Architect - OLPC<br>
> > - ask interesting questions<br>
> > - don't get distracted with shiny stuff - working code first<br>
> > - <a href="http://wiki.laptop.org/go/User:Martinlanghoff" target="_blank">http://wiki.laptop.org/go/User:Martinlanghoff</a><br>
> ><br>
<br>
</div><div class="HOEnZb"><div class="h5">=---------------------<br>
paul fox, <a href="mailto:pgf@laptop.org">pgf@laptop.org</a><br>
_______________________________________________<br>
Devel mailing list<br>
<a href="mailto:Devel@lists.laptop.org">Devel@lists.laptop.org</a><br>
<a href="http://lists.laptop.org/listinfo/devel" target="_blank">http://lists.laptop.org/listinfo/devel</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><font face="arial, sans-serif">Regards,<br><br>Ajay Garg</font><br style="font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><font face="arial, sans-serif">Dextrose Developer</font><br style="font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<span style="font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Activity Central: </span><a href="http://activitycentral.com/" style="font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)" target="_blank">http://activitycentral.com</a>