Keyboard FeatherWing (from as a personal Lisp computer


Hello world!,

I recently purchased the “Keyboard FeatherWing” from via pimoroni. It has an LCD screen, qwerty keyboard, SD card slot and RGB led.

Keyboard FeatherWing

I am using a feather M4 express with it running uLisp arm… works fine but I am yet to implement all the relevant drivers to turn it into a uLisp computer.

I will document my progress in this thread and post any code I create that others may find useful… this is a spare time project so it may take some time :)

So far I followed the adafruit guide for the M4 feather express to flash it via arduino and flashed the ARM uLisp code with a few headers uncommented for vt100 and line editing. The next steps are…

  1. Get the graphics library working with the LCD screen.
  2. Create an i2c driver for the keyboard
  3. Access the SD card
  4. Control the RGB led
  5. Document turning it into a personal lisp computer (or alternative lisp badge).

Any comments, thoughts or suggestions are appreciated!

Thanks for uLisp! I have been learning common lisp recently and I was pleasently surprised to find uLisp and its its comprehensive documentation and examples. Fantastic work!


Looks like a great basis for a Lisp computer - look forward to hearing how you get on!


If you’re interested in building your own from scratch there’s a useful article here:

Interfacing a BlackBerry Q10 keyboard

The keyboards are pretty cheap; for example see Makerfabs:

Keypad for Blackberry Q10

or AliExpress:

Original Keyboard Flex Replacement Part For Blackberry Q10


I think I may try building a version like this from scratch using a standalone keyboard or using the lisp badge or portable lisp.

I attempted to get the featherWing working briefly at the weekend…

The LCD screen used on it is completely different to the one in uLisp ARM… I wasn’t able to get it to work after changing the library.

I didn’t get the SD card, RGB LED or keyboard working either… It might be easier to build the thing from scratch. I think I will need to make a variant of the uLisp arm and hook into the adafruit and arduino libraries somehow to get it too work.

Thanks for the blackberry Q10 link.

I will keep you posted on my progress, I’m learning a lot about lisp and trying out loads of other boards and modules at the same time. For example i’ve got a 4G GSM shield from dfrobot plugged into a metro m0 express running uLisp and I’m adapting the GSM code from the uLisp examples to use it.

One thing i’ve noticed from the repl is that if I run a function I can’t run anyother repl commands… unless I’m doing something wrong. I suppose that is just how it works? I will have to launch my application from a single function eventually?


I’m not quite sure what you mean by this. You can’t run multiple threads in uLisp so once you’re running a function in the REPL you have to wait for it to finish (or interrupt it by typing “~”) before you can run another.


Ok that makes sense :) . I guess you can’t run many functions in the background and still use the repl… (I haven’t tried using interrupts yet … I didn’t know you could interrupt with “~” so thanks for the info.


Thanks so much for the links :) … I couldn’t get the LCD working for the featherwing so I’m going to try this breakout a go…


Sounds good - let me know how it goes.


I just found this feather out and wonder whether ulisp will work … then found this discussion.

The badge is too much work for me and the pygamer has no keyboard. Wonder this may fit the bill.

But no conclusion and nothing on the main page as well. Any hint or it is a dead-end?

BTW, if it is not, it seems they usually link to P0 … is M4 same?

For your kind consideration, and sorry to ask after a whole year of no news.


The Keyboard FeatherWing is just a keyboard - you would have to add a Feather-format board to it to make your own uLisp machine. A few good choices would be:

Adafruit Feather M4 Express

Adafruit Feather RP2040

Adafruit ESP32 Feather

Each of these is an excellent platform for uLisp, but note that you would have to do some programming to modify uLisp to take its input from the Keyboard FeatherWing. I don’t have the resources to do this at the moment, but perhaps someone else has done it and can share their code.