x-term support by @perkinslr, old PR had too many conflicts to easily merged just copy and pasted.

This commit is contained in:
JacksonAbney
2025-03-23 01:21:51 -08:00
parent d075cb8463
commit 63b7eb5394
2 changed files with 50 additions and 0 deletions

View File

@@ -79,6 +79,22 @@ public abstract class AbstractMachineTerminalScreen<T extends AbstractMachineTer
super.charTyped(ch, modifiers);
}
@Override
public boolean mouseClicked(final double x, final double y, final int button) {
if (!terminalWidget.mouseClicked(x,y,button)) {
return super.mouseClicked(x, y, button);
}
return true;
}
@Override
public boolean mouseReleased(final double x, final double y, final int button) {
if (!terminalWidget.mouseReleased(x,y,button)) {
return super.mouseReleased(x, y, button);
}
return true;
}
@Override
public boolean keyPressed(final int keyCode, final int scanCode, final int modifiers) {
if (terminalWidget.keyPressed(keyCode, scanCode, modifiers)) {

View File

@@ -117,6 +117,40 @@ public final class MachineTerminalWidget {
}
}
public boolean mouseClicked( double x, double y, int button) {
int mx = (int) x;
int my = (int) y;
int sx = (int)((x - MachineTerminalWidget.TERMINAL_X) / MachineTerminalWidget.TERMINAL_WIDTH * Terminal.WIDTH);
int sy = (int)((y - MachineTerminalWidget.TERMINAL_Y) / MachineTerminalWidget.TERMINAL_HEIGHT * Terminal.HEIGHT);
boolean overTerminal = isMouseOverTerminal(mx, my);
if (overTerminal && shouldCaptureInput()) {
terminal.putInput((byte) 0x1b);
terminal.putInput((byte) '[');
terminal.putInput((byte) button);
terminal.putInput((byte) sx);
terminal.putInput((byte) sy);
return true;
}
return false;
}
public boolean mouseReleased(double x, double y, int button) {
int mx = (int) x;
int my = (int) y;
int sx = (int)((x - MachineTerminalWidget.TERMINAL_X) / MachineTerminalWidget.TERMINAL_WIDTH * Terminal.WIDTH);
int sy = (int)((y - MachineTerminalWidget.TERMINAL_Y) / MachineTerminalWidget.TERMINAL_HEIGHT * Terminal.HEIGHT);
boolean overTerminal = isMouseOverTerminal(mx, my);
if (overTerminal && shouldCaptureInput()) {
terminal.putInput((byte) 0x1b);
terminal.putInput((byte) '[');
terminal.putInput((byte) 3);
terminal.putInput((byte) sx);
terminal.putInput((byte) sy);
return true;
}
return false;
}
public boolean charTyped(final char ch, final int modifier) {
if (modifier == 0 || modifier == GLFW.GLFW_MOD_SHIFT) {
terminal.putInput((byte) ch);