Quckey!を作ってみた。

5576-002テンキーレス化

いらいらしたのでやってみた。反省はしていない。
製作記(軽いメモ)

まず、はじめに

このページはjellyfishさんを勝手にリスペクトして、 quckeyをみんな使おうぜ!っていうサイトです

quckey作りたいけどむずそうだ…
おれには無理だぜ(・c_・`)

ってひとが対象です。
ちなみにこのサイトを見たからといって簡単に作れるとは誰も言ってません。
あくまで、すこーしだけ作りやすくなる、ってだけです。



Quckey!については←jellyfishさんのサイトを熟読してください。

使用感はめっちゃいい。確かに。おれの今のディレイは230ms、レートは59回/s。

システム設定をいじくって設定する訳じゃないので、OSを再インスコしようがLinuxにのりかえようが「ハードウェア」としてdelayやrateの設定をできるのですごく利用価値があると思う。キーマップの設定も自在にできるので Caps<->Ctrl の入れ替えなんかもハードウェア的に可能

おれの流れ

@IBMの5576-003をこよなく愛する。
Aレジストリを書き換えて(参考: 鍵人 kenjin さん)使用してた。
BTOD(タイピングオブザデッド)で " [ " と " ] " を認識してくれない、という不良があった。
Ckeyboard.infを書き換える方法があるらしいけど、なんだか好きくない。
DググってQuckey!に出会う。5576-002で動くなら003でも動くべ!!ということで作り始める。
E基板完成するも、書き込み後に動作しない。
F基板再作成。この時点で配線図に間違いを発見。
G動作した!じゃーソース書き換えてディレイとレート変えてみるか
H挫折。むずすぎ。わけわかめ。3日くらい苦しんで少しわかる。環境を整えるのが大変なことに気づく。
Iってか、おれと同じようなこと考えて挫折した人多いべ?でもこれすげーんだよ。みんな使えよ、このさいだから。
JQuckey攻略サイトでも作るか…→現在

おれのスペック

・理系大学生。
・半田付けは中学のころからやってた。昔はヲーヲタ。高校のころは自作アンプとかしてた。
・デジタルは初めて。H8マイコンなんて初めて聞いた。
・Cは半年前に授業で初めて習った。ほとんど何も知らないに近い。

基板の作成

jellyfishさんのサイトの回路図を印刷して、必要部品を買出しに行く。

秋葉原が遠い人は2set分くらい買っとけばいい。マイコン本体以外は案外安いから。一回作るのに必要なのは1000円くらい。時間はスキルによる。おれは2時間くらい。

H8マイコンは3664ってやつ。秋月で売ってる。3664Nとか、3694(3664とコンパチらしい)とかでも可。1600円とか。
この際に、開発用マザーボード(ソフト付き)ってのがあるんだけど、Quckeyを作る限りでは必要ない。おれ買っちゃったし。

C1815は10本、20本単位で売ってる。20本で100円程度。GRとかYとかあるけどjellyfishさんの写真を見ると(すげーよく見ると、)Yっぽい。おれはあえてGRにした(笑
抵抗は4.7Kってのが10本くらいいるからどうせだからパックで買ってしまうといい。100本パックで100円だった。1/4w型で平気っぽい。
基板は3664が乗るくらいなら何でも出来ると思う。ほとんどスペースはいらない。
PS/2コネクタを探すのが結構大変だけど、秋葉原ならヒロセテクニカルの地下に売ってた。あとは知らん。
PS/2ケーブルはジャンクから引っぺがすのが一番安いけど、ジャンクを買って持って帰るのがだるかったから、千石の二号店の二階で新品のPS/2ケーブル買った。300円くらいだったと思う。
基板を買うときにケースをどうするか考えてから買ったほうがいい。jellyfishさんのケースはなかなか(・∀・)イイ!!が、基板を加工しなくちゃいけないからちょっとだるい。おれは今は基板むき出しで使ってる。

基板の材料を買いに行ったついでにシリアルケーブルを買っておく。これも千石とかで売ってる。200円くらい。
RS232Cのオスメスのストレート、長さは好きなように。あとはメスコネクタ。これに専用のコネクタを半田付けするから。

PS/2ポートが二個ない人は、USB→PS/2変換ケーブルがあると便利かもしれない。ジャンク屋とか、千石とかで売ってる。200円くらい。書き込みのときに電源をPS/2コネクタから供給して、キーボードはこっちにつないでコマンドを入力するから。…今考えると、逆も可か。PS/2に003、USB→PS/2変換からマイコンに電力供給。これのほうがよさげ…ほかにもUSBのほうにつなぐまともなキーボードとか、いろんな手があるかも知れん。試してないからなんともいえない。おれはPS/2ポートにquckeyつないで変換かましたほうのポートにNMBの6652つないだ。


一覧表を出せよ、という声が聞こえてきそうだけど、回路図に親しむためにあえて出さないw
# 追記( 2005 / 06 / 09 ) :
三台目を作ったんですが、制作費はだいたい 3000円程度でした。またあたりまえのことですが C1815 は Y でも GR でもおkでした。

# 追記( 2008 / 06 / 21 ) :
最近は千石の2階でもPS/2コネクタみかけました

基板を作る

jellyfishさんのページの写真を参考にしながら美しく配線する。
jellyfishさんの配線はかなり綺麗。やばい。おれなんか比にならない。ほんとに参考にしたらいい。回路図にはない配線が写真に存在するから、それも配線する。これを忘れると動かない。CN2のところのマイコンのピン同士の配線3本。
jellyfishさんの裏配線のほうの写真をよく見て配線してね。

あと、3664のジャンパが実は三箇所あるわけだが、そのうちJP1ってやつは、もとはパターンでショートされてるわけだけど、それをパターンカットして基板ピンを半田付けする。JP1は電圧を5Vで使いますよ!ってところらしい。
今回はPS/2からの5Vで駆動するからここのパターンはカットする。

PS/2のピン配列は→を参考に。
手書きですまん。

コネクタ挿す側、ってのはPS2のオスケーブルをピンのほうから見たとき、ってことだ。

ソフトの整備

Cygwin

Cygwinとググって、最新版を落としてくる。
インストーラが起動したら、インストーラがプログラムをおとしてくる。インストーラの途中でわかりにくいが、オプションを選択する場面がある。読み飛ばさないでよく読めばわかると思う。そこでどうせだからフルオプションでインストールしてしまえばいいと思う。どのオプションが必要とかわかんねーし。あとあと使うかもしれないし。
ちなみにフルオプションでインストールするとCドライブを約2GB食って、インストールには実測13Mbpsの回線で大体1時間くらいかかりました。
# 追記( 2008 / 06 / 21 ) :
最近 Cygwin で X環境 なんて絶対に使わないことが判ったので、デフォルトの設定でインストールして必要になったときに適宜追加したほうが賢いと思った。ウィルス検索の時間の半分が Cygwin フォルダのチェック…なんてことを防げます。developer だかの中にある GCC系 だけ入れとけばとりあえずはオッケー。


ソースを変えなくていいって人(ディレイ200ms、レート77回/sで納得の人)はCygwinはいらない。いろいろググると3664やるなら GDL ってのがよさげだ、とかいう情報が出てくるけどおれ、大学生じゃん?これからも Cygwin で Unix っぽいことするかもしれないじゃん?とおもったから Cygwin です。
ちなみに GDL も試しましたが、コンパイルできなかったので。なんでか分かりませんが。
たぶんわるいのはおれですが。

T-Saitoh@福井高専です さんの二つとも。

このページの上のほうのやつは解凍しないでc:\Cygwin\におく。
Cygwinを起動して、書いてある通りのコマンドを打つ。で、c:\Cygwin\usr\local\h8ってのが出来てたらおk。
xpでやったときにCygwin以下にcygwin.batってのができてるから、その中に
"SET HOME=/cygdrive/c"
と書き足すとホームディレクトリが " c:\ " になる。好きに設定すればいい。デフォではホームディレクトリがwindows上での " c:\cygwin\home\{ユーザ名} " ってところになってて、おれは使いにくかった。

ソースを変えなくていいって人は上のほうのやつはいらない。下のほうのやつはいる。

下のほうのやつは好きなところにおけばいい。ロムをマイコンに書き込むときに使うだけだから、起動しやすいようにデスクトップにでもショートカットを作ればいいんでは。

makeとロムの書き込み

make

コントロールパネル → システム → 詳細設定 → 環境変数 → システム環境変数のPATHを " 編集 " → 一番右に " ;C:\Cygwin\usr\local\h8\h8300-hms\bin " を追加。
これが「PATHを通す」ってことらしい。

んでもって、Cygwinを起動してquckeyのあるディレクトリまで移動する。
上のディレクトリに上がるときは " cd .. " (しーでぃー+スペース+ピリオド二つ)
ルートのCドライブ直下に移動するときは " cd c: " でできる。 c:\quckey\ とかいうディレクトリなら " cd c: " のあとで "cd quckey" でいい。
ちなみに " ls " と入れると、今いるディレクトリにあるファイル、フォルダ一覧が表示される。

で、 " make " と打つ。これでコンパイルできる。これは、quckeyフォルダにあるMakefileというファイルに書いてあるコマンドを実行しなさい、って命令。例により、オリジナルのソースをいじらない人はこの操作は必要ない。

ロムに書き込み

これは書き込みファイルを落としてきたサイトを参照してくれ。シリアルケーブルでパソコンとマイコンをつないだ後でジャンパを二つショートして、マイコンのリセットスイッチを押して、書き込みプログラムを起動する。んでどらっぐあんどどろっぷだとか、なんだとか…

[自分用メモ]
該当ディレクトリに移動して,
# ./hterm.exe
> [Ctrl+F]
> 3664.mot
> quckey.mot
> [Esc]

ソースの改造とか

とりあえずコンパイルできるか試す。

一度jellyfishさんのソースのままでmakeしてみて、makeできたらとりあえず接続して動かしてみるといい。
怪物的に速いから、多分そのままでは使えない。jellyfishさんは偉大である。

レートを変える

ソースを読め、といいたいところだけど、おれのようにCなんか(つД`)ワカンネー って人がいるだろうからおれ的に変えたところを書こう。

