キー・マウスコード転送アプリ

UsbMouseKey_PcSoftware_Help
←→
キー・マウスコード転送アプリ
キー・マウスコード転送アプリ

フットキー・マウス基板のフットスイッチとロータリスイッチに対応した
キー・マウスのHIDテキストコードをUSBのHID汎用通信でPICマイコン側に転送するソフトです。
PICマイコン側では、テキストをバイナリーコードに変換してEEPROMに記憶されます。

      －目次－

１、転送アプリについて

２、画面操作説明

３、転送エラーメッセージ

４、iniファイルについて

５、HIDテキストコード

６、HIDキーコード表

７、USBマイコン側

８、免責事項・その他

更新履歴
最終更新時刻：2010年8月26日
CopyRight:dachshTulip


転送アプリについて

転送アプリについて
転送アプリについて

開発環境
        Microsoft Visual Basic 2005 Standard Edition

動作環境
        今のところ、私の環境がWindowsXPなのでこの環境でしか確認していません。

        VB2005アプリケーションの動作環境では.NET Framework 2.0以上 が必要です。
        自分のパソコンに実装されているかは、エクスプローラのアドレスバーに以下を
        打ち込んでFrameworkフォルダーの中身を確認して下さい。
              %SYSTEMROOT%\Microsoft.NET\Framework
        見つかりませんとメッセージが出たらフォルダーがありません。
        .NET Framework ダウンロードURLは以下の通りです。
              http://msdn.microsoft.com/ja-jp/netframework/aa569263.aspx

インストール
        FootPcSoftware.zip アーカイブを展開すると、以下のファイルができます。

        UsbMouseKey_PcSoftware.exe 　　　　：実行ファイル
        UsbMouseKey_PcSoftware.chm　　　　：ヘルプファイル
        IniFileBack.txt　　　　　　　　　　　　　　　：iniファイル
        sample.txt　　　　　　　　　　　　　　　　　：テキストコードのサンプルファイル

アンインストール
        このアプリ関連の実行ファイル・ヘルプファイル・ｉｎｉファイルを削除して下さい。
        レジストリには何も書き込んでいません。

最終更新時刻：2010年8月26日
CopyRight:dachshTulip


画面操作説明

画面操作説明
画面操作説明

画面各項目の説明

１、Vendor ID Product ID の設定
      Vendor ID Product ID を書き込んで下さい。

２、転送コードリストファイルの設定
      コンボボックスに転送するテキストコードファイルをフルファイル名でドラッグアンドドロップして下さい。
      （又はコピーアンドペーストして下さい）
      次に、ファイル追加ボタンをクリックする事により、ドロップダウンリストに追加されます。
      追加ボタンをクリックしなくても、転送ボタンをクリックすると、ドロップダウンリストに追加されます。
      コンボボックスのドロップダウンリスト表示項目数は、最大１０項目までとなっています。

３、転送１～５コマンドボタン
      このボタンをクリックする事で、コンボボックスのドロップダウンリスト上１～５の
      テキストコードファイルがPICマイコン側に転送されます。
      ”Ctrl + ←”か”Ctrl + →”キー操作でボタンのフォーカスが移動します。
      （一々コンボボックスのドロップダウンリストを開けなくても１クリックで転送出来る。）

４、削除コマンドボタン
      コンボボックス表示項目とドロップダウンリストの同じ項目も削除されます。

５、ファイル追加コマンドボタン
      コンボボックスに別の所からもってきたフルファイル名をペーストした後に
      この追加ボタンをクリックするとドロップダウンリストに追加されます。
      （Enterキーを押してもドロップダウンリストに追加されます。）

６、転送コマンドボタン
      コンボボックス表示項目のテキストコードファイルがPICマイコン側に転送されます。
      テキストコードファイルが存在しない場合は、エラーとなります。

７、終了コマンドボタン
      このボタンをクリックすると、このアプリが終了します。

８、ヘルプ(HELP)
      Ｆ１キーを押すと、ヘルプが表示されます。
      （ただし、このアプリファイルと同じフォルダーに「UsbMouseKey_PcSoftware.chm」ファイルがないと
        表示されません。）

最終更新時刻：2010年8月26日
CopyRight:dachshTulip


転送エラーメッセージ

転送エラーメッセージ
転送エラーメッセージ

