OSX only: the Apple key now is a normal modifier in code, so can be

detected as others, LR_COMMANDKEY

Unline previous commit, Apple key doesnt map to control anymore, but is
handled separate where needed. Now only for undo (Apple-Z)
This commit is contained in:
2004-09-18 13:25:29 +00:00
parent 562d6958cb
commit cd79d25e83
5 changed files with 26 additions and 13 deletions

View File

@@ -242,6 +242,7 @@ typedef struct Global {
#define R_CTRLKEY 16 #define R_CTRLKEY 16
#define L_CTRLKEY 32 #define L_CTRLKEY 32
#define LR_CTRLKEY 48 #define LR_CTRLKEY 48
#define LR_COMMANDKEY 64
/* G.order: indicates what endianness the platform where the file was /* G.order: indicates what endianness the platform where the file was
* written had. */ * written had. */

View File

@@ -186,6 +186,7 @@
#define ENDKEY 170 #define ENDKEY 170
#define UNKNOWNKEY 171 #define UNKNOWNKEY 171
#define COMMANDKEY 172
/* **************** BLENDER QUEUE EVENTS ********************* */ /* **************** BLENDER QUEUE EVENTS ********************* */

View File

@@ -832,6 +832,10 @@ unsigned short screen_qread(short *val, char *ascii)
if(*val) G.qual |= LR_CTRLKEY; if(*val) G.qual |= LR_CTRLKEY;
else G.qual &= ~LR_CTRLKEY; else G.qual &= ~LR_CTRLKEY;
} }
else if(event==COMMANDKEY) { // OSX
if(*val) G.qual |= LR_COMMANDKEY;
else G.qual &= ~LR_COMMANDKEY;
}
return event; return event;
} }

View File

@@ -83,7 +83,7 @@ struct _Window {
/* Last known mouse/button/qualifier state */ /* Last known mouse/button/qualifier state */
int lmouse[2]; int lmouse[2];
int lqual; /* (LR_SHFTKEY, LR_CTRLKEY, LR_ALTKEY) */ int lqual; /* (LR_SHFTKEY, LR_CTRLKEY, LR_ALTKEY, LR_COMMANDKEY) */
int lmbut; /* (L_MOUSE, M_MOUSE, R_MOUSE) */ int lmbut; /* (L_MOUSE, M_MOUSE, R_MOUSE) */
int commandqual; int commandqual;
@@ -238,7 +238,7 @@ static int convert_key(GHOST_TKey key) {
case GHOST_kKeyRightShift: return RIGHTSHIFTKEY; case GHOST_kKeyRightShift: return RIGHTSHIFTKEY;
case GHOST_kKeyLeftControl: return LEFTCTRLKEY; case GHOST_kKeyLeftControl: return LEFTCTRLKEY;
case GHOST_kKeyRightControl: return RIGHTCTRLKEY; case GHOST_kKeyRightControl: return RIGHTCTRLKEY;
case GHOST_kKeyCommand: return LEFTCTRLKEY; case GHOST_kKeyCommand: return COMMANDKEY;
case GHOST_kKeyLeftAlt: return LEFTALTKEY; case GHOST_kKeyLeftAlt: return LEFTALTKEY;
case GHOST_kKeyRightAlt: return RIGHTALTKEY; case GHOST_kKeyRightAlt: return RIGHTALTKEY;
@@ -560,6 +560,8 @@ static int event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private)
win->lqual= change_bit(win->lqual, LR_CTRLKEY, val); win->lqual= change_bit(win->lqual, LR_CTRLKEY, val);
} else if (bkey==LEFTALTKEY || bkey==RIGHTALTKEY) { } else if (bkey==LEFTALTKEY || bkey==RIGHTALTKEY) {
win->lqual= change_bit(win->lqual, LR_ALTKEY, val); win->lqual= change_bit(win->lqual, LR_ALTKEY, val);
} else if (bkey==COMMANDKEY) {
win->lqual= change_bit(win->lqual, LR_COMMANDKEY, val);
} }
window_handle_ext(win, bkey, val, kd->ascii); window_handle_ext(win, bkey, val, kd->ascii);
@@ -596,6 +598,11 @@ static int event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private)
win->lqual= change_bit(win->lqual, LR_ALTKEY, 0); win->lqual= change_bit(win->lqual, LR_ALTKEY, 0);
window_handle(win, LEFTALTKEY, 0); window_handle(win, LEFTALTKEY, 0);
} }
if ((win->lqual & LR_COMMANDKEY) && !query_qual('C')) {
win->lqual= change_bit(win->lqual, LR_COMMANDKEY, 0);
window_handle(win, LR_COMMANDKEY, 0);
}
/* probably redundant now (ton) */
win->commandqual= query_qual('C'); win->commandqual= query_qual('C');
/* /*

View File

@@ -968,8 +968,8 @@ int blenderqread(unsigned short event, short val)
} }
break; break;
case ZKEY: // undo case ZKEY: // undo
if(G.qual & LR_CTRLKEY) { // all combos with ctrl/cammandkey are accepted if(G.qual & (LR_CTRLKEY|LR_COMMANDKEY)) { // all combos with ctrl/cammandkey are accepted
if(G.qual==LR_CTRLKEY) BIF_undo(); if ELEM(G.qual, LR_CTRLKEY, LR_COMMANDKEY) BIF_undo();
else BIF_redo(); // all combos with ctrl is redo else BIF_redo(); // all combos with ctrl is redo
return 0; return 0;
} }