--- NSResponder.m Tue Aug 21 19:22:51 2001 +++ ../../../core/gui/Source/NSResponder.m Thu Dec 13 10:47:01 2001 @@ -140,22 +140,41 @@ [self doCommandBySelector: @selector(moveDown:)]; break; case NSLeftArrowFunctionKey: - [self doCommandBySelector: @selector(moveLeft:)]; + if ([theEvent modifierFlags] & NSAlternateKeyMask) + [self doCommandBySelector: @selector(moveWordBackward:)]; + else if ([theEvent modifierFlags] & NSControlKeyMask & NSShiftKeyMask) + [self doCommandBySelector: @selector(selectLine:)]; + else if ([theEvent modifierFlags] & NSControlKeyMask) + [self doCommandBySelector: @selector(moveToBeginningOfLine:)]; + else + [self doCommandBySelector: @selector(moveLeft:)]; break; case NSRightArrowFunctionKey: - [self doCommandBySelector: @selector(moveRight:)]; + if ([theEvent modifierFlags] & NSAlternateKeyMask) + [self doCommandBySelector: @selector(moveWordForward:)]; + else if ([theEvent modifierFlags] & NSControlKeyMask & NSShiftKeyMask) + [self doCommandBySelector: @selector(selectLine:)]; + else if ([theEvent modifierFlags] & NSControlKeyMask) + [self doCommandBySelector: @selector(moveToEndOfLine:)]; + else + [self doCommandBySelector: @selector(moveRight:)]; break; case NSDeleteFunctionKey: [self doCommandBySelector: @selector(deleteForward:)]; break; case NSHomeFunctionKey: - [self doCommandBySelector: @selector(moveToBeginningOfDocument:)]; + if ([theEvent modifierFlags] & NSShiftKeyMask) + [self doCommandBySelector: @selector(selectAll:)]; + else + [self doCommandBySelector: @selector(moveToBeginningOfDocument:)]; break; case NSBeginFunctionKey: - [self doCommandBySelector: @selector(moveToBeginningOfLine:)]; break; case NSEndFunctionKey: - [self doCommandBySelector: @selector(moveToEndOfLine:)]; + if ([theEvent modifierFlags] & NSShiftKeyMask) + [self doCommandBySelector: @selector(selectAll:)]; + else + [self doCommandBySelector: @selector(moveToEndOfDocument:)]; break; case NSPageUpFunctionKey: [self doCommandBySelector: @selector(pageUp:)];