Home | Tips | Library | Other Authors | Other WP Sites | Writer's Links | Contact | Site Map | Donate

Barry MacDonnell's
Toolbox for WordPerfect

Macros, tips, and templates for Corel® WordPerfect® for Windows®
© Copyright 1996-2017 by Barry MacDonnell. All Rights Reserved.

Page updated June 6, 2008

WordPerfect Tips
Main tips page | Browse tips
Make a key do "double duty" by assigning a macro to it, and make the macro play only if the key is struck multiple times (e.g., 2x, 4x, etc.)

Here are macros that can

  • create a special graphic line with a few taps of the equals (=) key
  • automatically enter a hard return and simultaneous save the document
  • delete multiple spaces at the cursor location and replace them with a tab
  • automatically expand QuickCorrect abbreviations to create possessives

NOTE

To copy the macro code below into WordPerfect, select the text from beginning to end and copy (Ctrl+C) it to the Windows clipboard.

Open a blank document in WordPerfect and click on Tools, Macro, Macro Toolbar.

Position your cursor after any codes in Reveal Codes, and click on Edit, Paste Special, Unformatted Text to paste the macro code into the WP document without any extraneous formatting or other unwanted codes.

Check the pasted text for long lines that may have wrapped into two or more lines with a hard return [HRt] or line break [Ln Brk] between them; remove the hard return(s) or line break(s) to "glue" the lines back together.

Save the pasted material with the Save & Compile button on the Macro Toolbar. This will save the macro to your default macros folder as shown in Tools, Settings, Files, Merge/Macro.

TIP 1

A user on a Corel newsgroup asked:

"In [Microsoft] Word, there's a feature that lets you type, say, === and then hit enter, and it automatically becomes a double line across the page. Doing that with ### creates a triple line, with the line in the center thicker that the ones on the outside. Is there a similar feature in WordPerfect ...?"

My answer:

Yes, if you use four hyphens ("----") or equal signs ("====") at the beginning of a line. There is a setting in WP and it must be toggled on: Tools, Quick Correct, Format-as-you-go, Quicklines.

However .... If you want a different graphic line than the single- and double-line defaults that WP provides, this can be done with a macro assigned to the particular key (say, the "=" key). For example, the following macro will insert a full-width triple line (the center line being thicker) if you assign it to the "=" key, and then type four consecutive equal signs (on a blank line) in your document. Please read the notes following the macro code.

// Beginning of macro code -
Application(A1;"WordPerfect";Default)
vCount:=0
// If the character to the left is an equal sign (i.e., ASCII 61) -
IF(CTON(?LeftChar)=61)
  Type("=")
  While(CTON(?LeftChar)=61)
    PosCharPrevious()
    vCount:=vCount+1
  Endwhile
  ForNext(x;1;vCount;1)
    PosCharNext()
  EndFor
  If(vCount=4)
    ForNext(x;1;vCount;1)
      DeleteCharPrevious()
    EndFor
    // Note: The next 3 Graphics... lines were recorded (Insert, Shape, Custom Line, etc.);
    // delete them and re-record them to use a different line style -
    GraphicsLineCreate ()
    GraphicsLineStyle (Style: "Triple 1")
    GraphicsLineEnd (State: Save!)
    HardReturn()
  Endif
ELSE
  Type("=")
ENDIF
Quit
// End of macro code
 

Operation:

When the macro is assigned to the normal "=" key, pressing that key the first time makes the "Else" condition true, and the macro inserts a normal equal sign. Pressing that key again makes the "If" condition true, and (if there are four equal signs to the left) the macro counts and deletes all equal signs up to the cursor, and inserts a graphical line in their place.

Assign this macro to the "=" key:

