Как я могу кодировать интерфейс командной строки? - PullRequest
3 голосов
/ 07 сентября 2011

Я разработчик GUI. Я использовал многие из структур GUI, включая WindowsForms, Flash, HTML, AppKit, UIKit. Я могу сказать, что знаю, как кодировать GUI.

Внезапно я заинтересовался интерфейсом командной строки. Как VI или Emacs. Поскольку я начал программировать с помощью GUI, у меня нет никакого опыта или знаний о CLI. Конечно, я использовал VI и unix shell, однако я не знаю, как их реализовать. И я хочу это знать.

Для графических интерфейсов самая основная конструкция для всех графических элементов - это метод рисования самого низкого уровня. Для программных реализаций это метод рисования на базе процессора. Для реализации с аппаратным ускорением это метод, основанный на OpenGL. Все графические элементы построены на них. Что я могу ожидать от CLI? Как нарисовать текст на консоли и моргнуть кареткой?

Мне просто нужен первый шаг. Как имя функции или имя библиотеки. Например, что-то вроде setPixel() function. Любая помощь будет оценена.

P.S. Я предпочитаю систему General Unix. В первую очередь POSIX. И в настоящее время я использую Mac OS X. Конечно, язык C.

Ответы [ 4 ]

5 голосов
/ 07 сентября 2011

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

Если вы хотите изучить основы, Экранирующие коды ANSI .Это механизм того, как ncurses взаимодействует с терминалом, делающим свою магию.Он сам по себе вполне управляем и интересен для изучения - вы просто распечатываете escape-последовательность, и курсор перемещается в конкретную точку на экране, или все, что вы печатаете, печатается в инверсном видео и так далее.И оттуда это грубая полуграфика, использующая верхнюю половину 256 кодов ASCII и т. Д.

3 голосов
/ 07 сентября 2011

Посмотрите на http://en.wikipedia.org/wiki/Readline, потому что он дает вам такие вещи, как история командной строки, завершение табуляции и т.д. ...

Также ncurse http://en.wikipedia.org/wiki/Ncurses для экранных диалоговых окон на основе консоли.

2 голосов
/ 07 сентября 2011

На каком языке вы экспериментируете? Для какой ОС? ncurses, как уже говорилось, является хорошей библиотекой для Unix-подобных систем, но если вы находитесь под окнами ms, я думаю, все будет немного по-другому.

Еще одна вещь, которую нужно иметь в виду, это то, что в зависимости от вашей операционной системы вам, возможно, придется изучить и понять записи termcap или унаследованное наследие DOS.

Для * nix вам нужно проверить некоторую библиотеку графиков, если вы хотите поэкспериментировать с пикселями и т.п. Если вам нужен только обычный интерфейс терминала, ncurses - это отправная точка (пока вы не захотите сделать все вручную с помощью termcap и escape-кодов).

Существует множество платформ для разработки текстового / терминального пользовательского интерфейса, более или менее они дают все, что вам нужно. Но если вы хотите проследить линию от пикселя (1,1) до пикселя (10, 24), я думаю, вам следует сосредоточиться на графических библиотеках. (OpenGL в * nix env легко получить из библиотеки MESA).

На win32, ну, DirectX, но это очень хлопотно.

1 голос
/ 07 сентября 2011

C имеет библиотеку для лучшего управления терминалом: ncurses

...