void wxWindow::OnKeyUp(wxKeyEvent& event) { int key = event.GetKeyCode(); if ( !event.HasModifiers() && (key == WXK_ALT || key == WXK_F10) ) { // only process Alt release specially if there were no other key // presses since Alt had been pressed and if both events happened in // the same window if ( ms_winLastAltPress == this ) { wxMenuBar *menubar = GetParentFrameMenuBar(); if ( menubar && this != menubar ) { menubar->SelectMenu(0); } } } else { event.Skip(); } // in any case reset it ms_winLastAltPress = NULL; }
void wxListCtrlEx::OnKeyDown(wxKeyEvent& event) { if (!m_prefixSearch_enabled) { event.Skip(); return; } int code = event.GetKeyCode(); if (code == WXK_LEFT || code == WXK_RIGHT || code == WXK_UP || code == WXK_DOWN || code == WXK_HOME || code == WXK_END) { ResetSearchPrefix(); } #if defined(__WXMSW__) && wxUSE_UNICODE wxChar key = MapVirtualKey(event.GetUnicodeKey(), 2); if (key < 32) { event.Skip(); return; } else if (key == 32 || event.HasModifiers()) { event.Skip(); return; } HandlePrefixSearch(key); return; #else if (code > 32 && code < 300 && !event.HasModifiers()) { #if wxUSE_UNICODE int unicodeKey = event.GetUnicodeKey(); if (unicodeKey) code = unicodeKey; #endif HandlePrefixSearch(code); } else event.Skip(); #endif //defined(__WXMSW__) && wxUSE_UNICODE }
void CamuleDlg::OnKeyPressed(wxKeyEvent& event) { if (event.GetKeyCode() == WXK_F1) { // Ctrl/Alt/Shift must not be pressed, to avoid // conflicts with other (global) shortcuts. if (!event.HasModifiers() && !event.ShiftDown()) { LaunchUrl(wxT("http://wiki.amule.org")); return; } } event.Skip(); }
void wxTimeSpinCtrl::OnEditKey(wxKeyEvent &ev) { if (!ev.HasModifiers()) { switch(ev.GetKeyCode()) { case WXK_LEFT: { if (!ev.ShiftDown()) { int tp = GetTimePart() + 1; if (tp < 3 || (hasDay && tp == 3)) { Highlight(tp); return; } } break; } case WXK_RIGHT: { if (!ev.ShiftDown()) { int tp = GetTimePart() - 1; if (tp >= 0) { Highlight(tp); return; } } break; } case WXK_UP: DoSpin(1); return; break; case WXK_DOWN: DoSpin(-1); return; break; default: break; } } ev.Skip(); }
void LoginForm::onFormChar(wxKeyEvent& event) { if (event.m_keyCode == WXK_TAB) { processTab(!event.ShiftDown(), event.GetId()); } else { int32 keyCode = event.GetKeyCode(); if (!event.HasModifiers() && ((keyCode >= '0' && keyCode <= '9') || (keyCode >= 'a' && keyCode <= 'z') || (keyCode >= 'A' && keyCode <= 'Z' ))) { m_tbUsername->SetFocus(); m_tbUsername->SetValue((char)keyCode); m_tbUsername->SetInsertionPointEnd(); } } }
void wxWindow::OnChar(wxKeyEvent& event) { if ( event.AltDown() && !event.ControlDown() ) { int key = event.GetKeyCode(); wxMenuBar *menubar = GetParentFrameMenuBar(); if ( menubar ) { int item = menubar->FindNextItemForAccel(-1, key); if ( item != -1 ) { menubar->PopupMenu((size_t)item); // skip "event.Skip()" below return; } } } // if Return was pressed, see if there's a default button to activate if ( !event.HasModifiers() && event.GetKeyCode() == WXK_RETURN ) { wxTopLevelWindow * tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); if ( tlw ) { wxButton *btn = wxDynamicCast(tlw->GetDefaultItem(), wxButton); if ( btn ) { wxCommandEvent evt(wxEVT_COMMAND_BUTTON_CLICKED, btn->GetId()); evt.SetEventObject(btn); btn->Command(evt); return; } } } event.Skip(); }
void ctlTree::OnChar(wxKeyEvent &event) { int keyCode = event.GetKeyCode(); if ( !event.HasModifiers() && ((keyCode >= '0' && keyCode <= '9') || (keyCode >= 'a' && keyCode <= 'z') || (keyCode >= 'A' && keyCode <= 'Z'))) { wxTreeItemId currItem = GetSelection(); if (!currItem.IsOk()) return; wxTreeItemId matchItem = FindItem(currItem, m_findPrefix + (wxChar)keyCode); if ( matchItem.IsOk() ) { EnsureVisible(matchItem); SelectItem(matchItem); m_findPrefix += (wxChar)keyCode; // also start the timer to reset the current prefix if the user // doesn't press any more alnum keys soon -- we wouldn't want // to use this prefix for a new item search if ( !m_findTimer ) { m_findTimer = new ctlTreeFindTimer(this); } m_findTimer->Start(ctlTreeFindTimer::CTLTREE_DELAY, wxTIMER_ONE_SHOT); return; } } else { event.Skip(true); } }
void HotkeyCtrl::OnKeyDownEvent(wxKeyEvent& e) { e.StopPropagation(); int code = e.GetKeyCode(); if (code == WXK_WINDOWS_LEFT || code == WXK_WINDOWS_RIGHT) { WinDown = true; return; } if (code == WXK_NONE || code == WXK_SHIFT || code == WXK_ALT || code == WXK_CONTROL) return; if (code == WXK_DELETE) { this->Clear(); return; } wxString key; if (code > 32 && code < 127) key.Append(e.GetUnicodeKey()); else key = g_keys.GetKeyString(code); if (key.empty()) return; if (e.HasModifiers()) { int Modifers = e.GetModifiers(); if (Modifers & wxMOD_ALT) key.insert(0,"Alt+"); if (Modifers & wxMOD_CONTROL) key.insert(0,"Ctrl+"); if (Modifers & wxMOD_SHIFT) key.insert(0,"Shift+"); } if (WinDown) key.insert(0,"Win+"); this->SetValue(key); }
void StyledTextBox::OnKeyChar(wxKeyEvent& keyEvent) { // Process visible character input if (!keyEvent.HasModifiers()) { int keycode = keyEvent.GetRawKeyCode(); if (keycode < 255 && isprint(keycode)) { if (HasSelectedText()) { RemoveSelectedText(); } char c = (wxChar)keycode; auto text = GetStdText(); auto insertPosition = begin(text) + GetCursorPosition(); text.insert(insertPosition, c); SetText(text); SetCursorPosition(GetCursorPosition() + 1); } } }
void CLocalListView::OnChar(wxKeyEvent& event) { int code = event.GetKeyCode(); if (code == WXK_DELETE) { if (GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED) == -1) { wxBell(); return; } wxCommandEvent tmp; OnMenuDelete(tmp); } else if (code == WXK_F2) { wxCommandEvent tmp; OnMenuRename(tmp); } else if (code == WXK_BACK) { if (!m_hasParent) { wxBell(); return; } wxString error; if (!m_pState->SetLocalDir(_T(".."), &error)) { if (error != _T("")) wxMessageBox(error, _("Failed to change directory"), wxICON_INFORMATION); else wxBell(); } } else if (code > 32 && code < 300 && !event.HasModifiers()) { // Keyboard navigation within items wxDateTime now = wxDateTime::UNow(); if (m_lastKeyPress.IsValid()) { wxTimeSpan span = now - m_lastKeyPress; if (span.GetSeconds() >= 1) m_prefix = _T(""); } m_lastKeyPress = now; wxChar tmp[2]; #if wxUSE_UNICODE tmp[0] = event.GetUnicodeKey(); #else tmp[0] = code; #endif tmp[1] = 0; wxString newPrefix = m_prefix + tmp; bool beep = false; int item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item != -1) { wxString text = GetData(item)->name; if (text.Length() >= m_prefix.Length() && !m_prefix.CmpNoCase(text.Left(m_prefix.Length()))) beep = true; } else if (m_prefix == _T("")) beep = true; int start = item; if (start < 0) start = 0; int newPos = FindItemWithPrefix(newPrefix, start); if (newPos == -1 && m_prefix == tmp && item != -1 && beep) { // Search the next item that starts with the same letter newPrefix = m_prefix; newPos = FindItemWithPrefix(newPrefix, item + 1); } m_prefix = newPrefix; if (newPos == -1) { if (beep) wxBell(); return; } item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); while (item != -1) { SetItemState(item, 0, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED); item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); } SetItemState(newPos, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED); EnsureVisible(newPos); } else event.Skip(); }
void wxListCtrlEx::OnKeyDown(wxKeyEvent& event) { if (!m_prefixSearch_enabled) { event.Skip(); return; } int code = event.GetKeyCode(); if (code == WXK_LEFT || code == WXK_RIGHT || code == WXK_UP || code == WXK_DOWN || code == WXK_HOME || code == WXK_END) { ResetSearchPrefix(); event.Skip(); return; } if (event.AltDown() && !event.ControlDown()) // Alt but not AltGr { event.Skip(); return; } wxChar key; switch (code) { case WXK_NUMPAD0: case WXK_NUMPAD1: case WXK_NUMPAD2: case WXK_NUMPAD3: case WXK_NUMPAD4: case WXK_NUMPAD5: case WXK_NUMPAD6: case WXK_NUMPAD7: case WXK_NUMPAD8: case WXK_NUMPAD9: key = '0' + code - WXK_NUMPAD0; break; case WXK_NUMPAD_ADD: key = '+'; break; case WXK_NUMPAD_SUBTRACT: key = '-'; break; case WXK_NUMPAD_MULTIPLY: key = '*'; break; case WXK_NUMPAD_DIVIDE: key = '/'; break; default: key = 0; break; } if (key) { if (event.GetModifiers()) { // Numpad keys can not have modifiers event.Skip(); } HandlePrefixSearch(key); return; } #if defined(__WXMSW__) if (code >= 300 && code != WXK_NUMPAD_DECIMAL) { event.Skip(); return; } // Get the actual key BYTE state[256]; if (!GetKeyboardState(state)) { event.Skip(); return; } wxChar buffer[1]; int res = ToUnicode(event.GetRawKeyCode(), 0, state, buffer, 1, 0); if (res != 1) { event.Skip(); return; } key = buffer[0]; if (key < 32) { event.Skip(); return; } if (key == 32 && event.HasModifiers()) { event.Skip(); return; } HandlePrefixSearch(key); return; #else if (code > 32 && code < 300 && !event.HasModifiers()) { int unicodeKey = event.GetUnicodeKey(); if (unicodeKey) code = unicodeKey; HandlePrefixSearch(code); } else event.Skip(); #endif //defined(__WXMSW__) }