After starting emacs -Q evaluate the following: (defun test-me () (interactive) (message "Test Me: %s" (key-description (this-single-command-keys)))) (defun test-me-2 () (interactive) (message "Test Me 2: %s" (key-description (this-single-command-keys))) (call-interactively 'test-me nil (read-kbd-macro "C-1" t))) (global-set-key (read-kbd-macro "C-c a" t) 'test-me-2) Then, Type C-c a. The message shows: Test Me 2: C-c a Test Me: C-c a It should show Test Me 2: C-1 Test Me: C-c a At least thats how I understand the call-interactevly documentation: This function calls the interactively callable function command, providing arguments according to its interactive calling specifications. It returns whatever command returns. If, for instance, you have a function with the following signature: (defun foo (begin end) (interactive "r") ...) then saying (call-interactively 'foo) will call foo with the region (point and mark) as the arguments. An error is signaled if command is not a function or if it cannot be called interactively (i.e., is not a command). Note that keyboard macros (strings and vectors) are not accepted, even though they are considered commands, because they are not functions. If command is a symbol, then call-interactively uses its function definition. If record-flag is non-nil, then this command and its arguments are unconditionally added to the list command-history. Otherwise, the command is added only if it uses the minibuffer to read an argument. See Command History. The argument keys, if given, should be a vector which specifies the sequence of events to supply if the command inquires which events were used to invoke it. If keys is omitted or nil, the default is the return value of this-command-keys-vector. See Definition of this-command-keys-vector. In GNU Emacs 24.3.1 (i686-pc-linux-gnu, GTK+ Version 2.24.10) of 2013-08-29 on puppypc11169 Windowing system distributor `The X.Org Foundation', version 11.0.11103000 Configured using: `configure '--bindir=/tmp/emacs-24.3-bin/App/emacs-24.3/linux-i686-2.15/bin' '--libexecdir=/tmp/emacs-24.3-bin/App/emacs-24.3/linux-i686-2.15/libexec' '--datadir=/tmp/emacs-24.3-bin/App/emacs-24.3/etc' '--info=/tmp/emacs-24.3-bin/App/emacs-24.3/info' '--prefix=/tmp/emacs-24.3-bin'' Important settings: value of $EMACSDATA: /initrd/mnt/dev_save/EmacsPortable.App/App/emacs-24.3/etc value of $EMACSDOC: /initrd/mnt/dev_save/EmacsPortable.App/App/emacs-24.3/etc value of $EMACSLOADPATH: /initrd/mnt/dev_save/EmacsPortable.App/App/emacs-24.3/lisp/:/initrd/mnt/dev_save/EmacsPortable.App/App/site-lisp/ value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Lisp Interaction Minor modes in effect: show-paren-mode: t tooltip-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: g l o b a l - s e t - k e y SPC h f C-h f M-x e v a l - u b u ) _ M-x e v a l - b u ) ) M-x e v a l - b u x 1 ) M-x e v a l - b u M-x e v a l - b u M-x e v a l - b u - 1 2 M-x e v a l - b u c C-c a Recent messages: Show-Paren mode enabled Mark set call-interactively: End of file during parsing [3 times] Mark set [2 times] byte-code: Beginning of buffer call-interactively: Invalid read syntax: ")" byte-code: Beginning of buffer byte-code: End of buffer [14 times] Test Me 2: C-c a Test Me: C-c a Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils edmacro kmacro cus-start cus-load paren help-mode easymenu help-fns time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)