Originally bbqX0kbd
The bbqX0kbd
driver has been renamed to beepy-kbd
, and sharp
to sharp-drm
.
Driver packages will detect if one of these old modules is installed and cancel installation of the package.
Remove the following files:
/lib/modules/<uname>/extra/bbqX0kbd.ko*
/lib/modules/<uname>/extra/sharp.ko*
/boot/overlays/i2c-bbqX0kbd.dtbo
/boot/overlays/sharp.dtbo
Rebuild the module list:
depmod -a
Remove the following lines from /boot/config.txt
:
dtoverlay=bbqX0kbd,irq_pin=4
dtoverlay=sharp
Remove the following lines from /etc/modules
:
bbqX0kbd
sharp
- Supports sticky modifier keys. Must be used with the corresponding RP2040 firmware
- Holding a modifier key (shift, physical alt, Symbol) while typing an alpha keys will apply the modifier to all alpha keys until the modifier is released.
- One press and release of the modifier will enter sticky mode, applying the modifier to the next alpha key only. If the same modifier key is pressed and released again in sticky mode, it will be canceled.
- Call is mapped to Control
- Berry key is mapped to Tmux prefix (customize the prefix in the keymap file)
- Touchpad click enters Meta mode (more on this later). Double click enters touchpad scroll mode
- Back is mapped to Escape
- Holding End Call runs the power-off routine on the RP2040, but does not send an actual key to Linux
- Physical Alt is mapped to symbols via the keymap file
- Symbol is mapped to AltGr (Right Alt), mapped to more symbols via the keymap file
- Physical Alt + Enter is mapped to Tab
Integrates with Sharp DRM driver
- Draws visual mode indicators over display contents
- Indicators for Shift, Phys. Alt, Control, Alt, Symbol, Meta mode
- Meta mode key 0 toggles display color inversion
Adds the following sysfs entries under /sys/firmware/beepy
:
led
: 0 to disable LED, 1 to enable. Write-only.led_red
,led_green
,led_blue
: set LED color intensity from 0 to 255. Write- only.keyboard_backlight
: set keyboard brightness from 0 to 255. Write-only.battery_raw
: raw numerical battery level as reported by firmware. Read-only.battery_volts
: battery voltage estimation. Read-only
Module parameters:
Write to /sys/module/beepy_kbd/parameters/<param>
to set, or unload and
reload the module with beepy-kbd param=val
.
touchpad
: one ofmeta
orkeys
meta
: default, will use the touchpad button to enable or disable meta mode. See section below for how to use meta mode.keys
: touchpad always on, swiping sends arrow keys, clicking sends Enter.
Meta mode is a modal layer that assists in rapidly moving the cursor and scrolling with single keypresses. To enter meta mode, click the touchpad button once. Then, the following keymap is applied, staying in meta mode until dismissed:
- E: up, S: down, W: left, D: right. Why not WASD? This way, you can place your thumb in the middle of all four of these keys, and more fluidly move the cursor without mistyping.
- R: Home, F: End, O: PageUp, P: PageDown
- Q: Alt+Left (back one word), A: Alt+Right (forward one word)
- T: Tab (dismisses meta mode)
- X: Apply Control to next key (dismisses meta mode)
- C: Apply Alt to next key (dismisses meta mode)
- 0: Toggle Sharp display inversion
- N: Decrease keyboard brightness
- M: Increase keyboard brightness
- $: Toggle keyboard backlight
- Touchpad click (while in meta mode): Enable touchpad scroll mode (up and down arrrow keys). Meta mode keys will continue to work as normal. Exiting meta mode will also exit touchpad scroll mode. Subsequent clicks of the touchpad will type Enter.
- Esc: (Back button): exit meta mode
Typing any other key while in meta mode will exit meta mode and send the key as if it was typed normally.
-
Software Pre-requisites
- The Raspberry Pi must have kernel drivers installed on it.
sudo apt install raspberrypi-kernel-headers
- The Pi must have its I2C Peripheral enabled. Run
sudo raspi-config
, then underInterface Options
, enableI2C
.
- The Raspberry Pi must have kernel drivers installed on it.
-
Hardware Pre-rquisties: Keyboard to Raspberry Pi Hardware connections. 0. If using the keyboard without interrupt pin (How to do so is discussed below under
Installation Options
), make the following connections:3.3V on Pi --> 3.3V on Keyboard Module.
GND on Pi --> GND on Keyboard Module.
SCL(Pi Pin 5/BCM GPIO 3) on Pi --> SCL on Keyboard Module.
SDA(Pi Pin 3/BCM GPIO 2) on Pi --> SDA on Keyboard Module.
- If Interrupt Pin is used, the pin is identified from the BCM Pin Number and not the Raspberry Pi GPIO Pin number.
Check pre-requisites with the command
i2cdetect -y 1
(one might needsudo
). They keyboard should be on the address0x1F
. If you are using the Keyboard FeatherWing, the Touch sensor on the screen will also show up on0x4B
.
To build, install, and enable the kernel module:
make
sudo make install
To remove:
sudo make uninstall
- The Settings of the LCD can be changed as shown in fbcp-ili9341. Notably, the Data_Command Pin can be changed and Clock speed can be increased.
- Look at the
beepy-kbd.map
file for alternate key binds. Edit it as per your need and put the new map file in correct folder (as perinstaller.sh
) to be loaded correctly in/etc/default/keyboard
. One can usesudo loadkeys path/to/beepy-kbd.map
while the driver is running, and press keys to check their new key bindings before placing it in the right location. Once satisfied with your keymap, run./remover.sh && ./installer.sh
to reinstall everything correctly.
Pull requests are welcome.
- arturo182 & Solder Party for the amazing product. Please buy more of their new awesome stuff and join their discord for amazing upcoming stuff.
- juj's
frcp-ili9341
project for making small size screens so easy to use!
The code itself is LGPL-2.0 though I'm not going to stick it to you, I just chose what I saw, if you want to do awesome stuff useful to others with it without harming anyone, go for it and have fun just as I did.