転送時のエラーメッセージは、以下の通りです。

**Error** 対象HID機器に接続出来ません。
        USBマイコンが接続されていない。
        該当するVendorIDとProduct IDの設定機器がない。（USBマイコン側と設定値が違う）

**Error** The attempt to write a Feature report failed.
**Error** usb Hid Sen
**Error** コマンドデータ送信異常です。
        １回転送後に、USBマイコンを抜き差しした後に転送ボタンをクリックするとこの３メッセージが表れます。
        再度転送ボタンを押して下さい。（前に転送が正常なら、それを覚えおりUSBクリエート処理を行わない）

**Error** 対象ファイルが存在しません。
        転送ファイルがありません。

**Error** １行の文字数が制限を超えています。(ASCIIで62文字以下)
        １行の文字制限をかけています。　　("//"以降のコメントはこの範囲以外です。)

**Error** LineNo 51 : data = ,hFF,hFF,hFF
**Error** return confirm from micon
        上記の場合、行番号51のテキストコマンド転送でエラーが発生しています。
        USBマイコン側がエラーを返してきました。
        コマンドデータが”,hFF,hFF,hFF”なので”m”が抜けている事が判断出来ます。

**Error** コンボボックスに登録がありません。
        転送ボタン・転送１～５ボタンを押した時に、テキストコマンドフルファイル名の設定がありません。

最終更新時刻：2010年8月26日
CopyRight:dachshTulip


iniファイルについて

iniファイルについて
iniファイルについて

iniファイルは、実行ファイル「UsbMouseKey_PcSoftware.exe」と同じフォルダーに作成されます。
ファイル名は、IniFileBack.txt です。

画面設定の記録内容は以下の通りです。
①、Vendor ID
②、Product ID
③、コンボボックス内フルファイル名
      （ドロップダウンリスト内フルファイル名全て）

エディターで編集する事も可能です。

最終更新時刻：2010年8月26日
CopyRight:dachshTulip


HIDテキストコード

HIDテキストコード
HIDテキストコード

１、キー・マウスコード識別記号と引数
    ①、以下の５種類のコマンド識別記号とコメントが準備されています。
    ②、コマンド識別記号と引数間や引数と引数間は、”，”(カンマ)で区切ります。
    ③、数字表記は、デシマルは(d or D)とヘキサは(h or H)と数字の前に記入します。
            （未記入はデシマル(d or D)と判断されます。）
    ④、キー・マウスの組み合わせコードも可能です。

コマンド |  | 引 | 数 |  |  |
識別記号 | 1 | 2 | 3 | 4 - 7 | 8 | 説 明
$ |  |  |  |  |  | テキストの先頭を表します。
@ | 2 | 0 |  |  |  | フットスイッチ番号とロータリスイッチ番号を指定します。
k | 0 | 0 | n | n+1～n+4 | n+5 | (or K) キーコードを指定します。
m | 0 | h80 | 0 |  |  | (or M) マウスコードを指定します。
t | 200 |  |  |  |  | (or T) インターバルタイマー値を指定します。
 |  |  |  |  |  | タイマー値が有効な区間は、指定箇所の１回のみです。
 |  |  |  |  |  | タイマー値の指定がない時のデフォルト値は、１０ｍｓｅｃです。
 |  |  |  |  |  | １～２５５msecが指定出来ます。 (h01 ～ hFF)
k | hFF | hFF | hFF |  |  | コマンドの終了を示します。
m | hFF | hFF | hFF |  |  | コマンドの終了を示します。
// |  |  |  |  |  | コメント開始の記号です。
 |  |  |  |  |  | コメント以降の１行分はマイコン側に転送されません。

２、 フットスイッチ番号とロータリスイッチ番号の説明
    フットスイッチ番号とロータリスイッチ番号の組み合わせ分のデータテーブルが準備されます。

    @ 　　2 　　0

              ↑　　　　↑
              │　　　0～１５：ロータリスイッチ番号を指定します。
            １～４：フットスイッチ番号を指定します。
フットスイッチ１ヶで、１６通りのテーブル切換が可能です。

３、キーコードの説明

