Difference between revisions of "KeyMacs plugin"

From Code::Blocks
(Removing all content from page)
Line 1: Line 1:
−
[[Category:Code::Blocks Contrib Plugins]]
 
−
{{Infobox_Plugin|
 
−
  name = KeyMacs |
 
−
  logo = [[Image:KeyMacIco.png]] |
 
−
  developer = [[User:Pecan|Pecan]] |
 
−
  maintainer = Pecan |
 
−
  version = 0.3.0
 
−
}}
 
  
−
'''KeyMacs''' (or '''Keyboard Macros''') plugin enables Recording, Playback, and editing of keystroke macros.
 
−
 
−
 
−
 
−
====What is KeyMacs====
 
−
----------------
 
−
KeyMacs is a Code::Blocks plugin providing the user an ability to group sequences of keystokes as a macro (KeyMac). The KeyMac can be executed by either the main Plugin menu, a menu command key, or the context menu.
 
−
 
−
The KeyMac "{END}{ENTER}//{TAB 2}", for example, will move the cursor to the end of the current line, start a new line, enter the C++ comment sequence and two tabs.
 
−
 
−
KeyMacs can be created in the KeyMac editor or by way of the "Record Macro" menu. The editor can be accessed via MainMenu => Plugins => KeyMacs => EditMacros.
 
−
 
−
[[Image:KeyMacs102.PNG]]
 
−
 
−
Within the editor, click the New button. A new empty "Untitled" macro is created. Click on "Untitled" and rename it, for example, MyMac. Hit enter to confirm the rename.
 
−
 
−
    {END}{ENTER}//{TAB 2}
 
−
 
−
Enter the above keymac into the right hand text window . Click within the "Menued Macro" check box to cause KeyMacs to add MyMac as an entry on the Pugins=>KeyMacs=>submenu and the CodeBlocks editor context menu.
 
−
 
−
[[Image:KeyMacs103.PNG]]
 
−
 
−
Within the Command Key edit box, enter the keystrokes "Ctrl-Alt-M". This is
 
−
the command (hot) keys that will be placed on the menu entry for MyMac. This
 
−
key sequence should be unique, not conficting with any other menu command key sequence
 
−
used in the Code::Blocks menu system.
 
−
 
−
Click on OK to accept the KeyMac definition.
 
−
 
−
You will now see a MyMac menu entry at the bottom of the Menu=>Plugins=>KeyMacs
 
−
menu panel with the command keys Ctrl-Alt-M.
 
−
 
−
Either clicking on the MyMac menu item, invoking it with the command keys,
 
−
or choosing it from the KeyMacros context menu should produce "//" followed by two tabs
 
−
as a new comment line in your edit window.
 
−
 
−
KeyMacs without command keys can still be "menued", and be invoked by clicking on them from either the main or context menu.
 
−
 
−
====Recording and playback====
 
−
----------------------
 
−
KeyMac contain a "Record Macro" facility that stores each keystroke for
 
−
later use by the "Play Macro" menu item.
 
−
 
−
Once recorded, stopped or played back, the keystrokes are stored in the KeyMacs
 
−
Editor by the label "Scratch".
 
−
 
−
The Scratch macro is over written on each record, stop, or playback. If you wish to save
 
−
it, you must use the KeyMacs editor to rename "Scratch" to some other label.
 
−
 
−
Recorded keymacs should be edited for accuracy. They may contain suprious,
 
−
unwanted keystrokes. A '{' brace recorded in a macro, for example, cannot be
 
−
played back accurately as a character until it's surrounded by escape braces "{{}".
 
−
 
−
"!", "^", "+", cannot be played back as characters until they too are
 
−
surrounded by braces; else they play back as the Alt, Ctrl, and Shift
 
−
prefix modifiers for any key that follows them.
 
−
Eg., "^c" is not the characters '^' and
 
−
'c', but the copy operation Ctrl-C. The character sequence must appear as
 
−
"{^}c".
 
−
 
−
KeyMacs attempts to determine the intent of the user by surrounding single character occurances of these chars with escape braces, but it's not always correct.
 
−
 
