I have created a new project that distills out only the minimum code needed for this plugin to send a message to the active window.&nbsp; You can download it <a href="http://fowpas.net/ViMate.zip">here</a> (<a href="http://fowpas.net/ViMate.zip">
http://fowpas.net/ViMate.zip</a>).&nbsp; It of course does not work but I am hoping that someone may be able to tell me why.&nbsp; Here is the most relevant code.<br><br><br><br>@implementation ViPlugin<br>- (id)initWithPlugInController:(id &lt;TMPlugInController&gt;)aController
<br>{<br>&nbsp;&nbsp;&nbsp; NSLog( @&quot;we have lift off!&quot; );<br>&nbsp;&nbsp;&nbsp; [ViWindow poseAsClass:[NSWindow class]];<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; return [super init];<br>}<br>@end<br><br><br><br><br><br>@implementation ViWindow<br>- (void)sendEvent:(NSEvent *)theEvent
<br>{<br>&nbsp;&nbsp;&nbsp; if ( [theEvent type] == NSKeyDown ) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( [[theEvent charactersIgnoringModifiers] characterAtIndex: 0] == &#39;h&#39; ) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog( @&quot;we are trying to move left.&quot; );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[NSApplication sharedApplication] sendAction: @selector(moveLeft:) to: nil from: self];
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [super sendEvent:theEvent];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [super sendEvent:theEvent];<br>&nbsp;&nbsp;&nbsp; }<br>}<br>@end<br><br><br><br><br>thanks<br>kirt<br><br>