TweetFollow Us on Twitter

Jun 95 Tips
Volume Number:11
Issue Number:6
Column Tag:Tips & Tidbits

Tips & Tidbits

By Neil Ticktin, Editor-in-Chief with special thanks to Steve Sisak

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

TIP OF THE MONTH

GetKeys From Within MacsBug

There is a routine in the Macintosh toolbox called GetKeys. This routine is great for game programmers who want a reasonably fast way to read the keyboard, without using (slower) events. The problem for C and C++ programmers using this routine is that the KeyMap type is a Pascal packed array. Each bit of the packed array is designated to a certain key, the bit is set to 1 if the key is down, and set to zero if the key is up. This array takes up 16 bytes (128 bits). C cannot access the elements of the packed array like a normal array, so the programmer has to mask out some bits to get the result that he/she wants. There is a desk accessory named “GetKeys,” that is made just for this case. The problem is, you might not be on a machine with that program on it.

Good thing MacsBug is able to help us. Here is how you locate the bit for the letter “M”: go into MacsBug and type in “dm KeyMap”, but don’t hit return just yet. Now strike the escape key, this should swap the screen. Press and hold down the letter “M” on your keyboard, this should swap the screen back. Now, while still holding down “M”, press return. This is what you should see:

Displaying memory from 0174:

  00000174  0000 0000 0040 0000  0000 0000 0000 0000       •••••@••••••••••

The number “00000174” is the address of the KeyMap global variable. The next set of numbers “0000 0000” is the first element of the C version of the array, in other words it’s: “keyMap[0]”. The next set of numbers “0040 0000” is the second element of the array, keyMap[1]. The next group of 8 hexadecimal digits is the third element (keyMap[2]), and the last group of 8 hexadecimal digits is the fourth element (keyMap[3]). The series of bullets is what the array looks like in ASCII form. In the second group (“0040 0000”) there is a 4 in the midst of all of those zeros. This is the bit that is set to 1 whenever the “M” key is held down. So, to see if the “M” is down from within C we will do this:

 KeyMap keyMap;
 GetKeys( keyMap );

 if( keyMap[1] & 0x00400000 )
 {  DoMKeyDown();
 }

That’s all there is to it!

Macneil Shonle, Yarmouth Maine
MacneilS@aol.com

Almost, But Not Quite

In his tip (MacTech, March 1995 issue, page 67), Jeff Beeghly assumes items #1 and #2 to be respectively the default and the cancel items. That is not always true: in fact these may even change between subsequent calls to the same dialog/alert if the programmer used “SetDialogDefaultItem” and “SetDialogCancelItem” before calling ModalDialog or set the “ALRT stage info” in ResEdit for the alert box. The safest way to find the default item is to look at the “aDefItem” field of the DialogRecord that is passed to the the custom modal filter procedure.

Moreover, I think it is best to let the original filter procedure track standard events we’re not interested in, by calling it via “StdFilterProc” from our custom filter proc and then returning its return value to the application.

- Luigi Belverato

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

Combo Quest (Games)
Combo Quest 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: Combo Quest is an epic, time tap role-playing adventure. In this unique masterpiece, you are a knight on a heroic quest to retrieve... | Read more »
Hero Emblems (Games)
Hero Emblems 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: ** 25% OFF for a limited time to celebrate the release ** ** Note for iPhone 6 user: If it doesn't run fullscreen on your device... | Read more »
Puzzle Blitz (Games)
Puzzle Blitz 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Puzzle Blitz is a frantic puzzle solving race against the clock! Solve as many puzzles as you can, before time runs out! You have... | Read more »
Sky Patrol (Games)
Sky Patrol 1.0.1 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0.1 (iTunes) Description: 'Strategic Twist On The Classic Shooter Genre' - Indie Game Mag... | Read more »
The Princess Bride - The Official Game...
The Princess Bride - The Official Game 1.1 Device: iOS Universal Category: Games Price: $3.99, Version: 1.1 (iTunes) Description: An epic game based on the beloved classic movie? Inconceivable! Play the world of The Princess Bride... | Read more »
Frozen Synapse (Games)
Frozen Synapse 1.0 Device: iOS iPhone Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Frozen Synapse is a multi-award-winning tactical game. (Full cross-play with desktop and tablet versions) 9/10 Edge 9/10 Eurogamer... | Read more »
Space Marshals (Games)
Space Marshals 1.0.1 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.1 (iTunes) Description: ### IMPORTANT ### Please note that iPhone 4 is not supported. Space Marshals is a Sci-fi Wild West adventure taking place... | Read more »
Battle Slimes (Games)
Battle Slimes 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: BATTLE SLIMES is a fun local multiplayer game. Control speedy & bouncy slime blobs as you compete with friends and family.... | Read more »
Spectrum - 3D Avenue (Games)
Spectrum - 3D Avenue 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: "Spectrum is a pretty cool take on twitchy/reaction-based gameplay with enough complexity and style to stand out from the... | Read more »
Drop Wizard (Games)
Drop Wizard 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Bring back the joy of arcade games! Drop Wizard is an action arcade game where you play as Teo, a wizard on a quest to save his... | Read more »

Price Scanner via MacPrices.net

Apple’s M4 Mac minis on sale for record-low p...
B&H Photo has M4 and M4 Pro Mac minis in stock and on sale right now for up to $150 off Apple’s MSRP, each including free 1-2 day shipping to most US addresses. Prices start at only $469: – M4... Read more
Deal Alert! Mac Studio with M4 Max CPU on sal...
B&H Photo has the standard-configuration Mac Studio model with Apple’s M4 Max CPU in stock today and on sale for $300 off MSRP, now $1699 (10-Core CPU and 32GB RAM/512GB SSD). B&H also... Read more

Jobs Board

All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.