<?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/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1120409321206714382</id><updated>2011-11-28T02:43:05.756+02:00</updated><category term='NIT'/><category term='REMOTE'/><category term='LIRC'/><title type='text'>MyMaemo</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mymaemo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mymaemo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>emjayes</name><uri>http://www.blogger.com/profile/14099893353984874951</uri><email>noreply@blogger.com</email><gd:image 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>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1120409321206714382.post-3310180569356869107</id><published>2008-04-16T09:45:00.011+03:00</published><updated>2008-05-07T10:13:11.836+03:00</updated><title type='text'>Automatic screen rotate for N810</title><content type='html'>After testing the taskbar applet to rotate the screen in my N810, I thought it would be much easier to use the power key to initiate rotation.&lt;br /&gt;&lt;br /&gt;Also when opening the keyboard, I wanted the screen to automatically rotate to landscape to be able to see what I was writing and return to portrait mode when the keyboard is closed.&lt;br /&gt;&lt;br /&gt;Now it can be done:&lt;br /&gt;&lt;br /&gt;This package provides the following functions:&lt;br /&gt;-screen is rotated to portrait / landscape mode by&lt;br /&gt;     a) pressing the power key&lt;br /&gt;     b) pressing and holding the Application switch key for more than one second.&lt;br /&gt;&lt;br /&gt;If the keyboard is opened when the screen is rotated to portrait mode, it will be rotated to landscape mode.&lt;br /&gt;&lt;br /&gt;When the keyboard is closed, the screen is rotated back to portrait mode, if it was already in portrait mode when the keyboard was opened.&lt;br /&gt; &lt;br /&gt;You will need to install the xserver-xomap with RandR support, as well as flash the kernel with RrandR support before this package will do anything. Since the updated components can't be a dependecy, you are required to do it yourself.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mikie.dy.fi/maemo/rotate.install"&gt;&lt;br /&gt;This one-click-install &lt;/a&gt;will provide you with an updateable xserver-xomap if you are not already using it.&lt;br /&gt;&lt;br /&gt;After the package installation is complete, update the xserver-xomap by either the application manager or apt-get.&lt;br /&gt;&lt;br /&gt;Then flash your N810 with &lt;a href="http://mikie.dy.fi/maemo/dists/chinook/user/binary-armel/kernel-rx-34_2.6.21.0-osso71-randr2"&gt;this kernel&lt;/a&gt; and reboot to complete the installation&lt;br /&gt;&lt;br /&gt;If you do not know how to flash the kernel or update the xserver-xomap, you are advised not to install this package at all, as you may brick your device while experimenting.&lt;br /&gt;&lt;br /&gt;The RandR supporting kernel and xserver-xomap are provided by &lt;a href="http://sse2.net/rotate/"&gt;http://sse2.net/rotate/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you don't like to have the power menu appear when using the power key to initiate rotation,&lt;br /&gt;edit /etc/mce/mce.ini:&lt;br /&gt;&lt;br /&gt;PowerKeyShortAction=disabled       &lt;br /&gt;PowerKeyLongAction=menu &lt;br /&gt;PowerKeyDoubleAction=menu&lt;br /&gt;&lt;br /&gt;Then you can rotate the screen with a short press, but still can access the menu with long press, or double-clicking it.&lt;br /&gt;&lt;br /&gt;Support/feature requests/discussion/current features etc. in &lt;a href="http://www.internettablettalk.com/forums/showthread.php?t=19447"&gt;Internet tablet talk forums&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1120409321206714382-3310180569356869107?l=mymaemo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mymaemo.blogspot.com/feeds/3310180569356869107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1120409321206714382&amp;postID=3310180569356869107' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/3310180569356869107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/3310180569356869107'/><link rel='alternate' type='text/html' href='http://mymaemo.blogspot.com/2008/04/automatic-screen-rotate-for-n810.html' title='Automatic screen rotate for N810'/><author><name>emjayes</name><uri>http://www.blogger.com/profile/14099893353984874951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1120409321206714382.post-411826549480336860</id><published>2008-04-15T22:40:00.000+03:00</published><updated>2008-12-11T01:07:40.917+02:00</updated><title type='text'>sky right now</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_JpLZA1lIOHk/SAUE1gb9GGI/AAAAAAAAB50/FJiS8burwFY/s1600-h/15042008905-770007.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_JpLZA1lIOHk/SAUE1gb9GGI/AAAAAAAAB50/FJiS8burwFY/s320/15042008905-770007.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5189559462901127266" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1120409321206714382-411826549480336860?l=mymaemo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mymaemo.blogspot.com/feeds/411826549480336860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1120409321206714382&amp;postID=411826549480336860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/411826549480336860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/411826549480336860'/><link rel='alternate' type='text/html' href='http://mymaemo.blogspot.com/2008/04/sky-right-now.html' title='sky right now'/><author><name>emjayes</name><uri>http://www.blogger.com/profile/14099893353984874951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_JpLZA1lIOHk/SAUE1gb9GGI/AAAAAAAAB50/FJiS8burwFY/s72-c/15042008905-770007.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1120409321206714382.post-8813179779597308918</id><published>2008-04-14T13:17:00.003+03:00</published><updated>2008-04-14T13:22:10.248+03:00</updated><title type='text'>Kinetic scrolling with Greasemonkey by binauralbeat</title><content type='html'>&lt;a href="http://www.internettablettalk.com/forums/showthread.php?t=18995"&gt;Original thread&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;﻿// ==UserScript==&lt;br /&gt;// @name Kinetic&lt;br /&gt;// @namespace &lt;br /&gt;// @include *&lt;br /&gt;// @description &lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;var TIME_THRESHOLD = 500;&lt;br /&gt;var MAX_VELOCITY = 5000;&lt;br /&gt;&lt;br /&gt;var scrollBy;&lt;br /&gt;var sintv;&lt;br /&gt;var startY = 0;&lt;br /&gt;var endY = 0;&lt;br /&gt;var startTime;&lt;br /&gt;var endTime;&lt;br /&gt;var timeScrolled;&lt;br /&gt;var distanceScrolled;&lt;br /&gt;var velocity;&lt;br /&gt;var direction;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var intervalCount = 0;&lt;br /&gt;&lt;br /&gt;function setStartY(e){&lt;br /&gt;        stopScroll();&lt;br /&gt;        startY = e.pageY;&lt;br /&gt;        startTime = new Date();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function startScroll(e){&lt;br /&gt;        stopScroll();&lt;br /&gt;        endY = e.pageY;&lt;br /&gt;        endTime = new Date();&lt;br /&gt;        if(e.pageX &lt; 700){  // 700 should be innerwidth of window ... change me&lt;br /&gt;                Scroll(startY, endY, startTime, endTime);&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function Scroll(stY,enY,stTime,enTime){&lt;br /&gt;&lt;br /&gt;        timeScrolled = (enTime.getSeconds()+ enTime.getMilliseconds()/1000) - &lt;br /&gt;&lt;br /&gt;(stTime.getSeconds()+stTime.getMilliseconds()/1000);&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;        if(timeScrolled &lt; TIME_THRESHOLD){&lt;br /&gt;&lt;br /&gt;                distanceScrolled = Math.abs(enY - stY);&lt;br /&gt;&lt;br /&gt;                velocity = (distanceScrolled / timeScrolled);&lt;br /&gt;&lt;br /&gt;                if(velocity &gt; MAX_VELOCITY){&lt;br /&gt;                        velocity = MAX_VELOCITY;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                &lt;br /&gt;                //get direction&lt;br /&gt;                if(enY &gt; stY){&lt;br /&gt;                        direction = -1;&lt;br /&gt;                }else{&lt;br /&gt;                        direction = 1;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                sintv = setInterval(scrollIt, 10);&lt;br /&gt;                &lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function scrollIt(){&lt;br /&gt;&lt;br /&gt;        intervalCount +=1;&lt;br /&gt;&lt;br /&gt;        var cseconds = 1+intervalCount/100;&lt;br /&gt;&lt;br /&gt;        scrollBy = (velocity*0.098)/(cseconds*cseconds);&lt;br /&gt;&lt;br /&gt;        if(scrollBy &gt; 2){&lt;br /&gt;                window.scrollBy(0,parseInt(scrollBy * direction));&lt;br /&gt;        }else{&lt;br /&gt;                stopScroll();&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function stopScroll(){&lt;br /&gt;        &lt;br /&gt;        direction = 0;&lt;br /&gt;        velocity = 0;&lt;br /&gt;        intervalCount = 0;&lt;br /&gt;        distanceToScroll = 0;&lt;br /&gt;        clearInterval(sintv);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1120409321206714382-8813179779597308918?l=mymaemo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.internettablettalk.com/forums/showthread.php?t=18995' title='Kinetic scrolling with Greasemonkey by binauralbeat'/><link rel='replies' type='application/atom+xml' href='http://mymaemo.blogspot.com/feeds/8813179779597308918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1120409321206714382&amp;postID=8813179779597308918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/8813179779597308918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/8813179779597308918'/><link rel='alternate' type='text/html' href='http://mymaemo.blogspot.com/2008/04/kinetic-scrolling-with-greasemonkey.html' title='Kinetic scrolling with Greasemonkey by binauralbeat'/><author><name>emjayes</name><uri>http://www.blogger.com/profile/14099893353984874951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1120409321206714382.post-5757389089094605287</id><published>2008-04-10T10:06:00.003+03:00</published><updated>2008-04-10T15:36:20.641+03:00</updated><title type='text'>Samba messages to NIT</title><content type='html'>Samba messages to NIT&lt;br /&gt;&lt;br /&gt;In your Linux desktop that gets the actual samba messages:&lt;br /&gt;&lt;br /&gt;edit /etc/samba/smb.conf&lt;br /&gt;&lt;code&gt;&lt;br /&gt;message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s;sudo -u your_username /usr/local/bin/n810sambamessage "%f@ %m says: $(cat %s)";rm %s' &amp;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;restart samba&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo /etc/init.d/samba restart&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;sudo visudo&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;nobody ALL=(your_username) NOPASSWD: /usr/local/bin/n810sambamessage&lt;br /&gt;nobody ALL=(your_username) NOPASSWD: /usr/bin/aplay&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;create a file /usr/local/bin/n810sambamessage&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;ssh -x root@ip-or-hostname-of-the-NIT /usr/local/bin/sambamessage $@&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;make it executable&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;chmod a+x /usr/local/bin/n810sambamessage&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;create rsa key&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ssh-keygen -t rsa&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;copy the key to the NIT&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip-or-hostname-of-the-NIT&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In the tablet:&lt;br /&gt;&lt;br /&gt;create a file /usr/local/bin/sambamessage&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;message="$@"&lt;br /&gt;run-standalone.sh dbus-send --print-reply --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteDialog string:"$message" uint32:0 string:'OK'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;make it executable&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;chmod a+x /usr/local/bin/sambamessage&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, when your desktop receives a samba message, it will also be displayed in your NIT when you are in the same network.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1120409321206714382-5757389089094605287?l=mymaemo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mymaemo.blogspot.com/feeds/5757389089094605287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1120409321206714382&amp;postID=5757389089094605287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/5757389089094605287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/5757389089094605287'/><link rel='alternate' type='text/html' href='http://mymaemo.blogspot.com/2008/04/samba-messages-to-nit.html' title='Samba messages to NIT'/><author><name>emjayes</name><uri>http://www.blogger.com/profile/14099893353984874951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1120409321206714382.post-3354912312728717055</id><published>2008-04-10T09:54:00.005+03:00</published><updated>2008-04-14T13:15:56.346+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REMOTE'/><category scheme='http://www.blogger.com/atom/ns#' term='LIRC'/><category scheme='http://www.blogger.com/atom/ns#' term='NIT'/><title type='text'>lircdemulator</title><content type='html'>Lircd emulator for use with irreco&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;#lirc daemon emulator for using irreco to remote control your mythfrontend by emulating a real lirc daemon but instead of transmitting infrared signals&lt;br /&gt;#the button presses are mapped to system() commands as per instrucions in the configuration file&lt;br /&gt;#this is my very first Perl script ever, so everything could probably be done much better, but hey, at least it works as expected.&lt;br /&gt;#emjayes 10.4.2008&lt;br /&gt;#Thank you Arto Karppinen et al for creating such a great piece of software for Internet tablet users.&lt;br /&gt;use IO::Socket;&lt;br /&gt;use IO::Select;&lt;br /&gt;use Sys::Hostname;&lt;br /&gt;eval "require(Proc::Daemon)";&lt;br /&gt;die "Proc::Daemon not installed \nrun:\nsudo apt-get install libproc-daemon-perl\nor:\ncpan install Proc::Daemon\nto install\n" if $@;&lt;br /&gt;use Proc::Daemon;&lt;br /&gt;my $host = hostname();&lt;br /&gt;my @keys = ();&lt;br /&gt;my @actions = ();&lt;br /&gt;my $numkeys = ();&lt;br /&gt;my $keynum = ();&lt;br /&gt;if (grep /^-h|^--help/, @ARGV){{print "\nUsage: $0 [option]\n\t\t\t--nodaemon\tdo not daemonize\n\t\t\t--stop\t\tstop the running lircdemulator\n";}{exit}}&lt;br /&gt;if (grep /^--stop/, @ARGV){{print "Stopping running lircd emulator\n";}{system("killall lircdemulator&gt;/dev/null 2&gt;&amp;amp;1")}}&lt;br /&gt;if (! -e "$ENV{ HOME }/.lircdemulator"){&lt;br /&gt;{print "Configuration file  $ENV{ HOME }/.lircdemulator does not exist, creating a sample configuration file.\n\nEdit it to match your needs and run again\n"};&lt;br /&gt;{open(CREATECONFIG, "&gt; $ENV{ HOME }/.lircdemulator") or die "Unable to write example configuration to  $ENV{ HOME }/.lircdemulator\n";}&lt;br /&gt;{print CREATECONFIG "#The format of the configfile is:\n#keyname action\n#for example:\n#button_name echo &lt;any&gt;\n&lt;br /&gt;#Configure the IPADDR if you do not wish to listen on all interfaces\nIPADDR=0.0.0.0\n#Configure the port you want to listen to. Do not use 8765 if you also have a real lirc daemon running\nPORT=9999\n&lt;br /&gt;#here are some working samples if you have mythfrontend installed with Network Remote Control interface enabled.\nmyth_up echo key up|nc -q0 localhost 6546\nmyth_down echo key down|nc -q0 localhost 6546&lt;br /&gt;myth_right echo key right|nc -q0 localhost 6546\nmyth_left echo key left|nc -q0 localhost 6546\nmyth_escape echo key escape|nc -q0 localhost 6546\nmyth_menu echo key m|nc -q0 localhost 6546&lt;br /&gt;myth_volup echo key f11|nc -q0 localhost 6546\nmyth_voldown echo key f10|nc -q0 localhost 6546\neject eject\nclose_drive eject -t\n&lt;br /&gt;#the whole line minus keyname is called as system(&amp;amp;) when corresponding key is pressed in irreco interface.&lt;br /&gt;#the config file is read at start only, You will need to restart the emulator if the config file is modified";}&lt;br /&gt;{close(CREATECONFIG);}&lt;br /&gt;{die "lircd emulator not started.\n"};}&lt;br /&gt;&lt;br /&gt;open(CONFIG, "&lt; $ENV{ HOME }/.lircdemulator" ) or die "Unable to open configuration file\n"; #open the configuration file&lt;br /&gt;        while (&lt;config&gt;){&lt;br /&gt;        if (grep /PORT/, $_ ) {{s/\s*//g;}{chomp ($port=substr($_,5))}{$_=""};}&lt;br /&gt;        if (grep /IPADDR/, $_ ) {{s/\s*//g;}{chomp ($ipaddr=substr($_,7))}{$_=""};}&lt;br /&gt;        s/^#.*//; #ignore comment lines&lt;br /&gt;        s/^\s+//; #ignore leading blank&lt;br /&gt;        chomp; #remove linefeeds&lt;br /&gt;        unless ($_ =~ /^()$/) {push (@actions,"$_ &amp;amp;\n")}; #push valid commands to @actions appending &amp;amp; so the execution will return without delay&lt;br /&gt;        s/\s*(\w+).*/$1/; #strip to the keyname&lt;br /&gt;        unless ($_ =~ /^()$/) {$keynum = $keynum +1,$numkeys = push (@keys,"$keynum $_\n")}; #push valid keys to @keys&lt;br /&gt;        };&lt;br /&gt;close(CONFIG); #close the configuration file&lt;br /&gt;if (! system("echo ping|nc -q0 $ipaddr $port&gt;/dev/null 2&gt;&amp;amp;1")){{print "Port $port already in use\n";}{exit}} &lt;br /&gt;print "lircd emulator listening on $ipaddr:$port\n";&lt;br /&gt;if (! grep /^--nodaemon/, @ARGV) {Proc::Daemon::Init;} #daemonize the script if --nodaemon was not passed&lt;br /&gt;while (forever){ #run until explicitly killed&lt;br /&gt;my $sock = new IO::Socket::INET( #create a network socket to listen to&lt;br /&gt;LocalHost =&gt; $ipaddr, #listen on all interfaces, alter if needed&lt;br /&gt;LocalPort =&gt; $port, #do not use 8765 if you have a real lir daemon running as well&lt;br /&gt;Proto =&gt; 'tcp',&lt;br /&gt;Listen =&gt; 1,&lt;br /&gt;Reuse =&gt; 1,&lt;br /&gt;);&lt;br /&gt;die "Could not create Socket: $!\n" unless $sock; #die if the port or address is already used&lt;br /&gt;my $new_sock = $sock-&gt;accept();&lt;br /&gt;        while(&lt;$new_sock&gt;) {&lt;br /&gt;      my $client_sockaddr = getpeername($new_sock);&lt;br /&gt;      my ($port, $iaddr) = unpack_sockaddr_in($client_sockaddr);&lt;br /&gt;      my $client_straddr  = inet_ntoa($iaddr);&lt;br /&gt;                print "Client $client_straddr requested $_";&lt;br /&gt;                if (/^LIST$/){ #the client requests the number and names of remotes available. We have just 1, named &lt;your&gt;&lt;br /&gt;                print $new_sock "BEGIN\nLIST\nSUCCESS\nDATA\n1\n$host\nEND\n"; #reply to the client&lt;br /&gt;                }&lt;br /&gt;                if (/^LIST $host$/){ #the client requests the available "buttons"&lt;br /&gt;                        print $new_sock "BEGIN\nLIST $host\nSUCCESS\nDATA\n",$numkeys,"\n",@keys,"END\n"; #send the available buttons&lt;br /&gt;                }&lt;br /&gt;                if (/^SEND_ONCE $host\ /){ #client has pressed a button&lt;br /&gt;                        {$strip=(length ("SEND_ONCE $host "))}; #calculate the length of characters to be stipped&lt;br /&gt;                        {$string = substr($_,0,$strip)=""}; #remove SEND_ONCE $host from $_ and save that to $string&lt;br /&gt;                        {@action = grep(/^$string*\b/, @actions)}; #get the line containing the button pressed from available actions&lt;br /&gt;                        chomp $string; #remove linefeed from the string&lt;br /&gt;                        {$key = $_}; #set the key to match the button pressed so we can use it in the reply&lt;br /&gt;                        {$action = substr((join " ", @action),(length("$string")+1))}; #create a command string from the array&lt;br /&gt;                        {print $new_sock  "BEGIN\n\SEND_ONCE ",$host," ",$key,"SUCCESS\nEND\n"}; #reply client &lt;br /&gt;                        system("export LIRCCLIENT=$client_straddr;  $action"); #run the command&lt;br /&gt;                        chomp $action;&lt;br /&gt;                        print "Running system(\"$action\")\n";&lt;br /&gt;                }&lt;br /&gt;        close($new_sock)}; #close the socket and start waiting for a new connection&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;in ~/.lircdemulator these lines make it possible to push your NIT screen to the server.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;vnc     (ssh root@$LIRCCLIENT DISPLAY=:0.0 x11vnc -noncache -nopw -quiet -xrandr &amp; ) ;sleep 6 ;DISPLAY=:0.0 vncviewer $LIRCCLIENT &lt;br /&gt;closevnc        kill -9 `ps -ef |grep -v grep |grep "vncviewer $LIRCCLIENT"|awk '{printf $2" "}'` ; ssh root@$LIRCCLIENT killall x11vnc&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1120409321206714382-3354912312728717055?l=mymaemo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.internettablettalk.com/forums/showthread.php?p=149447#post149447' title='lircdemulator'/><link rel='replies' type='application/atom+xml' href='http://mymaemo.blogspot.com/feeds/3354912312728717055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1120409321206714382&amp;postID=3354912312728717055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/3354912312728717055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/3354912312728717055'/><link rel='alternate' type='text/html' href='http://mymaemo.blogspot.com/2008/04/lircdemulator.html' title='lircdemulator'/><author><name>emjayes</name><uri>http://www.blogger.com/profile/14099893353984874951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1120409321206714382.post-5077186483385028153</id><published>2008-04-09T15:12:00.002+03:00</published><updated>2008-04-10T15:22:17.805+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NIT'/><title type='text'>Pipe, tab and dollarsign for the hardware keyboard.</title><content type='html'>pipe tab and dollarsign for the hardware keyboard:&lt;br /&gt;vi /usr/share/X11/xkb/symbols/nokia_vndr/rx-44&lt;br /&gt;&lt;br /&gt;In section:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;partial alphanumeric_keys&lt;br /&gt;xkb_symbols "fisenoda" {&lt;br /&gt;name[Group1] = "Finnish/Swedish/Norwegian/Danish";&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   key &lt;ab08&gt;  {       [       comma,          semicolon,      bar,        bar    ]       };&lt;br /&gt;   key &lt;ab09&gt;  {       [       period,         colon,          dollar,        dollar        ]       }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In section:&lt;br /&gt;&lt;br /&gt;partial default alphanumeric_keys&lt;br /&gt;xkb_symbols "base" {&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   key &lt;spce&gt;    {    [    space,            space,            Tab,            Tab            ]    };&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, pressing FN - ,  gives | (pipe)&lt;br /&gt;                               FN - . gives $ (dollarsign)&lt;br /&gt;                               FN-Space gives Tab.&lt;/spce&gt;&lt;/ab09&gt;&lt;/ab08&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1120409321206714382-5077186483385028153?l=mymaemo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mymaemo.blogspot.com/feeds/5077186483385028153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1120409321206714382&amp;postID=5077186483385028153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/5077186483385028153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1120409321206714382/posts/default/5077186483385028153'/><link rel='alternate' type='text/html' href='http://mymaemo.blogspot.com/2008/04/useful-tweaks-for-nit-800810.html' title='Pipe, tab and dollarsign for the hardware keyboard.'/><author><name>emjayes</name><uri>http://www.blogger.com/profile/14099893353984874951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
