As teclas de seta no atalho do Terminal não funcionam

4

Eu sou novo no Linux e estou usando o Ubuntu 13.04. Eu tenho um programa em C ++ chamado "dicionário" (caminho completo: /home/anmol/Desktop/c++/dictionary ), que eu compilei com Code :: Blocks IDE (e GCC versão 4.7.3).

Eu configurei um atalho de teclado personalizado para ele indo em Configurações do Sistema - > Teclado - > Atalhos e colocando o comando: gnome-terminal --disable-factory -x /home/anmol/Desktop/c++/dictionary .

Agora, o problema que enfrento é que as teclas de seta dentro do terminal não estão funcionando ... Por exemplo, sempre que pressiono a tecla de seta para a esquerda, recebo "^ [[D" ... Mas quando eu executo um terminal normalmente (pressionando Ctrl + Alt + T ), as teclas de seta funcionam bem.

Agora, quando eu pesquisei o problema no Google, descobri que isso poderia acontecer se, de alguma forma, o shell padrão fosse alterado de bash para sh.

Então, no meu programa c ++, para ver qual shell estava sendo usado como padrão, adicionei a linha system("chsh"); logo após a função main() e descobri que o shell padrão era apenas bash! Ainda tentei adicionando a linha system("chsh -s /bin/bash") mas o problema persistiu ... (quando prefixei sudo para o comando que jogou um erro chsh: PAM:Authentication Failure )!

Além disso, na página de configurações do Code :: Blocks Environment, encontrei estas duas configurações:

  • Shell para executar comandos em: /bin/sh -c
  • Terminal para iniciar programas de console: gnome-terminal --disable-factory -t $TITLE -x

Eu mudei o "Shell para executar comandos em": /bin/bash -c . Mas o problema ainda persistia.

    
por Anmol Singh Jaggi 06.07.2013 / 08:36

1 resposta

2

Primeiro instale a ferramenta rlwrap (no Ubuntu não está instalada por padrão) executando o próximo comando no terminal :

sudo apt-get install rlwrap

Agora, configure seu atalho de teclado personalizado usando o próximo comando:

gnome-terminal --disable-factory -x bash -c 'rlwrap -a /home/anmol/Desktop/c++/dictionary'
    
por Radu Rădeanu 09.07.2013 / 07:49