in shell/ssh/src/main/java/org/apache/karaf/shell/ssh/SshTerminal.java [43:136]
public SshTerminal(Environment environment, InputStream input, OutputStream output, String encoding) throws IOException {
super("Karaf SSH terminal",
environment.getEnv().get(Environment.ENV_TERM),
input,
output,
Charset.forName(encoding));
this.environment = environment;
this.environment.addSignalListener(this::handleSignal);
for (Map.Entry<PtyMode, Integer> e : environment.getPtyModes().entrySet()) {
switch (e.getKey()) {
case VINTR:
attributes.setControlChar(ControlChar.VINTR, e.getValue());
break;
case VQUIT:
attributes.setControlChar(ControlChar.VQUIT, e.getValue());
break;
case VERASE:
attributes.setControlChar(ControlChar.VERASE, e.getValue());
break;
case VKILL:
attributes.setControlChar(ControlChar.VKILL, e.getValue());
break;
case VEOF:
attributes.setControlChar(ControlChar.VEOF, e.getValue());
break;
case VEOL:
attributes.setControlChar(ControlChar.VEOL, e.getValue());
break;
case VEOL2:
attributes.setControlChar(ControlChar.VEOL2, e.getValue());
break;
case VSTART:
attributes.setControlChar(ControlChar.VSTART, e.getValue());
break;
case VSTOP:
attributes.setControlChar(ControlChar.VSTOP, e.getValue());
break;
case VSUSP:
attributes.setControlChar(ControlChar.VSUSP, e.getValue());
break;
case VDSUSP:
attributes.setControlChar(ControlChar.VDSUSP, e.getValue());
break;
case VREPRINT:
attributes.setControlChar(ControlChar.VREPRINT, e.getValue());
break;
case VWERASE:
attributes.setControlChar(ControlChar.VWERASE, e.getValue());
break;
case VLNEXT:
attributes.setControlChar(ControlChar.VLNEXT, e.getValue());
break;
case VSTATUS:
attributes.setControlChar(ControlChar.VSTATUS, e.getValue());
break;
case VDISCARD:
attributes.setControlChar(ControlChar.VDISCARD, e.getValue());
break;
case ECHO:
attributes.setLocalFlag(LocalFlag.ECHO, e.getValue() != 0);
break;
case ICANON:
attributes.setLocalFlag(LocalFlag.ICANON, e.getValue() != 0);
break;
case ISIG:
attributes.setLocalFlag(LocalFlag.ISIG, e.getValue() != 0);
break;
case ICRNL:
attributes.setInputFlag(InputFlag.ICRNL, e.getValue() != 0);
break;
case INLCR:
attributes.setInputFlag(InputFlag.INLCR, e.getValue() != 0);
break;
case IGNCR:
attributes.setInputFlag(InputFlag.IGNCR, e.getValue() != 0);
break;
case OCRNL:
attributes.setOutputFlag(OutputFlag.OCRNL, e.getValue() != 0);
break;
case ONLCR:
attributes.setOutputFlag(OutputFlag.ONLCR, e.getValue() != 0);
break;
case ONLRET:
attributes.setOutputFlag(OutputFlag.ONLRET, e.getValue() != 0);
break;
case OPOST:
attributes.setOutputFlag(OutputFlag.OPOST, e.getValue() != 0);
break;
}
}
int w = Integer.parseInt(this.environment.getEnv().get(Environment.ENV_COLUMNS));
int h = Integer.parseInt(this.environment.getEnv().get(Environment.ENV_LINES));
setSize(new Size(w, h));
}