RAD Studio/AppMethod keystrokes vs VMWare Fusion Unity View

I had a question from a new AppMethod user recently about dealing with keystroke clashes between the IDE and OSX.

F12, for example, in the default IDE key mappings toggles between the code editor and the form designer, while F12 in OSX shows the Dashboard. F11 is another problem, clashing with the OSX Show Desktop command.

If you are running Fusion in either Single Window View or Full Screen View, this is pretty easily fixed. Go into Virtual Machine | Settings | Keyboard and Mouse, add a new profile (I called mine RAD Studio Profile) then Edit it. On the Mac Host Shortcuts tab, uncheck the Enable Mac OS Host Keyboard Shortcuts checkbox and you’re good to go.

Editing the Mouse and Keyboard profile under VMWare Fusion

 

I did this as a profile as I have lots of VMs containing RAD Studio and AppMethod. Older versions, betas of the next version, etc. For each of these I can simply select the RAD Studio profile and I’m good to go.

However, Unity View is a problem. If you’re not aware, Unity View makes any application you are running in the VM appear as a standalone application in OSX. It basically hides the rest of Windows from you, and just shows your Windows apps as if they were OSX apps.

This makes for a much more pleasant experience in most cases, but unfortunately the trick above won’t work. The OSX Keyboard Shortcuts always apply under Unity View.

You could of course change your IDE Key Mappings, but I’d have too many years of muscle memory to relearn if I did that.

Editing the OSX keyboard shortcuts

The option I went for in the end was to change the OSX Keyboard Shortcuts. If you go into System Preferences | Keyboard | Shortcuts, then select Mission Control, you’ll see the two shortcuts in question a few lines down. Select one, then click on the actual keystroke (eg. F11 on the right hand side) and it should become editable. I didn’t want to change it dramatically, so I changed it from F11 to ⌘F11 (and the same with F12).

Of course, if you don’t use that keyboard shortcut in OSX, you can just turn them off by unchecking the checkbox next to the name.

Update: Also note the comment down the bottom of the page about using the Fn key to change OSX’s use of F1-12.

Lastly, be aware that some of the commands listed as being Ctrl-something, like say Ctrl-Up Arrow, also respond to the Ctrl-Shift-Up Arrow combination (but in a weird, slow motion kind of way). So things like Mission Control and Application Windows will also need to be edited, even though they don’t look like it.

 

IDE Running in Unity View in Fusion on OSX

 

It can take a little while until you catch all your frequently used IDE keystrokes that clash. Here’s a list of the ones I’ve struck so far. If you come across others, let me know and I’ll update it.

  • F11 – clashes with Show Desktop
  • F12 – clashes with ShowDashboard
  • Ctrl-Shift-Space – clashes with Show\Hide Trackpad Handwriting
  • Ctrl-Up Arrow – clashes with Mission Control
  • Ctrl-Down Arrow – clashes with Show Desktop
  • Ctrl-Left and Right Arrows – clashes with Move Left/Right a Space

 

2 Comments

  • If you want for any of F1 to F12 keys on Mac OS X to work as function keys as on Windows you simply use combination of FN + Function Key.

    Now if you prefer of using F1 to F2 keys as function keys you can simply change their default behavior in Keyboard settings under Keyboard tab by enabling “Use all F1, F2, etc. keys as standard function keys.”

    http://support.apple.com/en-us/ht3399

    After enabling this option you need to use combination of Fn+Function key to get special Mac OS X function attackeh to them.

    • Oh, good point. I did that so long ago I forgot it wasn’t the default. I’ll update the article to point to your comment.

      Cheers
      Malcolm

Join the Discussion

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">