問題タブ [getch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Cでncursesアプリ-標準入力の読み取り
私はOSアカデミッククラス用のLinux標準lessコマンドの簡略版を書いていますが、それを簡単にするためにncursesを使用することが許可されています。「簡略化」とは、ユーザーが矢印、PgUp、PgDownを使用してビューをスクロールでき、gおよびGジャンプコマンドも使用できることを意味します。また、プログラムは、ファイル(パラメータとして指定された名前)または標準の入力ストリーム(次のような)から入力を読み取る必要があります。
ファイルからの読み取りは簡単で(この場合は問題ありません)、パイプライン演算子を使用しているときに問題が発生します-getch()は-1(EOF)を返し続け、キーを押しても応答しません。私の現在のコードは次のようになります。
ストリームをフラッシュすることだと思いましたが、同様の解決策はどれもうまくいきませんでした。stdinから最後まで(EOF)まですべてのデータを読み取ったので、EOFがバッファーに残っている理由がわかりません。
これに対する回避策はありますか?同様の質問を閲覧しましたが、問題の手がかりは見つかりませんでした。たぶんncursesは私のタスクにとって良い解決策ではありませんか?
linux - ncurses の getch() が機能しない
プログラムのメインループを作成する必要があり、次の関数を記述しました。
}
しかし、 getch() は機能せず、ループで -1 を出力します。どうやって?特別な attr を設定したり、特別な関数を呼び出したりできますか?
scala - コンソールでキーの押下を検出する方法は?
Scalaでローグライクを書いています。たとえば、ユーザーがいつ矢印キーを押したかを確認できる必要があります。私が見つけたすべての解決策では、プレイヤーがエンターを押す必要があります。
C の getch() と同様の方法でコンソール アプリのキー押下を検出する方法はありますか?
python - Linux ターミナル バッファ内の余分な文字を確認する
Python で関数を実装しようとしましたがgetch()
、F1-F12 や矢印キーなどの特殊キーの文字のリストも返す必要があります。これらの特別なキーは、連続して複数の文字を生成します。したがってgetch()
、ブロッキング モードで 1 文字を読み取り、入力バッファに余分な文字があるかどうかを確認して、それらも取得する必要があります。
call をtermios.FIONREADioctl
と共に使用して、入力バッファー内のバイト数を取得しています。バッファにスタックされた非特殊キーの押下をキャッチしますが、特殊キーからの余分な記号は見逃します。2 つの異なるバッファーがあるようです。誰かがこれを説明してくれたらうれしいです。
インタラクティブな例を次に示します。
sleep(1)
途中注意。この秒が切れる前に 1 つのキーを押すと、出力は次のようになります。
1 秒間に 5 つの通常のキー (「asdfg」など) を入力すると、出力は次のようになります。
ただし、単一の矢印キーの場合、出力は次のようになります。
ここで 2 つの質問があります。
通常のキー押下でキュー内の 4 つのシンボルが破棄されるのはなぜですか? 「生」端末モードに切り替えたためですか?
getch()
端末を「生」モードのままにしなくても、後続の実行のために文字を保持するにはどうすればよいですか?ioctl
特別なキーを 1 回押すだけのバッファが空になるのはなぜですか? それらのキャラクターは、その後のgetch()
実行のためにどこから来ていますか? それらを確認する方法は?
c - OS X の矢印キー
コンソール用の小さなゲームを作ろうとしているので、どの矢印キーが押されているかを確認する必要があります。インターネットで有用なものが見つかりません。
これまでのところ、私はこれを試しました:
しかし、 getch() は、どの矢印を押しても、常に 27 を返します。
何か案は?
c - getch と putchar が return なしで機能しない
getch
私は別のプログラムで仕事をしようとしてきましたが、うまくいきませんでした。getch
それで、メインプログラムで動作させたい方法で使用できる最も基本的なプログラムを作成しました。
noecho
、cbreak
、initscr
およびの必要性を調査しました。nodelay
使用も試みnewscr()
ましたが、成功しませんでした。
put
私が抱えている問題は、ループごとに画面に表示する必要があるときに、「Enter」を押すまで文字が画面に出力されないことです。なぜこうなった?また、改行してもカーソルが画面左に戻りません。例えば。
私は答えを探しましたが、再び困惑しています...
c++ - getch()のEclipseC++代替
EclipseでC++を使用しています。Borlandコンパイラでは、getch()関数を使用して、入力内容を表示せずにユーザー入力を取得しました。
getch()関数はEclipseでは機能しません。
ユーザーが入力した記号を画面に表示せずにユーザー入力を取得する別の方法はありますか?
c - ゲッチと矢印のコード
getch()
矢印キーのスキャンに使用するプログラムを作成しています。これまでの私のコードは次のとおりです。
問題は、、を押す'A'
と'B'
、'C'
などの10進コードであるため'D'
、コードも実行されることです。65
'A'
他の人に電話せずに矢印キーを確認する方法はありますか?
ありがとう!
c++ - _getch が入力を変数に読み取らない
_getch() 関数に問題があります。ユーザーがメニューから選択するときに ENTER を押す必要がないようにしたいのです。ただし、使用しようとすると、データが変数に入力されないか、持っているスイッチをスキップします。Windows 7 と CodeBlocks IDE を使用しています。私は間違って何をしていますか? 前もって感謝します。
python - パスワードをアスタリスクとしてエコーする方法
ユーザーがユーザー名とパスワードを入力するように求められるログインウィンドウを作成しようとしていますが、パスワードを入力すると、一般的なパスワード入力のように印刷されるアスタリスクを探しています (つまり、Sekr3t は次のようにエコーされます: * * * * * *)。
ここに私がこれまでに持っているコードがありますが、アスタリスクをエコーしない理由がわかりません:
どんな助けでも大歓迎です。