INCHARQQ

QuickWin 関数:キーボードからの 1 文字の入力を読み取り,バッファに保存せずにその文字を表す ASCII 値を返します。

モジュールUSE DFLIB

形式

result = INCHARQQ ( )

結果

結果の型は INTEGER(2) です。結果は,ASCII キー・コードです。

キーストロークは,現在フォーカスがある子ウィンドウから読み取られます。キーストロークが入力される前に INCHARQQ を呼び出さなければなりません (INCHARQQ はキーボード・バッファを読みません)。この関数は入力をエコーしません。ファンクション・キーに対して,INCHARQQ は上位 8 ビットとして 0xE0 を,下位 8 ビットとして ASCII コードを返します。

矢印キーに対して,INCHARQQ は上位 8 ビットとして 0xF0,下位 8 ビットとして ASCII コードを返します。矢印キーを読めるようにするには,PASSDIRKEYSQQ 関数を使用しなければなりません。エスケープ文字 (上位 8 ビット) は,GETCHARQQ のものとは異なっています。Console アプリケーションは,PASSDIRKEYSQQ を必要としませんし,使うことができません。

互換性

STANDARD GRAPHICS QUICKWIN GRAPHICS LIB

関連情報

GETCGETCHARQQMBINCHARQQPASSDIRKEYSQQQuickWin の使用READ

		use dflib
		integer*4 res
		integer*2 exchar
		character*1 ch, ch1

		Print *,"Type X to exit, S to scroll, D to pass Direction keys"

	123	continue
		exchar = incharqq()
	!	エスケープを検証
	!	0xE0 0x?? はファンクションキー
	!	0xF0 0x?? は矢印キー

		ch = char(rshift(exchar,8) .and. #00FF)
		ch1= char(exchar .and. #00FF)

		if (ichar(ch) .eq. 224) then
		  print *,"function key  = ",ichar(ch), "  ",ichar(ch1),"  ",ch1
		  goto 123
		endif

		if (ichar(ch) .eq. 240) then
		  print *,"direction key = ",ichar(ch), "  ",ichar(ch1),"  ",ch1
		  goto 123
		endif

		print *,"other key  = ",ichar(ch),"  ",ichar(ch1),"  ",ch1

		if(ch1 .eq. 'S') then
		  res = passdirkeysqq(.false.)
		  print *, "Entering Scroll mode"
		endif

		if(ch1 .eq. 'D')  then
		  res = passdirkeysqq(.true.)
		  print *, "Entering Direction keys mode"
		endif

		if(ch1 .ne. 'X')  go to 123

		end