2015-09-14 17:36 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* src/rtl/gttrm/gttrm.c
    - removed unused macros and definitions
    * formatting and minor cleanup

  * src/rtl/gtcrs/gtcrs.h
  * src/rtl/gtcrs/gtcrs.c
    + added support for extended key codes, GTCRS does not support
      unicode so it's not fully functional just like in GTTRM
This commit is contained in:
Przemysław Czerpak
2015-09-14 17:36:57 +02:00
parent 1ff43722ed
commit c0142512db
4 changed files with 724 additions and 861 deletions

View File

@@ -10,6 +10,16 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2015-09-14 17:36 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gttrm/gttrm.c
- removed unused macros and definitions
* formatting and minor cleanup
* src/rtl/gtcrs/gtcrs.h
* src/rtl/gtcrs/gtcrs.c
+ added support for extended key codes, GTCRS does not support
unicode so it's not fully functional just like in GTTRM
2015-09-14 14:03 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
* set HB_FF_BINARY flag in numeric and date fields stored in binary

File diff suppressed because it is too large Load Diff

View File

@@ -69,7 +69,14 @@
# include <term.h>
#endif
#if defined( HB_HAS_GPM )
# include <gpm.h>
# include <gpm.h>
# if defined( HB_OS_LINUX ) && 0
# include <linux/keyboard.h>
# else
# define KG_SHIFT 0
# define KG_CTRL 2
# define KG_ALT 3
# endif
#endif
#include <stdio.h>
@@ -118,128 +125,110 @@
#define BASE_ERRFD 2
#define MAXFD 1024
#define ESC_DELAY 25
/* #define DBLCLK_DELAY 168 */
#define DBLCLK_DELAY hb_mouseGetDoubleClickSpeed()
#define MAX_IOBASE 32
#define STDIN_BUFLEN 128
#define TERM_LINUX 1
#define TERM_XTERM 2
#define STDIN_BUFLEN 128
#define ESC_DELAY 25
#define IS_EVTFDSTAT( x ) ( ( x ) >= 0x01 && ( x ) <= 0x03 )
#define EVTFDSTAT_RUN 0x01
#define EVTFDSTAT_STOP 0x02
#define EVTFDSTAT_DEL 0x03
#define EVTFDSTAT_RUN 0x01
#define EVTFDSTAT_STOP 0x02
#define EVTFDSTAT_DEL 0x03
#define CTRL_SEQ "\036"
#define ALT_SEQ "\037"
/*#define NATION_SEQ "\016"*/
/* mouse button states */
#define M_BUTTON_LEFT 0x0001
#define M_BUTTON_RIGHT 0x0002
#define M_BUTTON_MIDDLE 0x0004
#define M_BUTTON_LDBLCK 0x0010
#define M_BUTTON_RDBLCK 0x0020
#define M_BUTTON_MDBLCK 0x0040
#define M_BUTTON_WHEELUP 0x0100
#define M_BUTTON_WHEELDOWN 0x0200
#define M_CURSOR_MOVE 0x0400
#define M_BUTTON_KEYMASK ( M_BUTTON_LEFT | M_BUTTON_RIGHT | M_BUTTON_MIDDLE )
#define M_BUTTON_DBLMASK ( M_BUTTON_LDBLCK | M_BUTTON_RDBLCK | M_BUTTON_MDBLCK )
#define MOUSE_NONE 0
#define MOUSE_GPM 1
#define MOUSE_XTERM 2
#define MOUSE_NONE 0
#define MOUSE_GPM 1
#define MOUSE_XTERM 2
#define K_UNDEF 0x10000
#define K_METAALT 0x10001
#define K_METACTRL 0x10002
#define K_NATIONAL 0x10003
#define K_MOUSETERM 0x10004
#define K_RESIZE 0x10005
#define K_PRTSCR 0x10006
#define K_PAUSE 0x10007
#define KEY_SHIFTMASK 0x01000000
#define KEY_CTRLMASK 0x02000000
#define KEY_ALTMASK 0x04000000
#define KEY_KPADMASK 0x08000000
#define KEY_EXTDMASK 0x10000000
#define KEY_CLIPMASK 0x20000000
/* 0x40000000 reserved for Harbour extended keys */
#define KEY_MASK 0xFF000000
#define CLR_KEYMASK( x ) ( ( x ) & ~KEY_MASK )
#define GET_KEYMASK( x ) ( ( x ) & KEY_MASK )
#define IS_CLIPKEY( x ) ( ( ( ( x ) & ~0xffff ) ^ KEY_CLIPMASK ) == 0 )
#define SET_CLIPKEY( x ) ( ( ( x ) & 0xffff ) | KEY_CLIPMASK )
#define GET_CLIPKEY( x ) ( ( ( ( x ) & 0x8000 ) ? ~0xffff : 0 ) | ( ( x ) & 0xffff ) )
#define CTRL_SEQ "\036"
#define ALT_SEQ "\037"
/*#define NATION_SEQ "\016"*/
#define EXKEY_F1 ( HB_KX_F1 | KEY_EXTDMASK )
#define EXKEY_F2 ( HB_KX_F2 | KEY_EXTDMASK )
#define EXKEY_F3 ( HB_KX_F3 | KEY_EXTDMASK )
#define EXKEY_F4 ( HB_KX_F4 | KEY_EXTDMASK )
#define EXKEY_F5 ( HB_KX_F5 | KEY_EXTDMASK )
#define EXKEY_F6 ( HB_KX_F6 | KEY_EXTDMASK )
#define EXKEY_F7 ( HB_KX_F7 | KEY_EXTDMASK )
#define EXKEY_F8 ( HB_KX_F8 | KEY_EXTDMASK )
#define EXKEY_F9 ( HB_KX_F9 | KEY_EXTDMASK )
#define EXKEY_F10 ( HB_KX_F10 | KEY_EXTDMASK )
#define EXKEY_F11 ( HB_KX_F11 | KEY_EXTDMASK )
#define EXKEY_F12 ( HB_KX_F12 | KEY_EXTDMASK )
#define EXKEY_UP ( HB_KX_UP | KEY_EXTDMASK )
#define EXKEY_DOWN ( HB_KX_DOWN | KEY_EXTDMASK )
#define EXKEY_LEFT ( HB_KX_LEFT | KEY_EXTDMASK )
#define EXKEY_RIGHT ( HB_KX_RIGHT | KEY_EXTDMASK )
#define EXKEY_DEL ( HB_KX_DEL | KEY_EXTDMASK )
#define EXKEY_HOME ( HB_KX_HOME | KEY_EXTDMASK )
#define EXKEY_END ( HB_KX_END | KEY_EXTDMASK )
#define EXKEY_PGUP ( HB_KX_PGUP | KEY_EXTDMASK )
#define EXKEY_PGDN ( HB_KX_PGDN | KEY_EXTDMASK )
#define EXKEY_INS ( HB_KX_INS | KEY_EXTDMASK )
#define EXKEY_BS ( HB_KX_BS | KEY_EXTDMASK )
#define EXKEY_TAB ( HB_KX_TAB | KEY_EXTDMASK )
#define EXKEY_ESC ( HB_KX_ESC | KEY_EXTDMASK )
#define EXKEY_ENTER ( HB_KX_ENTER | KEY_EXTDMASK )
#define EXKEY_CENTER ( HB_KX_CENTER | KEY_EXTDMASK )
#define EXKEY_PRTSCR ( HB_KX_PRTSCR | KEY_EXTDMASK )
#define EXKEY_PAUSE ( HB_KX_PAUSE | KEY_EXTDMASK )
#define K_UNDEF 0x10000
#define K_METAALT 0x10001
#define K_METACTRL 0x10002
#define K_NATIONAL 0x10003
#define K_MOUSETERM 0x10004
#define K_RESIZE 0x10005
#ifndef SC_UNDEF
# define SC_UNDEF -1
#endif
#define KEY_ALTMASK 0x10000000
#define KEY_CTRLMASK 0x20000000
#define KEY_EXTDMASK 0x40000000
#define KEY_CLIPMASK 0x80000000
#define KEY_MASK 0xF0000000
#define CLR_KEYMASK( x ) ( ( x ) & ~KEY_MASK )
#define GET_KEYMASK( x ) ( ( x ) & KEY_MASK )
#define IS_CLIPKEY( x ) ( ( ( ( x ) & ~0xffff ) ^ KEY_CLIPMASK ) == 0 )
#define SET_CLIPKEY( x ) ( ( ( x ) & 0xffff ) | KEY_CLIPMASK )
#define GET_CLIPKEY( x ) ( ( ( ( x ) & 0x8000 ) ? ~0xffff : 0 ) | ( ( x ) & 0xffff ) )
#define NO_STDKEYS 96
#define NO_EXTDKEYS 30
#define EXKEY_F1 ( 0 | KEY_EXTDMASK )
#define EXKEY_F2 ( 1 | KEY_EXTDMASK )
#define EXKEY_F3 ( 2 | KEY_EXTDMASK )
#define EXKEY_F4 ( 3 | KEY_EXTDMASK )
#define EXKEY_F5 ( 4 | KEY_EXTDMASK )
#define EXKEY_F6 ( 5 | KEY_EXTDMASK )
#define EXKEY_F7 ( 6 | KEY_EXTDMASK )
#define EXKEY_F8 ( 7 | KEY_EXTDMASK )
#define EXKEY_F9 ( 8 | KEY_EXTDMASK )
#define EXKEY_F10 ( 9 | KEY_EXTDMASK )
#define EXKEY_F11 ( 10 | KEY_EXTDMASK )
#define EXKEY_F12 ( 11 | KEY_EXTDMASK )
#define EXKEY_UP ( 12 | KEY_EXTDMASK )
#define EXKEY_DOWN ( 13 | KEY_EXTDMASK )
#define EXKEY_LEFT ( 14 | KEY_EXTDMASK )
#define EXKEY_RIGHT ( 15 | KEY_EXTDMASK )
#define EXKEY_INS ( 16 | KEY_EXTDMASK )
#define EXKEY_DEL ( 17 | KEY_EXTDMASK )
#define EXKEY_HOME ( 18 | KEY_EXTDMASK )
#define EXKEY_END ( 19 | KEY_EXTDMASK )
#define EXKEY_PGUP ( 20 | KEY_EXTDMASK )
#define EXKEY_PGDN ( 21 | KEY_EXTDMASK )
#define EXKEY_BS ( 22 | KEY_EXTDMASK )
#define EXKEY_TAB ( 23 | KEY_EXTDMASK )
#define EXKEY_ESC ( 24 | KEY_EXTDMASK )
#define EXKEY_ENTER ( 25 | KEY_EXTDMASK )
#define EXKEY_KPENTER ( 26 | KEY_EXTDMASK )
#define EXKEY_CENTER ( 27 | KEY_EXTDMASK )
#define EXKEY_PRTSCR ( 28 | KEY_EXTDMASK )
#define EXKEY_PAUSE ( 29 | KEY_EXTDMASK )
/* xHarbour compatible definitions */
#if ! defined( K_SH_LEFT )
#define K_SH_LEFT K_LEFT /* Shift-Left == Left */
#define K_SH_UP K_UP /* Shift-Up == Up */
#define K_SH_RIGHT K_RIGHT /* Shift-Right == Right */
#define K_SH_DOWN K_DOWN /* Shift-Down == Down */
#define K_SH_INS K_INS /* Shift-Ins == Ins */
#define K_SH_DEL K_DEL /* Shift-Del == Del */
#define K_SH_HOME K_HOME /* Shift-Home == Home */
#define K_SH_END K_END /* Shift-End == End */
#define K_SH_PGUP K_PGUP /* Shift-PgUp == PgUp */
#define K_SH_PGDN K_PGDN /* Shift-PgDn == PgDn */
#define K_SH_RETURN K_RETURN /* Shift-Enter == Enter */
#define K_SH_ENTER K_ENTER /* Shift-Enter == Enter */
#endif
/* mouse button states */
#define M_BUTTON_LEFT 0x0001
#define M_BUTTON_RIGHT 0x0002
#define M_BUTTON_MIDDLE 0x0004
#define M_BUTTON_LDBLCK 0x0010
#define M_BUTTON_RDBLCK 0x0020
#define M_BUTTON_MDBLCK 0x0040
#define M_BUTTON_WHEELUP 0x0100
#define M_BUTTON_WHEELDOWN 0x0200
#define M_CURSOR_MOVE 0x0400
#define M_BUTTON_KEYMASK ( M_BUTTON_LEFT | M_BUTTON_RIGHT | M_BUTTON_MIDDLE )
#define M_BUTTON_DBLMASK ( M_BUTTON_LDBLCK | M_BUTTON_RDBLCK | M_BUTTON_MDBLCK )
#define TIMEVAL_GET( tv ) gettimeofday( &( tv ), NULL );
#define TIMEVAL_LESS( tv1, tv2 ) ( ( ( tv1 ).tv_sec == ( tv2 ).tv_sec ) ? \
( ( tv1 ).tv_usec < ( tv2 ).tv_usec ) : \
( ( tv1 ).tv_sec < ( tv2 ).tv_sec ) )
#define TIMEVAL_GET( tv ) gettimeofday( &( tv ), NULL )
#define TIMEVAL_LESS( tv1, tv2 ) ( ( ( tv1 ).tv_sec == ( tv2 ).tv_sec ) ? \
( ( tv1 ).tv_usec < ( tv2 ).tv_usec ) : \
( ( tv1 ).tv_sec < ( tv2 ).tv_sec ) )
#define TIMEVAL_ADD( dst, src, n ) \
{ \
( dst ).tv_sec = ( src ).tv_sec + n / 1000; \
if( ( ( dst ).tv_usec = ( src ).tv_usec + ( n % 1000 ) * 1000 ) >= 1000000 ) \
do { \
( dst ).tv_sec = ( src ).tv_sec + ( n ) / 1000; \
if( ( ( dst ).tv_usec = ( src ).tv_usec + ( ( n ) % 1000 ) * 1000 ) >= 1000000 ) \
{ \
( dst ).tv_usec -= 1000000; ( dst ).tv_sec++; \
} \
}
} while( 0 )

