*/
package jexer.tterminal;
+import java.io.BufferedOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
}
}
+ /**
+ * The enclosing listening object.
+ */
+ private DisplayListener listener;
+
+ /**
+ * Set a listening object.
+ *
+ * @param listener the object that will have displayChanged() called
+ * after bytes are received from the remote terminal
+ */
+ public void setListener(final DisplayListener listener) {
+ this.listener = listener;
+ }
+
/**
* When true, the reader thread is expected to exit.
*/
}
if (type == DeviceType.XTERM) {
this.input = new InputStreamReader(this.inputStream, "UTF-8");
- this.output = new OutputStreamWriter(outputStream, "UTF-8");
+ this.output = new OutputStreamWriter(new
+ BufferedOutputStream(outputStream), "UTF-8");
this.outputStream = null;
} else {
this.output = null;
- this.outputStream = outputStream;
+ this.outputStream = new BufferedOutputStream(outputStream);
}
reset();
if (keypress.equalsWithoutModifiers(kbPgUp)) {
switch (type) {
case XTERM:
- switch (arrowKeyMode) {
- case ANSI:
- return xtermBuildKeySequence("\033[", '5', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- case VT52:
- return xtermBuildKeySequence("\033", '5', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- case VT100:
- return xtermBuildKeySequence("\033O", '5', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- }
+ return xtermBuildKeySequence("\033[", '5', '~',
+ keypress.isCtrl(), keypress.isAlt(),
+ keypress.isShift());
default:
return "\033[5~";
}
if (keypress.equalsWithoutModifiers(kbPgDn)) {
switch (type) {
case XTERM:
- switch (arrowKeyMode) {
- case ANSI:
- return xtermBuildKeySequence("\033[", '6', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- case VT52:
- return xtermBuildKeySequence("\033", '6', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- case VT100:
- return xtermBuildKeySequence("\033O", '6', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- }
+ return xtermBuildKeySequence("\033[", '6', '~',
+ keypress.isCtrl(), keypress.isAlt(),
+ keypress.isShift());
default:
return "\033[6~";
}
if (keypress.equalsWithoutModifiers(kbIns)) {
switch (type) {
case XTERM:
- switch (arrowKeyMode) {
- case ANSI:
- return xtermBuildKeySequence("\033[", '2', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- case VT52:
- return xtermBuildKeySequence("\033", '2', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- case VT100:
- return xtermBuildKeySequence("\033O", '2', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- }
+ return xtermBuildKeySequence("\033[", '2', '~',
+ keypress.isCtrl(), keypress.isAlt(),
+ keypress.isShift());
default:
return "\033[2~";
}
if (keypress.equalsWithoutModifiers(kbDel)) {
switch (type) {
case XTERM:
- switch (arrowKeyMode) {
- case ANSI:
- return xtermBuildKeySequence("\033[", '3', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- case VT52:
- return xtermBuildKeySequence("\033", '3', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- case VT100:
- return xtermBuildKeySequence("\033O", '3', '~',
- keypress.isCtrl(), keypress.isAlt(),
- keypress.isShift());
- }
+ return xtermBuildKeySequence("\033[", '3', '~',
+ keypress.isCtrl(), keypress.isAlt(),
+ keypress.isShift());
default:
// Delete sends real delete for VTxxx
return "\177";
consume((char)ch);
}
}
+ // Permit my enclosing UI to know that I updated.
+ if (listener != null) {
+ listener.displayChanged();
+ }
}
// System.err.println("end while loop"); System.err.flush();
} catch (IOException e) {