物理エスケープキーを作った

なんで[Esc]無くしちゃうん?

先日発表され、物理[Esc]や[Fn]キーがなくなって話題となったMacbookPro。
Proは仕事で使うものなんだし、それってどうよ?みたいに思いますが、TouchBarが採用されて、物理的なキーが一部なくなってますね。 f:id:kana_yaz:20161031122202p:plain

それはLenovoがX1 Carbonでやって大爆死したヤツじゃないですかーヤダー
[Esc]は一段下ながらも残したLenovo、全部取っ払ったAppleLenovoは一代限りで止めちゃいましたが、Appleさんはどうなんでしょうね。 [Esc]キーはよく使うキーなので、結構否定的な意見も多いTouchBar。実際にモノが出回ったら皆さんは受け入れるんでしょうか。

なければ作る

いやでも。物理的に[Esc]ほしいじゃん?って人のために、多分中華メーカーが外付けファンクションキーを出してきそうな気がします。
でも欲しければ作ればいいんです。 f:id:kana_yaz:20161031123306j:plain

必要なもの

今回もお手軽工作です。
手元にあったて使えそうなのがこれしかなかったので"DigiSpark"(Digispark USB Development Board - Digistump)を使って作ってみましょう。マイコン自体はATTiny85、USBはソフトウェア的に実装し、パソコンからはHIDデバイスとして見えるやつです。キーボード代替なんだし、丁度いいですね。 f:id:kana_yaz:20161031123309j:plain

  • DigiSpark
  • 何らかのスイッチ(今回はCherryMX黒軸)
  • 1/4W抵抗 10kOhm
  • 配線材少々
  • ユニバーサル基板

スイッチは好みに合わせていいんだと思います。 自分は入力キー=Cherry黒軸、みたいな感覚なので、在庫していたCherry黒軸を使いましたが、格ゲー好きなら三和のアケ筐体ボタンでもいいですし、普通のタクトスイッチでもいいと思います。男らしくジャンパピンやピンセットの先でちょいちょいでも。

ピン配列とか

ATTiny85自体のピン数が少ないことに加えて、V-USBで2ピン消費することもあり、使える入出力は4本しかありません。

ピン番号 役割
P0 IO-0,PWM
P1 IO-1,PWM
P2 IO-2,A1
P3 IO-3,PWM,A3,V-USB
P4 IO-4,PWM,A2,V-USB
P5 IO-5,PWM,A0

エスケープキーのみ実装するのなら足りるのですが、ファンクションキーを全部実装する場合は、入出力が多いマイコンを選ぶか、アナログ入力を使ってキーマトリクスを読むかになると思います。キーマトリクス読む云々は下記のサイトが詳しいです。
I/Oピン一つで読み取れるキーパッドの製作 - しなぷすのハード製作記

Digisparkを使えるようにする

詳細はDigiSparkのWiki(digispark [Digistump Wiki])に載っています。
Arduinoの[環境設定]にある[Additional Board Manager URL]に下記のURLを追加してあげます。

"http://digistump.com/package_digistump_index.json"

f:id:kana_yaz:20161031145016p:plain

コードを書く

コードってほどのものは必要ないです。Lチカに毛が生えたレベル。

P1はオンボードLED、P2はスイッチに接続されてます。
DigiKeyboradのWikiを見る限り、Escapeのキーコードはありませんでしたけども、"USB Implementers Forum, Inc.USB.org - Welcome"にある資料を見る限り、英語配列キーボードのコードは"41"で大丈夫なようです。

#include "DigiKeyboard.h"

void setup() {

 pinMode(1,OUTPUT);
 pinMode(2,INPUT);

}

void loop() {
 digitalWrite(1,LOW);

 int hi=digitalRead(2);

 if(hi==HIGH){
   digitalWrite(1,HIGH);
   DigiKeyboard.sendKeyStroke(41);
 }

 delay(200);


}

ちなみに

  DigiKeyboard.println("hogehoge");

とすることで任意のキータイプをPCに送ることができます。

回路図

ちょい待ち

でも結局

後付けの外付けFnキーバーみたいなのが、Kickstarterとかで出そうですよね。ぼくはくわしいんだ。