Click on Tools, Settings, Customize, Keyboards tab. Select the keyboard you want to modify. (Or click Copy to make a copy of it first: In the Copy Keyboard window, select the keyboard to copy, click Copy, and "Rename the object" with a new name, then click OK. Left-click the new keyboard's name and click Select to use it.) Next, in the Customize Settings window, click Edit to edit the keyboard definition. Check the box at the bottom, "Allow assignment of character keys". In the left window, scroll down to the "=" key and select it, then click Remove Assignment if there is any current assignment (say, some other macro or feature). In the right-hand window, click the Macros tab and then Assign Macro to Key. Select the macro from the file directory, and click OK, then Close until you are back in your document.

Modification:

You can have the "#" key (or any other unassigned key) perform this function by changing "61" to "35" in the two relevant lines above. Then assign the macro to the "#" key. (Note: I used an old ASCII chart to get these numbers. There are lots of places to get this chart; for example - http://www.ascii.cl/ and http://www.asciitable.com/)

TIP 2

You could assign a macro to a key that does something other than insert a graphical line. For example, you could use the backslash key ("\") -- just above the <Enter> key -- to enter a hard return and save the file at the same time. Here's a macro to do it (also included in MultiSav.zip). After adding it to your macros folder, assign it to the bakslash key in the same way as explained in the paragraphs above.

// - - - Macro code begins here - - -
// Assign this macro to the "\" key. Then pressing backslash twice cause the macro to delete the backslashes, then enter a hard return and save the file.
// To make the macro work with 3 consecutive backslashes, change the If(vCount=2) to If(vCount=3).

Application(A1;"WordPerfect";Default)
OnCancel(End@)
vCount:=0
Type("\")

// If the character to the left is a backslash (i.e., ASCII 92) -
IF(CTON(?LeftChar)=92)

// Go backwards and count number of backslashes
While(CTON(?LeftChar)=92)
  PosCharPrevious()
  vCount:=vCount+1
Endwhile

// Return to original position
ForNext(x;1;vCount;1)
  PosCharNext()
EndFor

If(vCount=2)
ForNext(x;1;vCount;1)
  DeleteCharPrevious()
EndFor
HardReturn()
FileSave()
Endif

ENDIF
Label(End@)
Quit
// - - - Macro code ends here - - -

TIP 3

Click here for a macro that uses the ` key (next to the "1" key) to play a macro when the ` keys is pressed twice in succession. This "double-strike" macro example deletes multiple spaces at the cursor location and then inserts a Tab.

TIP 4

Automatically expand QuickCorrect abbreviations to create possessives by "double-tapping" the single quote mark key ('). For example, if you have a QuickCorrect entry "pf" that expands to "plaintiff" when you press the spacebar, you can make it expand to "plaintiff's" with this technique. Here's how.

When the macro below is assigned to the normal single quote key (see more, below), pressing the single quote key the first time makes the macro's "Else" condition true (i.e., there's no single quote on the left), and the macro simply inserts a single, straight (non-typographical) quote mark at the cursor location.

Pressing the single quote key once more makes the "If" condition true (i.e., there now is a single quote on the left of the cursor). The macro then immediately types a space, then deletes the space. A space character enables QuickCorrect entries to expand. You can then type an "s" to created the possessive of the previous (now expanded) word.

Notes

If QuickCorrect is turned OFF (Tools, QuickCorrect, Replace words as you type), the macro will pop up a message.

The typographical version of the single quote (the symbol (4,28), which has the numerical value of 1052) used below is the same one normally used in QuickCorrect's SmartQuotes tab. If you use a different SmartQuote for the single quote mark, you need to change the command below to match it. (Most users will not need to do this.)

// Macro code begins

// Check if the item to the left is a single quote text character,
// or if it is a WP symbol (a typographical quote mark
// (symbol=4,28)):


If(CToN(?LeftChar)=39 or CToN(?LeftChar)=1052)


If(?QuickCorrect=False) // Display a message -


       DeleteCharPrevious // Delete the quote mark

        // The Messagebox() command should be all on one line:
       Messagebox (;"DoubleTap.wcm"; "QuickCorrect is currently OFF."
       +NToC(0F90Ah)+NToC(0F90Ah)+ "Turn it ON to expand QuickCorrect
       entries with" +NToC(0F90Ah)+ "Tools, QuickCorrect,
       'Expand words as you type.'" ; IconInformation!)


       Go(End@)


Endif


Type(" ") // <= Space character
 DeleteCharPrevious


Else
    Type("'") // <= Straight, single quote between double quotes
Endif


Label(End@)

// Macro code ends

Assign this macro to the single quote key

Click Tools, Settings, Customize, Keyboards tab. Select the keyboard you want to modify. (Or click Copy to make a copy of it first: In the Copy Keyboard window, select the keyboard to copy, click Copy, and “Rename the object” with a new name, then click OK. Left-click the new keyboard’s name and click Select to use it.) Next, in the Customize Settings window, click Edit to edit the keyboard definition. Check the box "Allow assignment of character keys".

In the left window, scroll down to the single quote (it's just after the ampersand, "&") and select it, then click Remove Assignment if there already is an assignment. In the right-hand window, click the Macros tab and then Assign Macro to Key. Select the macro from the file directory, and click OK, then Close until you are back in your document.

You might also want to assign the single quote keystroke to, for example, the '+Alt keys. In the event you need a single quote and the macro is not available (such as when editing a macro), this "backup" assignment might come in handy.