本文整理汇总了C++中wxKeyEvent::MetaDown方法的典型用法代码示例。如果您正苦于以下问题:C++ wxKeyEvent::MetaDown方法的具体用法?C++ wxKeyEvent::MetaDown怎么用?C++ wxKeyEvent::MetaDown使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxKeyEvent
的用法示例。
在下文中一共展示了wxKeyEvent::MetaDown方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IsAcceptedKey
bool wxGridCellEditor::IsAcceptedKey(wxKeyEvent& event)
{
bool ctrl = event.ControlDown();
bool alt = event.AltDown();
#ifdef __WXMAC__
// On the Mac the Alt key is more like shift and is used for entry of
// valid characters, so check for Ctrl and Meta instead.
alt = event.MetaDown();
#endif
// Assume it's not a valid char if ctrl or alt is down, but if both are
// down then it may be because of an AltGr key combination, so let them
// through in that case.
if ((ctrl || alt) && !(ctrl && alt))
return false;
#if wxUSE_UNICODE
// if the unicode key code is not really a unicode character (it may
// be a function key or etc., the platforms appear to always give us a
// small value in this case) then fallback to the ASCII key code but
// don't do anything for function keys or etc.
if ( event.GetUnicodeKey() > 127 && event.GetKeyCode() > 127 )
return false;
#else
if ( event.GetKeyCode() > 255 )
return false;
#endif
return true;
}
示例2: IsAcceptedKey
bool wxGridCellEditor::IsAcceptedKey(wxKeyEvent& event)
{
bool ctrl = event.ControlDown();
bool alt;
#ifdef __WXMAC__
// On the Mac the Alt key is more like shift and is used for entry of
// valid characters, so check for Ctrl and Meta instead.
alt = event.MetaDown();
#else // !__WXMAC__
alt = event.AltDown();
#endif // __WXMAC__/!__WXMAC__
// Assume it's not a valid char if ctrl or alt is down, but if both are
// down then it may be because of an AltGr key combination, so let them
// through in that case.
if ((ctrl || alt) && !(ctrl && alt))
return false;
#if wxUSE_UNICODE
if ( static_cast<int>(event.GetUnicodeKey()) == WXK_NONE )
return false;
#else
if ( event.GetKeyCode() > WXK_START )
return false;
#endif
return true;
}
示例3: if
PlatformKeyboardEvent::PlatformKeyboardEvent(wxKeyEvent& event)
{
if (event.GetEventType() == wxEVT_KEY_UP)
m_type = KeyUp;
else if (event.GetEventType() == wxEVT_KEY_DOWN)
m_type = KeyDown;
else if (event.GetEventType() == wxEVT_CHAR)
m_type = Char;
else
ASSERT_NOT_REACHED();
if (m_type != Char)
m_keyIdentifier = keyIdentifierForWxKeyCode(event.GetKeyCode());
else {
//ENTER is an editing command processed as a char (only Enter and Tab are)
//unfortunately the unicode key for numpad_enter (370) is NOT what we want here (13)
//The unicode values for normal enter and tab are the same as the ASCII values, thus ok
//Note that I think this a wx bug, as the Character Code is actually 13 when
//numpad_enter is a CHAR event.
if (event.GetKeyCode() == 13 && event.GetUnicodeKey() == wxChar(370))
m_text = "\r";
else
m_text = wxString(event.GetUnicodeKey());
m_unmodifiedText = m_text;
}
m_autoRepeat = false; // FIXME: not correct.
m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event.GetKeyCode());
m_nativeVirtualKeyCode = event.GetKeyCode();
m_isKeypad = (event.GetKeyCode() >= WXK_NUMPAD_SPACE) && (event.GetKeyCode() <= WXK_NUMPAD_DIVIDE);
m_shiftKey = event.ShiftDown();
m_ctrlKey = event.CmdDown();
m_altKey = event.AltDown();
m_metaKey = event.MetaDown();
}
示例4: wxString
PlatformKeyboardEvent::PlatformKeyboardEvent(wxKeyEvent& event)
{
m_text = wxString(event.GetUnicodeKey());
m_unmodifiedText = m_text;
m_keyIdentifier = keyIdentifierForWxKeyCode(event.GetKeyCode());
m_isKeyUp = event.GetEventType() == wxEVT_KEY_UP;
m_autoRepeat = false; // FIXME: not correct.
m_WindowsKeyCode = windowsKeyCodeForKeyEvent(event.GetKeyCode());
m_isKeypad = (event.GetKeyCode() >= WXK_NUMPAD_SPACE) && (event.GetKeyCode() <= WXK_NUMPAD_DIVIDE);
m_shiftKey = event.ShiftDown();
m_ctrlKey = event.CmdDown();
m_altKey = event.AltDown();
m_metaKey = event.MetaDown();
}
示例5: OnCharHook
// By default, pressing escape cancels the dialog , on mac command-stop does the same thing
void wxDialog::OnCharHook(wxKeyEvent& event)
{
if (( event.m_keyCode == WXK_ESCAPE ||
( event.m_keyCode == '.' && event.MetaDown() ) )
&& FindWindow(wxID_CANCEL) )
{
// Behaviour changed in 2.0: we'll send a Cancel message
// to the dialog instead of Close.
wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
cancelEvent.SetEventObject( this );
GetEventHandler()->ProcessEvent(cancelEvent);
return;
}
// We didn't process this event.
event.Skip();
}
示例6: LogKeyEvent
//.........这里部分代码省略.........
case WXK_HOME: key = wxT("HOME"); break;
case WXK_LEFT: key = wxT("LEFT"); break;
case WXK_UP: key = wxT("UP"); break;
case WXK_RIGHT: key = wxT("RIGHT"); break;
case WXK_DOWN: key = wxT("DOWN"); break;
case WXK_SELECT: key = wxT("SELECT"); break;
case WXK_PRINT: key = wxT("PRINT"); break;
case WXK_EXECUTE: key = wxT("EXECUTE"); break;
case WXK_SNAPSHOT: key = wxT("SNAPSHOT"); break;
case WXK_INSERT: key = wxT("INSERT"); break;
case WXK_HELP: key = wxT("HELP"); break;
case WXK_NUMPAD0: key = wxT("NUMPAD0"); break;
case WXK_NUMPAD1: key = wxT("NUMPAD1"); break;
case WXK_NUMPAD2: key = wxT("NUMPAD2"); break;
case WXK_NUMPAD3: key = wxT("NUMPAD3"); break;
case WXK_NUMPAD4: key = wxT("NUMPAD4"); break;
case WXK_NUMPAD5: key = wxT("NUMPAD5"); break;
case WXK_NUMPAD6: key = wxT("NUMPAD6"); break;
case WXK_NUMPAD7: key = wxT("NUMPAD7"); break;
case WXK_NUMPAD8: key = wxT("NUMPAD8"); break;
case WXK_NUMPAD9: key = wxT("NUMPAD9"); break;
case WXK_MULTIPLY: key = wxT("MULTIPLY"); break;
case WXK_ADD: key = wxT("ADD"); break;
case WXK_SEPARATOR: key = wxT("SEPARATOR"); break;
case WXK_SUBTRACT: key = wxT("SUBTRACT"); break;
case WXK_DECIMAL: key = wxT("DECIMAL"); break;
case WXK_DIVIDE: key = wxT("DIVIDE"); break;
case WXK_F1: key = wxT("F1"); break;
case WXK_F2: key = wxT("F2"); break;
case WXK_F3: key = wxT("F3"); break;
case WXK_F4: key = wxT("F4"); break;
case WXK_F5: key = wxT("F5"); break;
case WXK_F6: key = wxT("F6"); break;
case WXK_F7: key = wxT("F7"); break;
case WXK_F8: key = wxT("F8"); break;
case WXK_F9: key = wxT("F9"); break;
case WXK_F10: key = wxT("F10"); break;
case WXK_F11: key = wxT("F11"); break;
case WXK_F12: key = wxT("F12"); break;
case WXK_F13: key = wxT("F13"); break;
case WXK_F14: key = wxT("F14"); break;
case WXK_F15: key = wxT("F15"); break;
case WXK_F16: key = wxT("F16"); break;
case WXK_F17: key = wxT("F17"); break;
case WXK_F18: key = wxT("F18"); break;
case WXK_F19: key = wxT("F19"); break;
case WXK_F20: key = wxT("F20"); break;
case WXK_F21: key = wxT("F21"); break;
case WXK_F22: key = wxT("F22"); break;
case WXK_F23: key = wxT("F23"); break;
case WXK_F24: key = wxT("F24"); break;
case WXK_NUMLOCK: key = wxT("NUMLOCK"); break;
case WXK_SCROLL: key = wxT("SCROLL"); break;
case WXK_PAGEUP: key = wxT("PAGEUP"); break;
case WXK_PAGEDOWN: key = wxT("PAGEDOWN"); break;
case WXK_NUMPAD_SPACE: key = wxT("NUMPAD_SPACE"); break;
case WXK_NUMPAD_TAB: key = wxT("NUMPAD_TAB"); break;
case WXK_NUMPAD_ENTER: key = wxT("NUMPAD_ENTER"); break;
case WXK_NUMPAD_F1: key = wxT("NUMPAD_F1"); break;
case WXK_NUMPAD_F2: key = wxT("NUMPAD_F2"); break;
case WXK_NUMPAD_F3: key = wxT("NUMPAD_F3"); break;
case WXK_NUMPAD_F4: key = wxT("NUMPAD_F4"); break;
case WXK_NUMPAD_HOME: key = wxT("NUMPAD_HOME"); break;
case WXK_NUMPAD_LEFT: key = wxT("NUMPAD_LEFT"); break;
case WXK_NUMPAD_UP: key = wxT("NUMPAD_UP"); break;
case WXK_NUMPAD_RIGHT: key = wxT("NUMPAD_RIGHT"); break;
case WXK_NUMPAD_DOWN: key = wxT("NUMPAD_DOWN"); break;
case WXK_NUMPAD_PAGEUP: key = wxT("NUMPAD_PAGEUP"); break;
case WXK_NUMPAD_PAGEDOWN: key = wxT("NUMPAD_PAGEDOWN"); break;
case WXK_NUMPAD_END: key = wxT("NUMPAD_END"); break;
case WXK_NUMPAD_BEGIN: key = wxT("NUMPAD_BEGIN"); break;
case WXK_NUMPAD_INSERT: key = wxT("NUMPAD_INSERT"); break;
case WXK_NUMPAD_DELETE: key = wxT("NUMPAD_DELETE"); break;
case WXK_NUMPAD_EQUAL: key = wxT("NUMPAD_EQUAL"); break;
case WXK_NUMPAD_MULTIPLY: key = wxT("NUMPAD_MULTIPLY"); break;
case WXK_NUMPAD_ADD: key = wxT("NUMPAD_ADD"); break;
case WXK_NUMPAD_SEPARATOR: key = wxT("NUMPAD_SEPARATOR"); break;
case WXK_NUMPAD_SUBTRACT: key = wxT("NUMPAD_SUBTRACT"); break;
case WXK_NUMPAD_DECIMAL: key = wxT("NUMPAD_DECIMAL"); break;
default:
{
if ( keycode < 128 && wxIsprint((int)keycode) )
key.Printf(wxT("'%c'"), (char)keycode);
else if ( keycode > 0 && keycode < 27 )
key.Printf(_("Ctrl-%c"), wxT('A') + keycode - 1);
else
key.Printf(wxT("unknown (%ld)"), keycode);
}
}
}
wxLogMessage( wxT("%s event: %s (flags = %c%c%c%c)"),
name,
key.c_str(),
event.ControlDown() ? wxT('C') : wxT('-'),
event.AltDown() ? wxT('A') : wxT('-'),
event.ShiftDown() ? wxT('S') : wxT('-'),
event.MetaDown() ? wxT('M') : wxT('-'));
}
示例7: KeyEventToKeyString
wxString KeyEventToKeyString(wxKeyEvent &event)
{
wxString newStr = wxT("");
long key = event.GetKeyCode();
if(event.ControlDown())
newStr += wxT("Ctrl+");
if(event.AltDown())
newStr += wxT("Alt+");
if(event.ShiftDown())
newStr += wxT("Shift+");
if(event.MetaDown()) {
#ifdef __WXMAC__
newStr += wxT("Cmd+");
#endif
}
#if 0
//BG: Don't allow noncombo letters to be bound
if(((!event.ControlDown() && !event.AltDown() && !event.ShiftDown()) &&
(key >= 33 && key <= 126)) ||
((!event.ControlDown() && !event.AltDown() &&
event.ShiftDown()) && (key >= 33 && key <= 126)))
return wxT("");
#endif
if (event.ControlDown() && key >= 1 && key <= 26)
newStr += (wxChar)(64 + key);
else if (key >= 33 && key <= 126)
newStr += (wxChar)key;
else
{
switch(key)
{
case WXK_BACK:
newStr += wxT("Backspace");
break;
case WXK_DELETE:
newStr += wxT("Delete");
break;
case WXK_SPACE:
newStr += wxT("Spacebar");
break;
case WXK_TAB:
newStr += wxT("Tab");
break;
case WXK_PRIOR:
newStr += wxT("PageUp");
break;
case WXK_NEXT:
newStr += wxT("PageDown");
break;
case WXK_END:
newStr += wxT("End");
break;
case WXK_HOME:
newStr += wxT("Home");
break;
case WXK_LEFT:
newStr += wxT("Left");
break;
case WXK_UP:
newStr += wxT("Up");
break;
case WXK_RIGHT:
newStr += wxT("Right");
break;
case WXK_DOWN:
newStr += wxT("Down");
break;
case WXK_INSERT:
newStr += wxT("Insert");
break;
case WXK_NUMPAD0:
newStr += wxT("NUMPAD0");
break;
case WXK_NUMPAD1:
newStr += wxT("NUMPAD1");
break;
case WXK_NUMPAD2:
newStr += wxT("NUMPAD2");
break;
case WXK_NUMPAD3:
newStr += wxT("NUMPAD3");
break;
case WXK_NUMPAD4:
newStr += wxT("NUMPAD4");
break;
case WXK_NUMPAD5:
newStr += wxT("NUMPAD5");
break;
case WXK_NUMPAD6:
newStr += wxT("NUMPAD6");
break;
case WXK_NUMPAD7:
newStr += wxT("NUMPAD7");
//.........这里部分代码省略.........
示例8: OnChar
void CMuleListCtrl::OnChar(wxKeyEvent& evt)
{
int key = evt.GetKeyCode();
if (key == 0) {
// We prefer GetKeyCode() to GetUnicodeKey(), in order to work
// around a bug in the GetUnicodeKey(), that causes values to
// be returned untranslated. This means for instance, that if
// shift and '1' is pressed, the result is '1' rather than '!'
// (as it should be on my keyboard). This has been reported:
// http://sourceforge.net/tracker/index.php?func=detail&aid=1864810&group_id=9863&atid=109863
key = evt.GetUnicodeKey();
} else if (key >= WXK_START) {
// wxKeycodes are ignored, as they signify events such as the 'home'
// button. Unicoded chars are not checked as there is an overlap valid
// chars and the wx keycodes.
evt.Skip();
return;
}
// We wish to avoid handling shortcuts, with the exception of 'select-all'.
if (evt.AltDown() || evt.ControlDown() || evt.MetaDown()) {
if (evt.CmdDown() && (evt.GetKeyCode() == 0x01)) {
// Ctrl+a (Command+a on Mac) was pressed, select all items
for (int i = 0; i < GetItemCount(); ++i) {
SetItemState(i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
}
}
evt.Skip();
return;
} else if (m_tts_time + 1500u < GetTickCount()) {
m_tts_text.Clear();
}
m_tts_time = GetTickCount();
m_tts_text.Append(wxTolower(key));
// May happen if the subclass does not forward deletion events.
// Or rather when single-char-repeated (see below) wraps around, so don't assert.
if (m_tts_item >= GetItemCount()) {
m_tts_item = -1;
}
unsigned next = (m_tts_item == -1) ? 0 : m_tts_item;
for (unsigned i = 0, count = GetItemCount(); i < count; ++i) {
wxString text = GetTTSText((next + i) % count).MakeLower();
if (text.StartsWith(m_tts_text)) {
ClearSelection();
m_tts_item = (next + i) % count;
SetItemState(m_tts_item, wxLIST_STATE_FOCUSED | wxLIST_STATE_SELECTED,
wxLIST_STATE_FOCUSED | wxLIST_STATE_SELECTED);
EnsureVisible(m_tts_item);
return;
}
}
if (m_tts_item != -1) {
// Crop the string so that it matches the old item (avoid typos).
wxString text = GetTTSText(m_tts_item).MakeLower();
// If the last key didn't result in a hit, then we skip the event.
if (!text.StartsWith(m_tts_text)) {
if ((m_tts_text.Length() == 2) && (m_tts_text[0] == m_tts_text[1])) {
// Special case, single-char, repeated. This allows toggeling
// between items starting with a specific letter.
m_tts_text.Clear();
// Increment, so the next will be selected (or wrap around).
m_tts_item++;
OnChar(evt);
} else {
m_tts_text.RemoveLast();
evt.Skip(true);
}
}
} else {
evt.Skip(true);
}
}
示例9: OnChar
void wxListBox::OnChar(wxKeyEvent& event)
{
if ( event.GetKeyCode() == WXK_RETURN || event.GetKeyCode() == WXK_NUMPAD_ENTER)
{
wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
if ( tlw && tlw->GetDefaultItem() )
{
wxButton *def = wxDynamicCast(tlw->GetDefaultItem(), wxButton);
if ( def && def->IsEnabled() )
{
wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, def->GetId() );
event.SetEventObject(def);
def->Command(event);
return ;
}
}
event.Skip() ;
}
/* generate wxID_CANCEL if command-. or <esc> has been pressed (typically in dialogs) */
else if (event.GetKeyCode() == WXK_ESCAPE || (event.GetKeyCode() == '.' && event.MetaDown() ) )
{
// FIXME: look in ancestors, not just parent.
wxWindow* win = GetParent()->FindWindow( wxID_CANCEL ) ;
if (win)
{
wxCommandEvent new_event(wxEVT_COMMAND_BUTTON_CLICKED,wxID_CANCEL);
new_event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( new_event );
}
}
else if ( event.GetKeyCode() == WXK_TAB )
{
wxNavigationKeyEvent new_event;
new_event.SetEventObject( this );
new_event.SetDirection( !event.ShiftDown() );
/* CTRL-TAB changes the (parent) window, i.e. switch notebook page */
new_event.SetWindowChange( event.ControlDown() );
new_event.SetCurrentFocus( this );
if ( !GetEventHandler()->ProcessEvent( new_event ) )
event.Skip() ;
}
else if ( event.GetKeyCode() == WXK_DOWN || event.GetKeyCode() == WXK_UP )
{
// perform the default key handling first
wxControl::OnKeyDown( event ) ;
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId);
event.SetEventObject( this );
wxArrayInt aSelections;
int n, count = GetSelections(aSelections);
if ( count > 0 )
{
n = aSelections[0];
if ( HasClientObjectData() )
event.SetClientObject( GetClientObject(n) );
else if ( HasClientUntypedData() )
event.SetClientData( GetClientData(n) );
event.SetString(GetString(n));
}
else
{
n = -1;
}
event.SetInt(n);
GetEventHandler()->ProcessEvent(event);
}
else
{
if ( event.GetTimestamp() > m_lastTypeIn + 60 )
{
m_typeIn = wxEmptyString ;
}
m_lastTypeIn = event.GetTimestamp() ;
m_typeIn += (char) event.GetKeyCode() ;
int line = FindString(wxT("*")+m_typeIn+wxT("*")) ;
if ( line >= 0 )
{
if ( GetSelection() != line )
{
SetSelection(line) ;
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId);
event.SetEventObject( this );
if ( HasClientObjectData() )
event.SetClientObject( GetClientObject( line ) );
else if ( HasClientUntypedData() )
event.SetClientData( GetClientData(line) );
event.SetString(GetString(line));
event.SetInt(line);
GetEventHandler()->ProcessEvent(event);
}
}
}
}