/*
 * UZK - Keyboard & Mouse extender by USB
 *   by uratan! 2012.9.20
 *   revised 2020.2.8
 */

wuzk.exe を使い倒すヒント


●打鍵に関する console メッセージの読み方

コンソール画面には、wuzk.exe が打鍵を検出した旨と、 それを UZK に通知している旨が 打鍵の変化毎に表示されます。

例えばスペースキーを押して離した場合、以下のように表示されます。

(0)WM_KEYDOWN  [20] VK_SPACE-101/US                           ...[1]
  0x write_uzk: 4b 00 00 2c 00 00 00 00 00  (147790853[msec]) ...[2]

(0)WM_KEYUP  [20] VK_SPACE-101/US                             ...[3]
  0x write_uzk: 4b 00 00 00 00 00 00 00 00  (147790972[msec]) ...[4]
    [1] ... スペースキーが押されたことを wuzk.exe が検出しました。
              ( WM_KEYDOWN ....... 押された
              ( VK_SPACE ......... スペースキーが
              ( -101/US .......... 101/US キーボードの
    [2] ... スペースキーが押された状態を、UZK に連絡しました。
              ( write_uzk ........ UZK に伝えた
              ( (xxxxxx[msec]) ... PC 内部時計での送信時刻に
         (送信時刻を表示しているわけは…、元々キーボードは人が手で操作することを)
          (想定されているため、むやみに早い打鍵になっていないことを確認するためです)
    [3] ... スペースキーが離されたことを wuzk.exe が検出しました。
              ( WM_KEYUP ......... 離された
    [4] ... スペースキーが離された状態を、UZK に連絡しました。
次に、UZK への連絡内容は、以下のようになっています。
  0x write_uzk: 4b 00 00 2c 00 00 00 00 00  (44707416[msec])
                ** **    *****************
                |   |     |
              [A]  [B]   [C]
    [A] (マウスでなくて)キー打鍵情報を送るよ、という指定です。
    [B] には「押されている状態」の SHIFT / CONTROL / ALT / WIN キーが
        ビットで列挙されます。
    [C] には、その他の「押されている状態」のキーの、USB でのキー
        コードが列挙されます。
    (ちなみに、この [B] 以降の 8バイトは USB キーボードプロトコルそのものです。
       参考: 「本ファームウェアの構成」)
最後に、例えば CONTROL + ALT + 'J' + SPACE を同時押しすると、 最終的には以下のようになります。   (人間的には同時のつもりでも、機械的には一つずつ順番に処理されます)
  0x write_uzk: 4b 05 00 0d 2c 00 00 00 00  (45240160[msec])
                   **    *****************
                   |     |  |
                   |     |  SPACE
                   |    'J'
                  0x01:左CONTROL + 0x04:左ALT
最後のキーがオートリピートされて画面が流れて見にくい場合、 オートリピートはキーを離すと止まりますので、 CONTROL + ALT + 'J' + SPACE を同時押しした状態で 例えば 'L' などを ポンと叩いて見てください。


●broadcast/target_offset 隠しオプションを使用する場合のヒント

wuzk.exe は「作業フォルダ」にある wuzk.ini を参照しますので、 下図のように(少々冗長ですが)フォルダ分けして 複数インストールしたうえで おのおの設定を変えておき、 wuzk.exe を複数起動することにより ボタン選択で必要な機能を選べます。 (まぁ何が起こるかいろいろ試してみてください)

…クリックで拡大
(4つの 子PC を個別に切り替えたり、時には同時打鍵するつもりな起動例)

●X-Mouse の利用

Windows には作業対象のウインドウの選択を「クリック」ではなく 「マウスカーソルを置く」ことでできるようにする隠しオプションが あります。このオプションは "X-Mouse" と呼ばれており、win2000/winXP までは Microsoft の提供する Tewak-UI を使って、 また win7 ではレジストリを変更することにより 有効にすることができます。

この機能を使うと、ウインドウの一部にマウスカーソルを置けば 背面に置いたままのウインドウにもキー入力ができますし、マウスを 滑らすだけで対象を切り替えられるので右手がやや楽になります。 (逆に、なにかの拍子にマウスを滑らすと 対象からはずれることにもなりますが)

この X-Mouse は、正式採用されていないだけあって細かいところで Windows の操作とかみ合わない部分もあるのですが、興味がある方は ぜひ試してみてください。
wuzk.exe では「アクティブじゃなくなったら中断」オプションと 組み合わせて使うと、マウスを離すだけでキー転送を中断でき快適です。

- * - * -

★XP で Tweak UI で

とは言ったものの、winXP の Tweak UI、もう Microsoft からは ダウンロードできなくなってるようですねぇ…。
…クリックで拡大
結局はレジストリを書き換えているだけだと思いますので 下の win7 での手順が応用できると思います…。

- * - * -

★win7 で レジストリで
この How to Activate a Window by Hovering Over it with the Mouse Pointer の Option #3 を参考に、レジストリを書き換えます。 私の環境での今の設定値は↓の通り。
…クリックで拡大
各種 "効果" を変更しているので、上記の web の情報と ぱっと見 設定値は異なりますが、この UserPreferencesMask 各ビットの説明 によれば、先頭バイトの 0x01 のビットを立てればよさそう…。

●「貼り付け」でバイナリファイルの転送

(1) 親PC で送るバイナリファイルをテキストにエンコードする、 例えば uuencode.exe とか。
(2) 親PC で、エンコードされたテキストを開いてコピー。
(3) 子PC でエディターを開いて準備。
(4) 「貼り付け」で親→子に自動打鍵させる。
(5) 子PC でファイルに保存してデコード、例えば uudecode.exe。

300bps ぐらいの転送レートになりますので 大きなファイルは避けた方が無難ですが、相手が unix なら

       +--------------------------
       | % cat | uudecode
       +--------------------------
で済みますのでちょっとしたファイルなら……。

●【番外】drive_uzk.exe で Windowsキー

drive_uzk.exe にて自動打鍵をさせる時、スクリプトの終了直前で Windowsキー を打鍵させるようにしておけば、

       +--------------------------
       |...
       |T 0xe3      WIN(left)
       |E
       +--------------------------
スタートメニューが開くことで 遠目にも自動打鍵終了がわかって便利。   [2020.2.8]


    uratan@miomio.jp
upward