Pular para o conteúdo

Conio.h para Linux

Pessoal estou disponibilizando pra todos a conio.h para Linux, baseada na biblioteca ncurses. Ela possui algumas das principais funções da conio.h do DOS/Windows. Confiram.
Jefferson dos Santos Felix jeffersonsfelix
Hits: 91.603 Categoria: C/C++ Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

A conio.h

A conio.h que criei utiliza os recursos da biblioteca ncurses, portanto trata-se simplesmente de uma certa "tradução" da ncurses para algo semelhante a conio.h que vem com os compiladores do C/C++ para DOS/Windows.

Eis a conio.h para Linux:

// conio.h
// CONIO.H UTILIZANDO OS RECURSOS DA BIBLIOTECA NCURSES     //
// ----------------------------------------------------     //
//                                                          //
// DESENVOLVIDO POR: JEFFERSON DOS SANTOS FELIX, ABRIL 2004 //
//                                                          //

#ifndef __NCURSES_H
#include <curses.h>
#endif

#define BLACK       0
#define RED         1
#define GREEN       2
#define BROWN       3
#define BLUE        4
#define MAGENTA     5
#define CYAN        6
#define LIGHTGRAY   7
#define DARKGRAY    8
#define LIGHTRED    9
#define LIGHTGREEN  10
#define YELLOW      11
#define LIGHTBLUE   12
#define PINK        13
#define LIGHTCYAN   14
#define WHITE       15

#define DEFAULT_PAIR 57

int initconio(void);
int endconio(void);
int clrscr(void);
int textcolor(short color);
int textbackground(short color);
int gotoxy(int x, int y);
int wherex(void);
int wherey(void);

short cur_pair;
int cur_bold;

int initconio(void)
{
  int f, b;
  short p;
  initscr();
  start_color();
  p = 1;
  for(f = 0; f < 8; f++)
    for(b = 0; b < 8; b++, p++)
      init_pair(p, f%8, b%8);
  cur_pair = DEFAULT_PAIR;
  cur_bold = 0;
  bkgd(COLOR_PAIR(cur_pair));
  color_set(cur_pair, NULL);
  attr_off(A_BOLD, NULL);
  return 0;
}

int endconio(void)
{
  endwin();
  return 0;
}

int clrscr(void)
{
  bkgd(COLOR_PAIR(cur_pair));
  if(cur_bold == 1)
    attr_on(A_BOLD, NULL);
  else
    attr_off(A_BOLD, NULL);
  clear();
  return 0;
}

int textcolor(short color)
{
  short f, b, x, y;
  short p;
  pair_content(cur_pair, &f, &b);
  p = 1;
  for(x = 0; x < 8; x++)
    for(y = 0; y < 8; y++, p++)
      if((x == (color%8))&&(y == b))
        cur_pair = p;
  color_set(cur_pair, NULL);
  if(color >= 8)
  {
    cur_bold = 1;
    attr_on(A_BOLD, NULL);
  }
  else
  {
    cur_bold = 0;
    attr_off(A_BOLD, NULL);
  }
  return 0;
}

int textbackground(short color)
{
  short f, b, x, y;
  short p;
  pair_content(cur_pair, &f, &b);
  p = 1;
  for(x = 0; x < 8; x++)
    for(y = 0; y < 8; y++, p++)
      if((x == f)&&(y == (color%8)))
        cur_pair = p;
  color_set(cur_pair, NULL);
  return 0;
}

int gotoxy(int x, int y)
{
   move(x - 1, y - 1);
   return 0;
}

int wherex(void)
{
   int x, y;
   getyx(stdscr, x, y);
   return x + 1;
}

int wherey(void)
{
   int x, y;
   getyx(stdscr, x, y);
   return y + 1;
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. A conio.h
   2. Como funciona
   3. Conclusão
Nenhum artigo encontrado.

Aprendendo a utilizar o GNU Debugger (parte 1)

Criando aplicativos para o Mac OS X no GNU/Linux

Programando com uma granada de mão: uma visão da linguagem C

Aleatoriedade em C

Brincando com o editor HT

#1 Comentário enviado por fabio em 20/04/2004 - 23:13h
Muito bacana seu conio.h, não programo muito em C, mas tô ligado que isso faz maior falta pra galera de faculdade, que no geral se amarra em chegar no laboratório com um programinha colorido e cheio de recursos de formatação de tela. :)

