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:
Ton Roosendaal 2004-09-18 13:25:29 +00:00
parent 562d6958cb
commit cd79d25e83
5 changed files with 26 additions and 13 deletions

@ -233,15 +233,16 @@ typedef struct Global {
#define G_FLAGS_AUTOPLAY (1 << G_FLAGS_AUTOPLAY_BIT)
/* G.qual */
#define R_SHIFTKEY 1
#define L_SHIFTKEY 2
#define LR_SHIFTKEY 3
#define R_ALTKEY 4
#define L_ALTKEY 8
#define LR_ALTKEY 12
#define R_CTRLKEY 16
#define L_CTRLKEY 32
#define LR_CTRLKEY 48
#define R_SHIFTKEY 1
#define L_SHIFTKEY 2
#define LR_SHIFTKEY 3
#define R_ALTKEY 4
#define L_ALTKEY 8
#define LR_ALTKEY 12
#define R_CTRLKEY 16
#define L_CTRLKEY 32
#define LR_CTRLKEY 48
#define LR_COMMANDKEY 64
/* G.order: indicates what endianness the platform where the file was
* written had. */

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

@ -832,6 +832,10 @@ unsigned short screen_qread(short *val, char *ascii)
if(*val) 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;
}

@ -83,7 +83,7 @@ struct _Window {
/* Last known mouse/button/qualifier state */
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 commandqual;
@ -238,7 +238,7 @@ static int convert_key(GHOST_TKey key) {
case GHOST_kKeyRightShift: return RIGHTSHIFTKEY;
case GHOST_kKeyLeftControl: return LEFTCTRLKEY;
case GHOST_kKeyRightControl: return RIGHTCTRLKEY;
case GHOST_kKeyCommand: return LEFTCTRLKEY;
case GHOST_kKeyCommand: return COMMANDKEY;
case GHOST_kKeyLeftAlt: return LEFTALTKEY;
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);
} else if (bkey==LEFTALTKEY || bkey==RIGHTALTKEY) {
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);
@ -596,6 +598,11 @@ static int event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private)
win->lqual= change_bit(win->lqual, LR_ALTKEY, 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');
/*

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