2011-11-10 8 views
0

Foundationを使用してObjective Cを学習し、コンソールに印刷しています。私は、文字や文字列を入力することが可能で、リターンキー(または任意のキー)を押すことなく自動的に印刷することができるかどうかを知りたいです。明らかに以下の簡単なコードでは、まだリターンキーがヒットする必要があります。私はこのコードがC & objCの間で混在していることを認識していますが、私はdiffernetのアイデアを試してきました。私もNcursesを使わずにこれをやろうとしています。前もって感謝します。リターンキーを押すことなく文字や文字列を入力する方法

char input [1];

NSLog(@"enter key:"); 

fgets(input, 1, stdin); 

NSString *inputString = [[NSString alloc]initWithCString:input]; 

NSLog(@"Input = %s",input); 

次のようにアイブ氏はちょうど良い答えが見つかりました: //設定し、端末をrawモードに システム( "sttyの生");

// Wait for single character 
char input = getchar(); 

// Echo input: 


// Reset terminal to normal "cooked" mode 
system("stty cooked"); 

// And we're out of here 

NSLog(@"INPUT = %c",input); 
+9

8つの質問がありますが、受け入れられず、0票が投じられました。人々は貴重な時間を優先させるべき理由を不思議に思うかもしれません。 –

+0

@KerrekSB - 検索者用。同じ質問に答えたい人。それがあなたの後にあるなら、アップフォートを与えるかもしれません。誰もが同じように参加するわけではありません。 –

+0

'system()'のあなたの解決策は、この場合、私の返信で言及された 'cfmakeraw()'とほとんど同じサブプロセスで完全なシェルを開始することを知っていますよね?さらに、 'stty'のマニュアルでは、rawオプションが設定するttyフラグについて言及しています。なぜなら、' tcsetattr'でそれらを設定するのはなぜですか?私は、あなたが得た答えを無視しているという気持ちがあります。 – hochl

答えて

0

http://pwilson.net/sample.htmlをご覧になり、kbhit.cを検索してください。その機能はあなたのために働くはずですが、Objective Cでテストされていません。

1

tcsetattrtcgetattrのマニュアルを読む。フラグICANONIECHOを探し、cfmakerawについて調べてください。文書console_ioctl(4)およびtty_ioctl(4)は、例えば、ttyのサイズを決定するために、さらに興味深いかもしれません。

+0

あなたの答えをありがとう - 私はこれを回避するいくつかの時間が必要です。 – pete

+0

あなたは解決策を考案しましたか?テストはどのように行ったのですか? – hochl

関連する問題