2ボタンキーボード
週間アスキー で紹介されていた、英数/かなキーボード for Macintosh をパクってArduinoで作ってみた。
ハードウェア
ハードウェアは2つのボタンを”Arduino Leonardo”のPin13とPin12につないだだけ。
プルアップ抵抗もソフトウェアでONにするので、ハードウェア側には無し。
作図がメンドクサイので図は無し。
ソフトウェア
Arduino IDEに付属のKeyboardライブラリだと「英数/かな」キーコードが送れない仕様だった。
生のキーコードが送れるソースコード が公開されていたので、そのコードを利用して以下のようなコードを書いた。
#include "USBrawkeyboard.h"
USBrawkeyboard rawkybd;
#define RIGHT_KEY_CODE 0x90
#define LEFT_KEY_CODE 0x91
const int kRightSwitch = 12;
const int kLeftSwitch = 13;
int gPreviousRightSwitchState = 0;
int gPreviousLeftSwitchState = 0;
void setup()
{
pinMode(kRightSwitch, INPUT_PULLUP);
pinMode(kLeftSwitch, INPUT_PULLUP);
delay(1000);
gPreviousRightSwitchState = digitalRead(kRightSwitch);
gPreviousLeftSwitchState = digitalRead(kLeftSwitch);
Keyboard.begin();
rawkybd.begin() ;
delay(1000);
}
void loop()
{
int theRightSwitchState = digitalRead(kRightSwitch);
int theLeftSwitchState = digitalRead(kLeftSwitch);
if( theRightSwitchState != gPreviousRightSwitchState )
{
if( theRightSwitchState == LOW )
{
rawkybd.press(RIGHT_KEY_CODE);
}
else
{
rawkybd.release(RIGHT_KEY_CODE);
}
gPreviousRightSwitchState = theRightSwitchState;
}
if( theLeftSwitchState != gPreviousLeftSwitchState )
{
if( theLeftSwitchState == LOW )
{
rawkybd.press(LEFT_KEY_CODE);
}
else
{
rawkybd.release(LEFT_KEY_CODE);
}
gPreviousLeftSwitchState = theLeftSwitchState;
}
delay(100);
}
コチラからダウンロード出来ます。 sketch_apr14a.zip
今のところ入力モードの切り替えしか出来ないのでホンノリ便利に使えるMacOSX側のユーティリティーが出来ないか妄想中。
参考文献
Arduino IDEに付属のKeyboardライブラリだと生のUSBキーコードが送れない仕様だったので、このサイトにあるソースコードを流用させていただきました。
ここ以外に「英数/かな」のキーコードが説明されているサイトは見つけられなかった。