Welcome to Ally-Keys!
Ally Keys is a hardware keyboard for mobile phones. As a side benefit, it's also a screen reader controller and switch device.
The twist is that it has no keys! You plug it into a computer and the keys appear on this web site, under the "use" menu.
Being a web page, there can be endless keyboard layouts, not only providing a database of cheatsheets and shortcuts, but turning them into interactive elements.
More information
Ally keys is a tool intended to help developers, testers or anyone to be more effective at accessibility testing. The idea is to promote an understanding of mobile phone
- keyboard,
- switch and
- screen reader
Technology stack
Ally Keys is a combination of a web application that interfaces with a small Internet of Things (IoT) chip to host a Bluetooth Low Energy keyboard. The web application can send keystrokes to any device connected wirelessly to the IoT chip.
The web application can then leverage the keyboard shortcuts on the mobile platform:
- performing actions for screen readers (VoiceOver and TalkBack)
- highlighting key combinations
- rendering the physical gestures as animations, allowing people without the system to repeat the actions
Why?
- Keyboards generally take up a lot of space
- Wired keyboards prevent testing while tools are attached
- Wireless keyboards need to keep charged
- The plethora of shortcuts and settings on devices is hard to navigate
- Developers would prefer better API's, but by testing with a keyboard these requests become more user-focused
- Keyboard testing is often forgotten, even though though keyboard accessibility is the only specific human interface device which is a guideline in the Web Content Accessibility Guidelines
- There is no current tool that when recorded, could "teach as you demo" so that watchers may repeat the actions for themselves
- Sending keyboard commands via Android Debug Bridge (ADB) to an Android phone bypasses certain layers of the operating system, meaning it's not behaving like an actual keyboard. While it is possible to send multiple keystrokes via ADB (e.g. `alt+tab` would be `adb shell input keycombination KEYCODE_ALT_LEFT KEYCODE_TAB`), Android assistive service are not capable of responding to these events (yet).