Uma dica: você podia enviar seu código-fonte como script para o site também, assim facilita o processo de download, pois ao invés de copiar e colar o cara já teria um botãozinho "Download" linkado com esse artigo.
#2 Comentário enviado por jose_maria em 21/04/2004 - 08:59h
Legal cara, me amarro nos artigos de programação.
Queria saber se alguem sabe de algo parecido com a CRT do Pascal, para Pascal mesmo.
Gostaria também que o Fabio criasse uma pasta PASCAL na seção de scripts. :D
#3 Comentário enviado por jeffestanislau em 22/04/2004 - 08:02h
Muito bo mesmo, pois já vi vários usuários correndo atrás dessa biblioteca par linux... muito boa a sua iniciativa!!!
#4 Comentário enviado por jeffestanislau em 22/04/2004 - 08:07h
Muito bom mesmo, pois já vi vários usuários correndo atrás dessa biblioteca par linux... muito boa a sua iniciativa!!!
#5 Comentário enviado por kashmir em 24/04/2004 - 00:33h
concordo com o jeffestanislau, pois muita gente precisa desta biblioteca para linux valeu mesmo.
#6 Comentário enviado por ygorth em 25/04/2004 - 21:45h
muito legal!
#7 Comentário enviado por ron_lima em 23/05/2004 - 20:21h
Olá, Jefferson.

Já pensou em criar um projeto no source forge com essa biblioteca? Não só esse layer que você está criando para o I/O de console do windows, como também um projeto mais ambicioso, como portar a Win32 para utilizar alguma biblioteca unix, como motif, lesstiff, Qt+ ou coisa parecida. Acredito que será um projeto muito procurado pois tem muita gente querendo portar as coisas do Windows para o unix.

Abraço!
#8 Comentário enviado por engos em 23/06/2004 - 16:55h
Sou um dos que "não larga a mão de programar no modo texto" e ainda prefiro utilizar a ncurses diretamente, mesmo se for para migrar um programa do Ruindows...

Entretanto gostei de saber que existe uma opção a mais e com certeza isso vai ajudar bastante programadores.

Sua conio.h está bem elaborada, parabéns.
#9 Comentário enviado por arcanjo_mg em 05/10/2005 - 10:45h
Kra, mto bom isso, eu precisava mesmo de uma dessas, pois na faculdade usamos mto a conio.h e em ksa meu Linux tem que ter modificações pra roda meus programinhas.
#10 Comentário enviado por cientistamaluko em 21/11/2005 - 12:59h
Rapaz muito obrigado.....há um bom tempo eu estou atrás dessa biblioteca......será muito útil para nós. Vai ficar mais fácil conciliar meus trabalhos com dos meus colegas que usam Windows. Flws.
#11 Comentário enviado por djx em 06/04/2006 - 11:31h
Ola eu sewi q esse artigo eh bem antigo...
Eu nao gosto de programar apenas para win ou Linux mas diante desta divergencia gosto de programar para os 2...
Mas estava navegando e gostei desta lib...
Eu poderia utiliza no meu programa e distribui-la no meu codigo fonte?
Antecipadamente,
Vlw...
#12 Comentário enviado por klebervirgilio em 28/02/2009 - 11:57h
Amigo...

E as funções getch()... getche()???
#13 Comentário enviado por rodrigofariat em 11/03/2010 - 16:10h
Oi,

Eu uso o Ubuntu 9.10, onde tenho de colocar o arquivo para que seja reconhecida.
Tentei colocar no mesmo diretório do iostream.h.

cp conio.h /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/backward/
cp conio.h /usr/include/c++/4.2/backward/

Mesmo assim nao surgiu efeito.

#14 Comentário enviado por fabrizzio.soares em 06/08/2010 - 09:31h
Sei que estou postando bem atrasado.
Sua iniciativa ficou muito boa. Só para complementar. Não é recomendável que arquivos .h contenham codificação de funções. Deve conter somente declarações de variáveis, constantes, defines, structs, typedefs e protótipos de funções. O corpo de funções deve ficar em um arquivo .c que será compilado junto com o projeto que o utilizará. Baseado nisto pode-se criar uma lib sua.

rodrigofariat você pode colocar o arquivo no diretório do seu código fonte que ele encontrará.
Faça um #include "conio.h"
#15 Comentário enviado por rodrigofariat em 19/04/2012 - 16:29h
Beleza,

Eu estou usando o Ubuntu 10.10, coloquei o conio.h no /usr/include.

rodrigo@rodrigo-Calistoga-ICH7M-Chipset:~/c++$ g++ lab1final.cpp -o lab1final.cpp
lab1final.cpp: In member function ‘void Vetor::imprime()’:
lab1final.cpp:125: error: ‘cout’ was not declared in this scope
lab1final.cpp: In member function ‘void ApontadorInteiro::RetornaEndereco()’:
lab1final.cpp:158: error: ‘cout’ was not declared in this scope
lab1final.cpp: At global scope:
lab1final.cpp:162: error: ‘::main’ must return ‘int’
lab1final.cpp: In function ‘int main()’:
lab1final.cpp:165: error: ‘cout’ was not declared in this scope
lab1final.cpp:166: error: ‘endl’ was not declared in this scope
rodrigo@rodrigo-Calistoga-ICH7M-Chipset:~/c++$

Ainda o compilador não consegue achar a biblioteca conio, é preciso rodar o ldd, para que o conio.h seja reconhecido ?

Contribuir com comentário

Entre na sua conta para comentar.