- PR -

Robotクラスによる正確なキーイベントの発行について

1
投稿者投稿内容
こうじえん
会議室デビュー日: 2004/04/29
投稿数: 4
投稿日時: 2004-04-30 11:43
はじめまして、こうじえんといいます。

Robotクラスを使って、ウィンドウへ正確なキーコードを送ることができずにいます。
何かわかる方いらっしゃいましたら ご教授お願います。


現在、java.awt.Robotクラスを使って、アクティブウィンドウにキーイベント
を発行するアプリを作っています。
キーイベントの発行は、RobotのkeyPress()とkeyRelease()を使って実現して
いますが、このメソッドを使った場合、ある特定のキーを認識してくれないと
いう事象が発生しました。

この問題が発生するのは、今わかっているもので矢印キーがあります。
矢印キーは、本来の矢印キーとNUMパッド上の矢印キー(NUMパッドoff時)があ
るかと思います。
私のアプリでは、これらを別のキーとして発行する必要があるのです。
しかし、RobotのkeyPress()とkeyRelease()のパラメタにはキーコードしか指
定できず、KeyEvent.VK_DOWNを指定した場合、常にNUMパッド上の矢印キーと
して処理されてしまいます。

そのため、それぞれの矢印キーを別のキーとして処理するウィンドウに対して
は正しくキーイベントを発行できない状態です。
そこで、以下の点について教えて頂きたくよろしくお願いします。

・アプリ側からキーイベントを正しく発行する手段はないのでしょうか?
・キーイベントが正しく処理できる便利なライブラリはないでしょうか?

補足1:
 アクティブウィンドウには、Notepadのようにあらゆるウィンドウが対象と
 なります。
補足2:
 j2sdk 1.4からは、KeyEventにlocationという属性が追加されています。
 JFrameを使って、でキーイベントを受け取った場合のキーコードとロケー
 ションは次のとおりです。
 
  「下矢印キー」の場合
    code = KeyEvent.VK_DOWN
    location = KeyEvent.KEY_LOCATION_STANDARD
  「数値パッドの2」(NUMロックoff)の場合
    code = KeyEvent.VK_DOWN
    location = KeyEvent.KEY_LOCATION_NUMPAD

環境は、次の通りです。
 Widnows XP Professional SP1
 Java 2 SDK SE v1.4.2_03

#[訂正] 文中の次の行を"として処理する"->"として発行する"に訂正しました
私のアプリでは、これらを別のキーとして処理する必要があるのです。


[ メッセージ編集済み 編集者: こうじえん 編集日時 2004-04-30 11:57 ]
1

スキルアップ/キャリアアップ(JOB@IT)