rzyns / macvim

Automatically exported from code.google.com/p/macvim
0 stars 0 forks source link

CTRL modifier doesn't work with keyboard layout NEO #308

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?

Pressing any key combination that involves CTRL (e.g. CTRL+F)

What is the expected output? What do you see instead?

I get a default Mac OS error beep instead of the desired action.

What version of MacVim and OS X are you using (see "MacVim->About MacVim"
and  "Apple Menu->About This Mac" menu items, e.g. "Snapshot 40, 10.5.6
Intel")?

Version 7.3 (53)
Tried Snapshot 55 as well.

Please provide any additional information below.

I'm using a keyboard layout called Neo (http://www.neo-layout.org/).

As I've read issue 268 I've tried regenerating the layout with the latest 
Ukulele version (didn't rebuild from scratch though) but that didn't help 
either. I also followed the troubleshooting guide without success.

Let me know if there's anything I can do to help. Thank you.

Original issue reported on code.google.com by lars.fra...@gmail.com on 19 Dec 2010 at 3:44

GoogleCodeExporter commented 9 years ago
In all likelihood the keyboard layout does something strange when generating 
Ctrl-key combinations.

You can see what key sequences MacVim sees by enabling debug logging as 
explained here:

https://github.com/b4winckler/macvim/wiki/Debugging

I suggest you compare the logs using your keyboard layout and a standard US 
layout -- that should give you an idea on what is different.

Sorry, I don't have time to look into this myself at the moment.

Original comment by bjorn.winckler@gmail.com on 19 Dec 2010 at 4:27

GoogleCodeExporter commented 9 years ago
> In all likelihood the keyboard layout does something strange when generating 
Ctrl-key combinations.

Yes. It apparently uses it as another layer to get different keys. CTRL+F is 
mapped to Phi (http://en.wikipedia.org/wiki/Phi#Computing) - Unicode Character 
03A6

Thank you for the debugging hint. Here is a comparison of Neo vs. US. I've 
extracted the relevant lines (or which I believe to be relevant):

Neo: -[MMTextViewHelper keyDown:]@127: NSEvent: type=KeyDown loc=(0,777) 
time=364109.2 flags=0x40101 win=0x0 winNum=1295 ctxt=0x0 chars="^F" 
unmodchars="f" repeat=0 keyCode=31
US:  -[MMTextViewHelper keyDown:]@127: NSEvent: type=KeyDown loc=(0,777) 
time=364083.4 flags=0x40101 win=0x0 winNum=1294 ctxt=0x0 chars="^F" 
unmodchars="f" repeat=0 keyCode=3

Neo: -[MMBackend(Private) doKeyDown:keyCode:modifiers:]@2080: key='Φ' code=0 
mods=0 length=1
US:  -[MMBackend(Private) doKeyDown:keyCode:modifiers:]@2080: key='^F' code=0x3 
mods=0x4 length=1

Neo: -[MMBackend(Private) doKeyDown:keyCode:modifiers:]@2129: add byte [0/2]: 
0xce
Neo: -[MMBackend(Private) doKeyDown:keyCode:modifiers:]@2129: add byte [1/2]: 
0xa6
US:  -[MMBackend(Private) doKeyDown:keyCode:modifiers:]@2129: add byte [0/1]: 
0x6

In the keyDown Event they both get "^F" but that's later evaluated to Phi by 
MacVim. I guess this might in theory be the correct behavior. What's strange is 
that no other program so far works this way. CTRL works as usual in other tools 
(like for example the non GUI Vim). I can't even get the Phi character to print 
anywhere.

I think I'll try to generate a keylayout file without those mappings as I never 
use them anyway.

> Sorry, I don't have time to look into this myself at the moment.

No need to apologize! I appreciate every hint and everything else you're doing 
for MacVim and this seems to have helped already. I'll report back.

Original comment by lars.fra...@gmail.com on 19 Dec 2010 at 5:13

GoogleCodeExporter commented 9 years ago
It looks like the NEO layout is sending the wrong keyCode (it sends "31" when 
it should be "3").  If you can somehow change this in your layout you should be 
fine.

Original comment by bjorn.winckler@gmail.com on 19 Dec 2010 at 5:58

GoogleCodeExporter commented 9 years ago

Original comment by bjorn.winckler@gmail.com on 31 Dec 2010 at 1:45

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Same problem here with Svorak. The layout sends keycode 16 (Y-key on Qwerty) 
which is mapped to F. Now I don't understand why normal navigation works (hjkl) 
with this mapping, it's sending the 'wrong' keycode too.

Seems to be an important issue for MacVim.

Original comment by hajderr@gmail.com on 17 Jun 2012 at 1:16

GoogleCodeExporter commented 9 years ago
Almost all of the problems with keyboard layouts that I've come across have 
been due to the keyboard layout sending unexpected key codes.  Unfortunately, 
it would untenable for me to accommodate all different layouts in MacVim so 
instead I ask people who use custom layouts to make changes to their layouts.  
In order to do so you will have to edit the layout so that it sends the same 
events as e.g. the US layout when it comes to special codes like CTRL-keys 
(which is what it should do in the first place).

Original comment by bjorn.winckler@gmail.com on 17 Jun 2012 at 2:48

GoogleCodeExporter commented 9 years ago
Well it works in terminal vim. What could be the difference?

في 17 jun 2012، الساعة 16:49، كتب macvim@googlecode.com:

Original comment by hajderr@gmail.com on 17 Jun 2012 at 7:27