Keyboard translation PC / Mac
-
It seems that there is at least a big difference between the two platforms in this area. So I would be grateful to a Mac user to advise on the principle to find out keys codes returned by the onKeyDown method on Mac.
Pixero indicated to me the following codes on Mac
Command/"Apple" = 1048576
Alt/Option = 524288
Control = 262144
Arrow Left Key = 63234
Arrow Right Key = 63235
Arrow Up Key = 63232
Arrow Down Key = 63233
Shift Key = 131072But what about the regular alphabetic characters, the function keys, and the punctuation signs?
Ideally, someone having both platforms should be able to establish the correspondance, and possibility write a small utility routine to 'unify' the keys between the two systems (unless this already exists!). I can do it, if someone gives me the list.
Also, I'd like to know the rules for the value on Mac of the constant RUBY_PLATFORM, which apparently allows to detect which platform you run on. For Mac, I know at least the value 'powerpc-darwin'. However, what happens on more recent Macs, running on Intel and Leopard (I understand from an earlier post from Todd Burch, that there should anyway be the string 'darwin' in the constant).
I am sure this will be helpful to the Sketchup Community, to make sure that scripts released can fonction both on Mac and PC.
-
Several keys are already defined as constants. List all the constants belonging to the Object class like this:
Object.constants
(They should have been defined in the SketchUp module).
All the contants relating to the keyboard start with VK_.... (virtual key).
I have both platforms. I'll make a list.
Todd
-
Thanks very much in advance Todd.
On my Windows XP laptop, I have this:
On the platform
PLATFORM = i386-mswin32
RELEASE_DATE = 2003-08-04
RUBY_PLATFORM = i386-mswin32
RUBY_RELEASE_DATE = 2003-08-04
RUBY_VERSION = 1.8.0
VERSION = 1.8.0On the Keyboard
ALT_MODIFIER_KEY = 18
ALT_MODIFIER_MASK = 32
CONSTRAIN_MODIFIER_KEY = 16
CONSTRAIN_MODIFIER_MASK = 4
COPY_MODIFIER_KEY = 17
COPY_MODIFIER_MASK = 8VK_ALT = 18
VK_COMMAND = 18
VK_CONTROL = 17
VK_DELETE = 46
VK_DOWN = 40
VK_END = 35
VK_HOME = 36
VK_INSERT = 45
VK_LEFT = 37
VK_MENU = 18
VK_NEXT = 34
VK_PRIOR = 33
VK_RIGHT = 39
VK_SHIFT = 16
VK_SPACE = 32
VK_UP = 38On the Mouse control
MK_ALT = 32
MK_COMMAND = 0
MK_CONTROL = 8
MK_LBUTTON = 1
MK_MBUTTON = 16
MK_RBUTTON = 2
MK_SHIFT = 4Still no idea about the other keys on Mac, and the difference between the concept of CONSTRAIN_MODIFIER_MASK and CONSTRAIN_MODIFIER_KEY.
-
Hey Fred. If you want this fast, do this:
Write a script that prompts for all the keys on the keyboard to be entered, and I'll run it and send you the output. Otherwise, you get to wait for me to write this script to produce the report.
Note the some keys, like PAGE DOWN, don't produce scan codes in SketchUp, so don't prompt for those. And, a MAc as CONTROL, ALT and COMMAND, whereas PC do't have COMMAND. (the COMMAND key on a mac is generally used like CONTROL on a PC, and the CONTROL key on a Mac isn't used that much.
Check out the cheat sheet (Reference Card) for keyboard shortcuts to compare how keys are interchanged, so you can conform to that interface methodology.
Todd
-
Todd,
Thanks for the offer.
Here is the script KeysForMac.rb. It adds a menu item "Prompt for Mac keys" in the Plugins menu. When you invoke it, you will be notified on which key to type in the Status bar. The test takes less than 3 minutes.It normally generates a small text file KeysForMac.txt, which normally should end up in your folder equivalent on MAc to C:\Program Files\Google\Google SketchUp 6. Actually I just open the file with no directory reference, because this is another potentialproblem on Mac.
fname = "KeysforMac.txt" f = File.new fname, "w"
Talking about Directory and file paths on Mac, I have another problem with my method to find script files in the Plugins Directory. On Windows, I use the following statements:
BZ___DirSU = Sketchup.find_support_file ".", "." BZ___SearchDir = Dir["#{BZ___DirSU}/Plugins/BZ__*.rb"]
But it does not seem to work. Maybe you can find out what I should use instead on Mac.
Again many thanks for your proposal.
@unknownuser said:
Example of file generated (here on Windows XP)
http://www.sketchucation.com/forums/scf/sas/Ruby/KeysforMac.txtSmall macros for capturing keys.
To dropin Plugins folder
http://www.sketchucation.com/forums/scf/sas/Ruby/KeysforMac.rbFredo
-
how about using Sketchup.find_support_file "Plugins" and then File.join(Plugins_dir, filename) ?
-
@unknownuser said:
how about using Sketchup.find_support_file "Plugins" and then File.join(Plugins_dir, filename) ?
This works on Windows as well.
My problem is know whether this works on Mac, since I have no Mac and I have not even seen Sketchup running on a Mac!!Are you Mac User? If so,could you just cnfirm this works fine? Thanks in advance.
-
sometimes (have a Powerbook G4), but this is what I used in my TimeTrack plugin and it worked for Mac users.
-
Thanks.
For the time being, I will follow your advice (and also use File.join instead of building the string with / -
Here's my report. F12 is intercepted by the operating system, so don't plan on using that one. I simply pressed F6 instead twice (I ran the script twice - as I screwed it up the first time). Matter of fact, on the Mac, I would stay away from all the function keys completely.
Todd
http://www.sketchucation.com/forums/scf/sas/Ruby/KeysforMac2.txt
-
Thanks very much Todd.
There are strange things on the Mac, like the fact that several keys (alphas and numpad) do nt seem to be trapped on the KeyDown, but only on the KeyUp event. This is also the case for Tab, Del and Backspace. This may be due to the VCB interference.
I'll see what I can do.
Thanks again
Fredo
Advertisement