void wxG3DCanvas::handleKeyDown(wxKeyEvent& event) { if (_gWindow->keyboardEvents.length() > 200) { _gWindow->keyboardEvents.clear(); } GEvent e; e.key.type = SDL_KEYDOWN; e.key.state = SDL_PRESSED; e.key.keysym.sym = wxKeyCodeToSDLCode(event.KeyCode()); #if (wxUSE_UNICODE == 1) e.key.keysym.unicode = event.GetUnicodeKey(); #elif defined(wxHAS_RAW_KEY_CODES) e.key.keysym.unicode = event.GetRawKeyCode(); #else e.key.keysym.unicode = e.key.keysym.sym; #endif #if defined(wxHAS_RAW_KEY_CODES) e.key.keysym.scancode = event.GetRawKeyCode(); #else e.key.keysym.scancode = 0; #endif _gWindow->keyboardEvents.pushBack(e); event.Skip(); }
void LabelTrack::KeyEvent(double sel0, double sel1, wxKeyEvent & event) { long keyCode = event.KeyCode(); if (mSelIndex >= 0) { switch (keyCode) { case WXK_BACK:{ int len = mLabels[mSelIndex]->title.Length(); if (len > 0) mLabels[mSelIndex]->title = mLabels[mSelIndex]->title.Left(len - 1); } break; case WXK_RETURN: if (mLabels[mSelIndex]->title == "") { delete mLabels[mSelIndex]; mLabels.RemoveAt(mSelIndex); } mSelIndex = -1; break; case WXK_TAB: if (event.ShiftDown()) { if (mSelIndex > 0) mSelIndex--; } else { if (mSelIndex < (int)mLabels.Count() - 1) mSelIndex++; } break; default: mLabels[mSelIndex]->title += keyCode; break; } } else { // Create new label LabelStruct *l = new LabelStruct(); l->t = sel0; l->title += wxChar(keyCode); int len = mLabels.Count(); int pos = 0; while (pos < len && l->t > mLabels[pos]->t) pos++; mLabels.Insert(l, pos); mSelIndex = pos; } }
void APalette::OnKeyEvent(wxKeyEvent & event) { if (event.ControlDown()) { event.Skip(); return; } long key = event.KeyCode(); if (event.KeyCode() == WXK_SPACE) { if (gAudioIO->IsBusy()) { OnStop(); SetPlay(false); SetStop(true); } else { OnPlay(); SetPlay(true); SetStop(false); } } }
void GLCanvas::OnKeyDown( wxKeyEvent& event ) { long evkey = event.KeyCode(); if (evkey == 0) return; if (!m_TimeInitialized) { m_TimeInitialized = 1; m_xsynct = event.m_timeStamp; m_gsynct = wxStopWatch(&m_secbase); m_Key = evkey; m_StartTime = 0; m_LastTime = 0; m_LastRedraw = 0; } unsigned long currTime = event.m_timeStamp - m_xsynct; if (evkey != m_Key) { m_Key = evkey; m_LastRedraw = m_StartTime = m_LastTime = currTime; } if (currTime >= m_LastRedraw) // Redraw: { Action( m_Key, m_LastTime-m_StartTime, currTime-m_StartTime ); #if defined(__WXMAC__) && !defined(__DARWIN__) m_LastRedraw = currTime; // wxStopWatch() doesn't work on Mac... #else m_LastRedraw = wxStopWatch(&m_secbase) - m_gsynct; #endif m_LastTime = currTime; } event.Skip(); }
void AudioView::OnKeyDown(wxKeyEvent& keyEvent) { if (keyEvent.KeyCode() == WXK_BACK || keyEvent.KeyCode() == WXK_DELETE) Clear(); }
///////////// // Key press void BaseGrid::OnKeyPress(wxKeyEvent &event) { // Get size int w,h; GetClientSize(&w,&h); // Get scan code int key = event.KeyCode(); bool ctrl = event.m_controlDown; bool alt = event.m_altDown; bool shift = event.m_shiftDown; // Left/right, forward to seek bar if video is loaded if (key == WXK_LEFT || key == WXK_RIGHT) { if (video->loaded) { video->ControlSlider->SetFocus(); video->ControlSlider->AddPendingEvent(event); return; } event.Skip(); return; } // Select all if (key == 'A' && ctrl && !alt && !shift) { int rows = GetRows(); for (int i=0;i<rows;i++) SelectRow(i,true); } // Up/down int dir = 0; int step = 1; if (key == WXK_UP) dir = -1; if (key == WXK_DOWN) dir = 1; if (key == WXK_PRIOR) { dir = -1; step = h/lineHeight - 2; } if (key == WXK_NEXT) { dir = 1; step = h/lineHeight - 2; } if (key == WXK_HOME) { dir = -1; step = GetRows(); } if (key == WXK_END) { dir = 1; step = GetRows(); } // Moving if (dir) { // Move selection if (!ctrl && !shift && !alt) { // Move to extent first int curLine = editBox->linen; if (extendRow != -1) { curLine = extendRow; extendRow = -1; } int next = MID(0,curLine+dir*step,GetRows()-1); editBox->SetToLine(next); SelectRow(next); MakeCellVisible(next,0,false); return; } // Move active only if (alt && !shift && !ctrl) { extendRow = -1; int next = MID(0,editBox->linen+dir*step,GetRows()-1); editBox->SetToLine(next); Refresh(false); MakeCellVisible(next,0,false); return; } // Shift-selection if (shift && !ctrl && !alt) { // Find end if (extendRow == -1) extendRow = editBox->linen; extendRow = MID(0,extendRow+dir*step,GetRows()-1); // Set range int i1 = editBox->linen; int i2 = extendRow; if (i2 < i1) { int aux = i1; i1 = i2; i2 = aux; } // Select range ClearSelection(); for (int i=i1;i<=i2;i++) { SelectRow(i,true); } MakeCellVisible(extendRow,0,false); return; } } // Other events, send to audio display if (video->audio->loaded) { video->audio->AddPendingEvent(event); } else event.Skip(); }
void LabelTrack::KeyEvent(double sel0, double sel1, wxKeyEvent & event) { #ifdef __WXMAC__ // HACK: why does each key event happen twice on wxMac? gMacRepeat = !gMacRepeat; if (gMacRepeat) return; #endif long keyCode = event.KeyCode(); if (mSelIndex >= 0) { switch (keyCode) { case WXK_BACK:{ int len = mLabels[mSelIndex]->title.Length(); if (len > 0) mLabels[mSelIndex]->title = mLabels[mSelIndex]->title.Left(len - 1); } break; case WXK_RETURN: case WXK_ESCAPE: if (mLabels[mSelIndex]->title == "") { delete mLabels[mSelIndex]; mLabels.RemoveAt(mSelIndex); } mSelIndex = -1; break; case WXK_TAB: if (event.ShiftDown()) { if (mSelIndex > 0) mSelIndex--; } else { if (mSelIndex < (int)mLabels.Count() - 1) mSelIndex++; } break; default: mLabels[mSelIndex]->title += keyCode; break; } } else { // Create new label LabelStruct *l = new LabelStruct(); l->t = sel0; l->t1 = sel1; l->title += wxChar(keyCode); int len = mLabels.Count(); int pos = 0; while (pos < len && l->t > mLabels[pos]->t) pos++; mLabels.Insert(l, pos); mSelIndex = pos; } }
void ControlToolBar::OnKeyEvent(wxKeyEvent & event) { if (event.ControlDown() || event.AltDown()) { event.Skip(); return; } // Play/Stop #if (AUDACITY_BRANDING == BRAND_AUDIOTOUCH) if (event.GetKeyCode() == WXK_RETURN) { #else if (event.KeyCode() == WXK_SPACE) { #endif if (gAudioIO->IsStreamActive(GetActiveProject()->GetAudioIOToken())) { SetPlay(false); SetStop(true); StopPlaying(); } else if (!gAudioIO->IsBusy()) { SetPlay(true); SetStop(false); PlayCurrentRegion(); } return; } event.Skip(); } //void ControlToolBar::OnKeyUp(wxKeyEvent & event) //{ // #if (AUDACITY_BRANDING == BRAND_AUDIOTOUCH) // if ((event.KeyCode() == WXK_SPACE) && // Record // !mIsLocked) // { // StopPlaying(); // // SetPlay(false); // SetRecord(false); // SetStop(true); // mStop->Disable(); // } // #endif // event.Skip(); //} // void ControlToolBar::UpdatePrefs() { gPrefs->Read("/GUI/AlwaysEnablePlay", &mAlwaysEnablePlay, false); #if 0 gPrefs->Read("/GUI/AlwaysEnablePause", &mAlwaysEnablePause, false); if(mAlwaysEnablePause) { mPause->Enable(); this->EnablePauseCommand(true); } else if(!mAlwaysEnablePause && !gAudioIO->IsBusy()) { mPause->PopUp(); mPause->Disable(); this->EnablePauseCommand(false); mPaused = false; gAudioIO->SetPaused(false); } gAudioIO->SetAlwaysEnablePause(mAlwaysEnablePause); #endif }