art+v提示"未从剪切板中找到图片"

请问iflow目前alt+v快捷键实现图片粘贴的原理是什么

因为我用alt+v 粘贴不了

提示 未从剪切板中找到图片

win11
系统个win+v剪贴板被我干掉了(不记得什么时候),反正用win+v用不了系统的剪贴板,我使用的是ditto

当然,上述说的都是剪贴版管理程序,只要iflow访问的是底层剪贴板肯定是有数据的,但是现在不知道为什么粘贴不了图片

在终端windows terminal、vscode都测试过,一样的情况,正常用ctrl v 粘贴文本都是OK的

由于我之前没有粘贴文本的需求,今天是偶然使用发现的

shift+ctrl+v

试了一下没有用,vscode和windows terminal都不行,iflow由于是一个cli程序

1.快捷键被终端拦截了,可能由于终端配置了快捷键,例如分隔终端(总之,这种情况下,根本没有任何信号给到iflow)

2.除了上述被终端完全拦截的快捷键之外的其他快捷键,由于终端实现差异,不同终端对快捷键的处理后发送的转义序列标准也是不同的

所以,iflow没有说明实现细节,根本就不好排查,不知道这个序列发送给cli了没有,也不知道cli预期应该接受的快捷键

经过我的研究,iflow-cli 中换行的转义序列是 \u000A\u0011

昨天试用tabby终端,发现iflow-cli收不到, 编写了一个tabby插件,测试了一下,直接向cli发送转义序列 \u000A\u0011 确实就触发了换行操作

插件的地址在这 tabby-iflow-newline

Tabby iflow Newline Plugin
一个 Tabby 终端插件,通过注册 Ctrl+Enter 快捷键向 iflow 发送 快捷键指令序列(\u000A\u0011),让终端中的 iflow 程序能够正确接收到换行指令,避免 Tabby 对快捷键的处理导致 iflow 无法收到该序列。

同样的操作,在vscode中也是一样的

通过设置vscode的keybindings.json

    {
        "key": "ctrl+enter",
        "command": "workbench.action.terminal.sendSequence",
        "args": {
            "text": "\u000A\u0011" // 定义终端快捷键Ctrl+Enter,用于像iflow中发送"换行指令"的转义序列
        },
        "when": "terminalFocus"
    },

所以,不知道iflow中这些功能的底层实现是什么,是不是遵循了ANSI X3.64标准


总之,cli程序需要实现快捷键操作,需要对不同终端下的标准做适配,或者支持用户自定义,同时公布实现的细节,方便野生开发者排查


ps: tabby真是答辩,一堆bug,写完插件我就卸载了,坑死

@10111 @10008873411 @10011695425

通过逆向iflow-cli源码,问题已经定位
下面是解决方案

答案呢?

更新了,麻烦看上述帖子

感谢反馈。目前Windows平台还不支持截图然后粘贴,支持的是复制图片然后粘贴。

1 个赞

这个时候就得推荐pixpin了(截图能想到的功能它都有),截图后直接贴到iflow里 :wink:

2 个赞

我截图是自动保存到剪贴版的,忘记说明了,问题都排查清除了,可以看看相关分析文章

1 个赞