Есть ли системный вызов для перехвата Ctrl + V или Shift + Insert в Голанге? - PullRequest
0 голосов
/ 25 марта 2019

Я хочу прочитать данные буфера обмена и вставить их в буфер / 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)

}

1 Ответ

0 голосов
/ 25 марта 2019

Используйте 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)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...