サーバセットアップの強い味方、ノートパソコン接続KVMコンソールの紹介 | ツチノコブログによると、VGA, Keyvboard, Mouseをノートパソコンなどで実現する機械のようですが、これのうちVGAはちょっとつらいにしても、キーボードやマウスくらいなら簡易的に実現できるのではないかと思って、USB-serial変換器とArduino Leonardoで作成してみました(キーボードのみ)
Arduino Leonardo
Arduino Unoとは違いCPUのSoC自体がUSBも持っていて、ArduinoでUSB keyboardやMouseに化ける事が出来ます。Leonardo以外でも同じようなのがあるのでそれでもいけるはずです。
回路
回路というほどではないですが、USB-serialとLeonardoを結線します。
USB-serial | Arduino Leonardo |
---|---|
GND | GND |
RXD | TX (PB1) |
TXD | RX (PB0) |
ソース
https://github.com/erukiti/tiny-kvm にソースを置きました。
- app/ Electronアプリケーション。Nodejs 5系が必要です
- leonardo Arduinoスケッチ
app の方は分量が多いので貼らないですが、Arduinoのスケッチだけ貼ってみます。
#include <keyboard.h>
void setup(void) {
Serial.begin(9600);
Serial1.begin(9600);
Keyboard.begin();
}
void keyWait() {
while (Serial1.available() <= 0)
delay(1);
}
void loop(void) {
char buf[1024];
byte ch;
keyWait();
byte tp = Serial1.read();
switch (tp) {
case 1:
keyWait();
ch = Serial1.read();
Keyboard.press(ch);
sprintf(buf, "%02x", ch);
Serial.println(buf);
break;
case 2:
keyWait();
ch = Serial1.read();
Keyboard.release(ch);
sprintf(buf, "%02x", ch);
Serial.println(buf);
break;
}
}
問題点や今後
- キーボードのリピート周りがおかしい
- まだ、Mac to Mac でしか試していない
今後はマウスも対応していきたいです。