The colormap code is now simpler, 15bpp works where it did not before.

The input is fixed so that delete reports '\b' and backspace 127

The vt switching works both right and left.
This commit is contained in:
Sean D'Epagnier 2006-08-27 01:16:09 +00:00
parent 7e9737b370
commit a38aef93ab
2 changed files with 32 additions and 45 deletions

View file

@ -97,54 +97,39 @@ void RestoreColorMap(void)
void LoadColorMap(void)
{
/* we're assuming 256 entries here */
int i;
switch(VarInfo.bits_per_pixel) {
case 8:
case 24:
case 32:
ColorMap.len = 256;
break;
case 15:
ColorMap.len = 32;
break;
case 16:
ColorMap.len = 64;
break;
}
ColorMap.start = 0;
ColorMap.red = RedColorMap;
ColorMap.green = GreenColorMap;
ColorMap.blue = BlueColorMap;
ColorMap.transp = NULL;
if (ioctl(FrameBufferFD, FBIOGETCMAP, (void *) &ColorMap) < 0)
sprintf(exiterror, "ioctl(FBIOGETCMAP) failed!\n");
if(DisplayMode & GLUT_INDEX) {
ColorMap.len = 256;
switch(VarInfo.bits_per_pixel) {
case 15:
for(i=0; i<32; i++)
RedColorMap[i] = GreenColorMap[i] = BlueColorMap[i] = i*65535/31;
break;
case 16:
for(i=0; i<32; i++)
RedColorMap[i] = BlueColorMap[i] = i*65535/31;
for(i=0; i<64; i++)
GreenColorMap[i] = i*65535/63;
break;
case 24:
case 32:
for(i=0; i<256; i++)
RedColorMap[i] = GreenColorMap[i] = BlueColorMap[i] = i*257;
break;
}
if (ioctl(FrameBufferFD, FBIOGETCMAP, (void *) &ColorMap) < 0)
sprintf(exiterror, "ioctl(FBIOGETCMAP) failed!\n");
RestoreColorMap();
if(DisplayMode & GLUT_INDEX)
FillReverseColorMap();
} else {
int rcols = 1 << VarInfo.red.length;
int gcols = 1 << VarInfo.green.length;
int bcols = 1 << VarInfo.blue.length;
int i;
ColorMap.len = gcols;
for (i = 0; i < rcols ; i++)
RedColorMap[i] = (65536/(rcols-1)) * i;
for (i = 0; i < gcols ; i++)
GreenColorMap[i] = (65536/(gcols-1)) * i;
for (i = 0; i < bcols ; i++)
BlueColorMap[i] = (65536/(bcols-1)) * i;
RestoreColorMap();
}
}
void glutSetColor(int cell, GLfloat red, GLfloat green, GLfloat blue)

View file

@ -138,7 +138,7 @@ static void KeyboardHandler(int sig)
if(labelval == K_RIGHT)
if(ioctl(ConsoleFD, VT_GETSTATE, &st) >= 0)
vt = st.v_active - 1;
vt = st.v_active + 1;
if(vt != -1) {
if(Swapping)
@ -224,7 +224,8 @@ static int ReadKey(void)
specialkey = GLUT_KEY_INSERT;
break;
case 51:
code = '\b'; goto stdkey;
code = '\b';
goto stdkey;
case 91:
READKEY;
specialkey = GLUT_KEY_F1 + code - 65;
@ -313,8 +314,8 @@ static int ReadKey(void)
if(KeyboardLedState & LED_SCR)
return 0;
if(labelval >= K_F1 && labelval <= K_F12)
specialkey = GLUT_KEY_F1 + labelval - K_F1;
if(labelvalnoshift >= K_F1 && labelvalnoshift <= K_F12)
specialkey = GLUT_KEY_F1 + labelvalnoshift - K_F1;
else
switch(labelvalnoshift) {
case K_LEFT:
@ -335,8 +336,9 @@ static int ReadKey(void)
specialkey = GLUT_KEY_END; break;
case K_INSERT:
specialkey = GLUT_KEY_INSERT; break;
case 127:
labelval = '\b'; break;
case K_REMOVE:
labelval = '\b';
break;
case K_ENTER:
case K_ENTER - 1: /* keypad enter */
labelval = '\n'; break;