Tuesday 29 April 2014

Keyboard layouts

Recently I've discovered a great tool: Microsoft Keyboard Layout Creator.

This allows me to easily support new keyboard layouts, even without knowing anything about given layout or language. So far I have implemented support for following layouts:
  • English (en-US),
  • Polish (pl-PL),
  • German (de-DE),
  • Russian (ru-RU).
Each KeyboardLayout subclass allows to:
  • type text using given layout: void type(String text);
  • get character associated with given key, based on current state of Caps Lock, Shift and right Alt keys: char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr);
It is important to remember about following limitations:
  • user make sure that USB host uses the same layout as the application. Application has no way of knowing what layout is currently used by USB host.
  • obviously, once you use a given layout, only characters defined for the layout are available, other characters will be ignored.
USB Remote already supports previously mentioned layouts. In case of some layouts it may be a good idea to change default placement of some of keys, but that would require a bit of experience with given layout.

German layout

Polish layout

Russian layout

I'll release this version soon, along with some other minor fixes and improvements. Also, please let me know if you would like me to add other layouts.

Friday 11 April 2014

USB Remote

USB Remote is now available on download page. There is also new version of Utility app ("Dialog" settings now works correctly). Text typing speed has also been significantly improved.

  • "Gui" - if you use Windows this is a "Win" key.
  • "Ctx" - context menu key.
  • "AltG" - right alt key.

Some features that will be available in next version:
  • sensitivity settings for mouse and scroll wheel.
  • scanning QR/barcodes (so it will temporarily replace BarcodeScanner app).
  • configuration for some of media buttons (at this moment: close = Alt + F4,  fullscreen = Alt + Enter).
  • ability to keep screen on all the time .
  • repeating key action, when key is pressed for a longer period of time (just like with real keyboard).
I think about making different layouts for my custom keyboard screen but this will require some major modifications, so I'll get back to it once I'm done with more important tasks.


New version (15.04.14) is now available (see download page). It includes all previously mentioned features and:
  • new "Presentation" tab: this will replace Presentation Remote app.
  • allows to scroll tab list and set which tabs should be visible (useful for low resolution devices).

Wednesday 9 April 2014

API & Demos

What's inside?
  • InputStickAPI - if you want to develop your own Android apps.
  • DemoBT - simple demo app (source included), uses direct Bluetooth connection.
  • DemoService - simple demo app (source included), uses background service from InputStickUtility.
  • InputStickUtility - utility app. Required by apps, which use background service to communicate with InputStick. Allows to manage your InputStick device(s), and upgrade firmware if necessary.
Tomorrow I should be ready with Remote Controller app. Other apps will be released gradually, during next few days. Once an app becomes available, I'll post project update on IGG campaign page.

You need to allow to install applications form unknown sources in order to install .apk files (System settings -> Security -> Unknown sources). Apps don't require any unnecessary privileges (Bluetooth / Vibrations). During the weekend I'll do some testing using different Android OS versions (2.3, 4.0, 4.4), if everything turns out OK, I'll publish the apps on Google Play.

If you want to use the API, take a look at Demo apps. They are as simple as possible, it should be relatively easy to get started. I'll need some time to prepare better examples and documentation.

Some important remarks:
  • Supports Android 2.3 and higher.
  • Direct Bluetooth connection: there is no need to install InputStickUtility, but your application must take care of providing Bluetooth MAC address (and encryption key, once encryption will be fully supported). You also must add Bluetooth-related privileges in your AndroidManifest.xml file.
  • Background Service - InputStickUtility takes care of establishing Bluetooth connection. It is necessary to install the app, and add your InputStick device to database.
  • Adding API: in Eclipse go to Project Properties -> Android -> (Library) Add -> Select InputStickAPI 
  • Bluetooth pairing PIN: 1234.

Tuesday 1 April 2014

All PCBs ready

Finally, all PCBs are ready:

Just a few...

Some more

There are still some things left to do: configure BT modules, flash bootloader, firmware, and finally: put PCBs inside enclosures.