diff -r -c iTerm/PTYSession.m iTerm.META/PTYSession.m *** iTerm/PTYSession.m Tue Jan 30 09:37:54 2007 --- iTerm.META/PTYSession.m Sat Oct 13 06:09:11 2007 *************** *** 540,545 **** --- 540,551 ---- send_strlen = [data length]; } } + else if ((modflag & NSCommandKeyMask) && (unicode != 0x60 && unicode != 0x6E && unicode != NSLeftArrowFunctionKey && unicode != NSRightArrowFunctionKey)) + { + send_str = (unsigned char*)strdup("\x1b "); + send_strlen = 2; + send_str[1] = (unsigned char)unicode; + } else if ((modflag & NSAlternateKeyMask) && ([self optionKey] != OPT_NORMAL)) { Only in iTerm.META: PTYSession.m.orig diff -r -c iTerm/iTermApplication.m iTerm.META/iTermApplication.m *** iTerm/iTermApplication.m Tue Nov 7 17:03:08 2006 --- iTerm.META/iTermApplication.m Sat Oct 13 06:09:12 2007 *************** *** 43,49 **** id aWindow; PseudoTerminal *currentTerminal; PTYSession *currentSession; ! if([anEvent type] == NSKeyDown) { --- 43,50 ---- id aWindow; PseudoTerminal *currentTerminal; PTYSession *currentSession; ! unichar unicode; ! NSString *keystr; if([anEvent type] == NSKeyDown) { *************** *** 56,62 **** currentTerminal = [[iTermController sharedInstance] currentTerminal]; currentSession = [currentTerminal currentSession]; ! if([currentSession hasKeyMappingForEvent: anEvent highPriority: YES]) [currentSession keyDown: anEvent]; else [super sendEvent: anEvent]; --- 57,67 ---- currentTerminal = [[iTermController sharedInstance] currentTerminal]; currentSession = [currentTerminal currentSession]; ! keystr = [anEvent characters]; ! ! unicode = [keystr length]>0?[keystr characterAtIndex:0]:0; ! ! if([currentSession hasKeyMappingForEvent: anEvent highPriority: YES] || (([anEvent modifierFlags] & NSCommandKeyMask) && (unicode != 0x60 && unicode != 0x6E && unicode != NSLeftArrowFunctionKey && unicode != NSRightArrowFunctionKey))) [currentSession keyDown: anEvent]; else [super sendEvent: anEvent];