ショートカットでアクセスした貼り付けを解除したいCTRL + V
。そもそもキープレスを取得するためにJNativeHookを使用しています。これは私のテストクラスです:
public class CopyCancelingTest {
public static void main (String[] args) {
Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
logger.setLevel(Level.WARNING);
logger.setUseParentHandlers(false);
try {
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex) {
System.err.println(ex.getMessage());
System.exit(1);
}
GlobalScreen.addNativeKeyListener(new KeyListenerTest());
}
}
class KeyListenerTest implements NativeKeyListener {
boolean controlDown;
Clipboard board = Toolkit.getDefaultToolkit().getSystemClipboard();
@Override
public void nativeKeyPressed(NativeKeyEvent e) {
if (e.getKeyCode() == NativeKeyEvent.VC_CONTROL)
controlDown = true;
if (e.getKeyCode() == NativeKeyEvent.VC_V && controlDown) {
board.setContents(new StringSelection(""), null);
}
}
@Override
public void nativeKeyReleased(NativeKeyEvent e) {
if(e.getKeyCode() == NativeKeyEvent.VC_CONTROL)
controlDown = false;
}
@Override
public void nativeKeyTyped(NativeKeyEvent e) {
}
}
main メソッドはほとんど無視できることに注意してください。コンソールを読み取れなくすることなく、NativeKeyListener を開始するだけです。
ご覧のように。CTRL + V
が押されたときに、クリップボードを空の文字列に設定しています。これには欠陥があります。2回実行した場合にのみ機能します。最初の実行では、期待どおりにコンテンツが貼り付けられます。それで、このグローバルキープレスをクリーンで機能する方法でキャンセルする方法はありますか? JNativeHook である必要はありません。