Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 57 additions & 24 deletions jitouch/Jitouch/Gesture.m
Original file line number Diff line number Diff line change
Expand Up @@ -683,12 +683,45 @@ static void doCommand(NSString *gesture, int device) {

if ([command isEqualToString:@"-"]) {

} else if ([command isEqualToString:@"Fill"]) {
[keyUtil simulateKey:@"F" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
//[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Return to Previous Size"]) {
[keyUtil simulateKey:@"R" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
//[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Center"]) {
[keyUtil simulateKey:@"C" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
//[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
// } else if ([command isEqualToString:@"Left"]) {
// [keyUtil simulateKey:@"←" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
// //[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
// } else if ([command isEqualToString:@"Right"]) {
// [keyUtil simulateKey:@"→" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
// //[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
// } else if ([command isEqualToString:@"Top"]) {
// [keyUtil simulateKey:@"↑" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
// //[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
// } else if ([command isEqualToString:@"Bottom"]) {
// [keyUtil simulateKey:@"↓" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
// //[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
// } else if ([command isEqualToString:@"Left & Right"]) {
// [keyUtil simulateKey:@"←" ShftDown:YES CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
// //[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
// } else if ([command isEqualToString:@"Right & Left"]) {
// [keyUtil simulateKey:@"→" ShftDown:YES CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
// //[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
// } else if ([command isEqualToString:@"Top & Bottom"]) {
// [keyUtil simulateKey:@"↑" ShftDown:YES CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
// //[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
// } else if ([command isEqualToString:@"Bottom & Top"]) {
// [keyUtil simulateKey:@"↓" ShftDown:YES CtrlDown:YES AltDown:NO CmdDown:NO FnDown:YES];
// //[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Next Tab"]) {
[keyUtil simulateKey:@"Tab" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO];
//[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"Tab" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:NO FnDown:NO];
//[keyUtil simulateKey:@"]" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Previous Tab"]) {
[keyUtil simulateKey:@"Tab" ShftDown:YES CtrlDown:YES AltDown:NO CmdDown:NO];
//[keyUtil simulateKey:@"[" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"Tab" ShftDown:YES CtrlDown:YES AltDown:NO CmdDown:NO FnDown:NO];
//[keyUtil simulateKey:@"[" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Open Link in New Tab"]) {
CGEventRef ourEvent = CGEventCreate(NULL);
CGPoint ourLoc = CGEventGetLocation(ourEvent);
Expand All @@ -710,31 +743,31 @@ static void doCommand(NSString *gesture, int device) {
if (device != CHARRECOGNITION)
tmpRef = activateWindowAtPosition(x, y);
if ([application isEqualToString:@"Terminal"]) {
[keyUtil simulateKey:@"F" ShftDown:NO CtrlDown:NO AltDown:YES CmdDown:YES];
[keyUtil simulateKey:@"F" ShftDown:NO CtrlDown:NO AltDown:YES CmdDown:YES FnDown:NO];
} else if ([application isEqualToString:@"Finder"]) {
} else {
[keyUtil simulateKey:@"F" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"F" ShftDown:NO CtrlDown:YES AltDown:NO CmdDown:YES FnDown:NO];
}
CFSafeRelease(tmpRef);
} else if ([command isEqualToString:@"Open Recently Closed Tab"]) {
if (![application isEqualToString:@"Safari"]) {
[keyUtil simulateKey:@"T" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"T" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else {
[keyUtil simulateKey:@"Z" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"Z" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
}
} else if ([command isEqualToString:@"Close / Close Tab"]) {
CFTypeRef tmpRef = nil;
if (device != CHARRECOGNITION)
tmpRef = activateWindowAtPosition(x, y);
[keyUtil simulateKey:@"W" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"W" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
CFSafeRelease(tmpRef);
} else if ([command isEqualToString:@"Quit"]) {
//if the user's using VMware/RDC, should we send cmd+q or alt+f4 ?
if (![application isEqualToString:@"Finder"]) {
CFTypeRef tmpRef = nil;
if (device != CHARRECOGNITION)
tmpRef = activateWindowAtPosition(x, y);
[keyUtil simulateKey:@"Q" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"Q" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
CFSafeRelease(tmpRef);
} else {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Expand All @@ -748,7 +781,7 @@ static void doCommand(NSString *gesture, int device) {
CFTypeRef tmpRef = nil;
if (device != CHARRECOGNITION)
tmpRef = activateWindowAtPosition(x, y);
[keyUtil simulateKey:@"H" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"H" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
CFSafeRelease(tmpRef);
} else if ([command isEqualToString:@"Minimize"]) {
CFTypeRef tmpRef = nil;
Expand Down Expand Up @@ -779,17 +812,17 @@ static void doCommand(NSString *gesture, int device) {
maximizeWindow(tmpRef, 3);
CFSafeRelease(tmpRef);
} else if ([command isEqualToString:@"Copy"]) {
[keyUtil simulateKey:@"C" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"C" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Paste"]) {
[keyUtil simulateKey:@"V" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"V" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"New"]) {
[keyUtil simulateKey:@"N" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"N" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"New Tab"]) {
[keyUtil simulateKey:@"T" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"T" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Open"]) {
[keyUtil simulateKey:@"O" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"O" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Save"]) {
[keyUtil simulateKey:@"S" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"S" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([command isEqualToString:@"Launch Finder"]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[[NSWorkspace sharedWorkspace] launchApplication:@"Finder"];
Expand Down Expand Up @@ -876,29 +909,29 @@ static void doCommand(NSString *gesture, int device) {
if (device != CHARRECOGNITION)
tmpRef = activateWindowAtPosition(x, y);
if ([application isEqualToString:@"Mail"]) {
[keyUtil simulateKey:@"N" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"N" ShftDown:YES CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
} else if ([application isEqualToString:@"Preview"] || [application isEqualToString:@"iChat"]) {
} else {
[keyUtil simulateKey:@"R" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"R" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
}
CFSafeRelease(tmpRef);
} else if ([command isEqualToString:@"Scroll to Top"]) {
CFTypeRef tmpRef = nil;
if (device != CHARRECOGNITION)
tmpRef = activateWindowAtPosition(x, y);
if ([application isEqualToString:@"Microsoft Word"])
[keyUtil simulateKey:@"Home" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"Home" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
else
[keyUtil simulateKey:@"Home" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:NO];
[keyUtil simulateKey:@"Home" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:NO FnDown:NO];
CFSafeRelease(tmpRef);
} else if ([command isEqualToString:@"Scroll to Bottom"]) {
CFTypeRef tmpRef = nil;
if (device != CHARRECOGNITION)
tmpRef = activateWindowAtPosition(x, y);
if ([application isEqualToString:@"Microsoft Word"])
[keyUtil simulateKey:@"End" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES];
[keyUtil simulateKey:@"End" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:YES FnDown:NO];
else
[keyUtil simulateKey:@"End" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:NO];
[keyUtil simulateKey:@"End" ShftDown:NO CtrlDown:NO AltDown:NO CmdDown:NO FnDown:NO];
CFSafeRelease(tmpRef);
} else if ([command isEqualToString:@"Application Switcher"]) {
CoreDockSendNotification(@"com.apple.appswitcher.awake");
Expand Down Expand Up @@ -964,7 +997,7 @@ static void doCommand(NSString *gesture, int device) {
ShftDown:(modifierFlags & kCGEventFlagMaskShift) != 0
CtrlDown:(modifierFlags & kCGEventFlagMaskControl) != 0
AltDown:(modifierFlags & kCGEventFlagMaskAlternate) != 0
CmdDown:(modifierFlags & kCGEventFlagMaskCommand) != 0];
CmdDown:(modifierFlags & kCGEventFlagMaskCommand) != 0 FnDown:NO];
CFSafeRelease(tmpRef);

}
Expand Down
4 changes: 2 additions & 2 deletions jitouch/Jitouch/KeyUtility.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
NSMutableDictionary *keyMap;
}

- (void)simulateKeyCode:(CGKeyCode)code ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl AltDown:(BOOL)alt CmdDown:(BOOL)cmd;
- (void)simulateKey:(NSString *)key ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl AltDown:(BOOL)alt CmdDown:(BOOL)cmd;
- (void)simulateKeyCode:(CGKeyCode)code ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl AltDown:(BOOL)alt CmdDown:(BOOL)cmd FnDown:(BOOL)fn;
- (void)simulateKey:(NSString *)key ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl AltDown:(BOOL)alt CmdDown:(BOOL)cmd FnDown:(BOOL)fn;
- (void)simulateSpecialKey:(int)key;
- (CGKeyCode)charToCode:(NSString*) chr;
+ (NSString *)codeToChar:(CGKeyCode)keyCode;
Expand Down
14 changes: 9 additions & 5 deletions jitouch/Jitouch/KeyUtility.m
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ - (id)init {
return self;
}

- (void)simulateKeyCode:(CGKeyCode)code ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl AltDown:(BOOL)alt CmdDown:(BOOL)cmd {
- (void)simulateKeyCode:(CGKeyCode)code ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl AltDown:(BOOL)alt CmdDown:(BOOL)cmd FnDown:(BOOL)fn {

if (shft)
CGPostKeyboardEvent((CGCharCode)0, (CGKeyCode)56, true);
Expand All @@ -62,7 +62,9 @@ - (void)simulateKeyCode:(CGKeyCode)code ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl
CGPostKeyboardEvent((CGCharCode)0, (CGKeyCode)58, true);
if (cmd)
CGPostKeyboardEvent((CGCharCode)0, (CGKeyCode)55, true);

if(fn)
CGPostKeyboardEvent((CGCharCode)0, (CGKeyCode)63, true);

CGPostKeyboardEvent((CGCharCode)0, a[code], true);
CGPostKeyboardEvent((CGCharCode)0, a[code], false);

Expand All @@ -74,12 +76,14 @@ - (void)simulateKeyCode:(CGKeyCode)code ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl
CGPostKeyboardEvent((CGCharCode)0, (CGKeyCode)58, false);
if (cmd)
CGPostKeyboardEvent((CGCharCode)0, (CGKeyCode)55, false);

if(fn)
CGPostKeyboardEvent((CGCharCode)0, (CGKeyCode)63, false);

}

- (void) simulateKey:(NSString *)key ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl AltDown:(BOOL)alt CmdDown:(BOOL)cmd {
- (void) simulateKey:(NSString *)key ShftDown:(BOOL)shft CtrlDown:(BOOL)ctrl AltDown:(BOOL)alt CmdDown:(BOOL)cmd FnDown:(BOOL)fn {
CGKeyCode km = [(NSNumber *)[keyMap objectForKey:key] unsignedIntValue];
[self simulateKeyCode:km ShftDown:shft CtrlDown:ctrl AltDown:alt CmdDown:cmd];
[self simulateKeyCode:km ShftDown:shft CtrlDown:ctrl AltDown:alt CmdDown:cmd FnDown:fn];
}

- (void)simulateSpecialKey:(int)key {
Expand Down
12 changes: 12 additions & 0 deletions prefpane/TrackpadTab.m
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,18 @@ - (void)loadActionButton {
@"Quit",
@"Hide",
@"---",
@"Fill",
@"Return to Previous Size",
@"Center",
// @"Left",
// @"Right",
// @"Top",
// @"Down",
// @"Left & Right",
// @"Right & Left",
// @"Top & Down",
// @"Down & Top",
// @"---",
@"Full Screen",
@"Minimize",
@"Zoom",
Expand Down