2018年04月17日

自作キーボード (HWまとめ)

Linux SBC に添える小さなキーボードを作ろうとしているのだが、だらだらと書いてきて自分でも分からなくなったので、まとめようと思う。

レイアウト (一応確定)

    i2c_keyboard_asign.png

    これでいこうと思う。太字の右はシフト。右上は FN キーを押したとき。
     -- ◇は カーソルの4キー。
     -- SysRQ は、"Print Scr" になるかも知れない。
     -- QWER に割り当てがあるが、 最初の版にない、ESC と \ の代替。
     -- FN+R は、SCANCODE1, HID では無理かも。FN+SHIFT+E

マトリックス (確定)

    ROW1 ROW2 ROW3 ROW4 ROW5 ROW6 ROW7 ROW8
    COL1 1 TAB CTRL ALT BS ] ENTER ESC
    COL2 2 Q A Z = [ ' SHIFT
    COL3 3 W S X - P : /
    COL4 4 E D C 0 O L .
    COL5 5 R F V 9 I K ,
    COL6 6 T G B 8 U J M
    COL7 7 Y H N \ FN SP2 SP3

    発注したキーボードが 2 種類あって、さらにもう一つ検討中であるが、同一である。
     -- COL に L レベルを出力し、ROW 側で読み取る。
     -- 特殊キーは、ダイオードを入れて 同時押しをサポート。
     -- version 1 には、ESC と \ がない。(ファイルを修正はした)

version 1 (i2c_keyboard-02-2313 (修正版))
キーボード + ATtiny2313 コントローラボード
i2c_keyboad-2313t.png

version 2 (i2c_keyboard-02-861)
キーボード + ATtiny861 コントローラボード
i2c_keyboard_861t.png


    コントローラが違うだけで、基本同じものである。ATtiny2313 で、お手軽に I2C キーボードを作ろうとしたのがそもそもの発端だが、作りたい機能に対してメモリが足りないので、ATtiny861に変更。I/O が足りないのを HCF4051 を2つ使うことでカバー。さらに V-USB 用の配線も追加。そのときに 足りない ESC と \ を追加。ATtiny2313 版もファイルの修正はしたが、発注した基板は足りないまま。

      作りたい機能とは?
       -- i2c ローカルスキャンコード (v1)
       -- i2c ASCIIコード (v1 可能なら)
       -- i2c スキャンコード (SCANCODE1) (v2 〜)
       -- HID over I2C (v2 〜)
       -- USB HID (v2 〜)

      HID over I2C なんてものがあることを知り Linux にドライバがあることも分かった、じゃぁ対応したいとなり、USB の HID と同じなら USB も対応できるじゃないかと・・・こうやって膨れ上がったのである。
      スキャンコードについては、なんとなく。作るつもりもないのだが、I2C の代わりに PS/2 にできるかも。とか考えて。

      ソフトの話は作りつつ、書いていこうと思うのだが、ATtiny23113 では、単純なものしか無理だろうと思う。


    td-85u.jpg
    キーには、3x4mm 2ピン SMD のタクトスイッチ を使う。手はんだはたぶん可能だが、まずはリフローしてみたい。手はんだだと綺麗に並べられない。デザイン優先なのに見栄えが悪いと萎える。

    ... と書いたが予定が変わった。この程度手はんだできなくてはダメである。次の SMD タイプは難易度が高いので練習を兼ねて手はんだで行く。

version 3 (i2c_keyboard-03-t88a)
キーボード + ATtiny88 コントローラボード(TypeA)
i2c_keyboard_t88a.png
version 3 (i2c_keyboard-03-t88b)
キーボード + ATtiny88 コントローラボード(TypeB)
i2c_keyboard_t88b.png

    6x6x5-tact2.jpg
    6x6mm のタクトスイッチに 2ピンのものがある。これを使うと、割とうまく配置できそうなので、再々度設計することに。その代わりにシルクが見えず完全なブラインドになってしまう。冒頭のレイアウトの図は、この基板のシルクなのだが、これを印刷・穴あけして、キーボードに被せることができれば、割と見栄えのするものになるのではないか?
    6x6x5-tact.jpg
    他に 6x6mm の 2ピンの SMD タイプがある。ラバードームっぽいタイプで、ひょっとしたら付けられるかも知れない。

    キーピッチは、左右、上下ともに 6.3mm である。少し隙間があく。SMD タイプは端子がはみ出していて、6.7mm ある。端子を曲げるとか折ってしまうとか、加工が必要になる。それでもダメかも知れないのだが、一応パッド外径を少し大きくしている。
    本物は ALPS SKPM シリーズのようだ。ストロークは 1.3mm ( 普通のタクトスイッチは、0.25mm )。

    注文したのが届いた。ゲームパッドのような感じで、途中まで押すと急に沈む。使いやすいかどうか判断できないが、綺麗に並べられればデザイン的には良い感じになりそう。

      取り付けだが、手はんだでいけるかも。片側(下)だけハンダして、仮固定したら、裏返してスルーホールからハンダを流し込む。流し込むのが難しいようならクリームハンダを注射器で。これを上段から一段づつやっていくのである。なお、電極は加工しなくて良さそう。外形が八角形なので、電極がうまく収まる(ような気がする)。いけるとは思うのだが、最上段のとりつけで試してみてやりかたを見極めないといけない。

      このタクトスイッチは、aitendo でも扱っている (6個 120円)。揃えるには、60個 1200円になる。また、よく見ると底に空気抜きの穴が開いている。私が aliexpress で買ったのは空いてないタイプだった。たぶん押しごこちが違うので、混ぜて使わないようにしないと。

      6.3mm ピッチにしたのは理由がある。2.54/2 倍にガーバーを 拡大すると 8mm ピッチになるのだ。コネクタは、2mm ピッチに変更し、ダイオードも 2012 → 1608 に変更する。
      8mm ピッチにすることで、今度は 2ピンタイプの ラバードームが付けられる。作りはしないと思うが想定だけしておくのだ。

    コントローラは、ATtiny88 の QFN32 である。I/O 数が多く、キーマトリックスを単独で作れる。ATtiny861 と違うのは、I2C が USI から TWI に変わる。2 枚に分ける TypeB か、1 枚にしてしまう TypeA か悩み中で、2タイプとも設計はする。typeA は、10mm ほど奥行が長くなり 93mm x 46.5mm となった。typeB の コントローラ基板の奥行は、12.5mm で 発注するサイズは、93mm x 52mm 。

      コントローラ基板の製作は QFN なので難易度が高い。ちゃんとテストしてから タクトスイッチの取り付けをすれば良い・・・と思って、typeA も、テスト用にコネクタ穴を付けてある。だがキーマトリックス部も実は難易度が高いのではないか? 見栄えが重要なので気に入らない出来になってしまうかも知れない。特に SMD タイプは厳しい。一から作り直しでは気力が続かない。やはり TypeB が良さそうだ。

      ・・・とか書いたのだが、発注する段になって、elecrow がつながらない。fusion pcb を覗いたら $7.9 セールをやっている。typeB だと異種面付扱いにされる不安があるので、typeA を試しに発注してみることに。ちなみに elecrow は、TypeA で $4.9 + 送料 $5.88 = $10.78 である。

      TypeA を発注してしまったのだからしょうがない。TypeB のほうが良いとは言っても、作る手順上だけの話。分離したコントローラを他の目的に使おうと思わないし、単体のキーボードには、結局は、コントローラが必要。ESP32 をコントローラにするというのを、いずれは検討したいが、TypeA の基板を使っても別に良いのである。せっかくだから I2C 接続でも良いし。 そういえば、8mm ピッチ拡大版のことをすっかり忘れていた。不格好になるが、コントローラに TypeA を使えるよう考えておこう。考えはするが、10cm を超えると基板の価格がハネ上がる。

    QFN32 にしたのは、安いというのも理由だが、はんだ付けの経験を積むため。気軽に作れるようになれば、ちょっとお高い FPGA も躊躇なく組み立てられる -- という理由が大きい。

version 3 (i2c_keyboard-07-t88p)
パネル

    i2c_keyboard_t88p.png

    ひょっとして、パネルを基板として作ってしまえば良いのだろうか? 1.6mm 厚ではちょっと厚いし、色も緑ではどうかと思うが、検討してみる。

      追記:一旦発注したのだが、「片面基板だよファイルが間違っているんじゃない?」とか言われて提出しなおしになった。なにか言われると面倒なので、ベタを入れた。ついでに シルクも少し大きく。

    5mm 高のタイプは、0.9mm 程度しか出っ張っていない。そのまま被せるのであれば、6mm 高が必要。逆に なにかキートップを間に挟むのであれば、高さがない方が良く、パネルは厚い方が安定するだろう。特にサイレントタイプであれば、キートップが欲しい。さて、どうする?

    2ピン 6x6x6,6x6x7 のタイプもあった! 他にこことかにもある。6x6x7 だと 1.4mm ほど 出る計算なのでこれを使ってみる。
    tactsw-memo.png
    また、サイレントタイプだが、タクトスイッチのボタンだけ取り外してパネルとの間に入れれば良いのではないか? 移動量は 1.3mm で 基板厚 1.6mm だから ツバから 2.9mm 以上ないといけない。

ATtiny88 について

    趣味でこれを使う人はほぼいないと思われるが、ちょっと説明。

    ATmega328p が良く使われるチップだが、その機能縮小版。UART がないとか、水晶発振器がないとか、重要な機能までなくなっているので注意が必要。その代わり I/O が増えている。
    DIP では、 AREF がなくなって、PC7 になっているだけであるが、32ピンの TQFP/QFN では、

      AREF → PC7
      ADC6 → ADC6 + PA0
      ADC7 → ADC7 + PA1
      GND(#3) → PA2
      VCC(#6) → PA3

    とまぁ随分と変わっているのだ。これらのピンを使ってしまうと、ATmega328p とかに差し替えできなくなるわけだが、今回は単に I/O が多いチップとして使ったため、差し替え不可になった。
    I/O は、TQFP32/QFN32 で、電源ピン4 つと RESET を除いた 27 本。キーマトリックスに 15 本使った残りが 12 もある。V-USB 2 本、TWI 2 本、外部クロック 1本、VBUS 電源センス 1本、ISP 3本 使用で 合計 24 本を使用している。ATmega328p では I/O が足りないのである。version 3 のようにコンパクトにまとめるには、これが丁度良かったのだ。TQFP32/QFN32 で I/O が多いというと 他に ATmega16u2 がある。が、これは I2C のインターフェイスがなく、今回は使えない。

    あと、水晶発振器がないわけだが、外部クロックは使える。1ゲートの 1G14 を入手したのでこれを使う。

      あれ?本当に足りなかったのか? 24 ピン使用だが、ISP を共用すれば、とりあえず 2 本節約できる。一方 maga328p は、I/O 22 である。共用を前提とすると外部クロックだが、専用なら 水晶直付けにしたいので 1ピンたりない。だが、VBUS 電源センスに ADC を使う手がある。結局 I/O が足りないということはないようだ。あとは全線引き出せるかどうか? これが難しい。無理だったということにして、この件は忘れよう。

      とか書いたが、共用の基板を描いた(TypeC)。専用の基板にするには、配線がきついということでヤメ。水晶発振に 1G14 を使う。作らないつもりだが、あったほうが良いかと思い作成。また、ISP コネクタの RESET をジャンパ化 。なお、ライタとして使う場合の RESET に割り当てる I/O は手近なものにした。Type によって割り当てが変わる。

    ATtiny88 の価格だが aliexpress で検索すると TQFP で、20個 $9.5 というのがある。まぁ mega8a TQFP も 10 個 $4.75 と相当に安いのだが。

    今回は QFN を使いたいということで、tiny88 は、10 個 $7.92 とか。ちなみに、atmega328p QFN は、5 個 $6.18 、at90usb162 は、5個 $4.8

    aliexpress は、出回ってる IC だと安いことがあるようだ。かつて出回っていたとか、そういうものだと あれば安く手に入る。

3.3V レギュレータについて

    なんでも良いとは思ったが、TAR5SB33 とピン互換性がある MIC5205 にした。
    MIC5205 を使う場合は、#4 は NC で良い。TAR5SB33 では、0.01uF を付ける。

    MIC5205 は、10個で $1 前後と かなりお安い。レギュレータで 3.3V を作るケースは少なくなったが、3.3V と 5V は、これを使っていこうと思う。(1.2V と 1.8V の場合は、SOT23 の XC6206P や MCP1702。)
    LDO ではなく、DC/DC コンバータIC を使うことのほうが多くなった。いろいろな型番があるが、MT3410L が 特にお安い。以下のものが互換性がある。FB 電圧 は全部 0.6V である。

    参考価格(aliexpress)
     SY8089A 2A 1MHz KVxxx 10個$1.5
     SY8009A 1.5A 1.5MHz ADxxx
     SY8008C 1.2A 1.5MHz ACxxx 10個$1.2
     SY8008B 1A 1.5MHz ABxxx

     NCP1529 1A 1.7MHz DXJAYW 10個$1.1
     MT3410L 1.3A 1.5MHz 10個 AS11 10個$0.9 (〜 6V)

    これらの入力電圧の上限は、5.5v が普通。Nanopi DUO とか SBC の場合、MP2307 を使うことが多い。4.75V 〜 23V の入力電圧範囲で、12V を 5v にするのだ。

水晶について

    水晶は、3225 タイプ 16MHz を採用。秋月だと FA238 。手ハンダするのが超苦手 。だが、背を低くするためにあえて使う。

    発振には、シュミットトリガ入力・インバータの LVC1G14 を使う。実はうまく行くかどうか分からない。
    もしダメなら 内蔵発振器を使い i2c 専用となる。

    一応 74HC1G1474AHC1G14 というのもある。mouser だと VHC1G14 や AHCT1G14 なども。どれかはちゃんと発振すると思うのではあるが、どうしたものか。杞憂だと良いのだが。 74HCU04 を使えだとか、高速すぎるものは使わないほうが無難だとか。
    LVC14 を最初に試すが、ダメなら AHC14 でやってみる。AHC14 は、遅延が 8ns 〜 10ns で、LVC14 の倍ぐらい遅い。

ATtiny861 版とHCF4051

    HCF4051(CD4051) は、8 to 1 のアナログマルチプレクサで、1つめは、GND を入力として COL1〜COL7 のどれかを GND に接続する。もうひとつは、ROW1〜ROW8 のどれかを選んで 入力ピンに接続。入力ピンは プルアップしておいて、L になれば、押されたと判断する。2個使うと 7 ピンで制御でき外付けのプルアップ抵抗も不要。

    これが相当に安いので、version 2 では 2 個使い、ピンが少なめの ATtiny861 と組み合わせることにした。

    ATtiny861 は、20ピンのAVR で、電源ピンが 4 つある。RESET もあるので、I/O は 15 ピンしかない。だが、7 ピンで キーマトリックスが扱えれば、8 ピン使える。割り当てを I2C に 2ピン、水晶に 2 ピン、V-USB に 2 ピン、VBUS 電源のセンスに 1ピン、LED に 1ピン とした。

冶具について

    コネクタを付けてしまった後に、ハンダ付け失敗が判明すると直すのが困難になってしまう。コネクタを付けずにテストできると良いのだが、どうしたら良いか?

    一枚をテスト用として作り、テストプローブを コネクタに立てる。ターゲットをそれに重ねてテストするのはどうだろう?

      P75-LM2.jpg

      テストプローブは、P75-LM2 など。1.02φで、スルーホールを1.1 φにしておけば入る。

    ... ということを考えてみた。

    例えば、キーマトリックスだけをテスト用に作り、テストプローブを下向きに付ける。そうすれば、タクトスイッチを付ける前にテストができる。別に完成したものに付けても良い。完成した方はブランクにしておけば良い。テスト用のファームウェアを書き込んでも良い。

    例えば、コントローラだけをテスト用に作り、キーマトリックスだけを作った基板のテストをする。この時は上向きでないとダメである。SMD のラバードームの方は、ちょっと作れるか自信がないので そこまでするかも知れない。

    さらに言うと、片側の ISP コネクタの RESET を切って I/O につなぐ。ライタのファームウェアを書き込めば、コネクタを一切つけずに、いろいろなテストができる。
    ・・・のだが、検討しきれずに発注してしまった。スペース的に厳しいのと、ライタに使った側を綺麗に戻せるかどうかという検討が必要で、途中でめんどくさくなってしまった。



    ライタは、USBasp で良いので移植が難しいわけではない。やはり、ちゃんと仕組みを入れるべきだった。

    ところで、usbasploader -- ブートローダ機能のある AVR 用ではあるが、ルールを作ることで tiny 用も実現できるようだ。
     ・http://www.embedded-creations.com/projects/attiny85-usb-bootloader-overview/
    こういうのがあると、ファームウェアの入れ替えが捗る。キーボードがあるのだから、特定のキーを押しての起動ということも可能。ただし、メモリの消費が多い。2.8KB だそうで。V-USB のコードを共有できると、実装は可能か。ソフト編で検討しよう。



t88 版だが c 〜 e まで派生バージョンが出来てしまった。

t88c : 一体型の t88a をベースに mega328 に対応
t88d : 2階建ての t88b をベースに mega328 に対応
t88e : t88d のコントロール基板を大きくして TQFP にも対応 (発注サイズ 93 x 59)

新版は、またポートの割り当てが変わった。
i2c_keyboard_t88ex.png
Fusion PCB に注文した t88a が随分と時間がかかりそうな気がして、 また TQFP なら手持ちがあるからチップが来るのに時間がかかった場合でも、とりあえず組むことができるし ... みたいなことを考えて t88e を elecrow に発注してしまった。色は黒。


ただ、t88e は、TQFP の中に QFN を入れてあるので、DRC がギリギリ。また QFN のランドを小さくしてしまったので、はんだ付けの難易度が上がっている。TQFP なら楽なんだが、基板のチェックをしてから組まないといけない。2階建てで基板が大きくなっているが、上辺にしかネジ止めできない。下辺が接触しないよう、なにか工夫しないといけなくなった。


付録)
EAGLE ファイルと提出用ガーバー
 ・i2c_keyboard-07.zip

 ・i2c_keyboard-02-2313-out.zip
 ・i2c_keyboard-07-861-out.zip
 ・i2c_keyboard-03-t88a-out.zip
 ・i2c_keyboard-03-t88b-out.zip
 ・i2c_keyboard-05-t88e-out.zip
 ・i2c_keyboard-07-t88p-out.zip
※ 提出用ガーバファイルは、https://gerber-viewer.easyeda.com/ で確認できる。

コード表

ESC 1 2 3 4 5 6 7 8 9 0 - = BS   
C1R8 C1R1 C2R1 C3R1 C4R1 C5R1 C6R1 C7R1 C6R5 C5R5 C4R5 C3R5 C2R5 C1R5 (COL/ROW)
8 1 9 17 25 33 41 49 45 37 29 21 13 5 (local scan code)
110 2 3 4 5 6 7 8 9 10 11 12 13 15 (keyid)
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E (scan code1)
29 1E 1F 20 21 22 23 24 25 26 27 2D 2E 2A (USB HID Usage ID)

TAB Q W E R T Y U I O P [ ] \
C1R2 C2R2 C3R2 C4R2 C5R2 C6R2 C7R2 C6R6 C5R6 C4R6 C3R6 C2R6 C1R6 C7R5
2 10 18 26 34 42 50 46 38 30 22 14 6 53
16 17 18 19 20 21 22 23 24 25 26 27 28 14
0F 10 11 12 13 14 15 16 17 18 19 1A 1B 7D
2B 14 1A 08 15 17 1C 18 0C 12 13 2F 30 89

CTRL A S D F G H J K L : " ENTER
C1R3 C2R3 C3R3 C4R3 C5R3 C6R3 C7R3 C6R7 C5R7 C4R7 C3R7 C2R7 C1R7
3 11 19 27 35 43 51 47 39 31 23 15 7
58 31 32 33 34 35 36 37 38 39 40 41 43
0F 1E 1F 20 21 22 23 24 25 26 27 28 1C
E0 04 16 07 09 0A 0B 0D 0E 0F 33 34 28

ALT Z X C V B N M , . / SHIFT
C1R4 C2R4 C3R4 C4R4 C5R4 C6R4 C7R4 C6R8 C5R8 C4R8 C3R8 C2R8
4 12 20 28 36 44 52 48 40 32 24 16
60 46 47 48 49 50 51 52 53 54 55 44
38 2C 2D 2E 2F 30 31 32 33 34 35 2A
E2 1D 1B 06 19 05 11 10 36 37 38 E1

FN SP2 SP3
C7R6 C7R7 C7R8
54 55 56
-- 61 61
-- 39 39
-- 2C 2C

^~ CAPS
1 30 42 56 (keyid)
29 3A 2B 73 (scan code1)
35 39 31 87 (USB HID Usage ID)

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 INS DEL
112 113 114 115 116 117 118 119 120 121 122 75 76
3B 3C 3D 3E 3F 40 41 42 43 44 57 E052 E053
3A 3B 3C 3D 3E 3F 40 41 42 43 44 49 4C

SysRQ ↑ PgUp ← → PgDn ↓
124 83 85 79 89 86 84
54 E048 E049 E04B E04D E051 E050
46 52 4B 50 4F 4E 51

コードテーブル1 (ASCII)

1 '1', TAB, CTRL, ALT , BS, ']', ENTER, ESC ,
9 '2', 'q', 'a', 'z', '=', '[', '\'', SHIFT,
17 '3', 'w', 's', 'x', '-', 'p', ':', '/',
25 '4', 'e', 'd', 'c', '0', 'o', 'l', '.',
33 '5', 'r' 'f', 'v', '9', 'i', 'k' , ',',
41 '6', 't', 'g', 'b', '8', 'u', 'j', 'm',
49 '7', 'y', 'h', 'n', '\\', FN, ' ', ' '

SHIFT
1 '!', TAB, CTRL, ALT , BS, '}', RET, ESC ,
9 '@', 'Q', 'A', 'Z', '+', '{', '"', SHFT,
17 '#', 'W', 'S', 'X', '_', 'P', ';', '?',
25 '$', 'E', 'D', 'C', ')', 'O', 'I', '<',
33 '%', 'R', 'F', 'V', '(', 'I', 'K' , '>',
41 '^', 'T', 'G', 'B', '*', 'U', 'J', 'M',
49 '&', 'Y', 'H', 'N', '|', FN, ' ', ' '
FN
(未作成)

コードテーブル2 (SCANCODE1)
(0xXX でないものは、未定義)

1 0x02, 0x0F, 0x0F, 0x38, 0x0E, 0x1B, 0x1C, 0x01,
9 0x03, 0x10, 0x1E, 0x2C, 0x0D, 0x1A, 0x28, 0x2A,
17 0x04, 0x11, 0x1F, 0x2D, 0x0C, 0x19, 0x27, 0x35,
25 0x05, 0x12, 0x20, 0x2E, 0x0B, 0x18, 0x26, 0x34,
33 0x06, 0x13, 0x21, 0x2F, 0x0A, 0x17, 0x25, 0x33,
41 0x07, 0x14, 0x22, 0x30, 0x09, 0x16, 0x24, 0x32,
49 0x08, 0x15, 0x23, 0x31, 0x7D, FN, 0x39, 0x39

FN
1 0x3B, 0x3A, CTRL, SHFT , 0xD3, 0x7D, RET, 0x29 ,
9 0x3C, 0x01, 'a', 'z', 0xD2, 0xD2, '0xCD, ALT,
17 0x3D, 0x29, 's', 'x', 0x57, 'p', 0xCB, 0xD0
25 0x3E, 'e', 'd', 'c', 0x44, 0x54, 0xC9, 0xD1,
33 0x3F, 'r' 'f', 'v', 0x43, 'i', 'k' , ','
41 0x40, 't', 'g', 'b', 0x42, 'u', 'j', 'm',
49 0x41, 'y', 'h', 'n', '\\', FN, ' ', ' '

コードテーブル3 (HID)
(0xXX でないものは、未定義)

1 0x1E, 0x2B, 0xE0, 0xE2, 0x2A, 0x30, 0x28, 0x29,
9 0x1F, 0x14, 0x04, 0x1D, 0x2E, 0x2F, 0x34, 0xE1,
17 0x20, 0x1A, 0x16, 0x1B, 0x2D, 0x13, 0x33, 0x38,
25 0x21, 0x08, 0x07, 0x06, 0x27, 0x12, 0x0F, 0x37,
33 0x22, 0x15 0x09, 0x19, 0x26, 0x0C, 0x0E, 0x36,
41 0x23, 0x17, 0x0A, 0x05, 0x25, 0x18, 0x0D, 0x10,
49 0x24, 0x1C, 0x0B, 0x11, 0x89, FN, 0x2C, 0x2C
FN
1 0x3A, TAB, CTRL, SHFT , 0x4C, 0x89, RET, 0x35 ,
9 0x3B, 0x29, 'a', 'z', 0x49, 0x52, 0x4F, ALT,
17 0x3C, 0x35, 's', 'x', 0x44, 'p', 0x50, 0x51,
25 0x3D, 'e', 'd', 'c', 0x43, 0x46, 0x4B, 0x4E,
33 0x3E, 'r' 'f', 'v', 0x42, 'i', 'k' , ','
41 0x3F, 't', 'g', 'b', 0x41, 'u', 'j', 'm',
49 0x40, 'y', 'h', 'n', '\\', FN, ' ', ' '
posted by すz at 06:01| Comment(0) | TrackBack(0) | I2CKEYBOARD
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/182979006
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック