/* * main button click presse */ LOCAL void simButClickPress( void ) { /* press */ kpMgrInfo.kpState.stat.main = 1; kpNotifyPdEvent(DE_PDBUT, 0); /* release */ kpMgrInfo.kpState.stat.main = 0; kpNotifyPdEvent(DE_PDBUT, 0); /* press */ kpMgrInfo.kpState.stat.main = 1; kpNotifyPdEvent(DE_PDBUT, 0); }
/* * main button press */ LOCAL void simButPress( void ) { /* main button press */ kpMgrInfo.kpState.stat.main = 1; /* notify PD event */ kpNotifyPdEvent(DE_PDBUT, 0); }
/* * main button release */ LOCAL void simButRelease( void ) { /* main button release */ kpMgrInfo.kpState.stat.main = 0; /* notify PD event */ kpNotifyPdEvent(DE_PDBUT, 0); }
/* * PD button up / down, move */ LOCAL void iePd( InnerEvent *evt ) { InnEvtType type = evt->type; TDEvtTyp devEvt = 0; BOOL qpress = FALSE; UW nodsp; if ( (type & IE_PDMOVE) != 0 ) { /* move */ devEvt = kpPdMoveEvent(evt); } if ( (type & IE_PDBUT) != 0 ) { /* button change */ devEvt = kpPdButEvent(evt); /* is this a quick press? */ qpress = ( (type & IE_MBUT) == IE_MBUTDOWN && evt->i.pd.stat.o.qpress && kpMgrInfo.pd.pdMode.attr.qpress ); } if ( devEvt != 0 ) { /* notify PD event */ kpNotifyPdEvent(devEvt, nodsp = evt->i.pd.stat.o.nodsp); if ( qpress ) { /* quickpress */ kpMgrInfo.kpState.stat.main = 0; kpNotifyPdEvent(TDE_PDBUT, nodsp); kpMgrInfo.kpState.stat.main = 1; kpNotifyPdEvent(TDE_PDBUT, nodsp); } /* switch temporary shift or simple lock modes */ if ( kpChangeShiftLock(evt->type, NoShift) ) { /* notify meta key status change event */ kpNotifyMetaEvent(); } } }
/* * start and stop PD simulation */ LOCAL void pdSimToggle( PdSimMode mode ) { if ( kpMgrInfo.kpState.stat.pdsim == PdSim_Off ) { /* start PD simulation */ kpMgrInfo.kpState.stat.pdsim = mode; } else { /* end PD simulation */ kpMgrInfo.kpState.stat.pdsim = PdSim_Off; } /* notify PD event */ kpNotifyPdEvent(DE_PDSTATE, 0); }
/* * move PD */ LOCAL void simMove( BOOL start ) { W unit = simMoveUnit(start); BOOL move; /* relative movement */ move = kpMovePointer( kpMgrInfo.kpState.xpos + kpMgrInfo.pdSimState.x * unit, kpMgrInfo.kpState.ypos + kpMgrInfo.pdSimState.y * unit); if ( move ) { /* notify PD movement event */ kpNotifyPdEvent(DE_PDMOVE, 0); } }
/* * set PD range (DN_PDRANGE) */ LOCAL ER setPdRange( PdRange *range ) { BOOL move; ER err = E_OK; /* parameter check */ if ( range->xmax < 0 || range->ymax < 0 ) return E_PAR; /* change PD range */ kpMgrInfo.pd.pdRange = *range; /* adjust pointer position */ move = kpMovePointer(kpMgrInfo.kpState.xpos, kpMgrInfo.kpState.ypos); if ( move ) { /* notify PD movement event */ err = kpNotifyPdEvent(DE_PDMOVE, 0); } return err; }
/* * set meta key / button status (DN_KPMETABUT) */ LOCAL ER setKpMetaBut( MetaBut meta[2] ) { const UW KBMET = ES_ALPH|ES_KANA |ES_LSHFT|ES_RSHFT|ES_EXT|ES_CMD |ES_LLSHFT|ES_LRSHFT|ES_LEXT|ES_LCMD |ES_TLSHFT|ES_TRSHFT|ES_TEXT|ES_TCMD |ES_HAN|ES_KBSEL; const UW PDBUT = ES_BUT|ES_BUT2; const UW PDMOV = ES_NODSP; const UW PDSIM = ES_PDSIM; UW stat, chg; ER err, error = E_OK; union { MetaBut stat; UW uw; } u; u.stat = kpMgrInfo.kpState.stat; stat = (u.uw & *(UW*)&meta[0]) | *(UW*)&meta[1]; chg = stat ^ u.uw; if ( (chg & KBMET) != 0 ) { /* change meta key status */ u.stat = kpMgrInfo.kpState.stat; u.uw ^= chg & KBMET; kpMgrInfo.kpState.stat = u.stat; if ( (chg & (ES_ALPH|ES_KANA)) != 0 ) { /* change keyboard LED */ err = kpChangeKbInputMode(kpMgrInfo.kpState.stat.mode); if ( err < E_OK ) error = err; } err = kpNotifyMetaEvent(); if ( err < E_OK ) error = err; } if ( (chg & (PDBUT|PDMOV)) != 0 ) { /* change PD status */ u.stat = kpMgrInfo.kpState.stat; u.uw ^= chg & (PDBUT|PDMOV); kpMgrInfo.kpState.stat = u.stat; err = kpNotifyPdEvent( ( (chg & PDBUT) != 0 )? DE_PDBUT: DE_PDMOVE, kpMgrInfo.kpState.stat.nodsp); if ( err < E_OK ) error = err; } if ( (chg & PDSIM) != 0 ) { /* change PD simulation status */ u.stat = kpMgrInfo.kpState.stat; u.uw ^= chg & PDSIM; kpMgrInfo.kpState.stat = u.stat; err = kpNotifyPdEvent(DE_PDSTATE, kpMgrInfo.kpState.stat.nodsp); if ( err < E_OK ) error = err; } return error; }