quckey.cの516行目、" repeat_count = 13; "ってところの13。これは13/1000sに一回入力、ってことっぽい。これを好きな数に変えればいい。おれの場合は17でレートが1000/17=58.8回/sになってる。

数字を大きくすれば遅くなり、小さくすれば速くなる。

ディレイを変える

quckey.cの728行目、" repeat_count = 200; "ってのディレイっぽい。これは単位が ms だから簡単。好きな値にすればいい。 一回 2000( = 2秒 )とかにしてみるといらいらして面白い。

おれの場合は 230 にして、ディレイは 230ms (たぶん)。

毎回変えるときにそんなとこ探すのだるいよー

ってひとは、該当箇所をそれぞれ" repeat_count = TYPE_RATE; " " repeat_count = DELAY_TIME; " とかに書き換えて、ファイル頭で(#define何たらが並んでるところで)
" #define TYPE_RATE 17 "
" #define DELAY_TIME 230 "
と書いておけば、そこの17と250を書き換えるだけで好きな値に出来る。

書き換えた後で上書き保存と、makeと、ロムに書き込みを忘れないように!

003,002だけでつかいたいひとは

646行目からの、
    switch (real_keyboard_id) {
    case 0x90ab: // is IBM5576-002 ?
     kb_put(0x82);
     break;
    default:
     kb_put(0x02);
     break;
    }
の部分を
    switch (real_keyboard_id) {
    case 0x83ab: // 普通のキーボードだったら
     kb_put(0x02);
     break;
    default: //つまりは003や002だったら
     kb_put(0x82);
     break;
    }
に書き換える。

もう一箇所。
698行目からの、
    switch (real_keyboard_id) {
    case 0x90ab: // is IBM5576-002 ?
     t = ps2decode002(&key_decode_state, c);
     break;
    default:
     t = ps2decode(&key_decode_state, c);
     break;
    }
の部分を
    switch (real_keyboard_id) {
    case 0x83ab: //普通のキーボードだったら
     t = ps2decode(&key_decode_state, c);
     break;
    default: //つまりは003や002だったら
     t = ps2decode002(&key_decode_state, c);
     break;
    }
に書き換える。

もしかしたらここは書き換えなくても動くかも知れん。
003のキーボードのデバイスIDがいくつか分からなかったからこうした。


このコードなら普通のキーボードでも動作するかもしれない。
ためしてないからわからないけどw


行数が間違ってるかもしれないけどご愛嬌ということで、周辺を探してみてくださいw

# 追記( 2005 / 06 / 09 ) :
キーボードIDですが、 0x83ab というのは 5576-A01 のものらしいです。jellyfishさんによると、 0x92ab が 001、0x90ab が 002、0x91ab が 003、とのことです。

あとがき

quckey以外の何かを3664でやってみたい、ってひとは、今回揃えたこの環境を使っていろんなことが出来るみたいです。いろいろ見てみて、結局以下のサイトが参考になります。ほかはやりたいことググればいいんじゃない?
おれもいろいろみて遊んでます。ポート7にジャンパでスイッチをつけて、そこをはずしてるとレートが三倍速くなったり。もちろんジャンパは赤ですw
液晶なんかも700円くらいでつけれるみたいですね。こんどつけてみます。
参考)
   T-Saitoh@福井高専です さん
   H8 Tinyの部屋 さん


本当に最後になりましたが、このページはリンクフリー、関係各方面にはまったく連絡してない、という完全無責任仕様。
個人ファンサイト。いつ消えるか分からない。怒られたらやめる。
以上、乱文乱筆スマソ('A`)

# 追記( 2005 / 06 / 09 ) :
先日jellyfishさんからメールをいただきました。
とっても参考になりました。ありがとうございました。



# 追記( 2006 / 04 / 02 ) :
最近の使用状況ですが、結局このような感じになました。書き換えせずとも右下のディップでディレイとレートを弄れます。液晶に現在の設定とか、内部の変数とか表示させてます。もう自分用の設定がかなり絞れてきた(ディレイ230・レート62)んでこんなことする必要ないんですが、いろいろ実験とかしててこれが一番便利だったんですよね。quckeyを弄っていたおかげでいろんなことがわかりました。今では3664をそこそこ自由にいじくり回すことができるようになりました。すべてquckey効果!
下にメールアドレスを載せました。いちおう。

# 追記( 2008 / 06 / 21 ) :
ソース を多少いじりだしたのでなにかあったときのために置いときます。quckey.mot は入ってないので自分でコンパイルすること。パスワードは"quckey"。中身は、通常のquckeyにキーボードを判別してポートにつないだLEDを切り替える機能と、電源投入時に不安定になることがあったので電源投入後に10秒ほど待たせる機能、5576-001を接続したときにキー配列を多少普通のキーボードに近付ける設定、Caps<->Ctrl (Aの左にCtrlを持ってくる)のキー入れ替えの設定が入ってる、はず。