Arduino Leonardoによる仮想キーボードの利用

追加シフトキーは,現行のキーボードに直接配線することも可能かもしれないが,静電容量キーボードだとどうなるのかよくわからない.
USBのキーボードとして動作するようにする方法として,Arduino Leonardoを利用する方法がある.
http://d.hatena.ne.jp/uosoft/20150127 : Arduino LeonardoでUSBキーボード出力
スイッチを読み取って,一定のキーとして出力するには,以下のようなプログラムをArduino IDEで書いて,ボードに送れば良い.

int key2 = 0;
int key3 = 0; // キー入力フラグ

void setup() {
  pinMode( 2, INPUT_PULLUP); // デジタル2ピンを内部プルアップ抵抗を有効にして出力に設定
  pinMode( 3, INPUT_PULLUP); // デジタル3ピンを内部プルアップ抵抗を有効にして出力に設定
  Keyboard.begin(); // キーボード開始
}
 
void loop() {
  if( digitalRead(2) == LOW ){
    if( key2 == 0 ){
      key2 = 1;
      Keyboard.press(KEY_LEFT_ALT);
    }
  }else {
    if( key2 > 0 ){
      key2 = 0;
      Keyboard.release(KEY_LEFT_ALT);
    }
  }
  if( digitalRead(3) == LOW ){
    if( key3 == 0 ){
      key3 = 1;
      Keyboard.press(KEY_RIGHT_ALT);
    }
  }else {
    if( key3 > 0 ){
      key3 = 0;
      Keyboard.release(KEY_RIGHT_ALT);
    }
  }
}

キーの購入

ハードウェアとしてのキーのスイッチは,いろいろ探したが,http://www.jw-shop.com/P-keyboard-mswitch10/page45/detail.htm : ジェイダブルシステムで扱っているのを発見した.
赤軸.安定させる金具も買ったが,付け方がよくわからなかったのと,加工が面倒そうだったので,省略.

アルミ板にスイッチ穴を開けて,スイッチを固定.久しぶりにハンドニブラを持ち出した.

筐体

筐体として,昔,ハンドレストとして使っていた桜の木をトリマで削って組み込む.




やっと完成.

なお,Karabinerの設定としては,Arduino LeonardoのAltキーは,Optionキーとして認識されるようなので,この設定を作って割り当てている.