1
0
Fork 0

BDJ: implement AWT mouse events

This commit is contained in:
hpi1 2019-06-13 19:11:06 +03:00
parent 8fc54d7bf8
commit 4a0c87e530
3 changed files with 56 additions and 4 deletions

View File

@ -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.

View File

@ -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();

View File

@ -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: