2013年3月13日水曜日

キーマップ

パソピアのキーマップを考えてみる。

オリジナルのキー配列は、こんなかんじ

USBキーボードのキーマップは、できるだけ同じキーを使うように配置してみた

GraphキーはFunctionキーとして使い、これが押された場合は以下のキーマップを変更する

これで、日本語の109キーが網羅できたと思う。

ファームもこれに合わせて修正。
「ibm_1391401.h」をコピーして作ったヘッダーで、キーマップを2つ作る

const unsigned char keymap[NUMROWS][8] PROGMEM = {
 ・・・
};

const unsigned char keymapFunction[NUMROWS][8] PROGMEM = {
 ・・・
};
Functionキーの定義も追加
#define FUNCTION_KEY_ROW 0 // "GRAPH" Key
#define FUNCTION_KEY_MASK 0x01

「main.c」で切り替え処理を入れる。
「scankeys()」の中で、Fnキーの押下をチェックして、
/* Check Function Key */
functionKey = !(bitbuf[FUNCTION_KEY_ROW] & FUNCTION_KEY_MASK);

これに応じてkeymapを使うかkeymapFunctionを使うか切り替える。

rumpはATmega32を使っているので、ATmega164Pで使う場合、レジスタをちょっと修正
TCCR0B = 5;      /* timer 0 prescaler: 1024 */
main()の中もちょっと修正
if (TIFR0 & (1 << TOV0)) { /* 22 ms timer */
* Reset flag */
TIFR0 = 1 << TOV0;
・・・ 
これでビルドが通った。
AVR DragonでATmega164Pに書き込んでPCに接続!!

0 件のコメント:

コメントを投稿