def default_string_key_map
      require 'canis/core/include/action'
      @key_map ||= {}
      @key_map[ Regexp.new('[a-zA-Z0-9_\.\/]') ] = Action.new("Append to pattern") { |obj, ch|
        obj.buffer << ch.chr
        obj.buffer_changed
      }
      @key_map[ [127, ?\C-h.getbyte(0)] ] = Action.new("Delete Prev Char") { |obj, ch|
        # backspace
        buff = obj.buffer
        buff = buff[0..-2] unless buff == ""
        obj.set_buffer buff
      }
    end
def default_string_key_map
      require 'canis/core/include/action'
      @key_map ||= {}
      @key_map[ Regexp.new('[a-zA-Z0-9_\.\/]') ] = Action.new("Append to pattern") { |obj, ch|
        obj.buffer << ch.chr
        obj.buffer_changed
      }
      @key_map[ [127, ?\C-h.getbyte(0)] ] = Action.new("Delete Prev Char") { |obj, ch|
        # backspace
        buff = obj.buffer
        buff = buff[0..-2] unless buff == ""
        obj.set_buffer buff
      }
    end
setting up some keys
 This is currently an insertion key map, if you want a String named +@buffer+ updated.
 Expects buffer_changed and set_buffer to exist as well as +buffer()+.
 TODO add left and right arrow keys for changing insertion point. And other keys.
 XXX Why are we trying to duplicate a Field here ??