an experiment in making a cocoa webkit browser manageable under X11

implement vi keys for scrolling

fix focus issue between browser and url bar

+36 -6
+3 -1
WKWindow.h
··· 2 2 #import <WebKit/WebFrame.h> 3 3 #import <WebKit/WebView.h> 4 4 5 - #import "WKWindow.h" 6 5 #import "X11Window.h" 6 + 7 + /* sorry for this */ 8 + #import <Carbon/../Frameworks/HIToolbox.framework/Headers/Events.h> 7 9 8 10 @interface WKWindow : NSWindow 9 11 {
+33 -2
WKWindow.m
··· 32 32 [browser setUIDelegate:self]; 33 33 [browser setResourceLoadDelegate:self]; 34 34 [browser setFrameLoadDelegate:self]; 35 + wframe = [browser mainFrame]; 35 36 [window.contentView addSubview:browser]; 36 37 37 38 urlField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 0, 0)]; ··· 49 50 [self setStatus:@""]; 50 51 [window.contentView addSubview:statusBar]; 51 52 52 - wframe = [browser mainFrame]; 53 - 53 + [window makeFirstResponder:browser]; 54 54 [window makeKeyAndOrderFront:window]; 55 55 56 56 return self; 57 57 } 58 58 59 + - (void)keyDown:(NSEvent *)event { 60 + int keyCode = -1; 61 + 62 + if ([event type] != NSKeyDown) 63 + return; 64 + 65 + /* vi keys */ 66 + if ([event modifierFlags] == 0 && [[event characters] isEqual: @"j"]) 67 + keyCode = kVK_DownArrow; 68 + else if ([event modifierFlags] == 0 && [[event characters] isEqual: @"k"]) 69 + keyCode = kVK_UpArrow; 70 + else if ([event modifierFlags] == 0 && [[event characters] isEqual: @"h"]) 71 + keyCode = kVK_LeftArrow; 72 + else if ([event modifierFlags] == 0 && [[event characters] isEqual: @"l"]) 73 + keyCode = kVK_RightArrow; 74 + 75 + if (keyCode > 0) 76 + [NSApp postEvent:[NSEvent 77 + keyEventWithType:NSKeyDown 78 + location:[NSEvent mouseLocation] 79 + modifierFlags:0 80 + timestamp:0 81 + windowNumber:[[NSApp mainWindow] windowNumber] 82 + context:nil 83 + characters:@"" 84 + charactersIgnoringModifiers:@"" 85 + isARepeat:NO 86 + keyCode:keyCode] atStart:NO]; 87 + } 88 + 59 89 /* return key pressed on urlField */ 60 90 - (void)loadURLFromTextField 61 91 { 62 92 [self loadURL:[urlField stringValue]]; 93 + [window makeFirstResponder:browser]; 63 94 } 64 95 65 96 - (void)loadURL:(NSString *)url
-3
X11Window.m
··· 5 5 #import <stdlib.h> 6 6 #import <stdio.h> 7 7 8 - /* sorry for this */ 9 - #import <Carbon/../Frameworks/HIToolbox.framework/Headers/Events.h> 10 - 11 8 #import "X11Window.h" 12 9 #import "WKWindow.h" 13 10