2013-06-05 10:37 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* src/rtl/gtwvt/gtwvt.c
    ! added workaround for AltGR and German keyboard

  * src/rtl/inkeyapi.c
    ! added missing 'static' in function declaration

  * src/rtl/hbgtcore.c
    ! added workarounds for HB_GTI_COMPAT_BUFFER switched to .F. by
      default.

  * tests/gtkeys.prg
    * switched to UTF8 CP by default
    + extended keycode information in Harbour
This commit is contained in:
Przemysław Czerpak
2013-06-05 10:37:34 +02:00
parent c44379e66e
commit 09298f8f31
5 changed files with 58 additions and 11 deletions

View File

@@ -15,10 +15,12 @@ REQUEST HB_CODEPAGE_PLMAZ
REQUEST HB_CODEPAGE_PLISO
REQUEST HB_CODEPAGE_PL852
REQUEST HB_CODEPAGE_PLWIN
REQUEST HB_CODEPAGE_UTF8EX
#else
#define hb_keyCode( n ) Asc( n )
#define hb_keyChar( c ) Chr( c )
#define hb_ntos( n ) LTrim( Str( n ) )
#xtranslate hb_keyStd( n ) ( n )
#xtranslate hb_keyCode( n ) Asc( n )
#xtranslate hb_keyChar( c ) iif( c >= 32 .AND. c <= 255, Chr( c ), "" )
#xtranslate hb_ntos( n ) LTrim( Str( n ) )
#endif
#ifndef HB_K_RESIZE
#define HB_K_RESIZE 1101
@@ -26,7 +28,7 @@ REQUEST HB_CODEPAGE_PLWIN
PROCEDURE Main( cTermCP, cHostCP, lBoxChar )
LOCAL k, i, s
LOCAL k, kX, i, s
LOCAL aKeys := { ;
{ "K_UP", 5, "Up arrow, Ctrl-E" }, ;
{ "K_DOWN", 24, "Down arrow, Ctrl-X" }, ;
@@ -242,7 +244,7 @@ PROCEDURE Main( cTermCP, cHostCP, lBoxChar )
#ifdef __HARBOUR__
Set( _SET_EVENTMASK, HB_INKEY_ALL )
Set( _SET_EVENTMASK, HB_INKEY_ALL + HB_INKEY_EXT )
hb_gtInfo( HB_GTI_CURSORBLINKRATE, 1000 )
hb_gtInfo( HB_GTI_ESCDELAY, 50 )
// hb_gtinfo( HB_GTI_FONTATTRIBUTE, 0 )
@@ -259,12 +261,12 @@ PROCEDURE Main( cTermCP, cHostCP, lBoxChar )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
hb_gtInfo( HB_GTI_SELECTCOPY, .T. )
IF Empty( cTermCP )
cTermCP := "PLISO"
cTermCP := "UTF8"
ELSE
cTermCP := Upper( cTermCP )
ENDIF
IF Empty( cHostCP )
cHostCP := "PLMAZ"
cHostCP := "UTF8"
ELSE
cHostCP := Upper( cHostCP )
ENDIF
@@ -290,14 +292,25 @@ PROCEDURE Main( cTermCP, cHostCP, lBoxChar )
?
WHILE .T.
k := Inkey( 0 )
kX := Inkey( 0 )
k := hb_keyStd( kX )
IF ( i := AScan( aKeys, {| x | x[ 2 ] == k } ) ) != 0
? " key:" + Str( aKeys[ i, 2 ], 7 ) + " " + PadR( aKeys[ i, 1 ], 18 ) + aKeys[ i, 3 ]
ELSEIF k >= 32 .AND. k <= 126 .OR. ( k >= 160 .AND. k <= 255 ) .OR. ;
Len( hb_keyChar( k ) ) > 0
#ifdef __HARBOUR__
? "char:" + iif( k > 256, " U+" + hb_numToHex( hb_keyVal( k ), 4 ), Str( k, 7 ) ) + ;
" " + hb_keyChar( k )
#else
? "char:" + Str( k, 7 ) + " " + hb_keyChar( k )
#endif
ELSE
#ifdef __HARBOUR__
? " key:" + Str( k, 7 ) + " ext: 0x" + hb_numToHex( kX, 8 ) + " -> " + ;
hb_numToHex( hb_keyMod( kX ), 2 ) + ":" + hb_numToHex( hb_keyVal( kX ), 8 )
#else
? " key:" + Str( k, 7 )
#endif
ENDIF
// ?? " (" + hb_ntos( MaxRow() ) + ":" + hb_ntos( MaxCol() ) + ")"