anchor.diff:      _prompt.forwardspace();
     }
   
  -  void _updatePrompt(List<int> bytes, {onEnter(), onTab(),
  +  void _updatePrompt(List<int> bytes, {onEnter(), onTab(), onCtrlX(),
         Map<Symbol, Function> keyCallbacks}) {
       if (_equalList(bytes, _keys[#enter])) onEnter();
       else if (_equalList(bytes, _keys[#tab])) onTab();
  +    else if (_equalList(bytes, _keys[#ctrlX])) onCtrlX();
       else if (_keys.values.any((k) => _equalList(k, bytes))) {
         keyCallbacks[_keys.keys.firstWhere((s) => _equalList(_keys[s], bytes))]();
         _render();
  
positive.code:   #enter: const [10],
    #backspace: const [127],
    #tab: const [9],
    #delete: const [27, 91, 51, 126],
  };
  
  
negative.code:             c.add('help ${_prompt._content
                  .split(' ')
                  .first}'.trim());
            },
            onCtrlX: () {
              _write('\n');
              c.add('exit');
            },
            keyCallbacks: {
              #up: _onUp,
  