I wrote in serveral threads about keyboard related issues. However, it all boils down to the same thing:
Keyboard mapping is extremely important for efficient work, but what is a good mapping for a multi-OS-in-one-machine environment is highly user dependent. There's no way to do it right for everyone, the only real solution is to make it FULLY configurable on a per-VM basis.
Just adding "improvements" in every release like all the different AltGr mappings we had or now the "helpful" ASZXCV mapping without the choice not to use it means ongoing annoyance to those users who have trained to use their keyboard a certain way.
So again - this needs to be configurable. But instead of just complaining I'll outline how I think this could be done. The fantastic thing with Parallels is that they really listen to suggestions, and that precisely written down ideas have a good chance to find their way into the product. So I'll detail my thoughts (collected over the last few months of daily use of Parallels since the first beta) of how this should be implemented here - maybe it helps.
To base everything on, there should be a hardwired mapping as "pure" and "physical" as possible. This means that an Apple USB keyboard should behave exactly the same in a XP VM as if it was connected to a real XP machine. This is pretty much how it worked in the early betas (execpt that these did not distinguish the left and right shift/ctrl/alt/cmd keys).
Also by default, the VM should send ALL keystrokes to the guest, with the ONLY exception of the "release input" combination which of course must always be availabe - otherwise we'll be trapped in the VM. This means: NO shortcuts (like Apple-TAB, Apple-N, Apple-G etc.) should be intercepted by the VM by default.
These defaults give a completely separated VM operations. The forum shows that there are users who definitely want a XP VM act exactly as a real XP PC. They will be happy with this "hardwired" or "physical" base mapping.
Other users (including me) prefer various levels of seamlessness between host and guest OSes.
My suggestion is that each VM would have an editable list of "custom mappings". Basically, this would be a list with assignments like:
Code:
MacKey (Combination) = GuestKey or HostCommand
MacKey and GuestKey could be any key identifier (like A,B,X,C but also LeftShift, LeftApple, Fn, F1..F12, etc).
HostCommands would be what is in the Parallel's app's menus, like "New VM", "Open VM", "OS Window", "VM Configuration", "Customize". But not limited to those - ideally any Parallels Command should be available here (like "connect CD", "Coherence" etc. etc.). And a special HostCommand would be "Pass to MacOS".
With this, everything will get possible, and in a sytematic way.
To get Parallels release 1970 functionality, the custom mappings would be as follows:
Code:
MacKey (Combination) = GuestKey or HostCommand
-------------------- -----------------------
Apple TAB = Pass to MacOS
Apple Q = Quit Parallels Desktop
Apple N = New VM
etc. etc.
To add current 3094 beta's ASZXCV mapping:
Code:
Apple A = Ctrl A
Apple S = Ctrl S
Apple Z = Ctrl Z
Apple X = Ctrl X
Apple C = Ctrl C
Apple V = Ctrl V
Those (like me) who prefer to have the Apple key GENERALLY act as Ctrl could add instead:
Code:
LeftApple = LeftCtrl
LeftCtrl = LeftWindows
And those who want Alt act as AltGR:
But that's not all. For example I use Synergy on the Mac to control iTunes, and have assigned F11, F12, F13 to prev/next/pause. I would simply add
Code:
F11 = Pass to MacOS
F12 = Pass to MacOS
F13 = Pass to MacOS
This would make Parallels pass these keys to MacOS (and from there to Synergy), even if the VM has focus. Same for Exposé, Spotlight, Dashboard etc. keys. There are thousand valid reasons for and against having each of these features available while working in a VM, in any combination.
IMHO, with this generic approach, all keyboard mapping variants we've seen since Beta 1 could be configured, plus all requests for other mappings I've seen in the forum so far. The UI needed for it would be simple and straightforward. I created a simple mockup to give an idea how it could look:
![[IMG]](http://www.hardturm.ch/parallels_custom_keymap_mockup.png)
That panel should be a per-VM thing, at it should be accessible in the VM Editor and while the VM is running (like the "Coherence" panel in 3094).