bool JoystickEvent::getButton(unsigned int buttonIndex) const { if (getButtonEvent()) return getButtonEvent()->getButton(buttonIndex); return false; }
static status eventTileAdjuster(TileAdjuster adj, EventObj ev) { Int offset; if ( postEventWindow((PceWindow) adj, ev) ) succeed; if ( isDownEvent(ev) && (offset = getEventOffsetTileAdjuster(adj, ev)) ) { send(adj, NAME_focus, adj, DEFAULT, adj->cursor, getButtonEvent(ev), EAV); assign(adj, down_offset, offset); succeed; } else if ( notNil(adj->offset) ) { if ( isDragEvent(ev) ) { DisplayObj d = getDisplayEvent(ev); if ( d && ws_events_queued_display(d) ) succeed; forwardTileAdjuster(adj, ev); } else if ( isUpEvent(ev) ) { forwardTileAdjuster(adj, ev); assign(adj, down_offset, NIL); } succeed; } fail; }
/* * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer unsigned int event; P2DIR = 0xFF; P2OUT = 0; setupButton(PORT1, P4, 0x1234, HIGH_TO_LOW); setupButton(PORT1, P5, 0x1212, HIGH_TO_LOW); setupButton(PORT1, P3, 0xDEAD, HIGH_TO_LOW); for(;;) { event = getButtonEvent(); if(event == 0x1234) { P2OUT ^= BIT0; } else if(event == 0x1212) { P2OUT ^= BIT1; } else if (event == 0xDEAD) { P2OUT ^= BIT2; } } return 0; }
status eventGesture(Any obj, EventObj ev) { Gesture g = obj; if ( g->active == OFF ) fail; if ( g->status == NAME_active && notNil(g->drag_scroll) ) { Graphical gr; if ( tryDragScrollGesture(g, ev) ) succeed; if ( isAEvent(ev, NAME_wheel) && (gr=getScrollTarget(g, ev)) ) return postEvent(ev, gr, DEFAULT); } if ( isDownEvent(ev) && hasModifierEvent(ev, g->modifier) && getButtonEvent(ev) == g->button && (isNil(g->condition) || forwardReceiverCode(g->condition, g, ev, EAV)) && send(g, NAME_verify, ev, EAV) ) { TRY( send(g, NAME_initiate, ev, EAV) ); assign(g, status, NAME_active); send(ev->window, NAME_focus, ev->receiver, g, g->cursor, getButtonEvent(ev), EAV); succeed; } else if ( g->status != NAME_inactive ) { if ( isDragEvent(ev) ) { send(g, NAME_drag, ev, EAV); succeed; } else if ( isUpEvent(ev) && getButtonEvent(ev) == g->button ) { cancelDragScrollGesture(g); send(g, NAME_terminate, ev, EAV); assign(g, status, NAME_inactive); succeed; } } fail; }