org.jline.keymap.KeyMap类的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(14.8k)|赞(0)|评价(0)|浏览(145)

本文整理了Java中org.jline.keymap.KeyMap类的一些代码示例,展示了KeyMap类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。KeyMap类的具体详情如下:
包路径:org.jline.keymap.KeyMap
类名称:KeyMap

KeyMap介绍

[英]The KeyMap class contains all bindings from keys to operations.
[中]KeyMap类包含从键到操作的所有绑定。

代码示例

代码示例来源:origin: apache/flink

@Override
protected KeyMap<RowOperation> getKeys() {
  final KeyMap<RowOperation> keys = new KeyMap<>();
  keys.setAmbiguousTimeout(200); // make ESC quicker
  keys.bind(RowOperation.QUIT, "q", "Q", esc());
  keys.bind(RowOperation.UP, "w", "W", key(client.getTerminal(), Capability.key_up));
  keys.bind(RowOperation.DOWN, "s", "S", key(client.getTerminal(), Capability.key_down));
  keys.bind(RowOperation.LEFT, "a", "A", key(client.getTerminal(), Capability.key_left));
  keys.bind(RowOperation.RIGHT, "d", "D", key(client.getTerminal(), Capability.key_right));
  return keys;
}

代码示例来源:origin: apache/flink

@Override
protected KeyMap<InputOperation> getKeys() {
  final KeyMap<InputOperation> keys = new KeyMap<>();
  keys.setUnicode(INSERT);
  keys.setAmbiguousTimeout(200); // make ESC quicker
  for (char i = 32; i < 256; i++) {
    keys.bind(INSERT, Character.toString(i));
  }
  keys.bind(LEFT, key(client.getTerminal(), Capability.key_left));
  keys.bind(RIGHT, key(client.getTerminal(), Capability.key_right));
  keys.bind(BACKSPACE, del());
  if (client.isPlainTerminal()) {
    keys.bind(ENTER, "\r", "$");
    keys.bind(QUIT, key(client.getTerminal(), Capability.key_exit), "!");
  } else {
    keys.bind(ENTER, "\r");
    keys.bind(QUIT, esc());
  }
  return keys;
}

代码示例来源:origin: org.jline/jline-builtins

