Why only use the keyboard's backlight only for gaming ? Can we find a use case for more casual users ?
What it does
It detects a nearby user through their phone's bluetooth.
It catches the user's input on the keyboard and tries to predict the most probable next characters using NLP techniques.
How we built it
- The bluecove Java library provides access to the bluetooth stack and allows identification of a nearby user.
- We used the Logitech SDK to control the led illuminations.
- To listen to the user's keyboard inputs, we used the library http://kra.lc/blog/releases/stable/keyboard_hook-0.3.zip
- For the NLP part, we used a text corpus (http://norvig.com/big.txt) to compute the probabities of n-grams. Then, we compute the conditional probabilities of every letters knowing the last typed characters. We end up predicting word by word only, and to that end use the last few characters typed in the current word.
Challenges we ran into
- The bluetooth library is very old and was extremely hard to integrate.
- Programming language cohesion (we started out using scala + java and ended up rewriting everything to java).
- LED colour control
- Idea merging (project choice, team work)
- Appropriate NLP techniques for fast convincing results
Accomplishments that we're proud of
We have a heartbeat during the initialization of the application.
What we learned
We applied NLP mecanisms and used SDKs (keyboard illumination & bluetooth).
What's next for predictype
- Integrate bluetooth more thoroughly: security concerns, speed and applications (customize user experience, authenticate).
- Improve NLP prediction: use more appropriate algorithms (not only lexical prediction but also syntactic) and/or bigger corpus (by dumping Wikipedia for example)
- Track more keyboard inputs, at the moment only letters are supported. Support more languages (only english for now) and proper name.