What is this all about?
This app goals are rather straightforward:
If we can communicate with Windows using a mouse or a keyboard,
it seems obvious we should be able to design a more sophisticated interaction scheme with android smartphones and tablets.
It looks like the subject has not been explored far enough to build
more than a few extensions
to what we can get from a keyboard or a mouse.
Searching Google Play Store with the following keywords told me that I was looking for some really odd thing:
The results was a small list of handy mouse, keyboard or remote-desktop utilities.
The "make it happen" utopia greeting came to mind, again,
but this time, I was ready to give it a real try
and here I am, four months later.
Using those words in a few sentences, it would come to that:
I would like to control my Windows PC using my Android tablet with the following in mind:
Any Android device is way smarter than any other input devices like keyboard, mouse, joystick, gamepad, …
As Windows can be controlled through Remote Destop utilities,
creating a server application that would relay some commands through a Wifi connection won't require any magic in it.
A first goal would allow the following:
- SENDKEY .. for keyboard input: words ,passwords, sentences, application-macros, …
- SHELL .. to launch the default command associated to file with extensions: txt, mp3, avi, …etc.
- RUN .. to launch applications: exe files
(...on the way, I could come up with the even better SendInput
layer solution that makes the android app look like being just another keyboard by less cooperative games)
As programming is what I do for a living,
I was pretty sure someone had this idea before I did
and I was eager to play with a few cool apps …
No luck! Curiously, the subject has not been addressed yet,
unless I missed it completely each of the many times I searched the store.
Who is talking?
If I put this here, it's because it's always good to know who is talking.
The same words can have more meaning when you know where they come from.
Any bragging aside, I bring all my experience into this project in order to accomplish
something worth more than the average android app.
And I've seen a few already showing that android has all we need to step forward.
I'm talking about 35 years of passionate work since the dawn of Unix, K&R, Workstations, Smalltalk.
I was working for Tektronix at the time…
I'll stop here about the details as this is enough for those who know what I'm saying and already too much for those who don't.
You don't do things the same way with last gen development tools that won't let you wander around
with your fancy ideas as long as they are designed to make sure you don't.
Well, I'm still using vim. All I ask Visual Studio, Android Studio, etc. is to feed the compilers
with my stuff an add their distribution trimming because they are good at this.
And when I'm done, I still can get back to the main road looking for Google Play Store.
Essentially, when I think about what a button (a.k.a. RTab) should offer in the three applications involved here,
it's more about the intent of the user rather than the process involved.
It's all about who is driving computers, users in front of it or processes and their code behind,
you choose, well …if it's an option!
(…you can get the idea if you take some time to play with this page links)
I will take care of the back-end part myself
but I need to get enough feedback from users to make sure I won't miss some good idea you may have.
The goal is to get the more of what we can expect from all our gadgets.
- The 4 first screenshot images above come from an android tablet.
- They are only a few examples of what can be done at the moment.
- Some tabs contain a single word (or letter as in the logo), others an entire list of lines.
- Both are the same kind of dynamic software object to be designed by the user.
- None of them are coded.
- Only a dozen controls come from a standard set of tools on the Windows .Net platform, in the designer and the server.
- The last two are from the designer and the server running on Windows. They also use the same tab concept running on android.
The user interface had to be good enough to pretend being an alternative while building a desktop app, with an incentive…
A tab item example3
As an example, here is the definition of the Youtube tab as it would be displayed by Notepad:
(in fact a single line that had to be split here to fit in the page)
Broken down to be more readable:
I won't get into more details at the moment as this is only to get an idea of how easy it is to
do the user part of the design, even without a designer.
Some syntax rules to swallow and that's it.
Of course, those can be packed in a simple text file or embed in an email to cut and paste.
More about this later…
Here are some examples of the different kinds of tabs
and a few of the commands we can assoctiate to them.
Tabs and Tags1
- Tab is the name I just gave to my buttons, nothing fancy, no semantics to get into about it.
- Tag on the other hand has somewhat more meaning, it is commonly used as an anchor point where something can be attached to a sofware item, whatever they can be.
Both the tag and the item can be what we want them to be, how handy is that!
Here, the tag
property contains the associated command
like tag=SHELL …
, tag=RUN …
or tag=SENDINPUT …
while the text=YouTube
property is what will be displayed.
- A simple web address, like Youtube or some web page for your browser.
- The file path of a playlist for Gleenn Miller. (an m3u extention file that Windows associate with some player.)
Those two are using the SHELL command,
telling the server to simply send the rest of the Tag command
to Windows command-line interpreter (cmd or Powershell)
that knows what to do with it.
This type of buttons send some keyboard events (text from some specialized cheat-sheet for example)
related to specific applications.
There are some examples in the gallery
(with the due credit to their author and a plan to get to know how they could be interested, or not, to get involved…)
As with SENDKEYS, buttons with the tag=SENDINPUT ... send keyboard events
but those are received at the rate expected from a hardware keyboard.
The software of this RTabsServer module comes from a DX1-Ergodex driver I had to rebuild a few years ago.
Although these events have an 'artificial signature', games have no way to make the difference with
a hardware device sending some macro sequence as there is none.
I could experience a quite different results with a use-case on The Elder Srolls Online and Star Wars, The OLd Republic.
As ESO was ready to play along with Sendkeys generated Virtual keyboard events, SWTOR did not catch its Slash-command
trigger (the first slash character) for the most part.
Once the SendInput version was working, with the exact same input syntax (nearly a copy-paste profile),
the result was a 100% working solution with the full set of emoticons from the gallery.
- RUN Request the server to launch an application (based on a powershell scripted command)
- SHELL Request the server to open some file with some default application (also using a powershel scripted command)
- SENDKEYS key(s)Request the server to send keyboard events to the currently focused application.
- SENDKEYSTEXTLike SENDINPUT but using the text attribute content (the displayed tab content)
- SENDINPUT key(s)Same as SENDKEYS as hardware macro key events.
- SENDINPUTTEXTLike SENDINPUT but using the text attribute content.
- SERVERThis tag text will be replaced with the current server Id, IP and MAC addresses.
can be added a direction suffix like SHELL_DR
Here is the list of windows layout supported by the server (screen halves or quarters)
TODO: add more...
- _CENTER for 1/4 screen size
- _D down for lower half
- _DL down-left 1/4
- _DR down-right ...
- _F full screen
- _L left half
- _R right half
- _U up for upper half
- _UL up-left for 1/4
- _UR up-right ...
Some tabs are just comments when they have a tag=# ...
specifying a null-effect command.
But those have their own usefulness when the tab's text attibute (what is displayed)
contains a wall of text that cannot fit into a limited space.
When you click on one, it turns full-screen showing the full content.
Note about full screen display:
Any button can be made full screen with a long-touch.
This is the first step of the device-side editing process.
A second long-touch would open the text and tag editor.
Any application button can be part of a custom profile:
The best way to illustrate how this can be helpful is by inserting some Profile loading buttons
to navigate from one profile to another related one.
A few screens with less buttons will be easier to use and organize than a single larger one containing all of them.
Both may be used as long as you can zoom, pan and scroll but it's even easier not having to.
A Tab's tag property for these buttons looks like this:
tag=List or tag=PROFILES_TABLE
(The second one opens the app's sidebar folder showing profiles stored in the device.
It has the same effect as sliding a thumb to trigger the left sidebar mid-handle)
A partial list of current application commands (likely to be always growing)
- DELETE_PROFILE Delete the currently displayed profile form the device profiles folder
- FINISH Terminate the app
- FIT_H Adjust the zoom fator to fit the screen Height
- FIT_W Adjust the zoom fator to fit the screen Width
- FREEZE stops the client-server request-reply utomatic pocessing loops
- HIDE Toggle the Server window visiblity out of the system tray
- INVENTORY Display the current profile content and the list of store profiles
- LOG Toggle the tracing of some selected modules activity
- LOGGING Trace activation in the Server window
- PROFILE Display details about the current profile
- PROFILES Display a list of profiles stored in the device folder
- SIGNIN Restart the client-server initial connection
- STATUS Display detailed information about the current processing situation
- …and adding more every week is quite interesting
RTabs RTabs designer
RTabs design can be as simple as using one of the available WORKBENCH templates from the Android device,
filling in the blanck tabs with URLs to browse or PC commands to send.
But it also can be as sophisticated as we want when building a custom control dashboards.
That's where a more elaborate processing can help when working on dozens or even hundreds of tabs.
…more on this as soon as the needs to describe these tools take precedence in current dev priorities
RTabs PROFILES are simple Text files you can open and manipulate as if they were simple lists of items you can play with.
The Android device and PC Server automatically synchronize those files when (if) you setup a WiFi connection (based on their date of last modification).
If needed, their content follow a few rules that should easily make sense to anyone curious enough to think about
how we can specify web adresses, PC commands, rectangles and colors.
There is nothing more to it and these rules are not really an issue as long as we can specify these values one way or another.
…here too, more on this as soon as the needs to describe these tools take precedence in current dev priorities
There should be one for each of the Android App, the Server and the Designer.
The would-be-nice part of the Todo list seems endless
- Automatic Macro recording of SendInput keyboard events for gamers.
(must currently go through the Designer's Edit-Tab Window to use its special keys to get the correct format for the sequence of
Some smart auto zoom and recentering on tab-groups when one of its button is activated.
…and here come yours, when you have a hunch about something that could be fun trying!
With what is already there, it could be that something seemingly complicated could be working more quicly than expected.
But I still have a must-be-solved
- ...eagerly waiting for your first misshap report to solve them in order to turn this into a cool app...
free Test version1
RTabs app on Google Play
has a link in its READ MORE page for those interested by a free download link.
Strangely enough, it is not possible to organize a free access to paid apps
during their test stage…
It looks like this is considered necessary by the administrative staff
in order to avoid some kind of security risks.
Anyway, this won't be a problem as long as you can
install the required files from this site.
So, as I don't want to disappoint anyone this soon,
you should rather get the free test apps…
directly from the remotetabs.com links listed in the
Download and Install
Download & Install3
As you should not pay for an immature piece of software, those are free versions that will be available as long as some issues may still disrupt user experience.
- Download and install the apk (built for KitKat, Lollipop or Marshmallow),
Depending on the Android version/API level of your phone or tablet
, there may be a few marginal differences.
…(worth trying and comment on that in case of trouble, so I can investigate with an emulator)
- Download and install the windows/RTabs.zip archive containing
and a few Profiles.txt files.
These can be unzipped into the user folder
created by the desginer at first launch but the
last apk version has them embedded already and they should
seamlessly propagate up to the Server at first use when connected.
How-tos are still missing! …
I have so much to explain about how to operate each window, button, keyboard and mouse click and double click!
In the meantime, you can activate all these functions with
a double-click on any part of the Designer GUI backgrounds and buttons
hitting one of the ESCAPE, DELETE plus F6 and F7 with any combination of ALT, SHIFT and CONTROL modifiers
I plan to document all this shortly along with the required FAQ.
Anyway, those functions will be adjusted based on the feedback I get from testers.
The two PC-side Windows exe:
You simply have to extracted them from the zip archive:
The Microsoft installer version has been tried but it was quite overkill for theses two apps!
RTabs.zip (RTabsServer.exe + RTabsDesigner.exe)
Virustotal may help you decide about security risks with those files
As these are really lightweight ones, due to the custom RTabs dynamic construct
that there is absolutely no need for the database involvement of the System "Add Remove Program" policy.
There is only two apps, less than 1Mb for the both of them!
You can install them anywhere you want.
If you keep them together, the Designer can start the server for you if you forgot, that's all there is to it.
Google Play Store