@Override public void handle( final Terminal.Signal signal, final Terminal.SignalHandler signalHandler ) { terminal.handle(signal, signalHandler); }
private static Terminal buildTerminal() { try { final Terminal terminal = TerminalBuilder.builder().system(true).build(); // Ignore ^C when not reading a line terminal.handle(Terminal.Signal.INT, Terminal.SignalHandler.SIG_IGN); return terminal; } catch (final IOException e) { throw new RuntimeException("JLineTerminal failed to start!", e); } } }
private Tuple2<Attributes, Map<Signal, SignalHandler>> prepareTerminal() { final Terminal terminal = client.getTerminal(); final Attributes prevAttributes = terminal.getAttributes(); // adopted from org.jline.builtins.Nano // see also https://en.wikibooks.org/wiki/Serial_Programming/termios#Basic_Configuration_of_a_Serial_Interface // no line processing // canonical mode off, echo off, echo newline off, extended input processing off Attributes newAttr = new Attributes(prevAttributes); newAttr.setLocalFlags(EnumSet.of(LocalFlag.ICANON, LocalFlag.ECHO, LocalFlag.IEXTEN), false); // turn off input processing newAttr.setInputFlags(EnumSet.of(Attributes.InputFlag.IXON, Attributes.InputFlag.ICRNL, Attributes.InputFlag.INLCR), false); // one input byte is enough to return from read, inter-character timer off newAttr.setControlChar(Attributes.ControlChar.VMIN, 1); newAttr.setControlChar(Attributes.ControlChar.VTIME, 0); newAttr.setControlChar(Attributes.ControlChar.VINTR, 0); terminal.setAttributes(newAttr); final Map<Signal, SignalHandler> prevSignals = new HashMap<>(); prevSignals.put(Signal.WINCH, terminal.handle(Signal.WINCH, this::handleSignal)); prevSignals.put(Signal.INT, terminal.handle(Signal.INT, this::handleSignal)); prevSignals.put(Signal.QUIT, terminal.handle(Signal.QUIT, this::handleSignal)); return Tuple2.of(prevAttributes, prevSignals); }
private void restoreTerminal(TerminalStatus status) { // Signal handlers terminal.handle(Terminal.Signal.INT, status.handler_INT); terminal.handle(Terminal.Signal.QUIT, status.handler_QUIT); terminal.handle(Terminal.Signal.TSTP, status.handler_TSTP); terminal.handle(Terminal.Signal.CONT, status.handler_CONT); terminal.handle(Terminal.Signal.WINCH, status.handler_WINCH); // Attributes terminal.setAttributes(status.attributes); // Capability terminal.puts(InfoCmp.Capability.exit_ca_mode); terminal.puts(InfoCmp.Capability.cursor_visible); }
public JLineTerminal(org.jline.terminal.Terminal terminal) { this.terminal = terminal; for (Signal signal : Signal.values()) { terminal.handle(signal, this::handle); handlers.put(signal, SignalHandler.SIG_DFL); } }
public JLineTerminal(org.jline.terminal.Terminal terminal) { this.terminal = terminal; for (Signal signal : Signal.values()) { terminal.handle(signal, this::handle); handlers.put(signal, SignalHandler.SIG_DFL); } }
@Override public SignalHandler handle(Signal signal, SignalHandler signalHandler) { return delegate().handle(signal, signalHandler); }
@Override public SignalHandler handle(Signal signal, SignalHandler signalHandler) { return delegate().handle(signal, signalHandler); }
@Override public Object execute() throws Exception { if (arguments == null || arguments.length() == 0) { System.err.println("Argument expected"); } else { WatchTask watchTask = new WatchTask(); executorService.scheduleAtFixedRate(watchTask, 0, interval, TimeUnit.SECONDS); try { Terminal terminal = (Terminal) session.get(".jline.terminal"); Terminal.SignalHandler prev = terminal.handle(Terminal.Signal.INT, this::abort); Attributes attr = terminal.enterRawMode(); try { reading = Thread.currentThread(); while (terminal.reader().read(1) == NonBlockingReader.READ_EXPIRED); } finally { reading = null; terminal.setAttributes(attr); terminal.handle(Terminal.Signal.INT, prev); } } catch (InterruptedIOException e) { // Ignore } finally { abort = true; executorService.shutdownNow(); } } return null; }
@Override public Object execute() throws Exception { if (arguments == null || arguments.length() == 0) { System.err.println("Argument expected"); } else { WatchTask watchTask = new WatchTask(); executorService.scheduleAtFixedRate(watchTask, 0, interval, TimeUnit.SECONDS); try { Terminal terminal = (Terminal) session.get(".jline.terminal"); Terminal.SignalHandler prev = terminal.handle(Terminal.Signal.INT, this::abort); Attributes attr = terminal.enterRawMode(); try { reading = Thread.currentThread(); while (terminal.reader().read(1) == NonBlockingReader.READ_EXPIRED); } finally { reading = null; terminal.setAttributes(attr); terminal.handle(Terminal.Signal.INT, prev); } } catch (InterruptedIOException e) { // Ignore } finally { abort = true; executorService.shutdownNow(); } } return null; }
prevStatus.handler_INT = terminal.handle(Terminal.Signal.INT, this::handleSignal); prevStatus.handler_QUIT = terminal.handle(Terminal.Signal.QUIT, this::handleSignal); prevStatus.handler_TSTP = terminal.handle(Terminal.Signal.TSTP, this::handleSignal); prevStatus.handler_CONT = terminal.handle(Terminal.Signal.CONT, this::handleSignal); prevStatus.handler_WINCH = terminal.handle(Terminal.Signal.WINCH, this::handleSignal);
public void run() throws IOException { SignalHandler prevWinchHandler = terminal.handle(Signal.WINCH, this::resize); SignalHandler prevIntHandler = terminal.handle(Signal.INT, this::interrupt); SignalHandler prevSuspHandler = terminal.handle(Signal.TSTP, this::suspend); Attributes attributes = terminal.enterRawMode(); terminal.puts(Capability.enter_ca_mode); terminal.flush(); terminal.setAttributes(attributes); terminal.handle(Signal.WINCH, prevWinchHandler); terminal.handle(Signal.INT, prevIntHandler); terminal.handle(Signal.TSTP, prevSuspHandler);
public void run() throws IOException { SignalHandler prevWinchHandler = terminal.handle(Signal.WINCH, this::resize); SignalHandler prevIntHandler = terminal.handle(Signal.INT, this::interrupt); SignalHandler prevSuspHandler = terminal.handle(Signal.TSTP, this::suspend); Attributes attributes = terminal.enterRawMode(); terminal.puts(Capability.enter_ca_mode); terminal.flush(); terminal.setAttributes(attributes); terminal.handle(Signal.WINCH, prevWinchHandler); terminal.handle(Signal.INT, prevIntHandler); terminal.handle(Signal.TSTP, prevSuspHandler);
_reader .getTerminal() .handle(org.jline.terminal.Terminal.Signal.INT, signal -> handleSigInt());
SignalHandler intHandler = terminal.handle(Signal.INT, s -> { Job current = session.foregroundJob(); if (current != null) { SignalHandler suspHandler = terminal.handle(Signal.TSTP, s -> { Job current = session.foregroundJob(); if (current != null) { terminal.handle(Signal.INT, intHandler); terminal.handle(Signal.TSTP, suspHandler);