--- np2/generic/softkbd.c 2004/03/25 18:25:24 1.4 +++ np2/generic/softkbd.c 2004/03/31 11:59:17 1.6 @@ -17,6 +17,44 @@ #include "softkbd.res" #endif +#if 0 +typedef struct { + BMPDATA inf; + BYTE *ptr; + int height; + int yalign; +} CMNBMP; + +static BOOL cmnbmp_4(const BYTE *dat, CMNBMP *ret) { + + BMPDATA inf; +const BMPFILE *bf; + + bf = (BMPFILE *)dat; + if ((bf == NULL) || + (bf->bfType[0] != 'B') || (bf->bfType[1] != 'M') || + (bmpdata_getinfo((BMPINFO *)(bf + 1), &inf) != SUCCESS) || + (inf.bpp == 4)) { + return(FAILURE); + } + if (ret) { + ret->inf = inf; + ret->ptr = ((BYTE *)bf) + (LOADINTELDWORD(bf->bfOffBits)); + ret->yalign = bmpdata_getalign((BMPINFO *)(bf + 1)); + if (inf.height < 0) { + ret->height = inf.height * -1; + } + else { + ret->ptr += (inf.height - 1) * ret->yalign; + ret->height = inf.height; + ret->yalign *= -1; + } + } + return(SUCCESS); +} +#endif + + typedef struct { BYTE *bmp; UINT width; @@ -27,6 +65,9 @@ typedef struct { static SOFTKBD softkbd; + +// ---- + void softkbd_initialize(void) { BMPFILE *bf; @@ -43,7 +84,12 @@ void softkbd_initialize(void) { (inf.bpp == 4)) { softkbd.bmp = (BYTE *)bf; softkbd.width = inf.width; - softkbd.height = inf.height; + if (inf.height > 0) { + softkbd.height = inf.height; + } + else { + softkbd.height = 0 - inf.height; + } } else { _MFREE(bf); @@ -76,9 +122,10 @@ BOOL softkbd_getsize(int *width, int *he return(SUCCESS); } -void softkbd_paint(CMNVRAM *vram, CMNPALCNV cnv) { +BOOL softkbd_paint(CMNVRAM *vram, CMNPALCNV cnv) { cmddraw_bmp16(vram, softkbd.bmp, cnv, CMNBMP_LEFT | CMNBMP_TOP); + return(TRUE); } BOOL softkbd_down(int x, int y) { @@ -91,7 +138,7 @@ BOOL softkbd_down(int x, int y) { return(TRUE); } else if (key != SOFTKEY_NC) { - keystat_senddata((UINT8)key); + keystat_down(&key, 1, NKEYREF_SOFTKBD); softkbd.key = key; } return(FALSE); @@ -100,7 +147,7 @@ BOOL softkbd_down(int x, int y) { void softkbd_up(void) { if (softkbd.key != SOFTKEY_NC) { - keystat_senddata((REG8)(softkbd.key | 0x80)); + keystat_up(&softkbd.key, 1, NKEYREF_SOFTKBD); softkbd.key = SOFTKEY_NC; } }