趣味の電子工作と釣りについて。電子工作は、おもに変換器作成。釣りはおもにトラウトの管釣り。
1.キーマトリックスの縦線、横線の確認
キーボードを解体してプリント基板のパターンを追いかけて、縦線と横線がどこに出ているか見つけます。
本数の多いのが縦線、少ないのが横線です。
あわせて、LEDの結線も確認します。LEDには極性がありますが、よく見ればどっちが+か判定できます(ここでは説明しません)。
解体できるキーボードが無い場合は、テスターを使って縦線、横線を見つける必要があります。
キーマトリックスを解析するのではなく、縦線、横線がどれか、だけを見つけ出します。
それでも最低2時間はかかるので、根気強く続けてください。
2.キーマトリックスの配線
以下、縦線をColumn、横線をRowと呼ぶことにします。
サンプル回路を見ながら作業しましょう。
ColumnをPICのC0~C15と結線してください。
RowをPICのR0~R7と結線してください。
BREAK等特殊キーは、必要に応じてOPT(オプション)と結線してください。
LEDは、必ず抵抗をかませてNumLk/CapsLk/ScrLKと接続してください。
LEDの-側をGNDと接続します。
LEDが吸い込みドライブの場合は、LEDの+側を5Vと接続するなど、回路の変更が必要です。
サンプル回路(既出)
3.キーマトリックスの解析
キーマトリックス解析用のファームをPICに書き込みます。
keyboard.cのKMX_MONITORを1に変更してビルドして、PICに書き込んでください。
#define KMX_MONITOR 0 // 0...Operation 1...Matrix Monitor
メモ帳を開いてください。
キーボードを繋いで、キーを押してください。メモ帳にスキャンコードが表示されますので、これをメモしてください。
ここで注意点があります。ゾロ目のスキャンコードは、1文字で表示されることがあります。(例:33→3、77→7)
スキャンコード3や7は、03や07と表示されますので、識別できます。
4.変換テーブルの書き換え
keyboard.cのKMX_MONITORを0に戻します。
#define KMX_MONITOR 0 // 0...Operation 1...Matrix Monitor
※動作が不安定な場合は、下記の遅延の値を大きくするなどして調整する
// Delay100TCYx(1); // 0.05us x 4 x 100 = 20us = 0.02ms
Delay1KTCYx(1); // 0.05us x 4 x 1000 = 200us = 0.2ms
調べたスキャンコードをもとに、keyboard.cの下記(キーボードスキャンコード→USBスキャンコード)を書き換えます。
USBのスキャンコードは、"usb scancode"でググって調べましょう。
// EEPROM Map:KEY MATRIX to USB SCANCODE
#pragma romdata eedata1_scn=0xf00000
ROM unsigned char eedata1_values[0x80] =
{
0x29,0x26,0x12,0x0f,0x37,0xff,0xff,0xff ,0x60,0x5f,0x63,0x5d,0x5a,0xff,0xff,0xff,
0x61,0x2a,0x53,0x5e,0x5b,0xff,0xff,0xff ,0x55,0x89,0x28,0x56,0x57,0xff,0xff,0xff,
0x2c,0x24,0x18,0x0d,0x10,0x3a,0xff,0xff ,0x52,0x21,0x15,0x09,0x19,0x3b,0xff,0xff,
0x35,0x23,0x1c,0x0b,0x11,0x3c,0xff,0xff ,0x50,0x25,0x0c,0x0e,0x36,0x3d,0xff,0xff,
0x51,0x27,0x13,0x33,0x38,0x3e,0xff,0xff ,0x4f,0x2e,0x30,0x32,0x54,0xff,0xff,0xff,
0xe0,0x2d,0x2f,0x34,0x87,0xff,0xff,0xff ,0xe1,0x20,0x62,0x5c,0x59,0xff,0xff,0xff,
0xff,0xff,0x14,0x04,0x1d,0xff,0xff,0xff ,0x39,0x22,0x17,0x0a,0x05,0xff,0xff,0xff,
0x2b,0x1e,0x1a,0x16,0x1b,0xff,0xff,0xff ,0xe2,0x1f,0x08,0x07,0x06,0xff,0xff,0xff
};
#pragma romdata
あと、Fnキー、GHOSTキーの設定項目がありますが、ややこしいのでここでは無効にしておきます。
#define FN_KEY 0xFF // HHK like Fn key: 0x68=Caps Lock
#define GHOST_KEY_REDUCTION 0 // 0...Disabled 1...Enabled
同様に、特殊キーもここでは放置します。
変更が終わったら、ビルドして書き込みます。
5.動作確認
ジャンパピン短絡が外れているのを確認して、基板を接続してください。
メモ帳を開いて、キーを押してください。
キーボードを解体してプリント基板のパターンを追いかけて、縦線と横線がどこに出ているか見つけます。
本数の多いのが縦線、少ないのが横線です。
あわせて、LEDの結線も確認します。LEDには極性がありますが、よく見ればどっちが+か判定できます(ここでは説明しません)。
解体できるキーボードが無い場合は、テスターを使って縦線、横線を見つける必要があります。
キーマトリックスを解析するのではなく、縦線、横線がどれか、だけを見つけ出します。
それでも最低2時間はかかるので、根気強く続けてください。
2.キーマトリックスの配線
以下、縦線をColumn、横線をRowと呼ぶことにします。
サンプル回路を見ながら作業しましょう。
ColumnをPICのC0~C15と結線してください。
RowをPICのR0~R7と結線してください。
BREAK等特殊キーは、必要に応じてOPT(オプション)と結線してください。
LEDは、必ず抵抗をかませてNumLk/CapsLk/ScrLKと接続してください。
LEDの-側をGNDと接続します。
LEDが吸い込みドライブの場合は、LEDの+側を5Vと接続するなど、回路の変更が必要です。
サンプル回路(既出)
3.キーマトリックスの解析
キーマトリックス解析用のファームをPICに書き込みます。
keyboard.cのKMX_MONITORを1に変更してビルドして、PICに書き込んでください。
#define KMX_MONITOR 0 // 0...Operation 1...Matrix Monitor
メモ帳を開いてください。
キーボードを繋いで、キーを押してください。メモ帳にスキャンコードが表示されますので、これをメモしてください。
ここで注意点があります。ゾロ目のスキャンコードは、1文字で表示されることがあります。(例:33→3、77→7)
スキャンコード3や7は、03や07と表示されますので、識別できます。
4.変換テーブルの書き換え
keyboard.cのKMX_MONITORを0に戻します。
#define KMX_MONITOR 0 // 0...Operation 1...Matrix Monitor
※動作が不安定な場合は、下記の遅延の値を大きくするなどして調整する
// Delay100TCYx(1); // 0.05us x 4 x 100 = 20us = 0.02ms
Delay1KTCYx(1); // 0.05us x 4 x 1000 = 200us = 0.2ms
調べたスキャンコードをもとに、keyboard.cの下記(キーボードスキャンコード→USBスキャンコード)を書き換えます。
USBのスキャンコードは、"usb scancode"でググって調べましょう。
// EEPROM Map:KEY MATRIX to USB SCANCODE
#pragma romdata eedata1_scn=0xf00000
ROM unsigned char eedata1_values[0x80] =
{
0x29,0x26,0x12,0x0f,0x37,0xff,0xff,0xff ,0x60,0x5f,0x63,0x5d,0x5a,0xff,0xff,0xff,
0x61,0x2a,0x53,0x5e,0x5b,0xff,0xff,0xff ,0x55,0x89,0x28,0x56,0x57,0xff,0xff,0xff,
0x2c,0x24,0x18,0x0d,0x10,0x3a,0xff,0xff ,0x52,0x21,0x15,0x09,0x19,0x3b,0xff,0xff,
0x35,0x23,0x1c,0x0b,0x11,0x3c,0xff,0xff ,0x50,0x25,0x0c,0x0e,0x36,0x3d,0xff,0xff,
0x51,0x27,0x13,0x33,0x38,0x3e,0xff,0xff ,0x4f,0x2e,0x30,0x32,0x54,0xff,0xff,0xff,
0xe0,0x2d,0x2f,0x34,0x87,0xff,0xff,0xff ,0xe1,0x20,0x62,0x5c,0x59,0xff,0xff,0xff,
0xff,0xff,0x14,0x04,0x1d,0xff,0xff,0xff ,0x39,0x22,0x17,0x0a,0x05,0xff,0xff,0xff,
0x2b,0x1e,0x1a,0x16,0x1b,0xff,0xff,0xff ,0xe2,0x1f,0x08,0x07,0x06,0xff,0xff,0xff
};
#pragma romdata
あと、Fnキー、GHOSTキーの設定項目がありますが、ややこしいのでここでは無効にしておきます。
#define FN_KEY 0xFF // HHK like Fn key: 0x68=Caps Lock
#define GHOST_KEY_REDUCTION 0 // 0...Disabled 1...Enabled
同様に、特殊キーもここでは放置します。
変更が終わったら、ビルドして書き込みます。
5.動作確認
ジャンパピン短絡が外れているのを確認して、基板を接続してください。
メモ帳を開いて、キーを押してください。
PR
この記事にコメントする