登录
首页 >  Golang >  Go问答

在Golang中是否有任何方法来监听粘贴操作?

来源:stackoverflow

时间:2024-03-14 16:00:21 458浏览 收藏

golang学习网今天将给大家带来《在Golang中是否有任何方法来监听粘贴操作?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我想读取剪贴板数据并将其粘贴到缓冲区/ scanf 中,以便我可以相应地读取数据解析。我的应用程序完全是用 go 编写的 cli 应用程序。

我使用 https://github.com/atotto/clipboard 从剪贴板读取数据,但现在我希望仅当用户触发 crtl+v 或 shift+insert 时才调用此函数。

package main

import (
    "fmt"
    "github.com/atotto/clipboard"
)

func main() {
    // I want this module to be invoked only when user clicks CTRL+V or SHIFT+INSERT
    text, err := clipboard.ReadAll()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(text)

}

解决方案


使用https://github.com/nsf/termbox-go进行键盘事件处理。

package main

import (
    "fmt"

    "github.com/atotto/clipboard"
    termbox "github.com/nsf/termbox-go"
)

func main() {
    err := termbox.Init()
    if err != nil {
        panic(err)
    }
    defer termbox.Close()

    // clear
    termbox.Flush()

loop:
    for {
        switch ev := termbox.PollEvent(); ev.Type {
        case termbox.EventKey:
            // program exit
            if ev.Key == termbox.KeyCtrlX {
                break loop
            }
            // past clipboard
            if ev.Key == termbox.KeyCtrlV {
                text, err := clipboard.ReadAll()
                if err == nil {
                    fmt.Println(text)
                }
            }
            termbox.Flush()
        case termbox.EventError:
            panic(ev.Err)
        }
    }
}

今天关于《在Golang中是否有任何方法来监听粘贴操作?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>