View File

@@ -102,78 +102,132 @@
#endif
#ifndef O_ACCMODE
# define O_ACCMODE ( O_RDONLY | O_WRONLY | O_RDWR )
# define O_ACCMODE ( O_RDONLY | O_WRONLY | O_RDWR )
#endif
static int s_GtId;
static HB_GT_FUNCS SuperTable;
#define HB_GTSUPER ( &SuperTable )
#define HB_GTID_PTR ( &s_GtId )
#define HB_GTSUPER ( &SuperTable )
#define HB_GTID_PTR ( &s_GtId )
#define HB_GTTRM_ATTR_CHAR 0x00FF
#define HB_GTTRM_ATTR_STD 0x0000
#define HB_GTTRM_ATTR_CHAR 0x00FF
#define HB_GTTRM_ATTR_STD 0x0000
#if 0
#define HB_GTTRM_ATTR_ALT 0x0100
#define HB_GTTRM_ATTR_PROT 0x0200
#define HB_GTTRM_ATTR_ACSC 0x0400
#define HB_GTTRM_ATTR_ALT 0x0100
#define HB_GTTRM_ATTR_PROT 0x0200
#define HB_GTTRM_ATTR_ACSC 0x0400
#else
#define HB_GTTRM_ATTR_ALT 0x0100
#define HB_GTTRM_ATTR_PROT 0x0100
#define HB_GTTRM_ATTR_ACSC 0x0100
#define HB_GTTRM_ATTR_ALT 0x0100
#define HB_GTTRM_ATTR_PROT 0x0100
#define HB_GTTRM_ATTR_ACSC 0x0100
#endif
#define HB_GTTRM_ATTR_BOX 0x0800
#define HB_GTTRM_ATTR_BOX 0x0800
#define TERM_ANSI 1
#define TERM_LINUX 2
#define TERM_XTERM 3
#define TERM_PUTTY 4
#define TERM_CONS 8
#define TERM_ANSI 1
#define TERM_LINUX 2
#define TERM_XTERM 3
#define TERM_PUTTY 4
#define TERM_CONS 8
#define HB_GTTRM_CLRSTD 0
#define HB_GTTRM_CLRX16 1
#define HB_GTTRM_CLR256 2
#define HB_GTTRM_CLRRGB 3
#define HB_GTTRM_CLRAIX 4
#define HB_GTTRM_CLRSTD 0
#define HB_GTTRM_CLRX16 1
#define HB_GTTRM_CLR256 2
#define HB_GTTRM_CLRRGB 3
#define HB_GTTRM_CLRAIX 4
#define NO_STDKEYS 96
#define NO_EXTDKEYS 30
#define STDIN_BUFLEN 128
#define STDIN_BUFLEN 128
#define ESC_DELAY 25
#define ESC_DELAY 25
#define IS_EVTFDSTAT( x ) ( ( x ) >= 0x01 && ( x ) <= 0x03 )
#define EVTFDSTAT_RUN 0x01
#define EVTFDSTAT_STOP 0x02
#define EVTFDSTAT_DEL 0x03
#define EVTFDSTAT_RUN 0x01
#define EVTFDSTAT_STOP 0x02
#define EVTFDSTAT_DEL 0x03
/* mouse button states */
#define M_BUTTON_LEFT 0x0001
#define M_BUTTON_RIGHT 0x0002
#define M_BUTTON_MIDDLE 0x0004
#define M_BUTTON_LDBLCK 0x0010
#define M_BUTTON_RDBLCK 0x0020
#define M_BUTTON_MDBLCK 0x0040
#define M_BUTTON_WHEELUP 0x0100
#define M_BUTTON_WHEELDOWN 0x0200
#define M_CURSOR_MOVE 0x0400
#define M_BUTTON_KEYMASK ( M_BUTTON_LEFT | M_BUTTON_RIGHT | M_BUTTON_MIDDLE )
#define M_BUTTON_DBLMASK ( M_BUTTON_LDBLCK | M_BUTTON_RDBLCK | M_BUTTON_MDBLCK )
#define M_BUTTON_LEFT 0x0001
#define M_BUTTON_RIGHT 0x0002
#define M_BUTTON_MIDDLE 0x0004
#define M_BUTTON_LDBLCK 0x0010
#define M_BUTTON_RDBLCK 0x0020
#define M_BUTTON_MDBLCK 0x0040
#define M_BUTTON_WHEELUP 0x0100
#define M_BUTTON_WHEELDOWN 0x0200
#define M_CURSOR_MOVE 0x0400
#define M_BUTTON_KEYMASK ( M_BUTTON_LEFT | M_BUTTON_RIGHT | M_BUTTON_MIDDLE )
#define M_BUTTON_DBLMASK ( M_BUTTON_LDBLCK | M_BUTTON_RDBLCK | M_BUTTON_MDBLCK )
#define MOUSE_NONE 0
#define MOUSE_GPM 1
#define MOUSE_XTERM 2
#define MOUSE_NONE 0
#define MOUSE_GPM 1
#define MOUSE_XTERM 2
#define KEY_SHIFTMASK 0x01000000
#define KEY_CTRLMASK 0x02000000
#define KEY_ALTMASK 0x04000000
#define KEY_KPADMASK 0x08000000
#define KEY_EXTDMASK 0x10000000
#define KEY_CLIPMASK 0x20000000
/* 0x40000000 reserved for Harbour extended keys */
#define KEY_MASK 0xFF000000
#define CLR_KEYMASK( x ) ( ( x ) & ~KEY_MASK )
#define GET_KEYMASK( x ) ( ( x ) & KEY_MASK )
#define IS_CLIPKEY( x ) ( ( ( ( x ) & ~0xffff ) ^ KEY_CLIPMASK ) == 0 )
#define SET_CLIPKEY( x ) ( ( ( x ) & 0xffff ) | KEY_CLIPMASK )
#define GET_CLIPKEY( x ) ( ( ( ( x ) & 0x8000 ) ? ~0xffff : 0 ) | ( ( x ) & 0xffff ) )
#define CTRL_SEQ "\036"
#define ALT_SEQ "\037"
/*#define NATION_SEQ "\016"*/
#define EXKEY_F1 ( HB_KX_F1 | KEY_EXTDMASK )
#define EXKEY_F2 ( HB_KX_F2 | KEY_EXTDMASK )
#define EXKEY_F3 ( HB_KX_F3 | KEY_EXTDMASK )
#define EXKEY_F4 ( HB_KX_F4 | KEY_EXTDMASK )
#define EXKEY_F5 ( HB_KX_F5 | KEY_EXTDMASK )
#define EXKEY_F6 ( HB_KX_F6 | KEY_EXTDMASK )
#define EXKEY_F7 ( HB_KX_F7 | KEY_EXTDMASK )
#define EXKEY_F8 ( HB_KX_F8 | KEY_EXTDMASK )
#define EXKEY_F9 ( HB_KX_F9 | KEY_EXTDMASK )
#define EXKEY_F10 ( HB_KX_F10 | KEY_EXTDMASK )
#define EXKEY_F11 ( HB_KX_F11 | KEY_EXTDMASK )
#define EXKEY_F12 ( HB_KX_F12 | KEY_EXTDMASK )
#define EXKEY_UP ( HB_KX_UP | KEY_EXTDMASK )
#define EXKEY_DOWN ( HB_KX_DOWN | KEY_EXTDMASK )
#define EXKEY_LEFT ( HB_KX_LEFT | KEY_EXTDMASK )
#define EXKEY_RIGHT ( HB_KX_RIGHT | KEY_EXTDMASK )
#define EXKEY_DEL ( HB_KX_DEL | KEY_EXTDMASK )
#define EXKEY_HOME ( HB_KX_HOME | KEY_EXTDMASK )
#define EXKEY_END ( HB_KX_END | KEY_EXTDMASK )
#define EXKEY_PGUP ( HB_KX_PGUP | KEY_EXTDMASK )
#define EXKEY_PGDN ( HB_KX_PGDN | KEY_EXTDMASK )
#define EXKEY_INS ( HB_KX_INS | KEY_EXTDMASK )
#define EXKEY_BS ( HB_KX_BS | KEY_EXTDMASK )
#define EXKEY_TAB ( HB_KX_TAB | KEY_EXTDMASK )
#define EXKEY_ESC ( HB_KX_ESC | KEY_EXTDMASK )
#define EXKEY_ENTER ( HB_KX_ENTER | KEY_EXTDMASK )
#define EXKEY_CENTER ( HB_KX_CENTER | KEY_EXTDMASK )
#define EXKEY_PRTSCR ( HB_KX_PRTSCR | KEY_EXTDMASK )
#define EXKEY_PAUSE ( HB_KX_PAUSE | KEY_EXTDMASK )
#define K_UNDEF 0x10000
#define K_METAALT 0x10001
#define K_METACTRL 0x10002
#define K_NATIONAL 0x10003
#define K_MOUSETERM 0x10004
#define K_RESIZE 0x10005
#if defined( HB_OS_UNIX ) || defined( __DJGPP__ )
#define TIMEVAL_GET( tv ) gettimeofday( &( tv ), NULL )
#define TIMEVAL_LESS( tv1, tv2 ) ( ( ( tv1 ).tv_sec == ( tv2 ).tv_sec ) ? \
( ( tv1 ).tv_usec < ( tv2 ).tv_usec ) : \
#define TIMEVAL_LESS( tv1, tv2 ) ( ( ( tv1 ).tv_sec == ( tv2 ).tv_sec ) ? \
( ( tv1 ).tv_usec < ( tv2 ).tv_usec ) : \
( ( tv1 ).tv_sec < ( tv2 ).tv_sec ) )
#define TIMEVAL_ADD( dst, src, n ) \
do { \
( dst ).tv_sec = ( src ).tv_sec + ( n ) / 1000; \
if( ( ( dst ).tv_usec = ( src ).tv_usec + ( n % 1000 ) * 1000 ) >= 1000000 ) \
if( ( ( dst ).tv_usec = ( src ).tv_usec + ( ( n ) % 1000 ) * 1000 ) >= 1000000 ) \
{ \
( dst ).tv_usec -= 1000000; ( dst ).tv_sec++; \
} \
@@ -187,63 +241,6 @@ static HB_GT_FUNCS SuperTable;
#endif
#define KEY_SHIFTMASK 0x01000000
#define KEY_CTRLMASK 0x02000000
#define KEY_ALTMASK 0x04000000
#define KEY_KPADMASK 0x08000000
#define KEY_EXTDMASK 0x10000000
#define KEY_CLIPMASK 0x20000000
/* 0x40000000 reserved for Harbour extended keys */
#define KEY_MASK 0xFF000000
#define CLR_KEYMASK( x ) ( ( x ) & ~KEY_MASK )
#define GET_KEYMASK( x ) ( ( x ) & KEY_MASK )
#define IS_CLIPKEY( x ) ( ( ( ( x ) & ~0xffff ) ^ KEY_CLIPMASK ) == 0 )
#define SET_CLIPKEY( x ) ( ( ( x ) & 0xffff ) | KEY_CLIPMASK )
#define GET_CLIPKEY( x ) ( ( ( ( x ) & 0x8000 ) ? ~0xffff : 0 ) | ( ( x ) & 0xffff ) )
#define CTRL_SEQ "\036"
#define ALT_SEQ "\037"
/*#define NATION_SEQ "\016"*/
#define EXKEY_F1 ( HB_KX_F1 | KEY_EXTDMASK )
#define EXKEY_F2 ( HB_KX_F2 | KEY_EXTDMASK )
#define EXKEY_F3 ( HB_KX_F3 | KEY_EXTDMASK )
#define EXKEY_F4 ( HB_KX_F4 | KEY_EXTDMASK )
#define EXKEY_F5 ( HB_KX_F5 | KEY_EXTDMASK )
#define EXKEY_F6 ( HB_KX_F6 | KEY_EXTDMASK )
#define EXKEY_F7 ( HB_KX_F7 | KEY_EXTDMASK )
#define EXKEY_F8 ( HB_KX_F8 | KEY_EXTDMASK )
#define EXKEY_F9 ( HB_KX_F9 | KEY_EXTDMASK )
#define EXKEY_F10 ( HB_KX_F10 | KEY_EXTDMASK )
#define EXKEY_F11 ( HB_KX_F11 | KEY_EXTDMASK )
#define EXKEY_F12 ( HB_KX_F12 | KEY_EXTDMASK )
#define EXKEY_UP ( HB_KX_UP | KEY_EXTDMASK )
#define EXKEY_DOWN ( HB_KX_DOWN | KEY_EXTDMASK )
#define EXKEY_LEFT ( HB_KX_LEFT | KEY_EXTDMASK )
#define EXKEY_RIGHT ( HB_KX_RIGHT | KEY_EXTDMASK )
#define EXKEY_HOME ( HB_KX_HOME | KEY_EXTDMASK )
#define EXKEY_END ( HB_KX_END | KEY_EXTDMASK )
#define EXKEY_PGUP ( HB_KX_PGUP | KEY_EXTDMASK )
#define EXKEY_PGDN ( HB_KX_PGDN | KEY_EXTDMASK )
#define EXKEY_INS ( HB_KX_INS | KEY_EXTDMASK )
#define EXKEY_DEL ( HB_KX_DEL | KEY_EXTDMASK )
#define EXKEY_BS ( HB_KX_BS | KEY_EXTDMASK )
#define EXKEY_TAB ( HB_KX_TAB | KEY_EXTDMASK )
#define EXKEY_ESC ( HB_KX_ESC | KEY_EXTDMASK )
#define EXKEY_ENTER ( HB_KX_ENTER | KEY_EXTDMASK )
#define EXKEY_CENTER ( HB_KX_CENTER | KEY_EXTDMASK )
#define EXKEY_PRTSCR ( HB_KX_PRTSCR | KEY_EXTDMASK )
#define EXKEY_PAUSE ( HB_KX_PAUSE | KEY_EXTDMASK )
#define K_UNDEF 0x10000
#define K_METAALT 0x10001
#define K_METACTRL 0x10002
#define K_NATIONAL 0x10003
#define K_MOUSETERM 0x10004
#define K_RESIZE 0x10005
typedef struct
{
int fd;
@@ -285,14 +282,6 @@ typedef struct _keyTab
struct _keyTab * otherCh;
} keyTab;
typedef struct
{
int key;
int alt_key;
int ctrl_key;
int shift_key;
} ClipKeyCode;
typedef struct
{
int key;
@@ -458,7 +447,6 @@ static int getClipKey( int nKey )
return nRet;
}
/* SA_NOCLDSTOP in #if is a hack to detect POSIX compatible environment */
#if defined( HB_OS_UNIX ) && defined( SA_NOCLDSTOP )
@@ -1034,10 +1022,10 @@ static void mouse_init( PHB_GTTRM pTerm )
if( ( flags = fcntl( gpm_fd, F_GETFL, 0 ) ) != -1 )
fcntl( gpm_fd, F_SETFL, flags | O_NONBLOCK );
pTerm->mouse_type |= MOUSE_GPM;
memset( ( void * ) &pTerm->mLastEvt, 0, sizeof( pTerm->mLastEvt ) );
flush_gpmevt( pTerm );
add_efds( pTerm, gpm_fd, O_RDONLY, set_gpmevt, ( void * ) pTerm );
pTerm->mouse_type |= MOUSE_GPM;
/*
* In recent GPM versions it produce unpleasure noice on the screen
@@ -1225,7 +1213,7 @@ static int test_bufch( PHB_GTTRM pTerm, int n, int delay )
return ( IS_CLIPKEY( nKey ) || HB_INKEY_ISEXT( nKey ) ) ? nKey :
( pTerm->stdin_inbuf > n ?
pTerm->stdin_buf[( pTerm->stdin_ptr_l + n ) % STDIN_BUFLEN] : -1 );
pTerm->stdin_buf[ ( pTerm->stdin_ptr_l + n ) % STDIN_BUFLEN] : -1 );
}
static void free_bufch( PHB_GTTRM pTerm, int n )
@@ -1403,7 +1391,7 @@ again:
}
}
#else
if( nKey > 0 && nKey <= 255 && pTerm->fUTF8 && pTerm->cdpIn )
if( nKey >= 32 && nKey <= 255 && pTerm->fUTF8 && pTerm->cdpIn )
{
HB_USHORT uc = 0;
n = i = 0;
@@ -1425,13 +1413,13 @@ again:
}
}
if( nKey > 0 && nKey <= 255 && pTerm->keyTransTbl[ nKey ] )
nKey = pTerm->keyTransTbl[ nKey ];
/*
if( pTerm->nation_transtbl && pTerm->nation_mode &&
nKey >= 32 && nKey < 128 && pTerm->nation_transtbl[nKey] )
nKey = pTerm->nation_transtbl[nKey];
*/
if( nKey > 0 && nKey <= 255 && pTerm->keyTransTbl[ nKey ] )
nKey = pTerm->keyTransTbl[ nKey ];
#endif
if( nKey )
nKey = getClipKey( nKey );
@@ -2546,7 +2534,7 @@ static int removeKeyMap( PHB_GTTRM pTerm, const char * cdesc )
int ret = K_UNDEF, i = 0, c;
keyTab ** ptr;
c = ( unsigned char ) cdesc[ i++ ];
c = ( unsigned char ) cdesc[ i++ ];
ptr = &pTerm->pKeyTab;
while( c && *ptr != NULL )