type | modifier Byte | Array Byte |  |  |  |  |  |  | コメント
k | 0 | 0 | h28 |  |  |  |  |  | // Enter キー down
k | 0 | 0 | 0 |  |  |  |  |  | // Enter キー up
k | 0 | 0 | h04 | h05 | h06 | h07 | h08 | h09 | // "abcdef" の６文字のキー down
k | 0 | 0 | 0 |  |  |  |  |  | // "abcdef" の６文字のキー up
k | hFF | hFF | hFF |  |  |  |  |  | // キーコードの最後を示します。

＜注意＞　k,0,0,0 (キーUp)なしで終了すと、直前キーのリピートとなります。

    １）、modifier Byte の説明
Bit | Key | Bit | Key
0 | LEFT CTRL | 4 | RIGHT CTRL
1 | LEFT SHIFT | 5 | RIGHT SHIFT
2 | LEFT ALT | 6 | RIGHT ALT
3 | LEFT GUI | 7 | RIGHT GUI

    ２）、ALT+CTRL+DEL　キー動作の参考例
Transition | Modifier Byte | Array Byte | 左記をHIDコード転送用テキストに 落とすと以下の通りです。
LEFT ALT down | 00000100 | 00 | k,h04,0,0 // LEFT ALT down
RIGHT CTRL down | 00010100 | 00 | k,h14,0,0 // RIGHT CTRL down
DEL down | 00010100 | h4C | k,h14,0,h4C // DEL down
DEL up | 00010100 | 00 | k,h14,0,0 // DEL up
RIGHT CTRL up | 00000100 | 00 | k,h04,0,0 // RIGHT CTRL up
LEFT ALT up | 00000000 | 00 | k,0,0,0 // LEFT ALT up

        (HID1_11.pdf　8.3 Report Format for Array Itemsより抜粋)

４、マウスコードの説明

 |  | ポインタ指定Byte |  |
type | button | X | Y | コメント
m | 0 | h81 | 0 | // X軸（相対値） -127移動
m | 0 | h7f | 0 | // X軸（相対値） +127移動
m | 0 | 0 | h81 | // Y軸（相対値） -127移動
m | 0 | 0 | h7f | // Y軸（相対値） +127移動
m | hFF | hFF | hFF | // 終了コード

                ポインタ指定Byte
                    X軸（相対値） -127 ～ +127　データは２の補数
                    Y軸（相対値） -127 ～ +127　データは２の補数

    １）、button Byte の説明
Bit | button | Bit | button
0 | LEFT | 4 | RIGHT SIDE
1 | RIGHT | 5 |
2 | CENTER | 6 |
3 | LEFT SIDE | 7 |

５、キー・マウステキストコード参考例
    Ｅｘｃｅｌ2000で、書式の列幅を全て６文字幅とする例です。
    ①、FootNo=2 ,rotary switch=0
            Ctrl + "a" -> 書式 -> 列 -> 幅 -> 6 -> Enter -> マウス右クリック
    ②、FootNo=2 ,rotary switch=1
            Ctrl + "g" -> "k" -> "1" -> enter -> Ctrl + ; (セミコロン) -> enter
    の一連処理を行います。

// sample.txt
// 開始
$
// FootNo=2 ,rotary switch=0
@2,0
// Excel 全ての列幅を6文字とする。
k,0,0,0 // key up
k,0,0,d41 // ESCAPE
k,0,0,0 // key up
k,1,0,h04 // Ctrl + "a"
k,0,0,0 // key up
k,4,0,h12,h06,h1a // Alt + "o" -> "c"
k,0,0,0 // key up
k,0,0,d35,d88 // "6" -> Enter
k,0,0,0 // key up
m,0,0,0
m,d01,0,0 // Mouse Left click 全選択を解除
m,0,0,0
k,hFF,hFF,hFF // このテーブル終了

// FootNo=2 ,rotary switch=1
@2,1
// Excel K1セルに現在の日付を入力する。
k,1,0,h0a // Ctrl + "g" セルジャンプ
k,0,0,h0e,h1e,h28 // "k", "1", enter K1セルにジャンプ
k,0,0,0 // key up
k,1,0,h33 // Ctrl + ; (セミコロン)現在の日付を入力する。
k,0,0,0 // key up
k,0,0,h28 // enter
k,0,0,0 // key up
k,hFF,hFF,hFF // このテーブル終了

