Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Welcome to FABI

The FABI (Flexible Assistive Button Interface) allows control of a computer’s mouse cursor or keyboard by just using momentary switches. This can be helpful for people who want to create user interactions with the press of a button - and it allows people who can't use standard computer input devices to play games, surf the internet, communicate and much more.

A FABI box with attached 3d-printed switch


The FABI Interface can be actuated via dedicated buttons, momentary switches or self-made electrical contacts. Additionally, a sip-puff sensor can be used to create user input. FABI consists of a hardware module (a low-cost microcontroller which behaves as a computer mouse and/or keyboard) and a config manager software for configuration of the desired functions. The FABI system can be attached to computers, tablets or smart phones via USB. Additionally, a bluetooth-module is available for devices that do not have a USB port (some Android or iOS phones).

Folder structure of this repository

Essential information can be found in the following folders

  • Case Designs: different 3d-printable / lasercut designs for enclosures
  • Documentation: all user and construction manuals
  • FabiGUI_C#: the (outdated) graphical user interface (for Windows)
  • FabiWare: the microcontroller firmware
  • hardware: the KiCad design files and models for schematics and PCB layout
  • Settings: demo configurations which can be loaded into the FABI device via the GUI

The source of the current web based config manager can be found in another repository: source of web based config manager

Configuration Manager and User manual

The FABI system does not ony offer fixed mappings of buttons to functions - it allows storing multiple configuration settings and changing them "on-the-fly". For configuration the web-based config manager should be used. You can find information how to configure the individual button functions and system options in the user manual:

Building the hardware

There are various options for building FABI-compatible switch interfaces: you can order parts and build our construction kit, or make a completely self-driven version. The most affordable version consists of just a microcontroller and attached momentary switches (material cost: a few bucks ...). The construction kit offers a PCB, LC-Display, Neopixel color led for indication of active configuration and optional modules (pressure sensor for sip/puff use, Bluetooth module for wireless access to phones/tablets etc.) Following documentation is available for these different approaches:

Building and Installing the Firmware

The FABI system consists of a firmware part which runs on the Arduino Pro Micro microcontroller. The firmware can be updated / uploaded directly from the Configuration Manager. Alternatively, you can build and upload the fimware using a recent version of the Arduino IDE. Besides the Arduino framework, the following libraries are used und must be installed before the firmware can be compiled:

Please follow the installation instructions in the respective github repositories.

Bluetooth AddOn

FABI supports the connection of an optional Bluetooth Module. The easiest way to use this module is to build the construction kit, because the PCB offers a dedicated 10-pin connector which fits the module. Pairing process and firmware update for the BT-module will be described in the user manual soon!

FABI PCB version, equipped with Bluetooth Module

Example setups and applications

An opened FABI box, where you can see the Teensy microcontroller board and the 6 jackplugs A wooden piece with 6 buttons, arranged between, left and right of your hands. Enabling faster working with shortcuts on each button A FABI box, where 3 different external buttons are connected

More examples are available in the wiki.

Support us

If you want to support the development of FABI you're very welcome to donate to the AsTeRICS Foundation:

About / Credits

FABI is an open source Assistive Technology module developed by the AsTeRICS Foundation in cooperation with the UAS Technikum Wien. (see

All software and hardware documents are open source and we took care to use the most affordable components available on the market to establish these functionalities – making FABI the most reasonably priced flexible assistive button interface we know !!