Ejemplo n.º 1
0
// Системный вызов syscall_getch
// Ожидает нажатия клавиши и возвращает ее ascii-код
char syscall_getch()
{
   uchar cp, c = inb(0x60);
   char ascii;
   do
   {
      cp = c;
      c = inb(0x60);
   } while ((c == '\0') || (c == cp) || ((ascii = scan2ascii(c)) == '\0'));
   return scan2ascii(c);
}
Ejemplo n.º 2
0
static void doKeyboardEvent(WPARAM wParam, LPARAM lParam, void (*keyFunc)(unsigned char key, int x, int y), void (specialKeyFunc)(unsigned char key, int x, int y), char keyMapValue)
{
	unsigned char c;

		switch(wParam)
		{
			case VK_F1:
				c = GLUT_KEY_F1; break;
			case VK_F2:
				c = GLUT_KEY_F2; break;
			case VK_F3:
				c = GLUT_KEY_F3; break;
			case VK_F4:
				c = GLUT_KEY_F4; break;
			case VK_F5:
				c = GLUT_KEY_F5; break;
			case VK_F6:
				c = GLUT_KEY_F6; break;
			case VK_F7:
				c = GLUT_KEY_F7; break;
// F8 and up ignored since they are not possible on some keyboards - like mine

			case VK_LEFT:
				c = GLUT_KEY_LEFT; break;
			case VK_UP:
				c = GLUT_KEY_UP; break;
			case VK_RIGHT:
				c = GLUT_KEY_RIGHT; break;
			case VK_DOWN:
				c = GLUT_KEY_DOWN; break;

			case VK_ESCAPE:
				c = GLUT_KEY_ESC; break;
			case VK_PRIOR:
				c = GLUT_KEY_PAGE_UP; break;
			case VK_NEXT:
				c = GLUT_KEY_PAGE_DOWN; break;
			case VK_HOME:
				c = GLUT_KEY_HOME; break;
			case VK_END:
				c = GLUT_KEY_END; break;
			case VK_INSERT:
				c = GLUT_KEY_INSERT; break;
			default:
				c = scan2ascii(wParam,lParam);
				if (c == 0) return;
		}
		if (keyFunc != NULL)
		{
			keyFunc(c, 0, 0); // TO DO: x and y
		}
		else
		if (specialKeyFunc != NULL && c < 32)
		{
			specialKeyFunc(c, 0, 0); // TO DO: x and y
		}
		gKeymap[c] = keyMapValue;
		printf("key %i %i\n", c, keyMapValue);
}
Ejemplo n.º 3
0
tstring GuiConfig::FormatInput(int aDevice, int aButton, int aAxe)
{
	tstring formatedThing;
	switch (aDevice)
	{
	case CTRL_KBD:
		{
#if 0			
			switch(aButton)
			{

			case 0x01: return GLoc->GetString("ESCAPE");
			case 0x0E: return GLoc->GetString("BACK");                /* backspace */
			case 0x0F: return GLoc->GetString("TAB");
			case 0x1C: return GLoc->GetString("RETURN");              /* Enter on main keyboard */
			case 0x1D: return GLoc->GetString("LCONTROL");
			case 0x2A: return GLoc->GetString("LSHIFT");
			case 0x2B: return GLoc->GetString("BACKSLASH");
			case 0x36: return GLoc->GetString("RSHIFT");
			case 0x38: return GLoc->GetString("LMENU");               /* left Alt */
			case 0x39: return GLoc->GetString("SPACE");
			case 0x3A: return GLoc->GetString("CAPITAL");
			case 0x3B: return GLoc->GetString("F1");
			case 0x3C: return GLoc->GetString("F2");
			case 0x3D: return GLoc->GetString("F3");
			case 0x3E: return GLoc->GetString("F4");
			case 0x3F: return GLoc->GetString("F5");
			case 0x40: return GLoc->GetString("F6");
			case 0x41: return GLoc->GetString("F7");
			case 0x42: return GLoc->GetString("F8");
			case 0x43: return GLoc->GetString("F9");
			case 0x44: return GLoc->GetString("F10");
			case 0x45: return GLoc->GetString("NUMLOCK");
			case 0x46: return GLoc->GetString("SCROLL");              /* Scroll Lock */
			case 0x47: return GLoc->GetString("NUMPAD7");
			case 0x48: return GLoc->GetString("NUMPAD8");
			case 0x49: return GLoc->GetString("NUMPAD9");
			case 0x4B: return GLoc->GetString("NUMPAD4");
			case 0x4C: return GLoc->GetString("NUMPAD5");
			case 0x4D: return GLoc->GetString("NUMPAD6");
			case 0x4F: return GLoc->GetString("NUMPAD1");
			case 0x50: return GLoc->GetString("NUMPAD2");
			case 0x51: return GLoc->GetString("NUMPAD3");
			case 0x52: return GLoc->GetString("NUMPAD0");
			case 0x53: return GLoc->GetString("DECIMAL");             /* . on numeric keypad */
			case 0x70: return GLoc->GetString("KANA");                /* (Japanese keyboard)            */
			case 0x99: return GLoc->GetString("NEXTTRACK");           /* Next Track */
			case 0x9C: return GLoc->GetString("NUMPADENTER");         /* Enter on numeric keypad */
			case 0x9D: return GLoc->GetString("RCONTROL");
			case 0xA0: return GLoc->GetString("MUTE");                /* Mute */
			case 0xA1: return GLoc->GetString("CALCULATOR");          /* Calculator */
			case 0xA2: return GLoc->GetString("PLAYPAUSE");           /* Play / Pause */
			case 0xA4: return GLoc->GetString("MEDIASTOP");           /* Media Stop */
			case 0xAE: return GLoc->GetString("VOLUMEDOWN");          /* Volume - */
			case 0xB0: return GLoc->GetString("VOLUMEUP");            /* Volume + */
			case 0xB2: return GLoc->GetString("WEBHOME");             /* Web home */
			case 0xB7: return GLoc->GetString("SYSRQ");
			case 0xB8: return GLoc->GetString("RMENU");               /* right Alt */
			case 0xC5: return GLoc->GetString("PAUSE");               /* Pause */
			case 0xC7: return GLoc->GetString("HOME");                /* Home on arrow keypad */
			case 0xC8: return GLoc->GetString("UP");                  /* UpArrow on arrow keypad */
			case 0xC9: return GLoc->GetString("PRIOR");               /* PgUp on arrow keypad */
			case 0xCB: return GLoc->GetString("LEFT");                /* LeftArrow on arrow keypad */
			case 0xCD: return GLoc->GetString("RIGHT");               /* RightArrow on arrow keypad */
			case 0xCF: return GLoc->GetString("END");                 /* End on arrow keypad */
			case 0xD0: return GLoc->GetString("DOWN");                /* DownArrow on arrow keypad */
			case 0xD1: return GLoc->GetString("NEXT");                /* PgDn on arrow keypad */
			case 0xD2: return GLoc->GetString("INSERT");              /* Insert on arrow keypad */
			case 0xD3: return GLoc->GetString("DELETE");              /* Delete on arrow keypad */
			case 0xDB: return GLoc->GetString("LWIN");                /* Left Windows key */
			case 0xDC: return GLoc->GetString("RWIN");                /* Right Windows key */
			case 0xDD: return GLoc->GetString("APPS");                /* AppMenu key */
			case 0xDE: return GLoc->GetString("POWER");               /* System Power */
			case 0xDF: return GLoc->GetString("SLEEP");               /* System Sleep */
			case 0xE3: return GLoc->GetString("WAKE");                /* System Wake */
			case 0xE5: return GLoc->GetString("WEBSEARCH");           /* Web Search */
			case 0xE6: return GLoc->GetString("WEBFAVORITES");        /* Web Favorites */
			case 0xE7: return GLoc->GetString("WEBREFRESH");          /* Web Refresh */
			case 0xE8: return GLoc->GetString("WEBSTOP");             /* Web Stop */
			case 0xE9: return GLoc->GetString("WEBFORWARD");          /* Web Forward */
			case 0xEA: return GLoc->GetString("WEBBACK");             /* Web Back */
			case 0xEB: return GLoc->GetString("MYCOMPUTER");          /* My Computer */
			case 0xEC: return GLoc->GetString("MAIL");                /* Mail */
			case 0xED: return GLoc->GetString("MEDIASELECT");         /* Media Select */
			//default: return "???";
			}
#endif
			unsigned short result[2];
			scan2ascii(aButton, result);
			formatedThing = "";
			formatedThing += SDL_GetKeyName((SDLKey)aButton);//(char)aButton;//((unsigned char*)result)[0];
			formatedThing.ToUpper();
		}
		break;
	case CTRL_MOUSE:
		formatedThing = GLoc->GetString("Mouse");
		formatedThing+= " ";
		if (aAxe == 1) formatedThing +=" X";
		if (aAxe == 2) formatedThing +=" Y";
		if (aAxe == 0)
		{
			tstring msbt;
			msbt.Printf("%d", aButton);
			formatedThing += GLoc->GetString("Button");
			formatedThing += msbt;
		}
		break;
	case CTRL_PAD0:
		break;
	}
	return formatedThing;
}