/* * Uzk.app - UZK frontend on Mac OS X * by uratan! 2005.7.8 * * current version: 1.0 * * see * http://www002.upp.so-net.ne.jp/uratan/UZK/ * for detail */ ●UZK とは USB Host-to-Host Keyboard/Mouse Emulator のハードウェアです。 UZK には USB のアップストリームポートが 2つついており、2つの PC を接続します。UZK はあなたの高性能なパソコンを、ただの USB キーボードやただの USB マウスにしてしまうものです。 なにしろただの USB キーボードですから、相手先の PC には特別な 設定やドライバは必要なく、USB を認識するものであればだいたい つながります。BIOS 設定もできます。 WIN-->FreeBSD/NetBSD でも WIN-->Mac でもキーボードを共有できました。 (詳しくは上記の web ページをご覧ください) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ●Uzk.app とは UZK 用の Mac OS X フロントエンドアプリケーションです。Carbon Framework の範囲内で、できる限りのキーイベントを拾い、OS標準の IOUSBHIDDriver、および UZK を通して他の PC に送りつけます。 (setReport() 関数を使用しているため、Mac OS X 10.2.3 以降で ある必要があると思われます) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ●起動 Uzk.app は以下の方法のいずれかにより起動します。 (1) ファインダーにより ./build/uzk.app をダブルクリック。 あるいは、ターミナルより以下のコマンド入力。 % open ./build/uzk.app (2) ターミナルより、バイナリを直接起動。以下の例ではデバッグ出力 オプションを付加しており、ターミナル上に各種の動作状況が表示 されます。 % ./build/uzk.app/Contents/Mac-OS/uzk -debug 起動後、システムに接続されている UZK を自動検出し、レジストリ ツリー上で最初に見つかった UZK に対応するウィンドウが開きます。 (なお動作確認用に、 UZK が存在しなくとも本アプリケーションを 動作させることができます) ●接続 転送したい PC/Mac につながっている UZK に対応した Uzk.app ウィンドウがアクティブになっている間、本ウィンドウに与えられた キーイベントが接続先のマシンに転送されます。 複数の UZK を接続してある場合は、「File」メニューより必要な Uzk.app ウィンドウを開いて使用します。 ●張り付け Paste コマンドを実行することにより、クリップボード内のテキストデータを、 キーボードを打鍵する形で接続するマシンに打ち込みます。 (自動打鍵なので張り付けられる文字はアスキーに限ります。ペースト動作を 打ち切る場合には「Release All Keys」ボタンを使用します) ●右モディファイアーキーのマニュアル制御 Mac OS X では「SHIFT」などのモディファイアーキーの左右を区別しないため、 キー入力によるこれらキーの転送はすべて「左」キーとして取り扱います。 「右」モディファイアーキーは、画面上のボタンにより制御できます。 ●キー送出状態のリセット 「Release All Keys」ボタンを押すと、強制的にすべてのキーが離された 状態に遷移します。これはある条件下(*)で、キーが押されっぱなしの状態に なってしまう場合があるためで、本ボタンにより復帰できます。 (*) キーイベントはキーボードフォーカスのあるウィンドウのみに送られるため、 ウィンドウの切り替え後などに「キーを離した」イベントが届かない場合など。 ●終了 アプリケーションメニューより「Quit」を選択して終了します。 Uzk.app でキー入力を受け取るために、すべてのメニューのキーボード ショートカットは禁止してありますのでマウスにて操作してください。 ●制限事項 現在の Uzk.app では、以下の制限があります。 [A] 転送できるのはキーボードイベントのみです。マウスイベントは 転送されません。 [B] 使用するキーボードは、PC 用英語配列101キーボードを想定しています。 (Happy Hacking Keyboard Pro を使用) [C] キーリピート時、キーが押しっぱなしになっている状態を転送するの ではなく、リピートに合わせてキーを連打します。 [D] Mac OS X システムで使用されているキーボードショートカット(*)は Uzk.app までイベントとして届かないので転送することができません。 少々不便ですが、ウィンドウ上のボタンにてコマンドキー他を制御 できますので、これと組み合わせて必要なショートカットを構成できます。 (例) 「cmd-shift-3」 ---> ウィンドウのボタンで「cmd」、 キーボードから「shift-3」など (*)・「システム設定」->「キーボード」->「ショートカット」で 定義されているもの、 ・「cmd+TAB」なのどアプリケーション切り替えショートカット、 ・Expose 操作に設定したキーボードショートカット、 ・apple メニューに登録されているキーボードショートカット、 などが主に該当します。 現状のままでは Mac--->Mac で使用するのは少々気持ちよくないですが、 異種 OS であれば割と普通に使えるように思います。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ●コンパイルについて 本プログラムは、Mac OS X Version 10.3.9 付属の Xcode 1.5 にて作成 いたしました。また動作確認は、Mac mini (10.3.9, 10.4)にて行いました。 (なお CreaterCode を取得しておりませんので適当に与えてます) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ●参考文献 以下の web リソースを参考にさせていただきました。 ◎Apple Computer, Inc. "Working With HID Class Device Interfaces" (doc#2001-05-01) "Handling Carbon Events" (doc#2003-06-04) "Guide to Creating Kiosks on Mac OS X" (Technical Note TN2062) ◎USB T.A. (http://www.usb.org/developers/hidpage/) より HID デバイスクラス定義 (http://www.usb.org/developers/devclass_docs/HID1_11.pdf) HID Usage Tables (http://www.usb.org/developers/devclass_docs/Hut1_11.pdf) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ●作者 uratan@po.iijnet.or.jp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ●ライセンス このプログラムはフリーソフトウェアです。使用にあたっては、 X11 License に従うこととします。 (http://www.gnu.org/licenses/license-list.ja.html) (http://www.gnu.org/licenses/license-list.html) このプログラムは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも 含め全く存在しません。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ●変更履歴 --------------------------------------------------------------------------- 2005.7.8 first registration (ver 1.0) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00readme.rtf --- このファイル build/Uzk.app --- アプリケーション Uzk.app uzk.xcode/ --- Xcode プロジェクトファイル Makefile --- 単に 'xcodebuild' を呼ぶだけの makefile uzk.h --- Uzk.app 共有定義 main.c --- Uzk.app エントリ window.c --- ウィンドウ描画とそのイベント処理 keyconv.c --- キーコードを USB USAGE ID に変換 hid.c --- HID デバイス関連 decode.c --- Carbon イベントを文字化するだけ icon.tiff --- アイコンの絵 icon-mask.tiff --- アイコンのマスク icon.icns --- Uzk.app のアイコン English.lproj/main.nib/objects.xib --- InterfaceBuilder リソース English.lproj/InfoPlist.strings --- ver 1.0 Info.plist --- リソース version.plist --- リソース(未変更) uzk_Prefix.pch --- Xcode が作ったファイル ---------------------------------------------------------------------------