2015-09-02 5 views
0

Я пытаюсь создать приложение с полным экраном терминала. Я использую Go как мой язык выбора. Я понял, как читать с os.Stdin, но я не понимаю, как очистить окно терминала и манипулировать позицией курсора. Я также хочу захватить входной терминал без его распечатки (эхо).Создание полноэкранного приложения терминала с помощью Go

Мои вопросы:

  1. Как эффективно ясно и вывести на терминал с координатами столбца/строки?
  2. Как остановить терминал из печати нажатых

Мое намерение:

Я хочу создать приложение терминала полного экрана, которая делает его собственный пользовательский интерфейс и обрабатывает ввод внутри (горячие клавиши/навигации/и т.д...).

Если есть библиотеки, которые охватывают этот вид использования, пожалуйста, не стесняйтесь предлагать их.

+1

Вы ищете: https://github.com/nsf/termbox-go/ –

+0

@TimCooper Очень благодарен tim :) –

ответ

1

Самый простой способ очистить терминал и установить позицию - с помощью кодов выхода ansi. Однако это не может быть идеальным способом, так как изменение терминалов может вернуться, чтобы укусить вас.

fmt.Print("\033[2J") //Clear screen 
fmt.Printf("\033[%d;%dH", line, col) // Set cursor position 

Лучшей альтернативой было бы использовать библиотеку как goncurses или termbox-go (кредит: второй от комментариев Тима Купера).

С такой библиотеки вы можете сделать что-то вроде этого:

import (
    gc "code.google.com/p/goncurses" 
) 

func main() { 
    s, err := gc.Init() 
    if err != nil { 
     panic(err) 
    } 
    defer gc.End() 
    s.Move(5, 2) 
    s.Println("Hello") 
    s.GetChar() 
} 

Код выше скопированной из Rosetta Code