// FootNo=2 ,rotary switch=2
@2,2
// ｔｅｘｔ "123456"と書いてＳｈｉｆｔ + "→"でその文字を選択して次の行にコピペ
k,0,0,40 // enter
// "1", "2", "3", "4", "5", "6" 以降の値は無効
k,0,0,30,31,32,33,34,35,36,37,38,39
k,0,0,40 // enter
k,0,0,h52 // ↑
k,0,0,0 // key up
k,2,0,h4f // Shift + "→"
k,0,0,0 // key up
k,2,0,h4f // Shift + "→"
k,0,0,0 // key up
k,2,0,h4f // Shift + "→"
k,0,0,0 // key up
k,2,0,h4f // Shift + "→"
k,0,0,0 // key up
k,2,0,h4f // Shift + "→"
k,0,0,0 // key up
k,2,0,h4f // Shift + "→"
k,0,0,0 // key up
k,1,0,d06 // Ctrl + "c"
k,0,0,h51 // "↓"
k,1,0,d25 // Ctrl + "v"
k,0,0,0 // key up
k,0,0,40 // enter
k,0,0,0 // key up
k,hFF,hFF,hFF

＜注意＞
  テーブル終了前に k,0,0,0 (キーUp) が記入されている事を確認して下さい。
  記入がないと、前のキー記入内容のリピート動作となり
  アプリのフォーカスが別に移ると、このリピートキーの関係でおかしな動作になる
  可能性があります。
  最悪は、ＵＳＢコネクタを抜いて下さい。
  パソコン電源もＯＦＦしなければならなくなるかもしれません。

最終更新時刻：2010年8月26日
CopyRight:dachshTulip


HIDキーコード表

HIDキーコード表
HIDキーコード表

HIDキーコード表

通常つかうコードを以下に記載しました。
        （HID Usage ID 値はＨｅｘ値です。）