−
If, during recording, the window focus leaves the editor, KeyMacs cannot see and record user key presses. They can, however, be re-entered into the macro via the KeyMacs editor.
 
−
 
−
====Named Key Symbols====
 
−
-----------------
 
−
At the bottom of the KeyMacs editor is a list of key symbols (KeySyms) which
 
−
represent functions performed for the user by KeyMacs. For example, {ENTER}
 
−
emulates the user depressing then releasing the Enter key.
 
−
 
−
Other KeySyms, like {ALTDOWN}, depress the keys but do not release them
 
−
until an opposite KeySym, like {ALTUP}, appears in the key macro stream.
 
−
These "paired" KeySyms can cause havoc if not entered as matching pairs.
 
−
 
−
Eg., {CTRLDOWN}{RIGHT}{RIGHT}{CTRLUP} moves two words to the right.
 
−
 
−
KeySyms which cause movement may contain a numeric parameter. Eg, {RIGHT 4}
 
−
will move the cursor 4 positions to the right.
 
−
 
−
    {WAIT 5} will pause for 5 milliseconds.
 
−
    {ASC 0191} will enter the char represented by ascii 191 into the editor.
 
−
    {ENTER 2} will create two new lines
 
−
    {UP}{DOWN}{RIGHT}{LEFT} are others.
 
−
   
 
−
 
−
 
−
====Special keys====
 
−
------------
 
−
!, ^, +, represent the keystrokes Alt, Ctrl, and Shift respectively.
 
−
They provide a modifier for the character key that follows it. When KeyMacs
 
−
sees a "!c", it interprets it as an Alt-c; a "+v" as a Shift-v; a "^t" as a
 
−
Ctrl-t. KeyMacs depresses the modifier key, depresses the char key, releases
 
−
the char key, then releases the modifier key.
 
−
 
−
The brace set '{' and  '}' are used to delineate special KeySyms. To use them as
 
−
characters in a macro, they must be surrounded by braces themselves. IE.,
 
−
{{} and {}} correctly represent the left and right brace as characters.
 
−
 
−
 
−
====Quirks & restrictions.====
 
−
---------------------
 
−
Key macros must begin execution from within an editor window. Once invoked
 
−
from within an editor, macro keys may be injected into other windows, such as
 
−
the find dialog. The sequence "^fPecan{ENTER}" would invoke the find dialog,
 
−
insert the chars "Pecan" into the find text control, then execute the find by
 
−
depressing and releasing the enter key.
 
−
 
−
Macros not checked as "Menued Macro" in the KeyMacs editor simply remain in
 
−
the database for future reference. They can, of course, be deleted.
 
−
 
−
The macro database resides in the users home directory as cbKeyMacs.ini. The
 
−
first section contains the macro definitions. The second section specifies the menu command keys or blank if "un-menued".
 
−
 
−
KeyMacs can execute other KeyMacs by referencing their menu command key. Be careful.
 
−
This can cause an infinte loop if two macros invoke each other. To avoid
 
−
this, a KeyMac that invokes another KeyMac should itself have no command keys.
 
−
 
−
A Keymac that is invoked by another KeyMac might execute asynchronously. Invoked
 
−
KeyMacs do not return to the invoking Keymac The invoking KeyMac cannot wait
 
−
for the invoked KeyMac. Most likely, the invoked KeyMac is queued up behind
 
−
the invoking KeyMac, but it might also start its own thread.
 
−
 
−
The context {MENU} keysym opens on my Windows XP2 system at coordinates (0,0).
 
−
I've found no way to change this annoying behavior.
 
−
 
−
KeyMacs injects keys into the focused window keyboard buffer. It attempts to
 
−
start the KeyMac within the window that invoked the menu. But if you're running
 
−
a "focus follows mouse" system, the mouse may change the window focus during
 
−
KeyMac execution causing keys to input into the wrong window.
 
−
Be careful of the mouse pointer location during invocations of the context menu.
 
−
 
−
On *nix. I have not yet succeeded in moving the mouse pointer back into the
 
−
window owning the KeyMac when the mouse ends outside the owning window.
 
