<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-5905067180537420094.post2112490879083885338..comments</id><updated>2009-07-07T22:22:22.478+02:00</updated><title type='text'>Comments on DINGUX: Implementing system controls</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.dingux.com/feeds/2112490879083885338/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default'/><link rel='alternate' type='text/html' href='http://www.dingux.com/2009/07/implementing-system-controls.html'/><author><name>booboo</name><uri>http://www.blogger.com/profile/05599394387866915070</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5905067180537420094.post-8315274906799115332</id><published>2009-07-07T22:22:22.478+02:00</published><updated>2009-07-07T22:22:22.478+02:00</updated><title type='text'>@booboo: I&amp;#39;d like to move the daemon to a publ...</title><content type='html'>@booboo: I&amp;#39;d like to move the daemon to a public repository soon. Can I&lt;br /&gt;do this on your google code project? I think having a centralized&lt;br /&gt;development infrastructure could be beneficial.&lt;br /&gt;&lt;br /&gt;It still needs a little bit of cleanup and the removal of some&lt;br /&gt;obsolete sdl checks from the autoconf stuff, I also need to hook&lt;br /&gt;up a button to bring it up. &lt;br /&gt;&lt;br /&gt;All the modules still need quiet a lot of work, but there&amp;#39;s&lt;br /&gt;infrastructure.&lt;br /&gt;&lt;br /&gt;I also had to (at least partially re-)learn some stuff, since I&amp;#39;m&lt;br /&gt;a toolkit-guy nowadays and haven&amp;#39;t done much low-level linux-stuff&lt;br /&gt;yet. So my progress wasn&amp;#39;t as quick as it could have been.&lt;br /&gt;&lt;br /&gt;I still want to work on it, but maybe I can attract others by&lt;br /&gt;making it public. I just don&amp;#39;t nearly have the time to hack&lt;br /&gt;on it full-time.&lt;br /&gt;&lt;br /&gt;@kmeaw:vt switching sounds good, will this work?&lt;br /&gt;&lt;br /&gt;@mth: the uevent stuff is exactly what i want to do for the virtual&lt;br /&gt;keyboard / mouse, but haven&amp;#39;t found the time to try yet.&lt;br /&gt;&lt;br /&gt;@batman52: The daemon could do that (running background apps) using&lt;br /&gt;the (not very thoroughly tested) app launcher. also some UI for it would&lt;br /&gt;have to be implemented, unless you can live with button mappings&lt;br /&gt;(which already work, still need one thing to be done). hm, they are also&lt;br /&gt;quicker, if you haven&amp;#39;t got that many programs it should be enough.&lt;br /&gt;&lt;br /&gt;Drawing animated background + translucent UI would require a lot of CPU&lt;br /&gt;cycles, indeed. I always had drawing a static snapshot of the background&lt;br /&gt;in mind, because nobody wants a sluggish background app AND menu system.&lt;br /&gt;The background process would be stopped and restarted by the daemon.&lt;br /&gt;You could just skip frames when updating the FB to reduce the CPU load,&lt;br /&gt;but that wouldn&amp;#39;t achieve much in the end. Battery lifetime also should&lt;br /&gt;play a role.&lt;br /&gt;&lt;br /&gt;For the rather static bars of the &amp;quot;basic display mode&amp;quot; of the daemon&lt;br /&gt;you could also just read out the values every few ms and update the&lt;br /&gt;corresponding FB regions. Doing that when only their values change&lt;br /&gt;would even further reduce the CPU usage, but it&amp;#39;s only visible for&lt;br /&gt;short periods of time, so I don&amp;#39;t know if it&amp;#39;s worth the effort.&lt;br /&gt;&lt;br /&gt;If you want to overlay it with, say, black you could have a pre-blended&lt;br /&gt;version of the FB and blend with the active UI elements&lt;br /&gt;&lt;br /&gt;I think the menu system will look just fine being opaque. special themes&lt;br /&gt;could be implemented, however. This could be done by implementing some&lt;br /&gt;mechanism to retrieve the FB content as it was before a vt switch&lt;br /&gt;from the daemon. I think at that point we could also provide a c library&lt;br /&gt;(input mapping, screenshots, whatever comes up) which communicates&lt;br /&gt;with the daemon when neccessary for community-created programs.&lt;br /&gt;&lt;br /&gt;Here&amp;#39;s what I have:&lt;br /&gt; - a deamon structurized in modules&lt;br /&gt; - modules less than more working:&lt;br /&gt;  input,mouse(-emu),battery,(app)launcher,screen,sound&lt;br /&gt; - config file parsing and button mapping&lt;br /&gt; - sdl independence (draws directly to framebuffer)&lt;br /&gt;&lt;br /&gt;I also have some code in some test apps which I&amp;#39;ll merge when&lt;br /&gt;I find the time.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/8315274906799115332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/8315274906799115332'/><link rel='alternate' type='text/html' href='http://www.dingux.com/2009/07/implementing-system-controls.html?showComment=1246998142478#c8315274906799115332' title=''/><author><name>torque</name><uri>http://www.blogger.com/profile/17282973795096593951</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.dingux.com/2009/07/implementing-system-controls.html' ref='tag:blogger.com,1999:blog-5905067180537420094.post-2112490879083885338' source='http://www.blogger.com/feeds/5905067180537420094/posts/default/2112490879083885338' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-440490485'/></entry><entry><id>tag:blogger.com,1999:blog-5905067180537420094.post-2087653550016854994</id><published>2009-07-06T17:29:19.166+02:00</published><updated>2009-07-06T17:29:19.166+02:00</updated><title type='text'>Maybe a stupid idea, but could you not have a devi...</title><content type='html'>Maybe a stupid idea, but could you not have a device like a framebuffer, but it keeps a buffer only of active pixels along with their x y location... if the buffer is empty nothing is drawn, but if it has contents (e.g. you drew a volume control image) they are copied into the correct places in the real framebuffer by the driver? That way you don&amp;#39;t have to copy the rest of the normal framebuffer contents backwards and forwards.&lt;br /&gt;&lt;br /&gt;Also, I have been wondering - anyone got any idea if the USB-host pins are available anywhere on the dingoo PCB?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/2087653550016854994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/2087653550016854994'/><link rel='alternate' type='text/html' href='http://www.dingux.com/2009/07/implementing-system-controls.html?showComment=1246894159166#c2087653550016854994' title=''/><author><name>Ed</name><uri>http://www.blogger.com/profile/06060255254617721966</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.dingux.com/2009/07/implementing-system-controls.html' ref='tag:blogger.com,1999:blog-5905067180537420094.post-2112490879083885338' source='http://www.blogger.com/feeds/5905067180537420094/posts/default/2112490879083885338' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1371482420'/></entry><entry><id>tag:blogger.com,1999:blog-5905067180537420094.post-7548284506153067236</id><published>2009-07-06T13:05:11.791+02:00</published><updated>2009-07-06T13:05:11.791+02:00</updated><title type='text'>@Bastian: I like your idea! Moreover i would like ...</title><content type='html'>@Bastian: I like your idea! Moreover i would like to see a few of useful embedded apps able to run in &amp;quot;background mode&amp;quot;, just like the music player or a simple text viewer, as it happens with the original firmaware. Many users reported as &amp;quot;very useful&amp;quot; the ability of reading files during emulation. Personally i&amp;#39;d like being able of reading ebooks while listenig to music or radio, as i can do with the original fw.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/7548284506153067236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/7548284506153067236'/><link rel='alternate' type='text/html' href='http://www.dingux.com/2009/07/implementing-system-controls.html?showComment=1246878311791#c7548284506153067236' title=''/><author><name>batman52</name><uri>http://www.blogger.com/profile/08749773334397280717</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13866469410057123443'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.dingux.com/2009/07/implementing-system-controls.html' ref='tag:blogger.com,1999:blog-5905067180537420094.post-2112490879083885338' source='http://www.blogger.com/feeds/5905067180537420094/posts/default/2112490879083885338' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1906541812'/></entry><entry><id>tag:blogger.com,1999:blog-5905067180537420094.post-7248136777147536091</id><published>2009-07-06T12:09:49.095+02:00</published><updated>2009-07-06T12:09:49.095+02:00</updated><title type='text'>@kmeaw: I like your ideas very much. The overlay h...</title><content type='html'>@kmeaw: I like your ideas very much. The overlay however is required for the &amp;quot;volume up/down&amp;quot; splash. As far as I understand booboo he wants the splash to display while the application continues to run.&lt;br /&gt;&lt;br /&gt;I had another idea: If we gonna have a menu that can be opened at any time while an application is running, then we could as well include the possibility for the running application to add its own options (like button remapping/frameskip/etc). This would be a huge usability feature IMO</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/7248136777147536091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/7248136777147536091'/><link rel='alternate' type='text/html' href='http://www.dingux.com/2009/07/implementing-system-controls.html?showComment=1246874989095#c7248136777147536091' title=''/><author><name>Bastian</name><uri>http://www.blogger.com/profile/00673477900258906004</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.dingux.com/2009/07/implementing-system-controls.html' ref='tag:blogger.com,1999:blog-5905067180537420094.post-2112490879083885338' source='http://www.blogger.com/feeds/5905067180537420094/posts/default/2112490879083885338' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-515496139'/></entry><entry><id>tag:blogger.com,1999:blog-5905067180537420094.post-5247122540025793862</id><published>2009-07-06T10:08:19.215+02:00</published><updated>2009-07-06T10:08:19.215+02:00</updated><title type='text'>Using the &amp;quot;uevent&amp;quot; driver, it&amp;#39;s poss...</title><content type='html'>Using the &amp;quot;uevent&amp;quot; driver, it&amp;#39;s possible to inject input events. However, I do not know exactly at which point they are injected; you&amp;#39;d have to be careful to not create a loop where the system control daemon would process the events it injected just before.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/5247122540025793862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/5247122540025793862'/><link rel='alternate' type='text/html' href='http://www.dingux.com/2009/07/implementing-system-controls.html?showComment=1246867699215#c5247122540025793862' title=''/><author><name>mth</name><uri>http://www.blogger.com/profile/15377228391771347593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.dingux.com/2009/07/implementing-system-controls.html' ref='tag:blogger.com,1999:blog-5905067180537420094.post-2112490879083885338' source='http://www.blogger.com/feeds/5905067180537420094/posts/default/2112490879083885338' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-626228524'/></entry><entry><id>tag:blogger.com,1999:blog-5905067180537420094.post-5460205122492444252</id><published>2009-07-06T09:35:42.247+02:00</published><updated>2009-07-06T09:35:42.247+02:00</updated><title type='text'>You can implement these special keypresses as ACPI...</title><content type='html'>You can implement these special keypresses as ACPI events like it is done on laptops for Fn+something keys like brightness, volume, etc. The daemon will subscribe to acpid events of acpid or even could (if the memory is an issue and running acpid is a bad idea) read /proc/acpi/events directly.&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t think we need a separate framebuffer device to draw an overlay. Upon a special event the control daemon can switch VT to a free one, copy old framebuffer contents into a temporary buffer, draw overlay over it. When everything is done and user wants his app back, daemon should restore framebuffer contents and switch the VT back.&lt;br /&gt;&lt;br /&gt;This approach will also solve the problem of handling non-special keys while in overlay mode - if the VT is switched, they would not be delivered into the &amp;quot;foreground&amp;quot; application.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/5460205122492444252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/5460205122492444252'/><link rel='alternate' type='text/html' href='http://www.dingux.com/2009/07/implementing-system-controls.html?showComment=1246865742247#c5460205122492444252' title=''/><author><name>kmeaw</name><uri>http://kmeaw.myopenid.com/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.dingux.com/2009/07/implementing-system-controls.html' ref='tag:blogger.com,1999:blog-5905067180537420094.post-2112490879083885338' source='http://www.blogger.com/feeds/5905067180537420094/posts/default/2112490879083885338' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1049180654'/></entry><entry><id>tag:blogger.com,1999:blog-5905067180537420094.post-8419401069343397937</id><published>2009-07-06T08:05:13.591+02:00</published><updated>2009-07-06T08:05:13.591+02:00</updated><title type='text'>AFAIR userspace processes can open a /dev/input de...</title><content type='html'>AFAIR userspace processes can open a /dev/input device and send the EVIOCGRAB ioctl to prevent that keyboard events are sent to the foreground process.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/8419401069343397937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5905067180537420094/2112490879083885338/comments/default/8419401069343397937'/><link rel='alternate' type='text/html' href='http://www.dingux.com/2009/07/implementing-system-controls.html?showComment=1246860313591#c8419401069343397937' title=''/><author><name>Bastian</name><uri>http://www.blogger.com/profile/00673477900258906004</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.dingux.com/2009/07/implementing-system-controls.html' ref='tag:blogger.com,1999:blog-5905067180537420094.post-2112490879083885338' source='http://www.blogger.com/feeds/5905067180537420094/posts/default/2112490879083885338' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-515496139'/></entry></feed>
