非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Go言語でキーイベント(termbox-goパッケージ)

   

今回はGo言語でキーイベントを捕まえる方法について書きます。

キーイベントは、termbox-goというパッケージを使います。残念ながら標準パッケージにはありません。

[ad#top-1]

まずはtermbox-goパッケージのインストール

termbox-goパッケージをインストールします。以下のコマンドでインストールしましょう。GOPATHが設定されていることが前提となります。

$ go get github.com/nsf/termbox-go
 

 

[GOPATH]/src/github.com/nsf の中にパッケージがインストールされているはずです。

 

ソースコード

こちらがソースコードになります。

package main

import (
  "fmt"
  "github.com/nsf/termbox-go"
)

func main() {
  //termboxの初期化
  err := termbox.Init()
  if err != nil {
    panic(err)
  }
  //プログラム終了時termboxを閉じる
  defer termbox.Close()

  for {
    switch ev := termbox.PollEvent(); ev.Type {
      case termbox.EventKey:
      switch ev.Key {
        case termbox.KeyEsc: //ESCキーで終了
          fmt.Println("end")
          return
        case termbox.KeyArrowUp: //↑キー
          fmt.Println("Up")
        case termbox.KeyArrowDown: //↓キー
          fmt.Println("Down")
        case termbox.KeyArrowLeft: //←キー
          fmt.Println("Left")
        case termbox.KeyArrowRight: //→キー
          fmt.Println("Right")
        case termbox.KeySpace: //SPACEキー
          fmt.Println("Space")
        default:  //その他のキー
          fmt.Println("other")
      }
      default:
    }
  }
}
 

 

実行

矢印キーを押すとそれに応じたテキストが現れるようになっています。その他にも[SPACE]キーを押すと「Space」と表示されますし、それ以外のキーを押すと「other」と表示されます。[ESC]キーで終了します。

 

このパッケージを使えばちょっとしたコンソールアプリが作れますね。

 

[ad#ad-1]

スポンサーリンク

 - Go言語