void EventSendingController::setTouchModifier(const JSStringRef &modifier, bool enable) { WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender")); WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage")); WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("SetTouchModifier")); WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get()); WKEventModifiers mod = 0; if (JSStringIsEqualToUTF8CString(modifier, "ctrl")) mod = kWKEventModifiersControlKey; if (JSStringIsEqualToUTF8CString(modifier, "shift")) mod = kWKEventModifiersShiftKey; if (JSStringIsEqualToUTF8CString(modifier, "alt")) mod = kWKEventModifiersAltKey; if (JSStringIsEqualToUTF8CString(modifier, "meta")) mod = kWKEventModifiersMetaKey; WKRetainPtr<WKStringRef> modifierKey(AdoptWK, WKStringCreateWithUTF8CString("Modifier")); WKRetainPtr<WKUInt64Ref> modifierRef(AdoptWK, WKUInt64Create(mod)); WKDictionaryAddItem(EventSenderMessageBody.get(), modifierKey.get(), modifierRef.get()); WKRetainPtr<WKStringRef> enableKey(AdoptWK, WKStringCreateWithUTF8CString("Enable")); WKRetainPtr<WKUInt64Ref> enableRef(AdoptWK, WKUInt64Create(enable)); WKDictionaryAddItem(EventSenderMessageBody.get(), enableKey.get(), enableRef.get()); WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0); }
void live_widgets::PianoKey::mousePressEvent ( QGraphicsSceneMouseEvent * event ) { QGraphicsItem::mousePressEvent(event); if ( m_virtual ) { live::Event* ev = new live::Event; ev->setChan(0); ev->setNote(m_id); ev->setVelocity(127); live::ObjectChain p; p.push_back(this); mOut(ev,&p); return; } if ( this->isSelected() && ( event->button() == Qt::LeftButton) ) { this->setSelected( 0 ); emit updated(); if ( ( event->modifiers() == Qt::ShiftModifier ) && (m_shiftTwinID!=-1) ) { int minId=m_shiftTwinID<m_id?m_shiftTwinID:m_id, maxId=m_shiftTwinID<m_id?m_id:m_shiftTwinID; for (int i=minId; i<=maxId; i++) { m_universe[i]->enableKey(1); } } else enableKey(1); } else if (event->button() == Qt::RightButton ) { if ( ( event->modifiers() == Qt::ShiftModifier ) && m_shiftTwinID!=-1) { int minId=m_shiftTwinID<m_id?m_shiftTwinID:m_id, maxId=m_shiftTwinID<m_id?m_id:m_shiftTwinID; for (int i=minId; i<=maxId; i++) { m_universe[i]->enableKey(0); } } else enableKey(0); this->setSelected( 0 ); } m_shiftTwinID = m_id; }
int mymain(void) { unsigned int code=0; unsigned char head=0, tail=0; unsigned char scanCode=0, asciiCode=0; disableKey(); if(firstTime==1) { initHeadTail(); initTab(); firstTime=0; } scanCode=getScanCode(); asciiCode=lookupAscii(scanCode); if(asciiCode==0) { /* not printable */ if(scanCode==0x1D) { /* check if ctrl is pressed or not */ isCtrlDown=1; } else if(scanCode==0x9d) { isCtrlDown=0; } } if(scanCode>=0x3b && scanCode<=0x3e && isCtrlDown==1) { setActiveShell((scanCode-0x3b)+1); } code= scanCode; code<<=8; code|=asciiCode; head=getHead(); tail=getTail(); if(!((tail+2)==head || (head==0x1e && tail==0x3c)) ) { /* not full */ setKeyCode(code); if(tail==0x3C) { setTail(0x1e); } else { setTail(tail+2); } } enableKey(); eoi(ss,sp); }
void keyboard::__winnt__readKeyboard(RAWINPUT* rawDevice) { // Local variable(s): keyboardActionType actionType; auto key = (keyboardKey)rawDevice->data.keyboard.VKey; bool isDown = keyEnabled(key); if ((rawDevice->data.keyboard.Flags & RI_KEY_BREAK) > 0) { // If the key is currently up, release/disable it. if (isDown) disableKey(key); actionType = ACTION_TYPE_HIT; } else // if ((rawDevice->data.keyboard.Flags & RI_KEY_MAKE) > 0) { // Check if this event is worth logging: if (isDown) return; actionType = ACTION_TYPE_DOWN; // Enable/hold this key, so we don't // log it again until it's been released. enableKey(key); } actionQueue.push_back(keyboardAction(key, actionType)); #ifdef KEYBOARD_DEBUG deviceInfo << "Detected key: " << rawDevice->data.keyboard.VKey << ", actionType: " << actionType << endl; #endif return; }