−
 
−
{ASC} is not available for *nix since XWindows does not support it.
 
−
 
−
 
−
====How do I install it?====
 
−
--------------------
 
−
Download: http://www.savefile.com/files/743327
 
−
Unzip cbKeyMacs03-15-3.zip to a clean folder.
 
−
 
−
If you don't want to compile but simply want to use the binaries, copy the .dll, .so, and .zip to the locations indicated below.
 
−
 
−
Compile KeyMacs for MSWindows with KeyMacs.cbp. Then copy KeyMacs.dll to ...\trunk\src\devel\share\CodeBlocks\plugins\KeyMacs.dll.
 
−
Copy KeyMacs.zip to ...\trunk\src\devel\share\CodeBlocks\KeyMacs.zip
 
−
 
−
Compile KeyMacs for Linux with KeyMacs(unix).cbp. Then copy KeyMacs.dll to .../trunk/src/devel/share/codeclocks/plugins/KeyMacs.dll.
 
−
Copy KeyMacs.zip to .../trunk/src/devel/share/codeblocks/KeyMacs.zip
 
−
 
−
Linux users will need the X11 and Xtst development libraries. These are usually already provided by the distribution.
 
−
Ubuntu Synaptic provided the following libraries when I searched for xtst:
 
−
[[Image:KeyMacs107.PNG]]
 
−
 
−
====KeySym definitions====
 
−
------------------
 
−
    ^, !, + are key modifiers representing CTRL, ALT,SHIFT
 
−
    {ALT UP|DOWN} - Program menu invocation
 
−
    {BACKSPACE} or {BS}
 
−
    {DEL}
 
−
    {DELETE}
 
−
    {DOWN}
 
−
    {END}
 
−
    {ENTER}
 
−
    {ESC} or {ESCAPE}
 
−
    {F1} {F2} {F3} {F4} {F5} {F6} {F7} {F8} {F9} {F10} {F11} {F12}
 
−
    {HOME}
 
−
    {INS} or {INSERT}
 
−
    {LEFT} {RIGHT}
 
−
    {PGDN} {PGUP}
 
−
    {SPACE}
 
−
    {TAB}
 
−
    {UP}
 
−
    {PRINTSCREEN}
 
−
    {SCROLLLOCK}
 
−
    {NUMLOCK}
 
−
    {CTRLBREAK}
 
−
    {PAUSE}
 
−
    {CAPSLOCK}
 
−
    {NUMPAD0}
 
−
    {NUMPAD1} {NUMPAD2} {NUMPAD3} {NUMPAD4} {NUMPAD5} {NUMPAD6} {NUMPAD7}
 
−
    {NUMPAD8} {NUMPAD9} {NUMPADMULT} {NUMPADADD} {NUMPADSUB} {NUMPADDOT}
 
−
    {NUMPADDIV} {NUMPADENTER UP|DOWN}
 
−
    {MENU} - context menu
 
−
    {LCTRL} {RCTRL}
 
−
    {LALT} {RALT}
 
−
    {LSHIFT} {RSHIFT}
 
−
    {SLEEP}
 
−
    {CTRLDOWN} {CTRLUP}
 
−
    {ALTDOWN} {ALTUP}
 
−
    {SHIFTDOWN} {SHIFTUP}
 
−
    {ASC 0nnn}
 
−
    {WAIT}
 
−
 
−
 
−
====Example KeyMacs====
 
−
---------------
 
−
Use cmd key Ctrl-Enter to create a new indented line.
 
−
    "{END}{ENTER}"
 
−
 
−
Use Ctrl-P to enter the C++ pointer sequence (saving alot of mistypes)
 
−
    "->"
 
−
 
−
Use Alt-Ctrl-C to enter the C++ comment sequence
 
−
    "{END}{ENTER}//{TAB}"
 
−
 
−
Use Alt-Ctrl-B to enter a new set of formated braces
 
−
    "{END}{ENTER}{{}{ENTER 2}{HOME}{}}{UP}{TAB}"
 
−
 
−
 
−
Pecan 2007/01/15
 

Revision as of 10:42, 25 August 2007