void vrpn_Qt::AddWidget(QWidget* widget) { // Ignore widgets called vrpn_Qt_ignore if (widget->objectName() == "vrpn_Qt_ignore") { return; } // Check if widget is derived from abstract button if (qobject_cast<QAbstractButton*>(widget)) { QAbstractButton* button = qobject_cast<QAbstractButton*>(widget); connect(button, SIGNAL(pressed()), this, SLOT(ButtonChanged())); connect(button, SIGNAL(released()), this, SLOT(ButtonChanged())); buttonWidgets.append(button); buttons[num_buttons] = button->isChecked(); num_buttons++; } // Check if widget is derived from abstract slider else if (qobject_cast<QAbstractSlider*>(widget)) { QAbstractSlider* slider = qobject_cast<QAbstractSlider*>(widget); connect(slider, SIGNAL(valueChanged(int)), this, SLOT(AnalogChanged())); analogWidgets.append(slider); channel[num_channel] = slider->value(); num_channel++; } // Check for double spin box else if (qobject_cast<QDoubleSpinBox*>(widget)) {
void UpdatePolled() { // // Poll the device // m_pdid->Poll(); // // Get the data // // DIMOUSESTATE dims; DIMOUSESTATE2 dims; // mdvalley: Mousestate2 allows 8 buttons DDCall(m_pdid->GetDeviceState(sizeof(dims), &dims)); // // Unpack the data // int dx = int(dims.lX); int dy = int(dims.lY); int dz = int(dims.lZ); DeltaPosition(dx, dy); DeltaWheel(dz); int count = m_vbuttonObject.GetCount(); for (int index = 0; index < count; index++) { bool bDown = ((dims.rgbButtons[index] & 0x80) != 0); ModifiableBoolean* pbool = m_vbuttonObject[index]->GetValue(); if (bDown != pbool->GetValue()) { pbool->SetValue(bDown); ButtonChanged(index, bDown); } } }
void UpdateBuffered() { // // Get the data // DIDEVICEOBJECTDATA didod; DWORD count = 1; int dx = 0; int dy = 0; while (count == 1) { HRESULT hr = m_pdid->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), &didod, &count, 0); if (FAILED(hr)) { return; } if (count == 1) { // // Unpack the data // switch (didod.dwOfs) { case DIMOFS_BUTTON0: DeltaPosition(dx, dy); ButtonChanged(0, ((didod.dwData & 0x80) != 0)); break; case DIMOFS_BUTTON1: ButtonChanged(1, ((didod.dwData & 0x80) != 0)); break; case DIMOFS_BUTTON2: ButtonChanged(2, ((didod.dwData & 0x80) != 0)); break; case DIMOFS_BUTTON3: ButtonChanged(3, ((didod.dwData & 0x80) != 0)); break; // mdvalley: More buttons case DIMOFS_BUTTON4: ButtonChanged(4, ((didod.dwData & 0x80) != 0)); break; case DIMOFS_BUTTON5: ButtonChanged(5, ((didod.dwData & 0x80) != 0)); break; case DIMOFS_BUTTON6: ButtonChanged(6, ((didod.dwData & 0x80) != 0)); break; case DIMOFS_BUTTON7: ButtonChanged(7, ((didod.dwData & 0x80) != 0)); break; case DIMOFS_X: dx += int(didod.dwData); break; case DIMOFS_Y: dy += int(didod.dwData); break; case DIMOFS_Z: DeltaWheel(int(didod.dwData)); break; } } // // do the mouse change // DeltaPosition(dx, dy); } }
static void inputTest(WINDOW *win) { int answered; int repeat; int w, h, bx, by, sw, sh, i, c, num; char buffer[80]; WINDOW *subWin; wclear(win); getmaxyx(win, h, w); getbegyx(win, by, bx); sw = w / 3; sh = h / 3; if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == NULL) return; #ifdef A_COLOR if (has_colors()) { init_pair(2, COLOR_WHITE, COLOR_RED); wbkgd(subWin, (chtype) COLOR_PAIR(2) | A_BOLD); } else wbkgd(subWin, A_BOLD); #else wbkgd(subWin, A_BOLD); #endif box(subWin, ACS_VLINE, ACS_HLINE); wrefresh(win); nocbreak(); MvWAddStr(win, 2, 1, "Press some keys for 5 seconds"); MvWAddStr(win, 1, 1, "Pressing ^C should do nothing"); wrefresh(win); werase(subWin); box(subWin, ACS_VLINE, ACS_HLINE); for (i = 0; i < 5; i++) { MvWPrintw(subWin, 1, 1, "Time = %d", i); wrefresh(subWin); napms(1000); flushinp(); } delwin(subWin); werase(win); flash(); wrefresh(win); napms(500); MvWAddStr(win, 2, 1, "Press a key, followed by ENTER"); wmove(win, 9, 10); wrefresh(win); echo(); noraw(); wgetch(win); flushinp(); wmove(win, 9, 10); wdelch(win); MvWAddStr(win, 4, 1, "The character should now have been deleted"); Continue(win); wclear(win); MvWAddStr(win, 1, 1, "Press keys (or mouse buttons) to show their names"); MvWAddStr(win, 2, 1, "Press spacebar to finish"); wrefresh(win); keypad(win, TRUE); raw(); noecho(); #if HAVE_TYPEAHEAD typeahead(-1); #endif #ifdef NCURSES_MOUSE_VERSION mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); #endif #if defined(PDCURSES) mouse_set(ALL_MOUSE_EVENTS); #endif for (;;) { wmove(win, 3, 5); c = wgetch(win); wclrtobot(win); if (c >= KEY_MIN) wprintw(win, "Key Pressed: %s", keyname(c)); else if (isprint(c)) wprintw(win, "Key Pressed: %c", c); else wprintw(win, "Key Pressed: %s", unctrl(UChar(c))); #ifdef KEY_MOUSE if (c == KEY_MOUSE) { #if defined(NCURSES_MOUSE_VERSION) #define ButtonChanged(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, 037)) #define ButtonPressed(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)) #define ButtonDouble(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)) #define ButtonTriple(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)) #define ButtonRelease(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)) MEVENT event; int button = 0; getmouse(&event); if (ButtonChanged(1)) button = 1; else if (ButtonChanged(2)) button = 2; else if (ButtonChanged(3)) button = 3; else button = 0; wmove(win, 4, 18); wprintw(win, "Button %d: ", button); if (ButtonPressed(button)) wprintw(win, "pressed: "); else if (ButtonDouble(button)) wprintw(win, "double: "); else if (ButtonTriple(button)) wprintw(win, "triple: "); else wprintw(win, "released: "); wprintw(win, " Position: Y: %d X: %d", event.y, event.x); #elif defined(PDCURSES) int button = 0; request_mouse_pos(); if (BUTTON_CHANGED(1)) button = 1; else if (BUTTON_CHANGED(2)) button = 2; else if (BUTTON_CHANGED(3)) button = 3; else button = 0; wmove(win, 4, 18); wprintw(win, "Button %d: ", button); if (MOUSE_MOVED) wprintw(win, "moved: "); else if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_PRESSED) wprintw(win, "pressed: "); else if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED) wprintw(win, "double: "); else wprintw(win, "released: "); wprintw(win, " Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS); #endif /* NCURSES_VERSION vs PDCURSES */ } #endif /* KEY_MOUSE */ wrefresh(win); if (c == ' ') break; } #if 0 nodelay(win, TRUE); wgetch(win); nodelay(win, FALSE); #endif #if defined(PDCURSES) mouse_set(0L); #endif refresh(); repeat = 0; do { static const char *fmt[] = { "%d %10s", "%d %[a-zA-Z]s", "%d %[][a-zA-Z]s", "%d %[^0-9]" }; char *format = strdup(fmt[(unsigned) repeat % SIZEOF(fmt)]); wclear(win); MvWAddStr(win, 3, 2, "The window should have moved"); MvWAddStr(win, 4, 2, "This text should have appeared without you pressing a key"); MvWPrintw(win, 6, 2, "Scanning with format \"%s\"", format); mvwin(win, 2 + 2 * (repeat % 4), 1 + 2 * (repeat % 4)); erase(); refresh(); wrefresh(win); echo(); noraw(); num = 0; *buffer = 0; answered = mvwscanw(win, 7, 6, format, &num, buffer); MvWPrintw(win, 8, 6, "String: %s Number: %d (%d values read)", buffer, num, answered); Continue(win); ++repeat; free(format); } while (answered > 0); }