// Author: Kevin Ollivier, Steven Lamerton, Vadim Zeitlin
// Modified by:
// Created: 2010-03-06
-// RCS-ID: $Id: menu.cpp 54129 2008-06-11 19:30:52Z SC $
+// RCS-ID: $Id$
// Copyright: (c) Kevin Ollivier
// (c) 2010 Steven Lamerton
// (c) 2010 Vadim Zeitlin
bool
wxUIActionSimulator::Key(int keycode, int modifiers, bool isDown)
{
- wxASSERT_MSG( !(modifiers & wxMOD_CONTROL),
- "wxMOD_CONTROL is not implemented, use wxMOD_CMD instead" );
wxASSERT_MSG( (modifiers & wxMOD_ALTGR) != wxMOD_ALTGR,
"wxMOD_ALTGR is not implemented" );
wxASSERT_MSG( !(modifiers & wxMOD_META ),
wxASSERT_MSG( !(modifiers & wxMOD_WIN ),
"wxMOD_WIN is not implemented" );
- return DoKey(keycode, modifiers, isDown);
+ if ( isDown )
+ SimulateModifiers(modifiers, true);
+
+ bool rc = DoKey(keycode, modifiers, isDown);
+
+ if ( !isDown )
+ SimulateModifiers(modifiers, false);
+
+ return rc;
+}
+
+void wxUIActionSimulator::SimulateModifiers(int modifiers, bool isDown)
+{
+ if ( modifiers & wxMOD_SHIFT )
+ DoKey(WXK_SHIFT, modifiers, isDown);
+ if ( modifiers & wxMOD_ALT )
+ DoKey(WXK_ALT, modifiers, isDown);
+ if ( modifiers & wxMOD_CONTROL )
+ DoKey(WXK_CONTROL, modifiers, isDown);
}
-bool wxUIActionSimulator::Char(int keycode, int modifiers)
+bool wxUIActionSimulator::Char(int keycode, int modifiers)
{
+ switch(keycode)
+ {
+ case '0':
+ keycode = '0';
+ break;
+ case '1':
+ keycode = '1';
+ break;
+ case '2':
+ keycode = '2';
+ break;
+ case '3':
+ keycode = '3';
+ break;
+ case '4':
+ keycode = '4';
+ break;
+ case '5':
+ keycode = '5';
+ break;
+ case '6':
+ keycode = '6';
+ break;
+ case '7':
+ keycode = '7';
+ break;
+ case '8':
+ keycode = '8';
+ break;
+ case '9':
+ keycode = '9';
+ break;
+ case '+':
+ keycode = '+';
+ break;
+ case '-':
+ keycode = '-';
+ break;
+ case '.':
+ keycode = '.';
+ break;
+ default:
+ break;
+ };
+
Key(keycode, modifiers, true);
Key(keycode, modifiers, false);
while ( *s != '\0' )
{
const char ch = *s++;
-
- wxASSERT_MSG( ch, "Only letters are allowed" );
-
if ( !Char(ch, isupper(ch) ? wxMOD_SHIFT : 0) )
return false;
}