Turns a Keybow into a macro keyboard with multiple, on-the-fly switchable layouts – so you don't need to swap mSD cards.
Go to file
Harald Albrecht b73e72689f backs out changes to old mockkeybow.lua 2019-01-04 22:26:55 +01:00
.vscode wip moving to busted test toolkit and tests 2019-01-04 22:24:47 +01:00
mock backs out changes to old mockkeybow.lua 2019-01-04 22:26:55 +01:00
sdcard wip moving to busted test toolkit and tests 2019-01-04 22:24:47 +01:00
spec wip moving to busted test toolkit and tests 2019-01-04 22:24:47 +01:00
.busted wip moving to busted test toolkit and tests 2019-01-04 22:24:47 +01:00
LICENSE initial version of multibow 2019-01-03 20:47:03 +01:00
README.md refactors and simplifies code; adds grabbing; improves documentation 2019-01-04 12:53:40 +01:00
multibow.code-workspace wip moving to busted test toolkit and tests 2019-01-04 22:24:47 +01:00
multibow.jpg initial version of multibow 2019-01-03 20:47:03 +01:00
setup-tests.sh wip moving to busted test toolkit and tests 2019-01-04 22:24:47 +01:00
test.lua refactors and simplifies code; adds grabbing; improves documentation 2019-01-04 12:53:40 +01:00

README.md

Multibow

GitHub: github.com/thediveo/multibow

Multibow turns a Pimoroni Keybow into a macro keyboard with multiple layouts, switchable at any time. (Keybow is a solderless DIY 4x3 mechanical USB keyboard, powered by a Raspberry Pi. And yes, these days even keyboards run Linux...)

Multibow on Keybow

Layouts

Debug Go in VisualStudio Code

Debug Go programs and packages in VisualStudio Code with its Go extension.

┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐
┊ 11 ┊  ┊  8 ┊  ┊  5 ┊  ┊  2 ┊
└╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘

╔════╗  ╔════╗  ┌╌╌╌╌┐  ╔════╗
║ 10 ║  ║  7 ║  ┊  4 ┊  ║  1 ║
╚════╝  ╚════╝  └╌╌╌╌┘  ╚════╝
⏹STOP   ↺RELOAD         TSTPKG
╔════╗  ╔════╗  ╔════╗  ╔════╗
║  9 ║  ║  6 ║  ║  3 ║  ║  0 ║
╚════╝  ╚════╝  ╚════╝  ╚════╝
  ▮▶    ⭢STEP   ⮧INTO   ⮥OUT
  • TSTPKG activates the command "go: test package".

Kdenlive Video Editor

coming soon...

SHIFT

A SHIFT key, with Keybow LED brightness and keyboard layout cycle control.

NOTE: press and hold SHIFT, then use →LAYOUT and 🔆BRIGHT. The SHIFT key is always active, regardless of keyboard layout. The other keys in this layout only become active while holding SHIFT.

╔════╗  ╔╌╌╌╌╗  ╔╌╌╌╌╗  ┌╌╌╌╌┐
║ 11 ║  ┊  8 ┊  ┊  5 ┊  ┊  2 ┊
╚════╝  ╚╌╌╌╌╝  ╚╌╌╌╌╝  └╌╌╌╌┘
SHIFT   →LAYOUT  🔆BRIGHT
┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐
┊ 10 ┊  ┊  7 ┊  ┊  4 ┊  ┊  1 ┊
└╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘

┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐
┊  9 ┊  ┊  6 ┊  ┊  3 ┊  ┊  0 ┊
└╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘

Empty

Just as its name says: an empty keyboard layout -- useful if you want to have also "no" layout active when working with multiple keyboard layouts.

┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐
┊ 11 ┊  ┊  8 ┊  ┊  7 ┊  ┊  6 ┊
└╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘
┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐
┊ 10 ┊  ┊  7 ┊  ┊  4 ┊  ┊  1 ┊
└╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘
┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐  ┌╌╌╌╌┐
┊  9 ┊  ┊  6 ┊  ┊  3 ┊  ┊  0 ┊
└╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘  └╌╌╌╌┘

Licenses

Multibow is (c) 2019 Harald Albrecht and is licensed under the MIT license, see the LICENSE file.

The file keybow.lua included from pimoroni/keybow-firmware for testing purposes is licensed under the MIT license, as declared by Pimoroni's keybow-firmware GitHub repository.

Installation

  1. Download the Pibow firmware and copy all files inside its sdcard/ subdirectory onto an empty, FAT32 formatted microSD card. Copy only the files inside sdcard/, but do not place them into a sdcard directory on your microSD card.

  2. Download all files from the sdcard/ subdirectory of this repository and then copy them onto the microSD card. This will overwrite but one file key.lua, all other files are new.

Multiple Keyboard Layouts

To enable one or more multibow keyboard layouts, edit sdcard/keys.lua accordingly to require them. The default configuration is as follows:

require "layouts/shift" -- for cycling between layouts.
require "layouts/vsc-golang" -- debugging Go programs in VisualStudio Code.
require "layouts/empty" -- empty, do-nothing layout.

Developing

For some basic testing, run lua test.lua from the base directory of this repository. It pulls in keybow, then mocks some functionality of it, and finally starts sdcard/keys.lua as usual.

This helps in detecting syntax and logic erros early, avoiding the rinse-and-repeat cycle with copying to microSD card, starting the Keybow hardware, and then wondering what went wrong, without any real clue.