FAQ

What is the point of this web site?

I'm spending my weekends and nights on this, I would love some feedback. If you'd be interested in documenting your experiences with setup, I'd really appreciate it. Once the project is further along, I'd love some help in making this site more accessible (I'm an Android engineer and all this web stuff hurts my brain sometimes). If you can think of any features I'm missing or something that would speed you up, please send me an email.

I am not looking to make any money from this.

What do you mean by 'optimisation tool'?

The application and related hardware must not create a new barrier for developers.

Teaching developers is hard. After writing the Android Ally I learned that developers did not learn anything new by playing with the interface. They used it to speed up what they already know. Most Android developers, if they know TalkBack at all, know how to turn TalkBack on / off, navigate next / previous and activate. No complex granularity or actions. Granted, they're busy people and accessibility isn't their passion. But if they don't know how to do more than the basics, they'll never be able to make better apps or understand why things needed to be done in a certain way. The hope with Ally Keys is that

How much does it cost?

Element Cost
Seeed XIAO nRF52840 ±£10
3D Printable enclosure ±£5
USB-C cable ±£2.4

Let's be cautious and say ±£20 excluding postage and packaging.

Why not write the Bluetooth Low Energy keyboard API's in node.js?

Great idea! It would eliminate the hardware entirely! The spec is fairly simple enough, and there are many great examples for python that could be used as a model. What's not easy is getting bleno or bleno-mac to work. If you feel you can do this, please send me an email, I'm prepared to pay for this work to be done.

What's the enclosure made out of?

Nylon / PLA / Carbon fibre

What is the status of the project?

It's currently "beta" - it's functional, but I'm not making any big public annoucements. I'm so pleased that the software can be used via Chrome without distributing zips and running install files.

However now the problem is hardware distribution. I'm still porting the old version from the Electron / NodeJS version and once that is finished I may create some sort of distribution pipeline.

Participation in the project is currently "user volunteer": I need people who want to give me feedback to try it. If you want a device, send me an email and we'll have to chat about how I get you a device, what it's going to cost and how we manage payment. It's very informal. Or you can try building your own hardware

Can I write my own hardware?

Sure, my algorithm (V0.0.1-beta) is as follows:

  1. Be able to send key presses using the BLE HID standards document (Page 83). This is the hard part.
  2. Reserved characters (HEX):
    a b c d e f
    A B C D E F
    0 1 2 3 4 5
    6 7 8 9 x
  3. Special characters:
    • v: write version number
    • h: hold down
    • /: clear buffer and release all keys
    • ~: clear screen (if available)
    • !: toggle screen on (if available)
  4. Read on the serial character for character. Reserved characters must be placed in a buffer.
  5. When the buffer length is 4, convert the buffer to a hex code and perform the key press. Hold if prefixed with h