示例#1
0
void ofxGLEditor::keyPressed(int key) {

	bool alt = kmap.isAltDown();
	bool shift = kmap.isShiftDown();
	bool ctrl = kmap.isControlDown();

	int mod = 0;
	if (shift) {
		mod = 1;
	}else if (ctrl) {
		mod = 2;
	}else if (alt) {
		mod = 4;
	}

	int special = 0;
	if (
		key == OF_KEY_LEFT || key == OF_KEY_UP ||
		key == OF_KEY_RIGHT || key == OF_KEY_DOWN ||
		key == OF_KEY_PAGE_UP || key == OF_KEY_PAGE_DOWN ||
		key == OF_KEY_HOME || key == OF_KEY_END || key == OF_KEY_INSERT
		)
	{
		special = key - 256;
		key = 0;
	}

	if (alt && key == 'r') {
		int i = 0;
		string script;
		for (int i = 0; i < glEditor.size(); i++) {
			script += wstring_to_string(glEditor[i]->GetAllText());
			script += "\n";
			glEditor[i]->m_haveError = false;
			glEditor[i]->m_errorLine = 0;
		}
		ofNotifyEvent(doCompileEvent, script);
	}else if (alt && key == 'b') {
		glEditor[currentEditor]->BlowupCursor();
	}else if (alt && key == 'a') {
		glEditor[currentEditor]->ClearAllText();
		glEditor[currentEditor]->m_haveError = false;
		glEditor[currentEditor]->m_errorLine = 0;
	}else if (alt && key == 'c') {
		copyToClipBoard();
	}else if (alt && key == 'v') {
		pasteFromClipBoard();
	}else if (alt && key == 's') {
		saveToFile();
	}/*else if (alt && key == '1') {
		currentEditor = 1;
	}else if (alt && key == '2') {
		currentEditor = 2;
	}else if (alt && key == '3') {
		currentEditor = 3;
	}else if (alt && key == '4') {
		currentEditor = 4;
	}else if (alt && key == '5') {
		currentEditor = 5;
	}else if (alt && key == '6') {
		currentEditor = 6;
	}else if (alt && key == '7') {
		currentEditor = 7;
	}else if (alt && key == '8') {
		currentEditor = 8;
	}else if (alt && key == '9') {
		currentEditor = 9;
	}*/
	glEditor[currentEditor]->Handle(-1, key, special, 0, ofGetMouseX(), ofGetMouseY(), mod);

}
示例#2
0
文件: edit.cpp 项目: gaoyakun/atom3d
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);
	}
}