Rpi Keybow Kit でキーボードを追加

最終更新日

世間では、静かな自宅キーボードブームらしい。

ということで、お手軽に3キーのキーボードを追加してみる。

Pimoroni で Keybow Kit (3-key) を購入

イギリスのサイト、Pimoroni で3キーのキーボードを購入。日本円で2500円くらい。

別途、RPi Zero が必要。

RPi setup

組立

半田付けは不要。ネジ回しがあれば、組立可能。

できあがり。

大事なのは、PCからUSBキーボードとして認識してもらうために、USBケーブルをUSBの場所に指すこと。

SD カードにRPi の OSイメージを書き込む

Keybow Kit を USBキーボードとして利用する場合、
Boot用のMS-DOS Format boot partition しか使わないので、LinuxOSは、なんでもいい。

Keybow OS setup

Keybow OS をSDカードに書き込んで、設定を好みにいじる。

Keybow OS のdownload

https://github.com/pimoroni/keybow-firmware/releases

2020/08/31 時点で、 Version 0.0.4 が最新。

zip ファイルをdownload する。

SDカードに、 Keybow OS を書き込む

MacOSで、RPi用のSDカードをmountすると、 /Volume/boot として見えるファイルシステムの内容を書き換える。

rm /Volume/boot/*
cd /Volume/boot
unzip "ダウンロードしたKeybow OS zipファイル"

layout ファイルを設定する

Keybow OS の設定ファイル /Volume/boot/keys.lua を書き換える。

初期は、 layouts/default をオリジナルファイル layouts/kurosuke.lua を利用するように変更する。

require "keybow"
-- require "layouts/default" -- Numberpad
require "layouts/kurosuke"

-- Custom layouts (uncomment to enable) --

-- require "layouts/boilerplate" -- Handy bits of boilerplate text like Lorem Ipsum
-- require "layouts/lightroom" -- Handy hotkeys for Adobe Lightroom Classic CC
-- require "layouts/pico8" -- Controls for Pico-8
-- require "layouts/mediakeys" -- Basic media controls (play/pause, volume etc)
-- require "layouts/midi_keys" -- Experimental MIDI layout
-- require "layouts/blink" -- Numberpad with light feedback
-- require "layouts/mini" -- Keybow MINI example layout
-- require "layouts/mini_volume" -- Keybow MINI volume controls
-- require "layouts/mini_playback" -- Keybow MINI media playback controls

カスタマイズ

layouts/kurosuke.lua を作成する。

以下は、左右のキーでVolume UP/DOWN、真ん中キーでパスワード入力する例。

キーを押すと、明るく光るようにする。

require "keybow"

function modifier(key, ...)
    for i = 1, select('#', ...) do
        local j = select(i, ...)
        keybow.set_modifier(j, keybow.KEY_DOWN)
    end
    keybow.tap_key(key)
    for i = 1, select('#', ...) do
        local j = select(i, ...)
        keybow.set_modifier(j, keybow.KEY_UP)
    end
end

function setup()
    keybow.use_mini()
    keybow.auto_lights(false)
    keybow.clear_lights()

    keybow.set_pixel(0, 0, 0, 10)
    keybow.set_pixel(1, 0, 10, 0)
    keybow.set_pixel(2, 10, 0, 0)
end

function handle_minikey_00(pressed) -- Add to quick collection
    if pressed then
        keybow.set_pixel(0, 0, 0, 255)
    else
        keybow.set_pixel(0, 0, 0, 10)
    end
    keybow.set_media_key(keybow.MEDIA_VOL_DOWN, pressed)
end
function handle_minikey_01(pressed) -- Add to quick collection
    if pressed then
        keybow.set_pixel(1, 0, 205, 0)
        keybow.text("パスワード\n")
    else
        keybow.set_pixel(1, 0, 10, 0)
    end
end
function handle_minikey_02(pressed) -- Add to quick collection
    if pressed then
        keybow.set_pixel(2, 205, 0, 0)
    else
        keybow.set_pixel(2, 10, 0, 0)
    end
    keybow.set_media_key(keybow.MEDIA_VOL_UP, pressed)
end

シェアする