import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.cli.Option;
import org.jline.builtins.Less;
import org.jline.builtins.Source;
import org.jline.keymap.BindingReader;
import org.jline.keymap.KeyMap;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
import org.jline.utils.InfoCmp.Capability;
public class TestArrowKeys {
public static void main(String[] args) throws IOException, InterruptedException {
try (Terminal terminal = TerminalBuilder
.builder()
.jna(true)
.build()) {
// this works
/*
Less less = new Less(terminal, new File(".").getAbsoluteFile().toPath());
List<Source> sources = new ArrayList<>();
sources.add(new Source.PathSource(new File("pom.xml"), "pom.xml"));
less.run(sources);
*/
// this doesn't
BindingReader bindingReader = new BindingReader(terminal.reader());
KeyMap<Operation> keyMap = new KeyMap<>();
keyMap.bind(Operation.UP, key(terminal, Capability.key_up));
keyMap.bind(Operation.DOWN, key(terminal, Capability.key_down));
keyMap.bind(Operation.COMMAND, Arrays.asList("a", "b", "c", "d"));
terminal.writer().flush();
while (true) {
Operation op = bindingReader.readBinding(keyMap);
System.out.println("read op: " + op);
}
}
}
public enum Operation {
UP,
DOWN,
COMMAND
}
}