Podem utilizar as bibliotecas a vontade. Caso sejado encontrado algum erro e/ou warning decorrente da utilização de algum desses arquivos, por favor, informar imediatamente! a) console_v1.1: melhorias em relação a versões anteriores - Eliminado o warning relativo as linhas em que era utilizada a função de API do windows GetLastError() - Eliminado o warning relativo a linha que utilizava a função printf() por meio da inclusão da biblioteca stdio.h. - Eliminado o warning relativo a linha que utilizava a função getch() por meio da inclusão da biblioteca conio.h. - Eliminado o warning relativo a não utilização da variável "dwSizeCursor". Deixou de ser externa e passou a ser declarada de forma local na função setCursorStatus() b) console_v1.2: melhorias em relação a versões anteriores - Aprimoramento da função SetDimensaoJanela(): em caso de erro, retorna uma mensagem com os valores máximos dos parâmetros "largura" e "altura" da janela que pode ser definida. c) -> console_v1.3: Melhorias: - Aprimoramento da função Tecla(): ler e diferenciar diferentes tipos de teclas do teclado Acréscimos: - Acréscimo da função MaxDimensaoJanela() - Acréscimo da função posicaoJanela() - Acréscimo da função setNovaPosicaoJanela() -> console_v1.3.1: Melhorias: - Correção da função SetPosicaoJanela() e necessidade do uso da macro _WIN32_WINNT. -> console_v1.3.2 - O Wine não implementa corretamente a função GetLargestConsoleWindowSize da API do Windows. Na versão implementada disponível no Wine (até sua versão 1.2-rc6), essa função tem "hard-coded" os valores 80 e 25 como valores máximos da janela de console. Como consequência desse fato, a função MaxDimensaoJanela disponível nas versões anteriores desta biblioteca, não funcionava corretamente porque utilizava essa função GetLargestConsoleWindowSize para retornar o tamanho da janela de console. Nesta versão foi modificada a implementação da função MaxDimensaoJanela para utilizar a função GetConsoleScreenBufferInfo para obter o tamanho máximo em linhas e colunas da janela de console atual. -> console_v1.3.3 - acréscimo da função getCoresJanela(); - definição do cabeçalho da função setCursorStatus() no arquivo "console_v1.3.3.h" para que essa função também possa ser utilizada por programas que usem esta biblioteca. -> console_v1.3.4 - correção da função Tecla() que não reconhecia a tecla BACKSPACE como pertencente aos subconjuntos TECLAS_ESPECIAIS e TECLA_ESPECIAL_1 . -> console_v1.4 - substituição da função Tecla() pela função Evento(). OBSERVAÇÃO: essa nova função permite identificar, tanto cliques do mouse, quanto pressionamento de teclas. - criação da função IdentificarEvento() que apresenta todas as informações sobre um determinado evento ocorrido. - Extinção da classificação de uma tecla lida em algum dos subconjuntos de teclas definidos (característica acrescentada na versão console_v1.3). -> console_v1.5 - OBSERVAÇÃO: CORREÇÃO A SER FEITA POR VOCÊ: Caso não exista, deve adicionar a seguinte linha no arquivo "wincon.h": BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); - ONDE DEVE SER ACRESCENTADA ESSA LINHA NO ARQUIVO "wincon.h": 1) No arquivo "wincon.h" que está localizado dentro do diretório "include" da sua instalação do gcc for Windows 2) A linha indicada deve ser adicionada dentro do seguinte #if (caso não exista, crie ele) #if (_WIN32_WINNT >= 0x0500) BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); ... -> mantenha tudo o que já existir anteriormente definido dentro do define #endif - correção na função MaxDimensoes() de modo que a janela fique mais ajustada à área visível da tela - acréscimo da função hit(); - acréscimo da função estadoBarraTarefas(); - acréscimo da função getTituloConsole(); - acréscimo da função setTituloConsole(); - acréscimo da função getResolucaoMonitor(void); -> console_v1.5.1 - eliminação da mensagem de warning relativa à função setDimensaoJanela() - melhoria no comentário do arquivo "console_v1.5.1.h" relativo à função MaxDimensaoJanela() sobre a linha que deve ser incluída no arquivo cabeçalho "wincon.h" da instalação do gcc - aprimoramento da função setDimensaoJanela() para que o buffer também seja redimensionado precisamente para o novo tamanho da janela. Isso evita o aparecimento das barras de rolagem, vertical e horizontal, nas bordas esquerda e inferior, respectivamente, da janela redimensionada. - acréscimo da possibilidade de identificação do pressionamento das teclas SHIFT DA ESQUERDA e SHIFT DA DIREITA - OBSERVAÇÃO: CORREÇÃO A SER FEITA POR VOCÊ: Caso não exista, deve adicionar a seguinte linha no arquivo "wincon.h": BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); - ONDE DEVE SER ACRESCENTADA ESSA LINHA NO ARQUIVO "wincon.h": 1) No arquivo "wincon.h" que está localizado dentro do diretório "include" da sua instalação do gcc for Windows 2) A linha indicada deve ser adicionada dentro do seguinte #if (caso não exista, crie ele) #if (_WIN32_WINNT >= 0x0500) BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); ... -> mantenha tudo o que já existir anteriormente definido dentro do define #endif -> console_v1.5.2: 29/03/2013 - Acréscimo da função getTamanhoFonteConsole(void); - Alteração do tipo do campo "codigo_tecla" de INT para DWORD. Esse campo se encontra na estrutura "TECLADO" que está por sua vez contida na estrutura "EVENTO". - A alteração do tipo do campo "codigo_tecla" do item anterior implicou em um ajuste na função IdentificarEvento() também. - Padronização e melhoria nos comentários dos parâmetros de entrada e no retorno das funções no arquivo ".h"; - Listagem das funções em ordem alfabética no ".h". - OBSERVAÇÃO: CORREÇÃO A SER FEITA POR VOCÊ: Caso não exista, deve adicionar a seguinte linha no arquivo "wincon.h": BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); - ONDE DEVE SER ACRESCENTADA ESSA LINHA NO ARQUIVO "wincon.h": 1) No arquivo "wincon.h" que está localizado dentro do diretório "include" da sua instalação do gcc for Windows 2) A linha indicada deve ser adicionada dentro do seguinte #if (caso não exista, crie ele) #if (_WIN32_WINNT >= 0x0500) BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); ... -> mantenha tudo o que já existir anteriormente definido dentro do define #endif -> console_v1.5.3: 03/04/2013 - versão enviada por LUCAS CÂMARA OTECHAR SANCHES, aluno de Ciência da Computação na disciplina de Tópicos em Computação I (2013) - Aprimorada a biblioteca para compilar sem warnings quando compilada com a opção "-Wextra": -> Removida a variável "atualBufferSize" da função "setDimensaoJanela", que não era usada e resultava em um warning. -> Arrumados warning referentes à comparação entre inteiro com e sem sinal na função "hit". - Removidos espaços em branco nos finais das linhas dos arquivos (trailing whitespaces). - OBSERVAÇÃO: CORREÇÃO A SER FEITA POR VOCÊ: Caso não exista, deve adicionar a seguinte linha no arquivo "wincon.h": BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); - ONDE DEVE SER ACRESCENTADA ESSA LINHA NO ARQUIVO "wincon.h": 1) No arquivo "wincon.h" que está localizado dentro do diretório "include" da sua instalação do gcc for Windows 2) A linha indicada deve ser adicionada dentro do seguinte #if (caso não exista, crie ele) #if (_WIN32_WINNT >= 0x0500) BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); ... -> mantenha tudo o que já existir anteriormente definido dentro do define #endif -> console_v1.5.4: 11/04/2013 - Correção da função posicaoJanela() para retornar corretamente a posição da janela de console na tela; - Mudança do nome da função posicaoJanela() para getPosicaoJanela() para padronização; - Correção na ordem dos parâmetros da função setPosicaoJanela() - OBSERVAÇÃO: CORREÇÃO A SER FEITA POR VOCÊ: Caso não exista, deve adicionar a seguinte linha no arquivo "wincon.h": BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); - ONDE DEVE SER ACRESCENTADA ESSA LINHA NO ARQUIVO "wincon.h": 1) No arquivo "wincon.h" que está localizado dentro do diretório "include" da sua instalação do gcc for Windows 2) A linha indicada deve ser adicionada dentro do seguinte #if (caso não exista, crie ele) #if (_WIN32_WINNT >= 0x0500) BOOL WINAPI GetCurrentConsoleFont(HANDLE, BOOL, PCONSOLE_FONT_INFO); ... -> mantenha tudo o que já existir anteriormente definido dentro do define #endif -> console_v1.5.5: 08/05/2024 - Alteração do nome do campo "codigo_tecla" para "key_code" na estrutura TECLADO; - Inclusão do campo "scan_code" na estrutura TECLADO; - Inclusão do campo "ascii_code" na estrutura TECLADO; - Inclusão do campo "repeat_count" na estrutura TECLADO. OBSERVAÇÃO: Sobre esse novos 3 tipos de códigos para o pressionamento de uma tecla: - Código key_code: código que já era retornado nas versões anteriores (antigo campo codigo_tecla). É um código numérico gerado pelo SO independente do device (teclado). Gera códigos para todas as teclas e alguns deles viraram padrões de códigos, adotados pela maioria dos programas, para algumas das teclas (teclas de controle: 27 para ESC; teclas de digitação: 13 para ENTER, 9 para TAB, 32 para ESPAÇO etc.). Tem algumas limitações: - Gera o mesmo código para algumas teclas de controle com o mesmo nome. Por exemplo, CTRL ESQUERDO/CTRL DIREITO, ALT ESQUERDO/ALT DIREITO, SHIFT ESQUERDO/SHIFT DIREITO. - Outra limitação: se pressionar a tecla "a", o código retornado será 65, estando ou não pressionada a tecla SHIFT. Desse modo, para diferenciar que se pressionou o "A" ao invés do "a", teria que que você mesmo codificar que a tecla "a" foi pressionada enquanto também estava sendo pressionada a tecla "shift". E, nos casos das teclas que tem 2 símbolos diferentes na tecla (tecla que tem os símbolos "1" e "!", por exemplo), além de identificar que foi pressionado o SHIFT ao mesmo tempo que a tecla, teria que saber o layout configurado para o teclado (ABNT, ABNT-2, QUERTY, Americano, PT, Espanhol etc.) para saber qual o símbolo correspondente à tecla que foi pressionada em conjunto com o SHIFT; - Código scan_code: código gerado pela controladora do teclado (controlador de porta i8042). É um código que identifica o fechamento do circuito da tecla correspondente. Por exemplo, enquanto o código key_code para o pressionamento da tecla ESC é o número 27, o scan_code da tecla ESC será o número 1. Como é a controladora que está gerando os códigos, ela gera um código diferente para cada tecla física, o que permite distinguir teclas com mesmo nome como SHIFT ESQUERDO/SHIFT DIREITO, que não é possível de ser feito pelo código key_code anterior. Contudo ainda sofre das mesmas outras limitações que o código key_code também possui: identificação de teclas que possuem 2 símbolos e/ou identificar que foi pressionada "A" ou "a". - Código ascii_code: esse código é o mapeamento do key_code gerado, em conjunto com o estado atual do teclado (teclas pressionadas ao mesmo tempo, tais como, SHIFT e CTRL) para os valores correspondentes da tabela ASCII, já considerando o layout do teclado configurado no SO (ABNT, ABNT-2 etc) . Isso permite superar as limitações dos códigos anteriores (key_code e scan_code) na diferenciação do pressionamento de teclas maiúsculas de minúsculas. Por exemplo, quando se pressionar a tecla "A" ("a" + SHIFT), o código retornado será 65 e quando se pressionar o "a" ("a" sem estar pressionando a tecla SHIFT ao mesmo tempo ), o código retornado será o 97. E, como considera o layout configurado para o SO, também resolve o problema de diferenciar e imprimir o símbolo correto de uma tecla que representa 2 símbolos. Por exemplo, a tecla que tem os símbolos "1" e "!" (teclado modelo "Estados Unidos - americano, ou QWERTY). Se pressionar a tecla "1" sem SHIFT, o código gerado será o valor 49, e se pressionar a tecla "1" com o SHIFT PRESSIONADO, o código gerado será o valor "33", que corresponde ao símbolo "!" na tabela ASCII. Conclusão, esse código permite que leia e imprima facilmente todos os caracteres que são "imprimíveis" na tela de um computador e, portanto, que são passíveis de serem utilizados em textos escritos. Já com relação as limitações, são no sentido de não ser possível identificar o pressionamento das teclas de controle (CTRL, ALT, Fn, Windows), teclas de digitação (SHIFT), teclas de função (F1 a F12) e de navegação (teclas de seta, Home, End, Page Up, Page Down, Delete e Insert).