1

私の現在のプロジェクトには、Java の Robot クラスを使用した自動化が含まれており、キーの押下をシミュレートしています。keypress(int keycode)私の問題は、ロボットのメソッドに渡すには特定のキーコードが無効であることです。

私がすでに知っていること:

この質問の解決策を読んだ後:なぜ一部の KeyEvent キーコードが IllegalArgumentException: Invalid key ocodeをスローするのかを読んだ後、コードの変更を開始し、 to 、 to などの特定の記号を変更£ (VK_DOLLAR)VK_SHIFT + VK_3まし& (VK_AMPERSAND)VK_SHIT + VK_7...

私の質問:

ただし、私の質問は、シフトと組み合わせたときにどのキーがどの記号を与えるかを決定する方法です。これは、キーボードが異なると (多くの場合、OS とは異なるキーボード構成)、これらが変更されるためです。

典型的な例は、@ (at symbol) and " (double quote). VK_SHIFT + VK_2一部のシステムではアットマークである場合があり、他のシステムでは二重引用符である場合があります。

ロボットのキープレスを呼び出す前に、シンボルがどのキーに依存しているかをJavaで確認する方法はありますか?

前もって感謝します。

4

1 に答える 1

1

ロボットを使用しているとき、私はすでに IllegalArgumentException を経験しました。それは、キーボード レイアウトのせいです。私の解決策は、Alt コードを使用することでした。

public static void alt(int event1, int event2, int event3, int event4) throws Exception {

Robot bot = new Robot();
bot.delay(50); //Optional
    bot.keyPress(KeyEvent.VK_ALT);

        bot.keyPress(event1);
        bot.keyRelease(event1);

        bot.keyPress(event2);
        bot.keyRelease(event2);

        bot.keyPress(event3);
        bot.keyRelease(event3);

        bot.keyPress(event4);
        bot.keyRelease(event4);

    bot.keyRelease(KeyEvent.VK_ALT);

}

Altコードを簡単に送信できます。

たとえば、アンパサンドが必要な場合は、次を使用しますalt(KeyEvent.VK_NUMPAD0, KeyEvent.VK_NUMPAD0, KeyEvent.VK_NUMPAD3, KeyEvent.VK_NUMPAD8);

Num Lock がオンになっていることを確認する必要があります。

必要な代替コードを取得するのに役立つサイトは、http://www.alt-codes.net/です。

于 2012-12-26T13:04:11.990 に答える