mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
CtrlCore: Cocoa modifier keys support
git-svn-id: svn://ultimatepp.org/upp/trunk@12133 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
ea4a247d95
commit
8572ae1712
3 changed files with 32 additions and 2 deletions
|
|
@ -8,9 +8,10 @@ K_SPACE = kVK_Space|K_DELTA,
|
|||
K_RETURN = kVK_Return|K_DELTA,
|
||||
K_ENTER = K_RETURN,
|
||||
|
||||
K_SHIFT_KEY,
|
||||
K_SHIFT_KEY = 500|K_DELTA,
|
||||
K_CTRL_KEY,
|
||||
K_ALT_KEY,
|
||||
K_OPTION_KEY,
|
||||
K_CAPSLOCK,
|
||||
|
||||
K_ESCAPE = kVK_Escape|K_DELTA,
|
||||
|
|
|
|||
|
|
@ -108,11 +108,32 @@ struct MMImp {
|
|||
if(!up && !(k & (K_CTRL|K_ALT))) {
|
||||
WString x = ToWString((CFStringRef)(e.characters));
|
||||
for(wchar c : x)
|
||||
if(c < 0xF700 && c >= 32 && c != 127)
|
||||
if(c < 0xF700 && (c >= 32 && c != 127 || c == 9))
|
||||
ctrl->DispatchKey(c, 1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool KeyFlags(Upp::Ctrl *ctrl, NSEvent *e) {
|
||||
bool alt = GetAlt();
|
||||
bool ctl = GetCtrl();
|
||||
bool sht = GetShift();
|
||||
bool opt = GetOption();
|
||||
Flags(e);
|
||||
if(!ctrl->IsEnabled())
|
||||
return false;
|
||||
|
||||
if(alt != GetAlt())
|
||||
ctrl->DispatchKey(K_ALT_KEY|(alt * K_KEYUP), 1);
|
||||
if(ctl != GetCtrl())
|
||||
ctrl->DispatchKey(K_CTRL_KEY|(ctl * K_KEYUP), 1);
|
||||
if(sht != GetShift())
|
||||
ctrl->DispatchKey(K_SHIFT_KEY|(sht * K_KEYUP), 1);
|
||||
if(opt != GetOption())
|
||||
ctrl->DispatchKey(K_OPTION_KEY|(opt * K_KEYUP), 1);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void BecomeKey(Upp::Ctrl *ctrl)
|
||||
{
|
||||
|
|
@ -190,6 +211,11 @@ struct MMImp {
|
|||
[super keyUp:e];
|
||||
}
|
||||
|
||||
- (void)flagsChanged:(NSEvent *)e {
|
||||
if(!Upp::MMImp::KeyFlags(ctrl, e))
|
||||
[super flagsChanged:e];
|
||||
}
|
||||
|
||||
- (BOOL)windowShouldClose:(NSWindow *)sender {
|
||||
Upp::MMImp::DoClose(ctrl);
|
||||
return NO;
|
||||
|
|
|
|||
|
|
@ -423,6 +423,9 @@ String GetKeyDesc(dword key)
|
|||
{ K_PLUS, tt_("key\v[+]") }, { K_MINUS, tt_("key\v[-]") }, { K_COMMA, tt_("key\v[,]") }, { K_PERIOD, tt_("key\v[.]") },
|
||||
{ K_SEMICOLON, tt_("key\v[;]") }, { K_SLASH, tt_("key\v[/]") }, { K_GRAVE, tt_("key\v[`]") }, { K_LBRACKET, tt_("key\v[[]") },
|
||||
{ K_BACKSLASH, tt_("key\v[\\]") }, { K_RBRACKET, tt_("key\v[]]") }, { K_QUOTEDBL, tt_("key\v[']") },
|
||||
#ifdef PLATFORM_COCOA
|
||||
{ K_OPTION_KEY, tt_("key\vOption") },
|
||||
#endif
|
||||
{ 0, NULL }
|
||||
};
|
||||
for(int i = 0; nkey[i].key; i++)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue