コンピュータとの通信に使用される複数のエンドポイントと、前記複数のエンドポイントのうちHIDクラスの通信に使用する少なくとも1つのエンドポイントからキーコードを前記コンピュータにインタラプト転送する制御部と、を備えることを特徴とするプリンタ。前記キーコードは、プリンタステータスに対応したキーコードであることを特徴とする請求項1記載のプリンタ。前記キーコードを記憶する記憶部を有し、前記制御部は、前記記憶部に記憶された前記キーコードを前記コンピュータにインタラプト転送すると共に、前記コンピュータからの指示に基づき、前記記憶部に記憶された前記キーコードを変更することを特徴とする請求項1または2記載のプリンタ。複数のエンドポイントを有するプリンタに接続され、前記複数のエンドポイントのうちHIDクラスの通信に使用される少なくとも1つのエンドポイントからキーコードがインタラプト転送されるコンピュータを、前記1つのエンドポイントからインタラプト転送される前記キーコードがキーボードイベントとしてアクティブなアプリケーションに通知される前に前記キーコードを取得する取得手段、前記取得手段で取得した前記キーコードを、記憶部に記憶された前記キーコードに対応したウィンドウメッセージに変換する変換手段、前記変換手段で変換した前記ウィンドウメッセージを、前記記憶部に通知先として記憶されたアプリケーションに通知する通知手段、として機能させることを特徴とするプログラム。前記キーコードは、プリンタステータスに対応したキーコードであることを特徴とする請求項4記載のプログラム。前記変換手段は、前記取得手段で取得した前記キーコードを、前記キーコードに対応したキーボードイベントに変換することを特徴とする請求項4または5記載のプログラム。前記記憶部に記憶された前記通知先のアプリケーションを変更する第1変更手段、を有することを特徴とする請求項4から6のいずれか一項記載のプログラム。前記記憶部に記憶された前記ウィンドウメッセージを変更する第2変更手段、を有することを特徴とする請求項4から7のいずれか一項記載のプログラム。コンピュータと、前記コンピュータとの通信に使用される複数のエンドポイントのうちHIDクラスの通信に使用する少なくとも1つのエンドポイントからプリンタステータスに対応したキーコードを前記コンピュータにインタラプト転送するプリンタと、を備えることを特徴とするプリンタシステム。前記コンピュータは、前記1つのエンドポイントからインタラプト転送される前記キーコードがキーボードイベントとしてアクティブなアプリケーションに通知される前に前記キーコードを取得し、前記キーコードを記憶部に記憶された前記キーコードに対応したウィンドウメッセージに変換し、前記ウィンドウメッセージを前記記憶部に通知先として記憶されたアプリケーションに通知することを特徴とする請求項9記載のプリンタシステム。コンピュータとプリンタとがUSBインタフェースを介して接続されている場合において、コンピュータとプリンタとの間の通信は一般的にバルク転送が使用される。即ち、プリンタからコンピュータに例えばプリンタステータスのデータを送信する場合にはバルク転送が使用される。コンピュータに送信されたプリンタステータスのデータは、最終的にはコンピュータの所定のアプリケーション例えば、印刷アプリケーションに通知されることとなる。しかしながら、例えば印刷アプリケーションにプリンタステータスのデータを通知しようとすると、複雑な処理を要することになる。そこで、本発明は、このような課題に鑑みなされたものであり、アプリケーションにデータを容易に通知することが可能なプリンタ、プログラム、およびプリンタシステムを提供することを目的とする。本発明は、コンピュータとの通信に使用される複数のエンドポイントと、前記複数のエンドポイントのうちHIDクラスの通信に使用する少なくとも1つのエンドポイントからキーコードを前記コンピュータにインタラプト転送する制御部と、を備えることを特徴とするプリンタである。本発明によれば、複雑な処理を行うデバイスドライバやソフトウェアを使用することなく、コンピュータに備わるアプリケーションにデータを容易に通知できる。上記構成において、前記キーコードは、プリンタステータスに対応したキーコードである構成とすることができる。上記構成において、前記キーコードを記憶する記憶部を有し、前記制御部は、前記記憶部に記憶された前記キーコードを前記コンピュータにインタラプト転送すると共に、前記コンピュータからの指示に基づき、前記記憶部に記憶された前記キーコードを変更する構成とすることができる。この構成によれば、ユーザ毎の使用状況に応じたキーコードの設定ができる。本発明は、複数のエンドポイントを有するプリンタに接続され、前記複数のエンドポイントのうちHIDクラスの通信に使用される少なくとも1つのエンドポイントからキーコードがインタラプト転送されるコンピュータを、前記1つのエンドポイントからインタラプト転送される前記キーコードがキーボードイベントとしてアクティブなアプリケーションに通知される前に前記キーコードを取得する取得手段、前記取得手段で取得した前記キーコードを、記憶部に記憶された前記キーコードに対応したウィンドウメッセージに変換する変換手段、前記変換手段で変換した前記ウィンドウメッセージを、前記記憶部に通知先として記憶されたアプリケーションに通知する通知手段、として機能させることを特徴とするプログラムである。本発明によれば、プリンタから送信されたデータを、アクティブなアプリケーションだけではなく、任意のアプリケーションに通知することができる。上記構成において、前記キーコードは、プリンタステータスに対応したキーコードである構成とすることができる。上記構成において、前記変換手段は、前記取得手段で取得した前記キーコードを、前記キーコードに対応したキーボードイベントに変換する構成とすることができる。上記構成において、前記記憶部に記憶された前記通知先のアプリケーションを変更する第1変更手段、を有する構成とすることができる。上記構成において、前記記憶部に記憶された前記ウィンドウメッセージを変更する第2変更手段、を有する構成とすることができる。本発明は、コンピュータと、前記コンピュータとの通信に使用される複数のエンドポイントのうちHIDクラスの通信に使用する少なくとも1つのエンドポイントからプリンタステータスに対応したキーコードを前記コンピュータにインタラプト転送するプリンタと、を備えることを特徴とするプリンタシステムである。本発明によれば、複雑な処理を行うデバイスドライバやソフトウェアを使用することなく、コンピュータに備わるアプリケーションにデータを容易に通知できる。上記構成において、前記コンピュータは、前記1つのエンドポイントからインタラプト転送される前記キーコードがキーボードイベントとしてアクティブなアプリケーションに通知される前に前記キーコードを取得し、前記キーコードを記憶部に記憶された前記キーコードに対応したウィンドウメッセージに変換し、前記ウィンドウメッセージを前記記憶部に通知先として記憶されたアプリケーションに通知する構成とすることができる。この構成によれば、プリンタから送信されたデータを、アクティブなアプリケーションだけではなく、任意のアプリケーションに通知することができる。本発明によれば、複雑な処理を行うデバイスドライバやソフトウェアを使用することなく、コンピュータに備わるアプリケーションにデータを容易に通知できる。まず初めに、比較例1に係るプリンタシステムを用いて、本発明が解決しようとする課題について詳細に説明する。図1は、比較例1に係るプリンタシステムを示す機能ブロック図の例である。図1のように、プリンタシステム300は、コンピュータ70とプリンタ80とがUSBインタフェースを介して接続している。コンピュータ70は、印刷アプリケーション12、GDIGraphicsDeviceInterface14、プリンタドライバ16、スプーラ18、言語モニタ20、ポートモニタ22、USBバルクドライバ24、USBドライバスタック26、USBホストコントローラ28、およびドライバAPIApplicationProgrammingInterface72を備えている。ドライバAPI72は、プリンタ80のプリンタステータスデータを印刷アプリケーション12に通知するための専用のアプリケーションである。USBバルクドライバ24は、プリンタ80との通信に用いられるプリンタ用のドライバであり、USBドライバスタック26は、マイクロソフト登録商標社のWindows登録商標オペレーティングシステムで、USBホストコントローラ28を動かすためのドライバである。USBホストコントローラ28は、コンピュータ70のインタフェースに設けられ、プリンタ80との通信を管理する。プリンタ80のインタフェースには、複数のエンドポイントEP0からEPxが設けられている。エンドポイントEP0はコントロール転送に使用する。エンドポイントEP1は印刷データを受信するためのエンドポイントであり、コンピュータ70からみてOUTの一方向のバルク転送に使用する。エンドポイントEP2は例えばプリンタステータスデータを送信するためのエンドポイントであり、コンピュータ70からみてINの一方向のバルク転送に使用する。エンドポイントEP2からバルク転送されたプリンタステータスデータは、USBホストコントローラ28、USBドライバスタック26、USBバルクドライバ24、ポートモニタ22、言語モニタ20を経由してスプーラ18に渡される。このようなプリンタステータスデータを印刷アプリケーション12に通知する方法として例えば以下の4通りの方法が考えられる。一つ目の通知方法は、言語モニタ20がポートモニタ22に対して通信を行い、プリンタ80から送信されるデータを常時監視し、プリンタステータスデータを取得したらドライバAPI72を介して印刷アプリケーション12に通知する方法である。二つ目の通知方法は、ドライバAPI72がUSBバルクドライバ24に対して通信を行い、プリンタ80から送信されるデータを常時監視し、プリンタステータスデータを取得したら印刷アプリケーション12に通知する方法である。三つ目の通知方法は、印刷アプリケーション12がUSBバルクドライバ24に対して通信を行い、直接プリンタ80からのデータの監視を行い、プリンタステータスデータを取得する方法である。四つ目の通知方法は、USBバルクドライバ24がUSBドライバスタック26に対して通信を行い、プリンタ80からのデータを常時監視し、プリンタステータスデータを取得したらドライバAPI72を介してあるいは直接印刷アプリケーション12に通知する方法である。これら4通りの通知方法いずれにおいても、アプリケーションやドライバなどが周期的に通信を行い、プリンタステータスデータを読みに行かなければならない。また、プリンタステータスデータを印刷アプリケーション12に通知するための専用のアプリケーションであるドライバAPI72を用いる場合もある。このように、プリンタステータスデータを印刷アプリケーションに通知するには複雑な処理を要する。そこで、このような課題を解決すべく、以下において、アプリケーションにデータを容易に通知することが可能な実施例を説明する。図2は、実施例1に係るプリンタシステムの全体構成を示すブロック図の例である。図2のように、実施例1に係るプリンタシステム100は、コンピュータ10とプリンタ40とがUSBインタフェースケーブル52を介して接続されている。コンピュータ10は、CPU30、ROMおよびRAMからなるメモリ32、およびI/Fインタフェース34を有する。CPU30は、メモリ32に記憶された制御プログラムに従い、コンピュータ10全体を制御する。I/F34は、コンピュータ10とプリンタ40とを接続するインタフェースである。プリンタ40は、CPU42、ROMおよびRAMからなるメモリ44、I/F46、フラッシュROMなどからなる記憶部48、およびプリント部50を有する。CPU42は、メモリ44に記憶された制御プログラムに従い、プリンタ40全体を制御する。I/F46は、プリンタ40とコンピュータ10とを接続するインタフェースである。I/F46には、後述するように複数のエンドポイントが設けられている。記憶部48は、プリンタステータスと対応付けされたキーコードを記憶する。プリント部50は、コンピュータ10から送られてきた印刷データに基づいて印刷を実行する。図3は、実施例1に係るプリンタシステムの機能ブロック図の例である。図3のように、コンピュータ10は、印刷アプリケーション12、GDIGraphicsDeviceInterface14、プリンタドライバ16、スプーラ18、言語モニタ20、ポートモニタ22、ユーザインタフェース23、USBバルクドライバ24、HIDHumanInterfaceDeviceドライバ25、およびUSBドライバスタック26を備えている。また、I/F34に、プリンタ40との通信を管理するUSBホストコントローラ28を備えている。印刷アプリケーション12、GDI14、プリンタドライバ16、スプーラ18、言語モニタ20、ポートモニタ22、およびユーザインタフェース23はユーザモードに設けられている。USBバルクドライバ24、HIDドライバ25、およびUSBドライバスタック26はカーネルモードに設けられている。カーネルモードに設けられたUSBバルクドライバ24は、プリンタ40との通信に用いられるプリンタ用のドライバである。HIDドライバ25は、プリンタ40との通信に用いられるキーボード用のドライバである。USBドライバスタック26は、マイクロソフト登録商標社のWindows登録商標オペレーティングシステムで、USBホストコントローラ28を動かすためのドライバである。プリンタ40が有するI/F46には、複数のエンドポイントEP0からEPxが設けられている。エンドポイントEP0はコントロール転送に使用する。このコントロール転送を使って、コンフィグレーションを行い、プリンタ40の使い方の設定情報を、コンピュータ10とプリンタ40との間で双方向通信する。エンドポイントEP1は印刷データを受信するためのエンドポイントである。エンドポイントEP1は、コンピュータ10からみてOUTの一方向の通信である。転送方式としてはバルク転送を使用する。エンドポイントEP2は、プリンタステータスに対応したキーコードを送信するためのエンドポイントであり、コンピュータ10からみてINの一方向の通信である。転送方式としてはインタラプト転送を使用する。ここで、図4のシーケンス図を用い、コンピュータ10とプリンタ40との間のコントロール転送の通信手順について説明する。図4のように、コンピュータ10とプリンタ40とが接続された状態でプリンタ40の電源がONになった場合ステップS10、コンピュータ10は、プリンタ40の電源がONになったことを確認した後ステップS12、プリンタ40に対してゲットディスクリプタを転送するステップS14。なお、ステップS10およびS12は、電源ON状態のプリンタ40が接続された場合でもよい。ゲットディスクリプタに対して、プリンタ40は、メモリ44に記憶されているディスクリプタ情報をコンピュータ10に返送するステップS16。コンピュータ10は、返送されたディスクリプタ情報に基づき、適当なドライバの準備などの設定をするステップS18。図5および図6に、メモリ44に記憶されたディスクリプタ情報の例を示す。図5および図6に示すディスクリプタ情報の例では、インタフェース1ディスクリプタとエンドポイント1ディスクリプタによって、プリンタクラスとバルク転送が指定されている。また、インタフェース2ディスクリプタとエンドポイント2ディスクリプタによって、HIDキーボードクラスとインタラプト転送が指定されている。これにより、コンピュータ10は、プリンタ40をプリンタとキーボードの2つのデバイスとして認識をし、図2および図4で説明したように、プリンタ用のドライバとしてUSBバルクドライバ24を準備し、キーボード用のドライバとしてHIDドライバ25を準備する。また、インタフェース1ディスクリプタとエンドポイント1ディスクリプタによってプリンタクラスとバルク転送が指定されていることから、エンドポイントEP1は、バルク転送された印刷データを受信するためのエンドポイントとして使用される。一方、インタフェース2ディスクリプタとエンドポイント2ディスクリプタによってHIDキーボードクラスとインタラプト転送が指定されていることから、エンドポイントEP2は、プリンタステータスに対応したキーコードをインタラプト転送で送信するためのエンドポイントとして使用される。ここで、印刷アプリケーション12で印刷処理が開始された場合に、プリンタ40のプリント部50で印刷されるまでの印刷処理について説明する。図3のように、印刷アプリケーション12で印刷処理が開始されると、印刷アプリケーション12はGDI14を呼び出し、GDI14がプリンタデバイスコンテキストへ描画を行う。その後、GDI14はプリンタドライバ16を呼び出し、プリンタドライバ16はプリンタ言語に基づいてプリンタ40で印刷可能な形の印刷データを生成する。生成された印刷データはスプーラ18に渡される。次いで、必要な場合は言語モニタ20で処理が行われた後、ポートモニタ22はプリンタポートの種類に合わせて印刷データの出力処理を行う。印刷データは、カーネルモードに設けられたUSBバルクドライバ24およびUSBドライバスタック26に通知された後、USBホストコントローラ28の管理の下でプリンタ40にバルク転送により送信される。プリンタ40のエンドポイントEP1でバルク転送された印刷データを受信した後、CPU42の制御の下、印刷データに基づいてプリント部50で印刷が実行される。図7は、プリンタステータスに対応したキーコードの送信について説明するフローチャートである。図7のように、プリンタ40のCPU42は、プリンタステータスに異常が発生し、コンピュータ10に通知すべきプリンタステータスがあるかどうかを判断するステップS20。通知すべきプリンタステータスがあると判断した場合は、CPU42は、記憶部48に記憶されたプリンタステータスと対応付けされたキーコードに基づき、通知すべきプリンタステータスに対応したキーコードをエンドポイントEP2からコンピュータ10に送信するステップS22。通知すべきプリンタステータスがないと判断した場合は、CPU42は、エンドポイントEP2からコンピュータ10にNAKを送信するステップS24。エンドポイントEP2における転送方式はインタラプト転送であり、インタラプト転送の動作は、エンドポイント2ディスクリプタのEP_bIntervalで指定した間隔[ms]でINトランザクションが発生する。つまり、CPU42は、INトランザクションに対してプリンタステータスに対応したキーコードあるいはNAKを送信する。図3に戻り、エンドポイントEP2から送信されたプリンタステータスに対応したキーコードは、USBホストコントローラ28、USBドライバスタック26、およびキーボード用のドライバであるHIDドライバ25を介してWindows登録商標に標準装備されたユーザインタフェース23に通知される。キーコードは、ユーザインタフェース23でキーボードイベントWM_KEYDOWN/WM_KEYUPのウィンドウメッセージと仮想キーコードに変換され、キーボードイベントとして印刷アプリケーション12に通知される。ここで、図8に、プリンタステータスと対応付けされたUSBキーコードの例および夫々のUSBキーコードに対応する実際のキーおよびWindows登録商標仮想キーコードの例を示す。図8のように、プリンタステータスの例として、用紙なし、ニアエンド、マーク未検出、カバーオープン、カッタ異常、ハードウェア異常、電源電圧異常、ヘッド温度異常などが挙げられ、夫々に対してUSBキーコード6Aから6F、70、71が割り当てられている。USBキーコード6Aから6F、70、71は、実際のキーではF15からF22に対応し、ユーザインタフェース23でWindows登録商標仮想キーコードに変換されると、例えばUSBキーコード6AはWindows登録商標仮想キーコード7EVK_F15となる。なお、プリンタステータスと対応付けされたUSBキーコードとして6Aから6F、70、71を割り当てた理由は、USBキーコード6Aから6F、70、71に対応する実際のキーF15からF22は一般的には使用されないキーであるためである。したがって、プリンタステータスとの対応付けに割り当てるUSBキーコードは、6Aから6F、70、71に限られる訳ではないが、通常使用されないキーに対応するUSBキーコードを割り当てる場合が好ましい。図9aおよび図9bは、プリンタステータスを通知する際に、プリンタ40から送信されるパケットデータの例である。図9aは、用紙なしのプリンタステータスが発生した場合および解除された場合のパケットデータの例である。図9bは、カバーオープンと用紙なしのプリンタステータスが同時に発生した場合、カバーオープンのプリンタステータスが解除された場合、カバーオープンと用紙なしのプリンタステータスが解除された場合のパケットデータの例である。パケットデータ数は、エンドポイント2ディスクリプタのEP_wMaxPacketSizeによって指定されたバイト数によって行われ実施例1では8バイト、プリンタステータスに対応したキーコードが第3バイト目から順に格納される。したがって、図9aの用紙なしのプリンタステータスが発生した場合では、用紙なしのキーコード0x6Aが第3バイト目に格納される。図9bのカバーオープンと用紙なしのプリンタステータスが発生した場合では、カバーオープンのキーコード0x6Dが第3バイト目に、用紙なしのキーコード0x6Aが第4バイト目に格納される。図9aに示す用紙なし発生時のパケットデータがプリンタ40から送信され、ユーザインタフェース23にキーコードが通知されると、ユーザインタフェース23でキーコード0x6Aがキーボードイベントに変換され、最終的には、WM_KEYDOWNと仮想キーコード7EVK_F15とのキーボードイベントが印刷アプリケーション12に通知される。同様に、図9bに示すカバーオープンと用紙なし発生時のパケットデータの場合は、WM_KEYDOWNと仮想キーコード81VK_F18、7EVK_F15とのキーボードイベントが印刷アプリケーション12に通知される。また、図9aのように、用紙なしのプリンタステータスが解除されると0x6Aがクリアされたパケットデータがプリンタ40から送信され、WM_KEYUPと仮想キーコード7EVK_F15とのキーボードイベントが印刷アプリケーション12に通知される。図9bのように、カバーオープンのプリンタステータスのみが解除された場合は、0x6Dがクリアされ、0x6Aが第3バイト目に格納されたパケットデータが送信され、WM_KEYUPと仮想キーコード81VK_F18とが印刷アプリケーション12に通知される。その後に、用紙なしのプリンタステータスが解除された場合は、0x6Aがクリアされたパケットデータが送信され、WM_KEYUPと仮想キーコード7EVK_F15とのキーボードイベントが印刷アプリケーション12に通知される。次に、キーボードイベントが通知された場合に、印刷アプリケーション12で行なわれるプリンタステータスの判定処理について説明する。図10は、印刷アプリケーション12でのプリンタステータス判定処理を説明するフローチャートの例である。図10のように、印刷アプリケーション12は、ウィンドウメッセージを受信するとステップS30、ウィンドウメッセージがWM_KEYDOWNであるかどうか判断するステップS32。WM_KEYDOWNである場合Yesの場合は、印刷アプリケーション12は、仮想キーコードが7EVK_F15から85VK_F22のいずれかであるかを判断するステップS34。ステップS34でYesの場合は、印刷アプリケーション12は、仮想キーコードに対応したプリンタステータスを発生させるステップS36。ステップS34でNoの場合は、印刷アプリケーション12は、ウィンドウメッセージに従った処理を実行するステップS38。ステップS32でNoの場合、印刷アプリケーション12は、ウィンドウメッセージがWM_KEYUPであるかどうかを判断するステップS40。WM_KEYUPである場合Yesの場合は、印刷アプリケーション12は、仮想キーコードが7EVK_F15から85VK_F22のいずれかであるかを判断するステップS42。ステップS42でYesの場合は、印刷アプリケーション12は、仮想キーコードに対応したプリンタステータスを解除するステップS44。ステップS42でNoの場合およびステップS40でNoの場合は、印刷アプリケーション12は、ウィンドウメッセージに従った処理を実行するステップS38。以上説明してきたように、実施例1によれば、プリンタ40は、複数のエンドポイントEP0からEPxのうちの1つのエンドポイントEP2をHIDクラスの通信に使用し、プリンタステータスに対応したキーコードをインタラプト転送する。これにより、コンピュータ10は、Windows登録商標に標準装備のHIDドライバ25とユーザインタフェース23とを用いることで、インタラプト転送により一定周期で送信されてきたキーコードをキーボードイベントに変換でき、プリンタステータスをキーボードイベントとして印刷アプリケーション12に通知できる。このため、複雑な処理を行うデバイスドライバやソフトウェアを使用することなく、Windows登録商標に標準装備のHDIドライバ25とユーザインタフェース23とにより、プリンタステータスに関するデータを容易に印刷アプリケーション12に通知できる。プリンタ40は、コンピュータ10からのプリンタコマンドやベンダリクエストなどの指示に基づき、記憶部48に記憶されたプリンタステータスと対応付けされたキーコードを変更できる場合が好ましい。これにより、例えばユーザ毎の使用状況に応じて通常使用していないキーコードをプリンタステータスに対応したキーコードとして使用することができる。また、プリンタステータスと対応付けされたキーコードの変更は、印刷アプリケーションでのプリンタステータス判定処理との整合を取りつつ変更する場合が好ましい。実施例1において、HIDクラスの通信に使用するエンドポイントEP2からインタラプト転送されるキーコードは、プリンタステータスに対応したキーコードである場合を例に示したがこれに限られるわけではない。プリンタ40からコンピュータ10に送信されるデータであれば、プリンタステータス以外の事項に対応したキーコードである場合でもよい。また、エンドポイントEP1とエンドポイントEP2とを、実施例1とは反対の方法で使用する場合でもよい。即ち、エンドポイントEP1を、プリンタステータスに対応したキーコードをインタラプト転送で送信するエンドポイントに使用し、エンドポイントEP2を、バルク転送で送信された印刷データを受信するエンドポイントに使用してもよい。また、プリンタステータスに対応したキーコードをインタラプト転送で送信するエンドポイントを2つ以上設けた場合でもよい。即ち、複数のエンドポイントのうちの少なくとも1つのエンドポイントをHIDクラスの通信に使用し、プリンタステータスに対応したキーコードをインタラプト転送する場合であればよい。また、実施例1では、コンピュータ10はWindows登録商標オペレーティングシステムを備えている場合を例に示したが、プリンタ40から送信されたキーコードをキーボードイベントに変換して印刷アプリケーション12に通知する機能を有すれば、その他のオペレーティングシステムを備えている場合でもよい。また、プリンタ40から送信されるプリンタステータスに対応したキーコードはUSBキーコードの場合を例に示したが、割り当てられたキーの識別が可能なキーコードであればUSBキーコード以外のキーコードである場合でもよい。実施例1に係るプリンタシステム100では、プリンタステータスに対応したキーコードに基づいてユーザインタフェース23でキーボードイベントを発生させ、キーボードイベントとして印刷アプリケーション12に通知している。このため、キーボードイベントはアクティブなアプリケーションにのみ通知されることになる。そこで、実施例2では、アクティブでないアプリケーションなど、任意のアプリケーションにプリンタステータスに関するデータを通知することが可能な例を説明する。図11は、実施例2に係るプリンタシステムの全体構成を示すブロック図の例である。図11のように、実施例2に係るプリンタシステム200は、プリンタ40とUSBインタフェースケーブル52で接続するコンピュータ60が、例えばハードディスクである記憶部62を有している点で、実施例1に係るプリンタシステム100と異なる。記憶部62は例えばレジストリであり、記憶部62には、キーコードと対応付けされたウィンドウメッセージ、およびウィンドウメッセージを通知する通知先のアプリケーションのウィンドウ情報ウィンドウ名とウィンドウクラス名またはウィンドウハンドルが記憶されている。その他の構成については実施例1と同じであり、図2に示しているため、ここでは説明を省略する。図12は、実施例2に係るプリンタシステムの機能ブロック図の例である。図12のように、コンピュータ60は、図3で示したコンピュータ10の機能ブロックに、第1アプリケーション64、第2アプリケーション66、および常駐アプリケーション68を加えた構成をしている。第1アプリケーション64および第2アプリケーション66は、印刷アプリケーション12以外の他の印刷アプリケーションやプリンタ40を監視する専用のアプリケーションである。Windows登録商標オペレーティングシステムには、SetWindows登録商標HookExのWin32API関数が用意されており、第1引数にWH_KEYBOARD0x00000002を指定することにより、プリンタ40から送信されたキーコードをフックし、キーボードイベントが発生する前にキーコードを取得することができる。そこで、常駐アプリケーション68では、SetWindows登録商標HookExによるキーコードフックを行い、プリンタ40から送信されたキーコードがキーボードイベントとしてアクティブなアプリケーションに通知される前にキーコードを取得する。そして、記憶部62に記憶されたキーコードと対応付けされたウィンドウメッセージに基づき、取得したキーコードをウィンドウメッセージに変換した後、ウィンドウメッセージを記憶部62に記憶された通知先のアプリケーション例えば、印刷アプリケーション12、第1アプリケーション64、および第2アプリケーション66の中のいずれか1つのアプリケーションまたは選択した複数のアプリケーションにPostMessageで送信する。その他の構成については実施例1と同じであり、図3で示しているため、ここでは説明を省略する。次に、図13のフローチャートを用いて、プリンタ40からプリンタステータスに対応したキーコードが送信された場合に、常駐アプリケーション68で行われる制御処理を説明する。図13のように、常駐アプリケーション68は、まず起動後に、記憶部62から通知先のアプリケーションのウィンドウ情報またはウィンドウハンドルを取得するステップS50。続いて、常駐アプリケーション68は、記憶部62からキーコードと対応付けされたウィンドウメッセージを取得するステップS52。実施例2では、プリンタステータスに対応したキーコードがWM_KEYDOWN/WM_KEYUPのウィンドウメッセージに変換される場合を例に説明する。即ち、実施例1と同様に、プリンタステータスに対応したキーコードがキーボードイベントに変換される場合を例に説明する。次いで、常駐アプリケーション68は、キーコードフックルーチンを登録するステップS54。これは、前述したように、SetWindows登録商標HookExの第1引数にWH_KEYBOARD0x00000002が指定されることで行われる。キーコードフックルーチンを登録することで、常駐アプリケーション68は、キーコードがキーボードイベントとしてアクティブなアプリケーションに通知される前にキーコードを取得できる。即ち、例えばプリンタ40からプリンタステータスに対応したキーコードが送信された場合、常駐アプリケーション68は、ユーザインタフェース23でキーボードイベントが発生する前にプリンタステータスに対応したキーコードを取得するステップS56。次いで、常駐アプリケーション68は、ステップS52で取得したキーコードと対応付けされたウィンドウメッセージに基づき、ステップS56で取得したキーコードをウィンドウメッセージに変換するステップS58。実施例2では、プリンタステータスに対応したキーコードをWM_KEYDOWN/WM_KEYUPのウィンドウメッセージと仮想キーコードに変換する。次いで、常駐アプリケーション68は、ウィンドウメッセージがWM_DESTROYであるかどうかを判断しステップS60、WM_DESTROYではないと判断した場合Noの場合、各ウィンドウメッセージの処理を行うステップS62。ステップS62では、WM_KEYDOWN/WM_KEYUP以外のウィンドウメッセージの処理を行う。また、ステップS60でウィンドウメッセージがWM_DESTROYであると判断された場合Yesの場合、常駐アプリケーション68は、UnhookWindows登録商標HookExにより、キーコードフックルーチンを抹消するステップS64。ここで、図14のフローチャートを用い、常駐アプリケーション68内のキーコードフックルーチンの処理について詳しく説明する。図14のように、常駐アプリケーション68は、キーコードと共に受信するキーON/OFF情報からキーダウンであるかどうかを判断するステップS70。キーダウンであると判断した場合Yesの場合、常駐アプリケーション68は、仮想キーコードが7EVK_F15から85VK_F22であるかどうかを判断するステップS72。ステップS72でYesの場合、常駐アプリケーション68は、ステップS50で取得した通知先のアプリケーションのウィンドウを検索しステップS74、ウィンドウがある場合ステップS76でYesの場合は、通知先のアプリケーションにキーボードイベントを通知して、当該ウィンドウにプリンタステータスを発生させるステップS78。ステップS70でNoの場合、常駐アプリケーション68は、キーアップであるかどうかを判断するステップS80。キーアップであると判断した場合Yesの場合、常駐アプリケーション68は、仮想キーコードが7EVK_F15から85VK_F22であるかどうかを判断するステップS82。ステップS82でYesの場合、常駐アプリケーション68は、ステップS50で取得した通知先のアプリケーションのウィンドウを検索しステップS84、ウィンドウがある場合ステップS86でYesの場合は、通知先のアプリケーションにキーボードイベントを通知して、当該ウィンドウのプリンタステータスを解除するステップS88。ステップS80でNoの場合、または、ステップS78およびステップS88を実行した後、常駐アプリケーション68は、CallNextHookExにより別のアプリケーション等が登録しているキーコードフックルーチンに処理を渡すステップS90。次に、図15のフローチャートを用いて、常駐アプリケーション68により記憶部62に記憶された内容を変更する処理について説明する。図15のように、常駐アプリケーション68は、ユーザから入力された命令が、記憶部62に記憶された通知先のアプリケーションを変更するものであるかどうかを判断するステップS100。通知先のアプリケーションを変更するものである場合Yesの場合、常駐アプリケーション68は、記憶部62に記憶された通知先のアプリケーションを、ユーザから入力された命令に基づき変更するステップS102。次いで、常駐アプリケーション68は、ユーザから入力された命令が、記憶部62に記憶されたキーコードと対応付けされたウィンドウメッセージを変更するものであるかどうかを判断するステップS104。ウィンドウメッセージを変更するものである場合Yesの場合、常駐アプリケーション68は、記憶部62に記憶されたキーコードと対応付けされたウィンドウメッセージを、ユーザから入力された命令に基づき変更するステップS106。以上説明してきたように、実施例2によれば、常駐アプリケーション68は、プリンタステータスに対応したキーコードがキーボードイベントとしてアクティブなアプリケーションに通知される前に、プリンタステータスに対応したキーコードを取得する。そして、常駐アプリケーション68は、記憶部62に記憶されたキーコードと対応付けされたウィンドウメッセージに基づき、取得したキーコードをウィンドウメッセージに変換し、変換したウィンドウメッセージを記憶部62に記憶された通知先のアプリケーションに通知する。このような制御により、プリンタステータスに関するデータを、アクティブなアプリケーションだけではなく、任意のアプリケーションに通知することができる。実施例2において、常駐アプリケーション68は、プリンタステータスに対応したキーコードをキーボードイベントWM_KEYDOWN/WM_KEYUPのウィンドウメッセージと仮想キーコードに変換する場合を例に示したがこれに限られる訳ではない。常駐アプリケーション68は、記憶部62に記憶されたキーコードと対応付けされたウィンドウメッセージに基づき、任意のウィンドウメッセージに変換する場合でもよい。また、ウィンドウメッセージは、1つのアプリケーションに通知するようにしてもよいし、複数のアプリケーションに同時に通知するようにしてもよい。即ち、記憶部62には、通知先のアプリケーションとして、1つのアプリケーションが記憶されている場合でも、複数のアプリケーションが記憶されている場合でもよい。また、記憶部62に複数のアプリケーションが記憶され、その中から、通知先のアプリケーションを選択できるようにしてもよい。図15で説明したように、常駐アプリケーション68は、記憶部62に記憶されたウィンドウメッセージの通知先のアプリケーションおよびキーコードと対応付けされたウィンドウメッセージを変更できる場合が好ましい。なお、通知先のアプリケーションの変更およびキーコードと対応付けされたウィンドウメッセージの変更は、常駐アプリケーション68が行う場合に限らず、例えば印刷アプリケーション12、第1アプリケーション64、第2アプリケーション66が行う場合でもよい。実施例2では、コンピュータ10は、Windows登録商標オペレーティングシステムを備えている場合を例に説明したが、プリンタ40から送信されたキーコードをキーボードイベント発生前に取得するキーコードフックが可能であれば、その他のオペレーティングシステムを備えている場合でもよい。また、実施例2では、プリンタ40からのキーコードを取得する方法としてキーコードフックを用いているが、キーボードイベント発生前にキーコードの取得が可能であればその他の方法を用いてもよい。なお、本発明は、上述した実施例に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。