Key Name |  | HID Usage ID | Key Name |  | HID Usage ID
No Event |  | 00 | - | _ | 2D
Overrun Error |  | 01 | = | + | 2E
POST Fail |  | 02 | [ | { | 2F
ErrorUndefined |  | 03 | ] | } | 30
a | A | 04 | \ | | | 31
b | B | 05 |  |  | 32
c | C | 06 | ; | : | 33
d | D | 07 | ' | " | 34
e | E | 08 | ` | ~ | 35
f | F | 09 | , | < | 36
g | G | 0A | . | > | 37
h | H | 0B | / | ? | 38
i | I | 0C | Caps Lock |  | 39
j | J | 0D | F1 |  | 3A
k | K | 0E | F2 |  | 3B
l | L | 0F | F3 |  | 3C
m | M | 10 | F4 |  | 3D
n | N | 11 | F5 |  | 3E
o | O | 12 | F6 |  | 3F
p | P | 13 | F7 |  | 40
q | Q | 14 | F8 |  | 41
r | R | 15 | F9 |  | 42
s | S | 16 | F10 |  | 43
t | T | 17 | F11 |  | 44
u | U | 18 | F12 |  | 45
v | V | 19 | Print Screen |  | 46
w | W | 1A | Scroll Lock |  | 47
x | X | 1B | Pause |  | 48
y | Y | 1C | Insert |  | 49
z | Z | 1D | Home |  | 4A
1 | ! | 1E | Page Up |  | 4B
2 | @ | 1F | Delete |  | 4C
3 | # | 20 | End |  | 4D
4 | $ | 21 | Page Down |  | 4E
5 | % | 22 | Right Arrow |  | 4F
6 | ^ | 23 | Left Arrow |  | 50
7 | & | 24 | Down Arrow |  | 51
8 | * | 25 | Up Arrow |  | 52
9 | ( | 26 |  |  |
0 | ) | 27 |  |  |
Enter |  | 28 |  |  |
Esc |  | 29 |  |  |
Back space |  | 2A |  |  |
Tab |  | 2B |  |  |
Space |  | 2C |  |  |

参考資料
    HID Web Page
        http://www.usb.org/developers/devclass_docs/Hut1_12.pdf
    USBキーボードのキーコード
        http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html

最終更新時刻：2010年8月26日
CopyRight:dachshTulip


USBマイコン側

USBマイコン側
USBマイコン側

USBマイコン側のEEPROMでのキー・マウスコードの管理について

現状設計のEEPROM ２LC６４でのスイッチ情報管理テーブルとデータ領域の
メモリマップは以下の通りです。

１、スイッチ情報管理テーブル(SAT:switch allocation table)

 | アドレス | +0 | +1 | +2 | +3 | フット スイッチNo. | ロータリ スイッチNo.
0000 | 0x0000 | 0x00 | 0x04 | 未使用 |  | 1 | 0
 | 0x0004 | 0x50 | 0x04 |  |  | 1 | 1
 | ～ |  |  |  |  | 1 | ～
 | 0x003C |  |  |  |  | 1 | 15
 | 0x0040 |  |  |  |  | 2 | 0
 | ～ |  |  |  |  | 2 | ～
 | 0x007C |  |  |  |  | 2 | 15
 | 0x0080 |  |  |  |  | 3 | 0
 | ～ |  |  |  |  | 3 | ～
 | 0x00BC |  |  |  |  | 3 | 15
 | 0x00C0 |  |  |  |  | 4 | 0
 | ～ |  |  |  |  | 4 | ～
 | 0x00FC |  |  |  |  | 4 | 15
0256 | 0x0100 |  |  |  |  |  |
 |  |  | 空きスペース |  |  |  |
 | 0x03FC |  |  |  |  |  |

アドレス 0x0000,0x0001 には、フットスイッチNo.=1 ロータリスイッチNo.=0
のデータ領域の先頭アドレスが格納されます。
アドレス 0x0002,0x0003 は、未使用です。

２、HIDコードデータ領域

 | アドレス | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +10～+14 | +15
1024 | 0x0400 | 0x6b | 0x00 | 0x00 | 0x28 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00
 | 0x0410 | 0x6b | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00
 | 0x0420 | 0x6b | 0x00 | 0x00 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 | 0x09 | 0x00 | 0x00 | 0x00
 | 0x0430 | 0x6b | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00
 | 0x0440 | 0x6b | 0xFF | 0xFF | 0xFF | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00
 | ～ |  |  |  |  |  |  |  |  |  | 未使用 |  |
 | ～ |  |  |  |  |  |  |  |  |  |  |  |
 | 0x1FA0 |  |  |  |  |  |  |  |  |  |  |  |
 | 0x1FB0 |  |  |  |  |  |  |  |  |  |  |  |
 | 0x1FBF |  |  |  |  |  |  |  |  |  |  |  |
8128 | 0x1FC0 |  |  |  |  |  |  |  |  |  |  |  |
 |  |  | 未使用スペース |  |  |  |  |  |  |  |  |  |
 | 0x1FFF |  |  |  |  |  |  |  |  |  |  |  |

アドレス 0x0400～0x040F までにHIDコードの１行分が格納されます。
アドレス 0x0409～0x040F までは、未使用です。

上記の参考数値は、以下のキーコードをを示しています。
        フットスイッチNo＝１　　　　ロータリスイッチ＝０

type | modifier Byte | Array Byte |  |  |  |  |  |  | コメント
k | 0 | 0 | h28 |  |  |  |  |  | // Enter キー down
k | 0 | 0 | 0 |  |  |  |  |  | // Enter キー up
k | 0 | 0 | h04 | h05 | h06 | h07 | h08 | h09 | // "abcdef" の６文字のキー down
k | 0 | 0 | 0 |  |  |  |  |  | // "abcdef" の６文字のキー up
k | hFF | hFF | hFF |  |  |  |  |  | // キーコードの最後を示します。

最終更新時刻：2010年8月26日
CopyRight:dachshTulip


免責事項・その他

←→
免責事項・その他
免責事項・その他

当アプリケーションを利用した際に発生したいかなる損害についても、作者は一切の責任を負いません。すべて自己責任でお願いします。

ファイルの複製や配布などは許可不要です。

バグ、ご意見、ご希望がありましたら、作者までご連絡ください。

【謝辞】
このヘルプファイルは、ヘルプ作成ツール SpeedHelpPad で作成しました。
http://textexpage.s154.xrea.com/software/speedhelppad/

何も考えずに即使え 即作成出来ました。
作者に感謝・感謝です。
（ただ 2008/9/17:閉鎖ですー との事）

最終更新時刻：2010年8月26日
CopyRight:dachshTulip