applidium/Vim

2 finger tap is easier than blackslash for input esc

Closed this issue · 1 comments

To input blackslash in iOS, we need switch to symbol keyboard by two click, not a good idea. Personally, I prefer to using two finger tap gesture as an alternative.

I have forked it as https://github.com/pinxue/Vim .

git diff is:

diff --git a/src/gui_ios.m b/src/gui_ios.m
index ecd1f11..10b5e7a 100644
--- a/src/gui_ios.m
+++ b/src/gui_ios.m
@@ -128,7 +128,13 @@ enum blink_state {

  • (void)viewDidLoad {
    [super viewDidLoad];
  • UITapGestureRecognizer * tap2fGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click2f:)];
  • tap2fGestureRecognizer.numberOfTouchesRequired = 2;
  • [_textView addGestureRecognizer:tap2fGestureRecognizer];
  • [tap2fGestureRecognizer release];
  • UITapGestureRecognizer * tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click:)];
  • tapGestureRecognizer.numberOfTouchesRequired = 1;
    [_textView addGestureRecognizer:tapGestureRecognizer];
    [tapGestureRecognizer release];

@@ -199,6 +205,13 @@ enum blink_state {
gui_send_mouse_event(MOUSE_LEFT, clickLocation.x, clickLocation.y, 1, 0);
}

+- (void)click2f:(UITapGestureRecognizer *)sender {

  • [self becomeFirstResponder];
  • // send ESC
  • char escapeString[] = {ESC, 0};
  • [self insertText:[NSString stringWithUTF8String:escapeString]];
    +}
  • (void)pan:(UIPanGestureRecognizer *)sender {
    CGPoint clickLocation = [sender locationInView:sender.view];
Ecco commented

Thanks for the patch @pinxue ! However I won't pull this in, as it isn't user-customizable. Sure backslash isn't the best solution. But at least it's something users can change without rebuilding Vim.

In that case, I think the proper fix would be to solve issue #3 by adding gestures as mappable objects.

Thanks a lot for your time though !