bool QtKeyEventProvider::eventFilter(QObject * obj, QEvent * event) { if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) { QKeyEvent * qKeyEvent = dynamic_cast<QKeyEvent*>(event); if (qKeyEvent) { auto eventType = QtEventTransformer::keyboardTypeFromQtType(qKeyEvent->type()); auto key = QtEventTransformer::fromQtKeyCode(qKeyEvent->key(), qKeyEvent->modifiers()); KeyboardEvent * keyEvent = new KeyboardEvent(eventType , key, qKeyEvent->nativeScanCode(), qKeyEvent->modifiers()); passEvent(keyEvent); return false; } } return QObject::eventFilter(obj, event); }
CGEventRef processEvent(CGEventType type, CGEventRef event) { CGKeyCode keycode = (CGKeyCode) CGEventGetIntegerValueField(event, kCGKeyboardEventKeycode); CGKeyCode autorepeat = (CGKeyCode) CGEventGetIntegerValueField(event, kCGKeyboardEventAutorepeat); if (outsideMirror) { // Outside mirror... if (type == kCGEventKeyDown) { if (autorepeat) { if (marked(outside, keycode)) { return passEvent(event); } else { return remapEvent(event); } } else { if (keycode == 49) { // space goInside(event); spaceDown = CGEventCreateCopy(event); return swallowEvent(event); } else { mark(outside, keycode); return passEvent(event); } } } else if (type == kCGEventKeyUp) { if (marked(outside, keycode)) { unmark(outside, keycode); return passEvent(event); } else { unmark(inside, keycode); return remapEvent(event); } } } else { // Inside mirror if (type == kCGEventKeyDown) { if (autorepeat) { if (keycode == 49) { // space return swallowEvent(event); } else { if (marked(inside, keycode)) { return remapEvent(event); } else { return passEvent(event); } } } else { mark(inside, keycode); mirrorCount++; return remapEvent(event); } } else if (type == kCGEventKeyUp) { if (keycode == 49) { // space goOutside(); if (burst(event)) { return emitSpace(event); } else { return swallowEvent(event); } } else { if (marked(inside, keycode)) { unmark(inside, keycode); return remapEvent(event); } else { return passEvent(event); } } } } printf("Leaking events?!\n"); return event; }
Boolean TPZCrossbarFlowCTMux :: onReadyUp(unsigned interfaz, unsigned cv) { unsigned i = interfaz; TPZMessage* msg; TPZMessage* lastMessage; inputInterfaz(i)->getData(&msg); m_MessageReceivedTable->valueAt(i,&lastMessage); if(lastMessage) if( *msg == *lastMessage ) return true; m_MessageReceivedTable->setValueAt(i,msg); uTIME delayTime = getOwnerRouter().getCurrentTime() ; #ifndef NO_TRAZA TPZString texto = getComponent().asString() + " Flit Rx. TIME = "; texto += TPZString(delayTime) + " # " + msg->asString(); TPZWRITE2LOG( texto ); #endif if( getOutputForInput(i).left() == 0 ) { // This is to run the TPZCrossbarFlowCTMux if(!msg->isHeader()) { return true; } // This from the head. unsigned outPort = extractOutputPortNumber(msg); unsigned outChannel = extractOutputChannel(msg); if( outChannel==0) { EXIT_PROGRAM("Message without output VC"); } TPZEvent requestEvent(_CrossbarRequest_,i,outPort,outChannel); setStateForInput(i,Waiting); if( isOutputPortFree(outPort,outChannel) ) { // You must assign an output delayTime += getHeaderDelay(); if( ((TPZCrossbar&)getComponent()).isLocalNodeOutput(outPort) ) { if( getHeaderDelay() > 1 ) delayTime -= 1; } getEventQueue().enqueue(requestEvent,delayTime); } else { // The output port is busy. A request is queued #ifndef NO_TRAZA TPZString texto = getComponent().asString() + " Esperando una SALIDA !"; texto += TPZString(delayTime) + " iport= " + TPZString(i); TPZWRITE2LOG( texto ); #endif addConnectionRequest(i,uPAIR(outPort,outChannel)); } #ifndef NO_TRAZA TPZString time = getOwnerRouter().getCurrentTime(); TPZString texto = getComponent().getName() + " Stop Tx. TIME = "; texto += time + " iport= " + TPZString(i); TPZWRITE2LOG( texto ); #endif inputInterfaz(i)->sendStopRightNow(); } else { delayTime += getDataDelay(); TPZEvent passEvent(_CrossbarPass_,i); getEventQueue().enqueue(passEvent,delayTime); } return true; }