# Haskell-keymap: client library for the Keymapp API

**URL:** https://discourse.haskell.org/t/haskell-keymap-client-library-for-the-keymapp-api/14318
**Category:** Announcements
**Created:** [June 25, 2026, 7:24pm UTC](https://discourse.haskell.org/t/haskell-keymap-client-library-for-the-keymapp-api/14318 "2026-06-25T19:24:48Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![fpringle](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/fpringle/32/3433_2.png) [@fpringle](https://discourse.haskell.org/u/fpringle)
#### Post date: [June 25, 2026, 7:24pm UTC](https://discourse.haskell.org/t/haskell-keymap-client-library-for-the-keymapp-api/14318/1 "2026-06-25T19:24:48Z")

</div>

[Keymapp](https://blog.zsa.io/keymapp) is a program for interacting with ZSA keyboards. It’s a GUI, but it also has the ability to run a gRPC server that a cilent can call to control the keyboard. The reference implemntation of the client [Kontroll](https://github.com/zsa/kontroll) is written in Rust.

I’ve just released [haskell-keymapp](https://hackage.haskell.org/package/keymapp-0.1.0), a Haskell library for calling the Keymapp API. You can depend on it as a library and call it from your scripts (maybe from your XMonad config?), or there’s also a CLI executable that roughly mirrors the features of Kontroll.

There’s also 2 example scripts to demonstrate the ability to control the keyboard’s RGB lighting: one flashes a rainbow across the keyboard, the other uses the lights to display a (slightly jagged) seven-segment clock that updates every minute.

I’m not sure what the venn diagram of Haskellers and ZSA users looks like, but if there’s anyone else out there, give it a go and let me know what you think!
