0

私は現在、C で構築された完全なシェルに取り組んでいます。

二重リンク リストを介して矢印キーを使用して bash の履歴とナビゲーションを実装したいのですが、TermCaps とread()機能の適切な設定に問題があります。

端末のセットアップ方法は次のとおりです。

static int      set_terminal_mode(t_shell *shell, const int mode)
 {
   char          *term_name;

   if (mode == 0)
     {
       if ((term_name = getenv("TERM")) == NULL)
         return (-1);
       ioctl(0, TCGETS, &shell->term);
       shell->term.c_lflag &= ~ICANON;
       shell->term.c_cc[VMIN] = 1;
       shell->term.c_cc[VTIME] = 0;                                         
       ioctl(0, TCGETS, &shell->term_save);
       ioctl(0, TCSETS, &shell->term);
     }
   if (mode == 1)
     ioctl(0, TCSETS, &shell->term_save);
   return (0);
 }

左または右のキーが押されたときにキャッチでき、それから\r行を消去するために使用します (これは実際には機能しません) が、主な問題は、リターン キーを使用できないことです (表示のみ^?) これを修正するにはどうすればよいですか?

4

1 に答える 1