protected void bindKeys() {
  keys = new KeyMap<>();
  keys.setUnicode(Operation.INSERT);
    keys.bind(Operation.INSERT, Character.toString(i));
  keys.bind(Operation.BACKSPACE, del());
  for (char i = 'A'; i <= 'Z'; i++) {
    keys.bind(Operation.DO_LOWER_CASE, alt(i));
  keys.bind(Operation.HELP, ctrl('G'), key(terminal, Capability.key_f1));
  keys.bind(Operation.QUIT, ctrl('X'), key(terminal, Capability.key_f2));
  keys.bind(Operation.WRITE, ctrl('O'), key(terminal, Capability.key_f3));
  keys.bind(Operation.JUSTIFY_PARAGRAPH, ctrl('J'), key(terminal, Capability.key_f4));
  keys.bind(Operation.READ, ctrl('R'), key(terminal, Capability.key_f5));
  keys.bind(Operation.SEARCH, ctrl('W'), key(terminal, Capability.key_f6));
  keys.bind(Operation.PREV_PAGE, ctrl('Y'), key(terminal, Capability.key_f7));
  keys.bind(Operation.NEXT_PAGE, ctrl('V'), key(terminal, Capability.key_f8));
  keys.bind(Operation.CUT, ctrl('K'), key(terminal, Capability.key_f9));
  keys.bind(Operation.UNCUT, ctrl('U'), key(terminal, Capability.key_f10));
  keys.bind(Operation.CUR_POS, ctrl('C'), key(terminal, Capability.key_f11));
  keys.bind(Operation.TO_SPELL, ctrl('T'), key(terminal, Capability.key_f11));
  keys.bind(Operation.GOTO, ctrl('_'), key(terminal, Capability.key_f13), alt('g'));
  keys.bind(Operation.REPLACE, ctrl('\\'), key(terminal, Capability.key_f14), alt('r'));
  keys.bind(Operation.MARK, ctrl('^'), key(terminal, Capability.key_f15), alt('a'));
  keys.bind(Operation.NEXT_SEARCH, key(terminal, Capability.key_f16), alt('w'));

代码示例来源:origin: org.jline/jline

public KeyMap<Binding> emacs() {
  KeyMap<Binding> emacs = new KeyMap<>();
  bind(emacs, SET_MARK_COMMAND,                       ctrl('@'));
  bind(emacs, BEGINNING_OF_LINE,                      ctrl('A'));
  bind(emacs, BACKWARD_CHAR,                          ctrl('B'));
  bind(emacs, DELETE_CHAR_OR_LIST,                    ctrl('D'));
  bind(emacs, END_OF_LINE,                            ctrl('E'));
  bind(emacs, FORWARD_CHAR,                           ctrl('F'));
  bind(emacs, SEND_BREAK,                             ctrl('G'));
  bind(emacs, BACKWARD_DELETE_CHAR,                   ctrl('H'));
  bind(emacs, EXPAND_OR_COMPLETE,                     ctrl('I'));
  bind(emacs, ACCEPT_LINE,                            ctrl('J'));
  bind(emacs, KILL_LINE,                              ctrl('K'));
  bind(emacs, CLEAR_SCREEN,                           ctrl('L'));
  bind(emacs, ACCEPT_LINE,                            ctrl('M'));
  bind(emacs, DOWN_LINE_OR_HISTORY,                   ctrl('N'));
  bind(emacs, UP_LINE_OR_HISTORY,                     ctrl('P'));
  bind(emacs, HISTORY_INCREMENTAL_SEARCH_BACKWARD,    ctrl('R'));
  bind(emacs, HISTORY_INCREMENTAL_SEARCH_FORWARD,     ctrl('S'));
  bind(emacs, TRANSPOSE_CHARS,                        ctrl('T'));
  bind(emacs, KILL_WHOLE_LINE,                        ctrl('U'));
  bind(emacs, QUOTED_INSERT,                          ctrl('V'));
  bind(emacs, BACKWARD_KILL_WORD,                     ctrl('W'));
  bind(emacs, YANK,                                   ctrl('Y'));
  bind(emacs, CHARACTER_SEARCH,                       ctrl(']'));
  bind(emacs, UNDO,                                   ctrl('_'));
  bind(emacs, SELF_INSERT,                            range(" -~"));
  bind(emacs, INSERT_CLOSE_PAREN,                     ")");
  bind(emacs, INSERT_CLOSE_SQUARE,                    "]");
  bind(emacs, INSERT_CLOSE_CURLY,                     "}");

代码示例来源:origin: org.jline/jline-builtins

KeyMap<Binding> map = new KeyMap<>();
if (org != null) {
  for (Map.Entry<String, Binding> bound : org.getBoundKeys().entrySet()) {
    map.bind(bound.getValue(), bound.getKey());
boolean prefix = opt.isSet("p");
Set<String> toRemove = new HashSet<>();
Map<String, Binding> bound = map.getBoundKeys();
for (String arg : opt.args()) {
  if (range) {
    Collection<String> r = KeyMap.range(opt.args().get(0));
    if (r == null) {
      err.println("keymap: malformed key range `" + opt.args().get(0) + "'");
    String seq = KeyMap.translate(arg);
    for (String k : bound.keySet()) {
      if (prefix && k.startsWith(seq) && k.length() > seq.length()
  map.unbind(seq);
      ? new Macro(KeyMap.translate(opt.args().get(i + 1)))
      : new Reference(opt.args().get(i + 1));
  if (range) {
    Collection<String> r = KeyMap.range(opt.args().get(i));
    if (r == null) {
      err.println("keymap: malformed key range `" + opt.args().get(i) + "'");
      return;
    map.bind(bout, r);

代码示例来源:origin: org.jline/jline

protected KeyMap<Object> createEmptyKeyMap(String prefix) {
  KeyMap<Object> keyMap = new KeyMap<>();
  keyMap.setUnicode(Binding.SelfInsert);
  keyMap.setNomatch(Binding.SelfInsert);
  for (int i = 0; i < 255; i++) {
    keyMap.bind(Binding.Discard, prefix + (char)(i));
  }
  keyMap.bind(Binding.Mouse, key(terminal, Capability.key_mouse));
  return keyMap;
}

代码示例来源:origin: org.jline/jline-builtins

protected KeyMap<Object> createKeyMap(String prefix) {
  KeyMap<Object> keyMap = createEmptyKeyMap(prefix);
  keyMap.bind(CMD_SEND_PREFIX, prefix + prefix);
  keyMap.bind(CMD_SPLIT_WINDOW + " -v", prefix + "\"");
  keyMap.bind(CMD_SPLIT_WINDOW + " -h", prefix + "%");
  keyMap.bind(CMD_SELECT_PANE + " -U", prefix + key(terminal, Capability.key_up));
  keyMap.bind(CMD_SELECT_PANE + " -D", prefix + key(terminal, Capability.key_down));
  keyMap.bind(CMD_SELECT_PANE + " -L", prefix + key(terminal, Capability.key_left));
  keyMap.bind(CMD_SELECT_PANE + " -R", prefix + key(terminal, Capability.key_right));
  keyMap.bind(CMD_RESIZE_PANE + " -U 5", prefix + esc() + key(terminal, Capability.key_up));
  keyMap.bind(CMD_RESIZE_PANE + " -D 5", prefix + esc() + key(terminal, Capability.key_down));
  keyMap.bind(CMD_RESIZE_PANE + " -L 5", prefix + esc() + key(terminal, Capability.key_left));
  keyMap.bind(CMD_RESIZE_PANE + " -R 5", prefix + esc() + key(terminal, Capability.key_right));
  keyMap.bind(CMD_RESIZE_PANE + " -U", prefix + translate("^[[1;5A"), prefix + alt(translate("^[[A"))); // ctrl-up
  keyMap.bind(CMD_RESIZE_PANE + " -D", prefix + translate("^[[1;5B"), prefix + alt(translate("^[[B"))); // ctrl-down
  keyMap.bind(CMD_RESIZE_PANE + " -L", prefix + translate("^[[1;5C"), prefix + alt(translate("^[[C"))); // ctrl-left
  keyMap.bind(CMD_RESIZE_PANE + " -R", prefix + translate("^[[1;5D"), prefix + alt(translate("^[[D"))); // ctrl-right
  keyMap.bind(CMD_DISPLAY_PANES, prefix + "q");
  keyMap.bind(CMD_CLOCK_MODE, prefix + "t");
  return keyMap;
}

代码示例来源:origin: apache/samza

private KeyMap<Action> bindActionKey() {
 KeyMap<Action> keyMap = new KeyMap<>();
 keyMap.bind(Action.QUIT, "Q", "q", ctrl('c'));
 keyMap.bind(Action.SPACE, " ");
 return keyMap;
}

代码示例来源:origin: org.jline/jline

private void bindKeys(KeyMap<Operation> map) {
  map.bind(Operation.HELP, "h", "H");
  map.bind(Operation.EXIT, "q", ":q", "Q", ":Q", "ZZ");
  map.bind(Operation.FORWARD_ONE_LINE, "e", ctrl('E'), "j", ctrl('N'), "\r", key(terminal, Capability.key_down));
  map.bind(Operation.BACKWARD_ONE_LINE, "y", ctrl('Y'), "k", ctrl('K'), ctrl('P'), key(terminal, Capability.key_up));
  map.bind(Operation.FORWARD_ONE_WINDOW_OR_LINES, "f", ctrl('F'), ctrl('V'), " ");
  map.bind(Operation.BACKWARD_ONE_WINDOW_OR_LINES, "b", ctrl('B'), alt('v'));
  map.bind(Operation.FORWARD_ONE_WINDOW_AND_SET, "z");
  map.bind(Operation.BACKWARD_ONE_WINDOW_AND_SET, "w");
  map.bind(Operation.FORWARD_ONE_WINDOW_NO_STOP, alt(' '));
  map.bind(Operation.FORWARD_HALF_WINDOW_AND_SET, "d", ctrl('D'));
  map.bind(Operation.BACKWARD_HALF_WINDOW_AND_SET, "u", ctrl('U'));
  map.bind(Operation.RIGHT_ONE_HALF_SCREEN, alt(')'), key(terminal, Capability.key_right));
  map.bind(Operation.LEFT_ONE_HALF_SCREEN, alt('('), key(terminal, Capability.key_left));
  map.bind(Operation.FORWARD_FOREVER, "F");
  map.bind(Operation.REPEAT_SEARCH_FORWARD, "n", "N");
  map.bind(Operation.REPEAT_SEARCH_FORWARD_SPAN_FILES, alt('n'), alt('N'));
  map.bind(Operation.UNDO_SEARCH, alt('u'));
  map.bind(Operation.GO_TO_FIRST_LINE_OR_N, "g", "<", alt('<'));
  map.bind(Operation.GO_TO_LAST_LINE_OR_N, "G", ">", alt('>'));
  map.bind(Operation.NEXT_FILE, ":n");
  map.bind(Operation.PREV_FILE, ":p");
  "-/0123456789?".chars().forEach(c -> map.bind(Operation.CHAR, Character.toString((char) c)));
}

代码示例来源:origin: org.jline/jline-builtins

protected void bindKey(PrintStream out, PrintStream err, List<String> args) throws IOException {
  final String[] usage = {
      "bind-key - ",
      "Usage: bind-key key command [arguments]", /* [-cnr] [-t mode-table] [-T key-table] */
      "  -? --help                    Show help"
  };
  Options opt = Options.compile(usage).setOptionsFirst(true).parse(args);
  if (opt.isSet("help")) {
    opt.usage(err);
    return;
  }
  List<String> vargs = opt.args();
  if (vargs.size() < 2) {
    opt.usage(err);
    return;
  }
  String prefix = serverOptions.get(OPT_PREFIX);
  String key = prefix + KeyMap.translate(vargs.remove(0));
  keyMap.unbind(key.substring(0, 2));
  keyMap.bind(vargs.toArray(new String[vargs.size()]), key);
}

代码示例来源:origin: org.jline/jline

public void bind(T function, Iterable<? extends CharSequence> keySeqs) {
  for (CharSequence keySeq : keySeqs) {
    bind(function, keySeq);
  }
}

代码示例来源:origin: org.jline/jline

public boolean beginPaste() {
  final Object SELF_INSERT = new Object();
  final Object END_PASTE = new Object();
  KeyMap<Object> keyMap = new KeyMap<>();
  keyMap.setUnicode(SELF_INSERT);
  keyMap.setNomatch(SELF_INSERT);
  keyMap.setAmbiguousTimeout(0);
  keyMap.bind(END_PASTE, BRACKETED_PASTE_END);
  StringBuilder sb = new StringBuilder();
  while (true) {
    Object b = bindingReader.readBinding(keyMap);
    if (b == END_PASTE) {
      break;
    }
    String s = getLastBinding();
    if ("\r".equals(s)) {
      s = "\n";
    }
    sb.append(s);
  }
  regionActive = RegionType.PASTE;
  regionMark = getBuffer().cursor();
  getBuffer().write(sb);
  return true;
}

代码示例来源:origin: org.jline/jline

public KeyMap<Binding> viInsertion() {
  KeyMap<Binding> viins = new KeyMap<>();
  bind(viins, SELF_INSERT,                            range("^@-^_"));
  bind(viins, LIST_CHOICES,                           ctrl('D'));
  bind(viins, SEND_BREAK,                             ctrl('G'));
  bind(viins, BACKWARD_DELETE_CHAR,                   ctrl('H'));
  bind(viins, EXPAND_OR_COMPLETE,                     ctrl('I'));
  bind(viins, ACCEPT_LINE,                            ctrl('J'));
  bind(viins, CLEAR_SCREEN,                           ctrl('L'));
  bind(viins, ACCEPT_LINE,                            ctrl('M'));
  bind(viins, MENU_COMPLETE,                          ctrl('N'));
  bind(viins, REVERSE_MENU_COMPLETE,                  ctrl('P'));
  bind(viins, HISTORY_INCREMENTAL_SEARCH_BACKWARD,    ctrl('R'));
  bind(viins, HISTORY_INCREMENTAL_SEARCH_FORWARD,     ctrl('S'));
  bind(viins, TRANSPOSE_CHARS,                        ctrl('T'));
  bind(viins, KILL_WHOLE_LINE,                        ctrl('U'));
  bind(viins, QUOTED_INSERT,                          ctrl('V'));
  bind(viins, BACKWARD_KILL_WORD,                     ctrl('W'));
  bind(viins, YANK,                                   ctrl('Y'));
  bind(viins, VI_CMD_MODE,                            ctrl('['));
  bind(viins, UNDO,                                   ctrl('_'));
  bind(viins, HISTORY_INCREMENTAL_SEARCH_BACKWARD,    ctrl('X') + "r");
  bind(viins, HISTORY_INCREMENTAL_SEARCH_FORWARD,     ctrl('X') + "s");
  bind(viins, SELF_INSERT,                            range(" -~"));
  bind(viins, INSERT_CLOSE_PAREN,                     ")");
  bind(viins, INSERT_CLOSE_SQUARE,                    "]");
  bind(viins, INSERT_CLOSE_CURLY,                     "}");
  bind(viins, BACKWARD_DELETE_CHAR,                   del());
  bindArrowKeys(viins);
  return viins;

代码示例来源:origin: org.jline/jline

private void bindKeys(KeyMap<Operation> map) {
  map.bind(Operation.HELP, "h", "?");
  map.bind(Operation.EXIT, "q", ":q", "Q", ":Q", "ZZ");
  map.bind(Operation.INCREASE_DELAY, "+");
  map.bind(Operation.DECREASE_DELAY, "-");
  map.bind(Operation.CLEAR, KeyMap.ctrl('L'));
  map.bind(Operation.REVERSE, "r");
}

代码示例来源:origin: org.jline/jline-builtins

throw new IllegalArgumentException("Missing argument");
String prefix = translate(value);
String oldPrefix = serverOptions.put(OPT_PREFIX, prefix);
KeyMap<Object> newKeys = createEmptyKeyMap(prefix);
for (Map.Entry<String, Object> e : keyMap.getBoundKeys().entrySet()) {
  if (e.getValue() instanceof String) {
    if (e.getKey().equals(oldPrefix + oldPrefix)) {
      newKeys.bind(e.getValue(), prefix + prefix);
    } else if (e.getKey().startsWith(oldPrefix)) {
      newKeys.bind(e.getValue(), prefix + e.getKey().substring(oldPrefix.length()));
    } else {
      newKeys.bind(e.getValue(), e.getKey());

代码示例来源:origin: org.jline/jline

@SuppressWarnings("unchecked")
private static <T> void bind(KeyMap<T> map, CharSequence keySeq, T function, boolean onlyIfNotBound) {
  if (keySeq != null && keySeq.length() > 0) {
    for (int i = 0; i < keySeq.length(); i++) {
      char c = keySeq.charAt(i);
      if (c >= map.mapping.length) {
        return;
      }
      if (i < keySeq.length() - 1) {
        if (!(map.mapping[c] instanceof KeyMap)) {
          KeyMap<T> m = new KeyMap<>();
          m.anotherKey = (T) map.mapping[c];
          map.mapping[c] = m;
        }
        map = (KeyMap) map.mapping[c];
      } else {
        if (map.mapping[c] instanceof KeyMap) {
          ((KeyMap) map.mapping[c]).anotherKey = function;
        } else {
          Object op = map.mapping[c];
          if (!onlyIfNotBound || op == null) {
            map.mapping[c] = function;
          }
        }
      }
    }
  }
}

代码示例来源:origin: org.jline/jline

public KeyMap<Binding> safe() {
  KeyMap<Binding> safe = new KeyMap<>();
  bind(safe, SELF_INSERT,                 range("^@-^?"));
  bind(safe, ACCEPT_LINE,                 "\r", "\n");
  bind(safe, SEND_BREAK,                  ctrl('G'));
  return safe;
}

代码示例来源:origin: org.jline/jline

public KeyMap<Binding> viOpp() {
  KeyMap<Binding> viOpp = new KeyMap<>();
  bind(viOpp, UP_LINE,                    key(Capability.key_up),     "k");
  bind(viOpp, DOWN_LINE,                  key(Capability.key_down),   "j");
  bind(viOpp, VI_CMD_MODE,                esc());
  return viOpp;
}

代码示例来源:origin: org.jline/jline

public void bind(T function, CharSequence keySeq) {
  if (keySeq != null) {
    if (function == null) {
      unbind(keySeq);
    } else {
      bind(this, keySeq, function, false);
    }
  }
}

代码示例来源:origin: org.jline/jline

/**
 * Bind special chars defined by the terminal instead of
 * the default bindings
 */
private void bindConsoleChars(KeyMap<Binding> keyMap, Attributes attr) {
  if (attr != null) {
    rebind(keyMap, BACKWARD_DELETE_CHAR,
        del(), (char) attr.getControlChar(ControlChar.VERASE));
    rebind(keyMap, BACKWARD_KILL_WORD,
        ctrl('W'),  (char) attr.getControlChar(ControlChar.VWERASE));
    rebind(keyMap, KILL_WHOLE_LINE,
        ctrl('U'), (char) attr.getControlChar(ControlChar.VKILL));
    rebind(keyMap, QUOTED_INSERT,
        ctrl('V'), (char) attr.getControlChar(ControlChar.VLNEXT));
  }
}

相关文章