case XTERM:
// "I am a VT220" - 7 bit version
if (!s8c1t) {
- return "\033[?62;1;6c";
+ return "\033[?62;1;6;9;4c";
}
// "I am a VT220" - 8 bit version
- return "\u009b?62;1;6c";
+ return "\u009b?62;1;6;9;4c";
default:
throw new IllegalArgumentException("Invalid device type: " + type);
}
*
* @param width the new width
*/
- public final void setWidth(final int width) {
+ public final synchronized void setWidth(final int width) {
this.width = width;
rightMargin = width - 1;
if (currentState.cursorX >= width) {
*
* @param height the new height
*/
- public final void setHeight(final int height) {
+ public final synchronized void setHeight(final int height) {
int delta = height - this.height;
this.height = height;
scrollRegionBottom += delta;
int i = getCsiParam(0, 0);
if (!xtermPrivateModeFlag) {
- if (i == 14) {
- // Report xterm window in pixels as CSI 4 ; height ; width t
+ switch (i) {
+ case 14:
+ // Report xterm text area size in pixels as CSI 4 ; height ;
+ // width t
writeRemote(String.format("\033[4;%d;%dt", textHeight * height,
textWidth * width));
+ break;
+ case 16:
+ // Report character size in pixels as CSI 6 ; height ; width
+ // t
+ writeRemote(String.format("\033[6;%d;%dt", textHeight,
+ textWidth));
+ break;
+ case 18:
+ // Report the text are size in characters as CSI 8 ; height ;
+ // width t
+ writeRemote(String.format("\033[8;%d;%dt", height, width));
+ break;
+ default:
+ break;
}
}
}