物理エスケープキーを作った
なんで[Esc]無くしちゃうん?
先日発表され、物理[Esc]や[Fn]キーがなくなって話題となったMacbookPro。
Proは仕事で使うものなんだし、それってどうよ?みたいに思いますが、TouchBarが採用されて、物理的なキーが一部なくなってますね。
それはLenovoがX1 Carbonでやって大爆死したヤツじゃないですかーヤダー
[Esc]は一段下ながらも残したLenovo、全部取っ払ったApple。Lenovoは一代限りで止めちゃいましたが、Appleさんはどうなんでしょうね。
[Esc]キーはよく使うキーなので、結構否定的な意見も多いTouchBar。実際にモノが出回ったら皆さんは受け入れるんでしょうか。
なければ作る
いやでも。物理的に[Esc]ほしいじゃん?って人のために、多分中華メーカーが外付けファンクションキーを出してきそうな気がします。
でも欲しければ作ればいいんです。
必要なもの
今回もお手軽工作です。
手元にあったて使えそうなのがこれしかなかったので"DigiSpark"(Digispark USB Development Board - Digistump)を使って作ってみましょう。マイコン自体はATTiny85、USBはソフトウェア的に実装し、パソコンからはHIDデバイスとして見えるやつです。キーボード代替なんだし、丁度いいですね。
- DigiSpark
- 何らかのスイッチ(今回はCherryMX黒軸)
- 1/4W抵抗 10kOhm
- 配線材少々
- ユニバーサル基板
スイッチは好みに合わせていいんだと思います。 自分は入力キー=Cherry黒軸、みたいな感覚なので、在庫していたCherry黒軸を使いましたが、格ゲー好きなら三和のアケ筐体ボタンでもいいですし、普通のタクトスイッチでもいいと思います。男らしくジャンパピンやピンセットの先でちょいちょいでも。
Digispark Kickstarter ATTINY85 General Micro USB Development Board For Arduino
- 出版社/メーカー: UMKTOKYO
- メディア: エレクトロニクス
- この商品を含むブログを見る
メカニカルキーボード 機械キーボード 5ピン用マウスMX Black Switch DIY チェリーMX軸 黒軸スイッチボタン 4個スイッチ
- 出版社/メーカー: QR Store JP
- メディア: エレクトロニクス
- この商品を含むブログを見る
三和電子 ハメ込み式押しボタン30φ オレンジ OBSF-30-O
- 出版社/メーカー: 三和電子
- メディア: Tools & Hardware
- この商品を含むブログを見る
ピン配列とか
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"
コードを書く
コードってほどのものは必要ないです。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とかで出そうですよね。ぼくはくわしいんだ。