'Internal function.'

def _substitute(self, *args):

    if (len(args) != len(self._subst_format)):
        return args
    getboolean = self.tk.getboolean
    getint = int
    def getint_event(s):
        'Tk    changed    behavior    in    8.4.2,    returning    "??"    rather    more    often.'
        try:
            return int(s)
        except ValueError:
            return s
    (nsign, b, f, h, k, s, t, w, x, y, A, E, K, N, W, T, X, Y, D) = args
    e = Event()
    e.serial = getint(nsign)
    e.num = getint_event(b)
    try:
        e.focus = getboolean(f)
    except TclError:
        pass
    e.height = getint_event(h)
    e.keycode = getint_event(k)
    e.state = getint_event(s)
    e.time = getint_event(t)
    e.width = getint_event(w)
    e.x = getint_event(x)
    e.y = getint_event(y)
    e.char = A
    try:
        e.send_event = getboolean(E)
    except TclError:
        pass
    e.keysym = K
    e.keysym_num = getint_event(N)
    e.type = T
    try:
        e.widget = self._nametowidget(W)
    except KeyError:
        e.widget = W
    e.x_root = getint_event(X)
    e.y_root = getint_event(Y)
    try:
        e.delta = getint(D)
    except ValueError:
        e.delta = 0
    return (e,)
