アプリに表示したい:
_press any key to exit ...
_
そして、anyキーを押すと、終了します。
どうすればこれを達成できますか?
注:私はグーグルで検索しましたが、最後にenterを押す必要がありました。 C#でConsole.ReadKey()
のようなものが欲しいです。
私はMSWindowsを実行しています。
termbox-go は、いくつかの基本的な端末制御を提供する軽量のGo-nativeパッケージです。 rawモードで入力を取得する機能を含みます(デフォルトの行バッファー動作なしで一度に1文字を読み取ります)。
また、さまざまなシステム間でかなり良好な互換性があります。
そして keyboard termbox-goを拡張して、マルチキーショートカットやシーケンスなどの追加のキーボード機能を提供します。
これは、UNIXシステムを実行している人にとって最小限の作業例です。
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
// disable input buffering
exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
// do not display entered characters on the screen
exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
var b []byte = make([]byte, 1)
for {
os.Stdin.Read(b)
fmt.Println("I got the byte", b, "("+string(b)+")")
}
}
go-termboxは非常に重いです。ターミナルウィンドウ全体を引き継ぎたい。たとえば、起動時に画面をクリアしますが、これは希望どおりでない場合があります。
これをOSXにまとめました。ほんの小さなgetchar():
https://github.com/paulrademacher/climenu/blob/master/getchar.go
このライブラリ(私のもの)を使用できます: https://github.com/eiannone/keyboard
これは、単一のキーストロークを取得するための例です。
char, _, err := keyboard.GetSingleKey()
if (err != nil) {
panic(err)
}
fmt.Printf("You pressed: %q\r\n", char)
Rawモードの端末から1回のキー押下を読み取ることができます。 Here は、プログラムにrawターミナルモードを提供するパッケージです。キャッチ:Linuxのみです。
これを試してください- http://play.golang.org/p/kg-QirlucY 。
os.Stdin
の最後にあるfunc main
から読んでください。