Recentemente adquiri um teclado “HP/Ipaq Bluqetooth Folding Keyboard” conforme imagem abaixo.

kbd-01

kbd-02

Fiz várias pesquisas sobre o teclado e seu funcionamento nos Nokia Internet tablets N8xx e assim como outros inúmeros teclados do gênero ele possui um esquema de mapas diferente sendo incompatível com os esquemas de HID convencionais, foi durante a pesquisa que cheguei a um serviço chamado “kbdd“.

O kbdd e um daemon que funciona na camada de usuário “user-space”, sendo responsável pela comunicação atráves da interface serial (over irda/bluetooth/…) do teclado fazendo o intermedio para a camada de input do kernel utilizando o modulo uinput nativo no Kernel, e assim encaminhando as teclas para o S.O.

Ele foi feito direcionado para plataformas móveis como maemo, openmoko, gpe, entre outros. Pois caso você tenha algum teclado do tipo e o esquema de maps dele seja suportado conforme lista descrita no site do kbdd, basta seguir os passos a seguir!

1) Baixe o código a partir do CVS e compile.

[jpereira@jiraya ~]$ mkdir -p ~/tmp/kbdd
[jpereira@jiraya ~]$ cd ~/tmp/kbdd/
[jpereira@jiraya kbdd]$ export CVSROOT=":pserver:anoncvs@anoncvs.handhelds.org:/cvs"
[jpereira@jiraya kbdd]$ cvs login
Logging in to :pserver:anoncvs@anoncvs.handhelds.org:2401/cvs
CVS password: anoncvs
[jpereira@jiraya kbdd]$ cvs co apps/kbdd
[jpereira@jiraya kbdd]$ cd apps/kbdd/
[jpereira@jiraya kbdd]$ make

2) Ative o esquema de “discovery” do teclado, e no Linux inicie a busca pelo dispositivo em seguida atache o endereço MAC do seu teclado bluetooth a uma porta serial e em seguida inicialize o serviço. (Quando pedir a senha do bluetooth, utilize a senha padrão dele “0000”)

[jpereira@jiraya kbdd]$ sudo hcitool scan
Scanning ...
00:0A:3A:06:09:B0       BT-FoldableKB
[jpereira@jiraya kbdd]$ sudo rfcomm bind 0 00:0A:3A:06:09:B0
[jpereira@jiraya kbdd]$ sudo modprobe uinput
[jpereira@jiraya kbdd]$ ./kbdd -p /dev/rfcomm0 -t btfoldable &

OBS: Fiz diversas alterações no kbdd, inclusive adicionei a possibilidade de iniciar o kbdd como daemon, adicionei flag de compilação para o N770, entre outras coisas. Caso queira utilizar a versão alterada basta aplicar este patch. Inclusive conversei  com um dos autores por e-mail que retornou positivamente as melhorias feitas no kbdd, creio que logo mais já vai estar disponível no cvs do projeto tais alterações! Assim que eu receber meu N800 e tiver com tempinho livre vou trabalhar nele para melhorar outras coisas, inclusive a possibilidade de uso do D-bus na comunicação com a parte de input das teclas!

Abaixo segue os passos para caso queira experimentar a versão alterada! :)

[jpereira@jiraya ~]$ mkdir -p ~/tmp/kbdd
[jpereira@jiraya ~]$ cd ~/tmp/kbdd/
[jpereira@jiraya kbdd]$ export CVSROOT=":pserver:anoncvs@anoncvs.handhelds.org:/cvs"
[jpereira@jiraya kbdd]$ cvs login
Logging in to :pserver:anoncvs@anoncvs.handhelds.org:2401/cvs
CVS password: anoncvs
[jpereira@jiraya kbdd]$ cvs co apps/kbdd
[jpereira@jiraya kbdd]$ cd apps/kbdd/
[jpereira@jiraya kbdd]$ wget http://blog.jorgepereira.com.br/wp-content/dist/patchs/kbdd-jorgepereira.patch
[jpereira@jiraya kbdd]$ patch -p0 < kbdd-jorgepereira.patch
[jpereira@jiraya kbdd]$ make HAVE_FORK=1
[jpereira@jiraya kbdd]$ ./kbdd -p /dev/rfcomm0 -t btfoldable -b