1

Cygwin/Mintty で stdin を raw 入力モードにしたいです。それ、どうやったら出来るの?現在、ラインバッファリングされています。生の入力モードでは、入力readされたすべての文字が返されることを意味します。

それ以上の依存関係なしでそれを行うことをお勧めします。つまり、Cygwin のいくつかのライブラリにリンクすることでおそらくこれを行うことができると思いますが、可能であれば、それを避けたいと思います。

一部の検索結果: libuv の問題libuv win/tty.cCygwin tty.ccCygwin fhandler_tty.ccCygwin の投稿 (ノンブロッキング stdin)Mintty の問題Msysgit の問題

経由SetConsoleModeで試しましたが、それは Windows コンソールでのみ機能し、Mintty では機能しません。つまり、このコード:

    // Setting terminal to raw mode...
    HANDLE hStdin;
    DWORD mode;
    //hStdin = GetStdHandle(STD_INPUT_HANDLE);
    hStdin = (HANDLE) _get_osfhandle(STDIN_FILENO);

    if (GetFileType(hStdin) == FILE_TYPE_CHAR) {
        cout << "stdin is file type char" << endl;
        GetConsoleMode(hStdin, &mode);
        if (
            !SetConsoleMode(
                hStdin,
                mode & ~(ENABLE_LINE_INPUT|ENABLE_ECHO_INPUT))
        ) {
            cerr << "Cannot set stdin to raw mode" << endl;
            // ignore...
        }
    }
4

1 に答える 1

0

機能しますsystem( "stty -raw" );か?

于 2014-04-19T19:09:40.330 に答える