'Handle a new keypress with a single key (no modifiers).
Separate the keypress into count/command, then check if it matches
any possible command, and either run the command, ignore it, or
display an error.
Args:
e: the KeyPressEvent from Qt.
Return:
A self.Match member.'

def _handle_single_key(self, e):

    txt = e.text()
    key = e.key()
    self._debug_log("Got    key:    0x{:x}    /    text:    '{}'".format(key, txt))
    if (len(txt) == 1):
        category = unicodedata.category(txt)
        is_control_char = (category == 'Cc')
    else:
        is_control_char = False
    if ((not txt) or is_control_char):
        self._debug_log('Ignoring,    no    text    char')
        return self.Match.none
    self._stop_timers()
    self._keystring += txt
    (count, cmd_input) = self._split_count()
    if (not cmd_input):
        return self.Match.other
    (match, binding) = self._match_key(cmd_input)
    if (match == self.Match.definitive):
        self._debug_log("Definitive    match    for    '{}'.".format(self._keystring))
        self.clear_keystring()
        self.execute(binding, self.Type.chain, count)
    elif (match == self.Match.ambiguous):
        self._debug_log("Ambiguous    match    for    '{}'.".format(self._keystring))
        self._handle_ambiguous_match(binding, count)
    elif (match == self.Match.partial):
        self._debug_log("No    match    for    '{}'    (added    {})".format(self._keystring, txt))
    elif (match == self.Match.none):
        self._debug_log("Giving    up    with    '{}',    no    matches".format(self._keystring))
        self.clear_keystring()
    else:
        raise AssertionError('Invalid    match    value    {!r}'.format(match))
    return match
