git://git.nikiroo.be
/
fanfix.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
generate frames with javadoc
[fanfix.git]
/
src
/
jexer
/
backend
/
ECMA48Terminal.java
diff --git
a/src/jexer/backend/ECMA48Terminal.java
b/src/jexer/backend/ECMA48Terminal.java
index 05c7575e1914ea9658b47bf2ce79b473c602d936..3933d22f5092140b579dc39a44b9de558eecc328 100644
(file)
--- a/
src/jexer/backend/ECMA48Terminal.java
+++ b/
src/jexer/backend/ECMA48Terminal.java
@@
-51,6
+51,7
@@
import jexer.TImage;
import jexer.bits.Cell;
import jexer.bits.CellAttributes;
import jexer.bits.Color;
import jexer.bits.Cell;
import jexer.bits.CellAttributes;
import jexer.bits.Color;
+import jexer.bits.StringUtils;
import jexer.event.TCommandEvent;
import jexer.event.TInputEvent;
import jexer.event.TKeypressEvent;
import jexer.event.TCommandEvent;
import jexer.event.TInputEvent;
import jexer.event.TKeypressEvent;
@@
-242,11
+243,6
@@
public class ECMA48Terminal extends LogicalScreen
*/
private ImageCache jexerCache = null;
*/
private ImageCache jexerCache = null;
- /**
- * Base64 encoder used by iTerm2 and Jexer images.
- */
- private java.util.Base64.Encoder base64 = null;
-
/**
* If true, then we changed System.in and need to change it back.
*/
/**
* If true, then we changed System.in and need to change it back.
*/
@@
-1172,11
+1168,12
@@
public class ECMA48Terminal extends LogicalScreen
// Enable mouse reporting and metaSendsEscape
this.output.printf("%s%s", mouse(true), xtermMetaSendsEscape(true));
// Enable mouse reporting and metaSendsEscape
this.output.printf("%s%s", mouse(true), xtermMetaSendsEscape(true));
- this.output.flush();
// Request xterm use the sixel settings we want
this.output.printf("%s", xtermSetSixelSettings());
// Request xterm use the sixel settings we want
this.output.printf("%s", xtermSetSixelSettings());
+ this.output.flush();
+
// Query the screen size
sessionInfo.queryWindowSize();
setDimensions(sessionInfo.getWindowWidth(),
// Query the screen size
sessionInfo.queryWindowSize();
setDimensions(sessionInfo.getWindowWidth(),
@@
-1264,11
+1261,12
@@
public class ECMA48Terminal extends LogicalScreen
// Enable mouse reporting and metaSendsEscape
this.output.printf("%s%s", mouse(true), xtermMetaSendsEscape(true));
// Enable mouse reporting and metaSendsEscape
this.output.printf("%s%s", mouse(true), xtermMetaSendsEscape(true));
- this.output.flush();
// Request xterm use the sixel settings we want
this.output.printf("%s", xtermSetSixelSettings());
// Request xterm use the sixel settings we want
this.output.printf("%s", xtermSetSixelSettings());
+ this.output.flush();
+
// Query the screen size
sessionInfo.queryWindowSize();
setDimensions(sessionInfo.getWindowWidth(),
// Query the screen size
sessionInfo.queryWindowSize();
setDimensions(sessionInfo.getWindowWidth(),
@@
-2240,10
+2238,13
@@
public class ECMA48Terminal extends LogicalScreen
boolean eventMouse3 = false;
boolean eventMouseWheelUp = false;
boolean eventMouseWheelDown = false;
boolean eventMouse3 = false;
boolean eventMouseWheelUp = false;
boolean eventMouseWheelDown = false;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
// System.err.printf("buttons: %04x\r\n", buttons);
// System.err.printf("buttons: %04x\r\n", buttons);
- switch (buttons) {
+ switch (buttons
& 0xE3
) {
case 0:
eventMouse1 = true;
mouse1 = true;
case 0:
eventMouse1 = true;
mouse1 = true;
@@
-2325,9
+2326,21
@@
public class ECMA48Terminal extends LogicalScreen
eventType = TMouseEvent.Type.MOUSE_MOTION;
break;
}
eventType = TMouseEvent.Type.MOUSE_MOTION;
break;
}
+
+ if ((buttons & 0x04) != 0) {
+ eventShift = true;
+ }
+ if ((buttons & 0x08) != 0) {
+ eventAlt = true;
+ }
+ if ((buttons & 0x10) != 0) {
+ eventCtrl = true;
+ }
+
return new TMouseEvent(eventType, x, y, x, y,
eventMouse1, eventMouse2, eventMouse3,
return new TMouseEvent(eventType, x, y, x, y,
eventMouse1, eventMouse2, eventMouse3,
- eventMouseWheelUp, eventMouseWheelDown);
+ eventMouseWheelUp, eventMouseWheelDown,
+ eventAlt, eventCtrl, eventShift);
}
/**
}
/**
@@
-2362,12
+2375,15
@@
public class ECMA48Terminal extends LogicalScreen
boolean eventMouse3 = false;
boolean eventMouseWheelUp = false;
boolean eventMouseWheelDown = false;
boolean eventMouse3 = false;
boolean eventMouseWheelUp = false;
boolean eventMouseWheelDown = false;
+ boolean eventAlt = false;
+ boolean eventCtrl = false;
+ boolean eventShift = false;
if (release) {
eventType = TMouseEvent.Type.MOUSE_UP;
}
if (release) {
eventType = TMouseEvent.Type.MOUSE_UP;
}
- switch (buttons) {
+ switch (buttons
& 0xE3
) {
case 0:
eventMouse1 = true;
break;
case 0:
eventMouse1 = true;
break;
@@
-2424,9
+2440,21
@@
public class ECMA48Terminal extends LogicalScreen
// Unknown, bail out
return null;
}
// Unknown, bail out
return null;
}
+
+ if ((buttons & 0x04) != 0) {
+ eventShift = true;
+ }
+ if ((buttons & 0x08) != 0) {
+ eventAlt = true;
+ }
+ if ((buttons & 0x10) != 0) {
+ eventCtrl = true;
+ }
+
return new TMouseEvent(eventType, x, y, x, y,
eventMouse1, eventMouse2, eventMouse3,
return new TMouseEvent(eventType, x, y, x, y,
eventMouse1, eventMouse2, eventMouse3,
- eventMouseWheelUp, eventMouseWheelDown);
+ eventMouseWheelUp, eventMouseWheelDown,
+ eventAlt, eventCtrl, eventShift);
}
/**
}
/**
@@
-2858,12
+2886,20
@@
public class ECMA48Terminal extends LogicalScreen
}
jexerImages = true;
}
}
jexerImages = true;
}
+ if (x.equals("1337")) {
+ // Terminal reports iTerm2 images support
+ if (debugToStderr) {
+ System.err.println("Device Attributes: iTerm2 images");
+ }
+ iterm2Images = true;
+ }
}
if (jexerImages == false) {
// Terminal does not support Jexer images, disable
// them.
jexerImageOption = JexerImageOption.DISABLED;
}
}
if (jexerImages == false) {
// Terminal does not support Jexer images, disable
// them.
jexerImageOption = JexerImageOption.DISABLED;
}
+ resetParser();
return;
case 't':
// windowOps
return;
case 't':
// windowOps
@@
-3444,7
+3480,6
@@
public class ECMA48Terminal extends LogicalScreen
if (iterm2Cache == null) {
iterm2Cache = new ImageCache(height * 10);
if (iterm2Cache == null) {
iterm2Cache = new ImageCache(height * 10);
- base64 = java.util.Base64.getEncoder();
}
// Save and get rows to/from the cache that do NOT have inverted
}
// Save and get rows to/from the cache that do NOT have inverted
@@
-3637,7
+3672,7
@@
public class ECMA48Terminal extends LogicalScreen
getTextHeight())));
*/
sb.append("inline=1:");
getTextHeight())));
*/
sb.append("inline=1:");
- sb.append(
base64.encodeToString
(pngOutputStream.toByteArray()));
+ sb.append(
StringUtils.toBase64
(pngOutputStream.toByteArray()));
sb.append("\007");
if (saveInCache) {
sb.append("\007");
if (saveInCache) {
@@
-3694,7
+3729,6
@@
public class ECMA48Terminal extends LogicalScreen
if (jexerCache == null) {
jexerCache = new ImageCache(height * 10);
if (jexerCache == null) {
jexerCache = new ImageCache(height * 10);
- base64 = java.util.Base64.getEncoder();
}
// Save and get rows to/from the cache that do NOT have inverted
}
// Save and get rows to/from the cache that do NOT have inverted
@@
-3832,7
+3866,7
@@
public class ECMA48Terminal extends LogicalScreen
}
sb.append("\033]444;1;0;");
}
sb.append("\033]444;1;0;");
- sb.append(
base64.encodeToString
(pngOutputStream.toByteArray()));
+ sb.append(
StringUtils.toBase64
(pngOutputStream.toByteArray()));
sb.append("\007");
} else if (jexerImageOption == JexerImageOption.JPG) {
sb.append("\007");
} else if (jexerImageOption == JexerImageOption.JPG) {
@@
-3864,7
+3898,7
@@
public class ECMA48Terminal extends LogicalScreen
}
sb.append("\033]444;2;0;");
}
sb.append("\033]444;2;0;");
- sb.append(
base64.encodeToString
(jpgOutputStream.toByteArray()));
+ sb.append(
StringUtils.toBase64
(jpgOutputStream.toByteArray()));
sb.append("\007");
} else if (jexerImageOption == JexerImageOption.RGB) {
sb.append("\007");
} else if (jexerImageOption == JexerImageOption.RGB) {
@@
-3883,7
+3917,7
@@
public class ECMA48Terminal extends LogicalScreen
bytes[(py * stride * 3) + (px * 3) + 2] = (byte) ( rgb & 0xFF);
}
}
bytes[(py * stride * 3) + (px * 3) + 2] = (byte) ( rgb & 0xFF);
}
}
- sb.append(
base64.encodeToString
(bytes));
+ sb.append(
StringUtils.toBase64
(bytes));
sb.append("\007");
}
sb.append("\007");
}