如何使用Elisp模拟按键输入以达到与通过代码与其他函数交互(HELP WANTED!)

如图所示

我想把org-roam-capture的特定模板直接绑定到某个快捷键上,因此我希望编写一个elsip函数并将其绑定在某个按键上, 百度谷歌答案可是都不管用,特又来寻找大佬帮助.

尝试过如下函数,无作用

  • unread-command-events

    该变量存储的值为一个由event组成的list,表示待读取的event.

    该list中的event,以显示的顺序(即最前面的最先被使用)被读取,并且在使用后被删除

    一般情况下,从该list中读取的event不会添加到当前命令的key sequence中(即不会被`this-command-keys’),因为该event在第一次读取时已经添加过一次了. 但若list中的element格式为’(t . EVENT)则表示强制将该event放入当前command的key sequence中

  • (listify-key-sequence key)

    该函数将key(string或vector)转换为由单独event组成的list,可以很容易的将这个list放入`unread-command-events’中

(define-key global-map (kbd "C-c c") 'org-roam-capture)

就行

楼主是要将 选择一个特定的模板 绑定到快捷键,只绑定 org-roam-capture 的话达不到目的。

org-roam-capture 不能添加一个可选参数吗? 可以的话,简单包装一个特定模板 capture 命令不就可以了?

对,可以的,刚刚去看了下,如果是 org-capture 的话,甚至有直接的函数 org-capture-select-template 可以用,org-roam-capture 的话没有直接选择模板的独立函数,但它本身是接受两个参数的

(org-roam-capture &optional GOTO KEYS)

Launches an ‘org-capture’ process for a new or existing note.
This uses the templates defined at ‘org-roam-capture-templates’.
Arguments GOTO and KEYS see ‘org-capture’.

第一个参数 GOTO 不用管它,第二个参数 KEYS 就是用户选择模板的输入,所以这样就好了:

(defun add-default-roam-note ()
  (interactive)
  (org-roam-capture nil "d"))

(global-set-key [f4] 'add-default-roam-note)

@WaytrueDeng

谢谢啦,我再折腾折腾🙏🏻️

上面我给的函数我自己试过了是可以用的,你可以试试。