INPUT-METHOD = '' TAGS DESCRIPTION ? TITLE ? VARLIST ? CMDLIST ? MODULELIST ? MACROLIST ? MAPLIST ? STATELIST ? '' TAGS = '' LANG NAME EXTRA ? '' LANG = '' LANGNAME '' NAME = '' NAME '' EXTRA = '' EXTRANAME '' VARLIST = '' DEFVAR + '' CMDLIST = '' COMMAND + '' MODULELIST = '' MODULE + '' MACROLIST = '' DEFUN + '' MAPLIST = '' MAP + '' STATELIST = '' STATE + '' MODULE = '' DEFUN-NAME + '' DEFUN-NAME = '' COMMAND = '' DESCRIPTION ? KEYSEQ * '' MAP = '' RULE * '' RULE = '' [ KEYSEQ | CMDREF ] FUNCALL * '' CMDREF = '' STATE = '' TITLE ? [ HOOK BRANCH CATCHALL ] * '' HOOK = '' FUNCALL + '' BRANCH = '' FUNCALL * '' CATCHALL = '' FUNCALL * '' TERM += MIM-TERM PREDEFINED += MIM-PREDEFEIND MIM-TERM = KEYSEQ | MARKER | SELECTOR KEYSEQ = '' [ STRTERM | LISTTERM ] '' KEYSEQTERM = KEYSEQ | VAR (value is KEYSEQ) | FUNCALL (return KEYSEQ) MARKER = '' STRING '' MARKERTERM = MARKER | VAR (value is MARKER) | FUNCALL (return MARKER) SELECTOR = '' "@..." '' SELECTORTERM = SELECTOR | VAR (value is SELECTOR) | FUNCALL (return SELECTOR) MIM-PREDEFINED = INSERT | CANDIDATES | DELETE | SELECT | SHOW | HIDE | MARK | MOVE | PUSHBACK | POP | UNDO | COMMIT | UNHANDLE | SHIFT | SHIFTBACK | CHAR-AT | KEY-COUNT | SURROUNDING-TEXT-FLAG INSERT = '' [ INTTERM | STRTERM ] '' CANDIDATES = '' [ STRTERM | LISTTERM ]+ '' DELETE = '' [ MARKERTERM | INTTERM ] '' SELECT = '' SHOW = '' HIDE = '' MOVE = '' [ MARKERTERM | INTTERM ] '' MARK = '' MARKERTERM '' PUSHBACK = '' [ KEYSEQTERM | INTTERM ] '' POP = '' UNDO = '' INTTERM ? '' COMMIT = '' UNHANDLE = '' SHIFT = '' SYMTERM '' SHIFTBACK = '' CHAR-AT = '' MARKERTERM '' => C, where C is the character in the preedit text or the surrounding text at the postion specified by MARKERTERM. KEY-COUNT = '' => N, where N is the number of currently handled keys SURROUNDING-TEXT-FLAG = '' => 1 if surrounding text handling is supported or 0 if not.