BDJ: implement AWT mouse events
This commit is contained in:
parent
8fc54d7bf8
commit
4a0c87e530
|
@ -1,6 +1,7 @@
|
|||
2019-??-??: Version 1.2.0
|
||||
- Add functions to list and read BD-ROM files.
|
||||
- Add support for separate key pressed / typed / released user input events.
|
||||
- Add support for AWT mouse events (BD-J).
|
||||
|
||||
2019-06-07: Version 1.1.2
|
||||
- Add libxml version to pkg-config Requires.private.
|
||||
|
|
|
@ -22,6 +22,7 @@ package java.awt;
|
|||
|
||||
import java.awt.event.InvocationEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
import org.videolan.Logger;
|
||||
|
||||
|
@ -70,13 +71,53 @@ public class BDJHelper {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Mouse events
|
||||
*/
|
||||
|
||||
private static int mouseX = 0, mouseY = 0, mouseMask = 0;
|
||||
|
||||
public static boolean postMouseEvent(int x, int y) {
|
||||
mouseX = x;
|
||||
mouseY = y;
|
||||
return postMouseEventImpl(MouseEvent.MOUSE_MOVED, MouseEvent.NOBUTTON);
|
||||
}
|
||||
|
||||
public static boolean postMouseEvent(int id) {
|
||||
boolean r;
|
||||
|
||||
if (id == MouseEvent.MOUSE_PRESSED)
|
||||
mouseMask = MouseEvent.BUTTON1_MASK;
|
||||
|
||||
r = postMouseEventImpl(id, MouseEvent.BUTTON1);
|
||||
|
||||
if (id == MouseEvent.MOUSE_RELEASED)
|
||||
mouseMask = 0;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
private static boolean postMouseEventImpl(int id, int button) {
|
||||
Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getGlobalFocusOwner();
|
||||
if (focusOwner != null) {
|
||||
EventQueue eq = BDToolkit.getEventQueue(focusOwner);
|
||||
if (eq != null) {
|
||||
long when = System.currentTimeMillis();
|
||||
try {
|
||||
eq.postEvent(new MouseEvent(focusOwner, id, when, mouseMask, mouseX, mouseY,
|
||||
(id == MouseEvent.MOUSE_CLICKED) ? 1 : 0, false, button));
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
logger.error("postMouseEvent failed: " + e);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean postMouseEvent(int button) {
|
||||
return false;
|
||||
}
|
||||
/*
|
||||
* Key events
|
||||
*/
|
||||
|
||||
public static boolean postKeyEvent(int id, int modifiers, int keyCode) {
|
||||
Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getGlobalFocusOwner();
|
||||
|
|
|
@ -23,6 +23,7 @@ package org.videolan;
|
|||
import java.awt.BDFontMetrics;
|
||||
import java.awt.BDToolkit;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
@ -724,7 +725,16 @@ public class Libbluray {
|
|||
case 405: key = HRcEvent.VK_COLORED_KEY_2; break;
|
||||
case 406: key = HRcEvent.VK_COLORED_KEY_3; break;
|
||||
case 17:
|
||||
result = java.awt.BDJHelper.postMouseEvent(0);
|
||||
result = false;
|
||||
if ((param & 0x80000000) != 0) {
|
||||
result = java.awt.BDJHelper.postMouseEvent(MouseEvent.MOUSE_PRESSED) || result;
|
||||
}
|
||||
if ((param & 0x40000000) != 0) {
|
||||
result = java.awt.BDJHelper.postMouseEvent(MouseEvent.MOUSE_CLICKED) || result;
|
||||
}
|
||||
if ((param & 0x20000000) != 0) {
|
||||
result = java.awt.BDJHelper.postMouseEvent(MouseEvent.MOUSE_RELEASED) || result;
|
||||
}
|
||||
key = -1;
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue