Ejemplo n.º 1
0
static void one_iter ()
{
	SDL_Event event;
	int flag;
	flag = SDL_PollEvent (&event);
	if (0 < flag) {
		switch (event.type) {
		case SDL_QUIT:
			exit (0);
			break;
		case SDL_KEYDOWN:
			keyevent (&(event.key));
			break;
		case SDL_VIDEORESIZE:
			window_width = event.resize.w;
			window_height = event.resize.h;
			surface = SDL_SetVideoMode
				(window_width, window_height, 0,
				SDL_OPENGL | SDL_RESIZABLE);
			break;
		default:
			break;
		}
	} else {
		time_set();
		key_input ();
		timer_flame ();
		opengl_expose ();
		SDL_GL_SwapBuffers ();
	}
}
Ejemplo n.º 2
0
/* loop while the connection is supposed to be valid */
void
xloop(char *message)
{
	XEvent          event;

	init_window();


	while (1) {
		XNextEvent(display, &event);
		switch (event.type) {
		case MappingNotify:
			XRefreshKeyboardMapping(&event.xmapping);
			break;
		case Expose:
			refresh(message);
			break;
		case KeyPress:
			keyevent(&event.xkey);
			break;
		case ButtonPress:
			XCloseDisplay(display);
			return;
			break;
		}
	}
}
Ejemplo n.º 3
0
void cf_key(unsigned key, int press)
{
	static const unsigned keys[cf_last] =
	{
		0, XK_BackSpace, XK_Tab, XK_Return, XK_Escape, XK_space,
		XK_apostrophe, XK_comma, XK_period, XK_slash,
		XK_0, XK_1, XK_2, XK_3, XK_4, XK_5, XK_6, XK_7, XK_8, XK_9, XK_semicolon, XK_equal,
		XK_bracketleft, XK_backslash, XK_bracketright,
		XK_a, XK_b, XK_c, XK_d, XK_e, XK_f, XK_g, XK_h, XK_i, XK_j, XK_k, XK_l, XK_m,
		XK_n, XK_o, XK_p, XK_q, XK_r, XK_s, XK_t, XK_u, XK_v, XK_w, XK_x, XK_y, XK_z,
		XK_Delete, XK_Pause, XK_Control_L, XK_Control_R, XK_Shift_L, XK_Shift_R, XK_Alt_L, XK_Alt_R, XK_Super_L, XK_Super_R, XK_Menu,
		XK_Up, XK_Down, XK_Left, XK_Right, XK_Home, XK_End, XK_Page_Up, XK_Page_Down, XK_Insert, XK_KP_Separator,
		XK_Caps_Lock, XK_Scroll_Lock, XK_Num_Lock, XK_Select, XK_Print,
		XK_F1, XK_F2, XK_F3, XK_F4, XK_F5, XK_F6, XK_F7, XK_F8, XK_F9, XK_F10, XK_F11, XK_F12,
		XK_KP_0, XK_KP_1, XK_KP_2, XK_KP_3, XK_KP_4, XK_KP_5, XK_KP_6, XK_KP_7, XK_KP_8, XK_KP_9,
		XK_multiply, XK_division, XK_plus, XK_minus, XK_KP_Enter, XK_backslash
	};

	Window focus;
	int revert;
	KeySym ks = keys[key];
	XGetInputFocus(dpy, &focus, &revert);
	keyevent(focus, XKeysymToKeycode(dpy, ks), press ? KeyPress : KeyRelease);
	XFlush(dpy);
	updatemodifiers(ks, press);
}
Ejemplo n.º 4
0
void ATOM_Edit::onKeyDown(ATOM_WidgetKeyDownEvent *event)
{
	ATOM_STACK_TRACE(ATOM_Edit::onKeyDown);

	// 只读情况,不允许输入
	if(EDITTYPE_READONLY & _editType)
	{
		return;
	}

	switch(event->key)
	{
	case KEY_LEFT:
		moveCursor(-1);
		break;

	case KEY_RIGHT:
		moveCursor(1);
		break;

	case KEY_DELETE:
		deleteChar();
		break;

	case KEY_HOME:
		moveCursor(-getStringLength());
		break;

	case KEY_END:
		moveCursor(getStringLength());
		break;

	case KEY_UP:
	case KEY_DOWN:
	case KEY_RETURN:
	case KEY_KP_ENTER:
	case KEY_TAB:
	case KEY_ESCAPE:
	case KEY_SPACE:
	case KEY_COLON:
		{
			ATOM_EditSysKeyEvent keyevent(getId(), event->key);
			_parent->handleEvent(&keyevent);
		}
		break;

	case KEY_v:
		if(GetAsyncKeyState(VK_LCONTROL) &0x8000 || GetAsyncKeyState(VK_RCONTROL) &0x8000)
		{
			pasteFromClipBoard();
		}
		break;
	case KEY_a:
		if(GetAsyncKeyState(VK_LCONTROL) &0x8000 || GetAsyncKeyState(VK_RCONTROL) &0x8000)
		{
			setCursor(_startPosition+_string.size());
			_cusorOldPosition.x = _offsetX;
			_cusorOldPosition.y = 0;
			_cusorNewPosition = _cursorPosition;
		}
		break;
	case KEY_c:
		if(GetAsyncKeyState(VK_LCONTROL) &0x8000|| GetAsyncKeyState(VK_RCONTROL)&0x8000)
		{	
			size_t s = 0,t = 0;
			_selectString = getSelectString(s,t);
			if(_selectString.empty())
				return;
			if(OpenClipboard(NULL))
			{

				HGLOBAL hmem=GlobalAlloc(GHND,_selectString.size()+1);
				char *pmem=(char*)GlobalLock(hmem);

				EmptyClipboard();
				memcpy(pmem,_selectString.c_str(),_selectString.size());
				SetClipboardData(CF_TEXT,hmem);
				CloseClipboard();
				GlobalFree(hmem); 
			}
		}
		break;
	case KEY_x:
		if(GetAsyncKeyState(VK_LCONTROL)&0x8000 || GetAsyncKeyState(VK_RCONTROL)&0x8000)
		{
			size_t s = 0,t = 0;
			_selectString = getSelectString(s,t);
			deleteString(s,t);
			if(_selectString.empty())
				return;
			if(OpenClipboard(NULL))
			{

				HGLOBAL hmem=GlobalAlloc(GHND,_selectString.size()+1);
				char *pmem=(char*)GlobalLock(hmem);

				EmptyClipboard();
				memcpy(pmem,_selectString.c_str(),_selectString.size());
				SetClipboardData(CF_TEXT,hmem);
				CloseClipboard();
				GlobalFree(hmem); 
			}
		}
		break;
	}
	if(_parent)
	{
		_parent->queueEvent (ATOM_NEW(ATOM_WidgetKeyDownEvent, getId(),event->key,event->keymod), ATOM_APP);
	}
}