NIDE/NIDED
From Openmoko
Nicola.mfb (Talk | contribs) |
Nicola.mfb (Talk | contribs) (→Installation) |
||
Line 35: | Line 35: | ||
=Installation= | =Installation= | ||
'''n.b. nide/nidec is in prealpha state''' | '''n.b. nide/nidec is in prealpha state''' | ||
+ | |||
+ | To install nided on the controlled linux box you need subversion and typical build tools: | ||
+ | svn co https://noko.svn.sourceforge.net/svnroot/noko/trunk/nided | ||
+ | cd nided | ||
+ | ./configure | ||
+ | make | ||
+ | sudo make install | ||
+ | |||
+ | it will install nided in /usr/local/sbin, and a default nided.conf file in /usr/local/etc/nided.conf, edit this according your needs e.g. uncommenting allow_commands to allow remote execution, or adding/remove trusted ip address. | ||
+ | |||
+ | The default will permit connection from localhost, from 192.168.0.200 and from 192.168.0.202. | ||
+ | |||
+ | To start nided you have to load the uinput module: | ||
+ | sudo modprobe -v uinput | ||
+ | end launch it: | ||
+ | nided | ||
+ | |||
+ | log goes to syslog. | ||
+ | |||
=How to create new virtual devices= | =How to create new virtual devices= | ||
Create a file in /usr/share/nide/devices with extension ".cfg". It's an xml file, the following example should be autoexplaining: | Create a file in /usr/share/nide/devices with extension ".cfg". It's an xml file, the following example should be autoexplaining: |
Revision as of 00:02, 24 July 2009
Contents |
Introduction
NIDE/NIDED is a client/server application that emulates virtual input device through the network. With that you may transform your freerunner in a virtual keyboard/mouse to control a remote Linux Box and do other nice things. It's similar to Remoko, but uses a different tecnique.
How it works
NIDE is the client part of the architecture, it's a GUI that show you the virtual device (keyboard, mouse, etc), and recognizes your input actions:
- press a gui button
- press an hardware button (AUX, Power)
- slide your finger on display
- move the freerunner (accelerometers) TBD
If the input action matches some rules in the configuration file it:
- simulate trough nided a mouse move/click or key press/release on the remote linux box
- requests nided to start a process on the remote linux box
- start a local process
- switch to subpages of virtual device.
The NIDED daemon create a virtual keyboard/mouse registering a new device in "uinput", reads command sent by NIDE, translates and inijects them in the system or execute remote applications.
Pro
- it works with every network, bt, wifi, usb and so on
- it may request remote command execution (startup application, halt, reboot, etc.)
- it's xml configurable and stylesheet themable, it's easy to create customized virtual devices
- you may create different pages in the same config file and may switch between them
- every page may have two layouts (portrait, landscape), it auto switches beetween them if the system display is rotated
- it may use AUX/POWER button to trigger action (simulate button press, request remote command execution, switch between pages and so on)
- the gui recognizes simple sliding over a user configurable matrix, with a 3*3 matrix you are able to use 72 different sliding
- there is no need to "initiate" action on the controlled host (as in Remoko) it needs only nided started
- it automatically restore the last session at startup, so if you use it to control always the same host you are ready with only one click.
Cons
- it requires nided to be installed on the controlled host, that need linux 2.6 and uinput kernel module
- it uses QT library, and that are not provided in OM2009/SHR, you have to build them yourself or take them from the angstrom or my persronal feed
- no authentication is implemented, a stupid and rude security ip access list is used, so you have to use it in highly secure networks
- it may be buggy in some part and may need bug fixing/code restyling
Installation
n.b. nide/nidec is in prealpha state
To install nided on the controlled linux box you need subversion and typical build tools:
svn co https://noko.svn.sourceforge.net/svnroot/noko/trunk/nided cd nided ./configure make sudo make install
it will install nided in /usr/local/sbin, and a default nided.conf file in /usr/local/etc/nided.conf, edit this according your needs e.g. uncommenting allow_commands to allow remote execution, or adding/remove trusted ip address.
The default will permit connection from localhost, from 192.168.0.200 and from 192.168.0.202.
To start nided you have to load the uinput module:
sudo modprobe -v uinput
end launch it:
nided
log goes to syslog.
How to create new virtual devices
Create a file in /usr/share/nide/devices with extension ".cfg". It's an xml file, the following example should be autoexplaining:
<xml> <page name="default"> <portrait vsizex="5" vsizey="5" vslidex="2" vslidey="2" stylesheet="/usr/share/nide/styles/freerunnert.style" iconpath="/usr/share/nide/icons" > <button code="1" x="0" y="0" width="3" height="3" icon="application-exit.png"/> <button code="10" x="0" y="0" width="2" height="1" text="Esc"/> <button code="2" x="1" y="1" width="1" height="1" text="1" stext="!" atext="¹" satext="¡"/> <button x="0" y="6" text="remote commands" width="3" height="3" gotopage="commands"/> <mouse x="3" y="0" width="3" height="4"/> <key keycode="177" code="28"/> <slide x1="0" y1="0" x2="1" y2="1" localcommand="shutdown -r now"/> </portrait> </page> <page name="commands"> <portrait vsizex="1" vsizey="5"> <button gotopage="default" x="0" y="0" text="return"/> <button x="0" y="3" text="reboot" command="reboot" gotopage="default"/> <button x="0" y="4" text="halt" command="halt" gotopage="default"/> </portrait> </page>
code is the linux input key code, you can find it in /usr/include/linux/input.h, stext, atext, and satext are shift text, alt text, and shift alt texts.
To mark a key as a modifier add the
modifier="x"
attribute to the button element where x is:
- 1 - left shift
- 2 - right alt (altgr)
- 4 - right shift
- 8 - left alt
- 16 - leftctrl
- 32 - leftmeta
- 64 - rightctrl
- 128 - rightmeta
Mouse create a virtual mouse, use the right key codes to create button left, right and middle, key is hardware buttons, on the freerunner you may use aux and power.
Slide add a sliding gestures from (x1,y1) to (x2,y2), these coordinates ranges in 0<->vslidex-1, 0<->vslidey-1