Keyboard macros

From Rosetta Code
Revision as of 02:48, 30 May 2009 by rosettacode>Tinku99 (documented ahk example)
Task
Keyboard macros
You are encouraged to solve this task according to the task description, using any language you may know.

Link user defined methods to user defined keys.



AutoHotkey

<lang AutoHotkey> loop, 200  ;; loop 200 times while not paused { TrayTip, counting, %A_Index% press alt-p to pause sleep, 1000 }

!p::  ;; links alt-p key combination to the method pauseme() pauseMe() return

!r::  ;; links alt-r key combination to the method resume() resume() return

pauseMe() { Msgbox, pausing`, press alt-r to resume pause } resume() { TrayTip, resume, resuming, 2 pause, off } </lang> See ahk-viper-mode for a context sensitive vi key bindings example.

Tcl

Library: Tk

<lang tcl>package require Tk

  1. Show off some emacs-like bindings...

pack [label .l -text "C-x C-s to save, C-x C-c to quit"] focus . bind . <Control-x><Control-s> {

   tk_messageBox -message "We would save here"

} bind . <Control-x><Control-c> {exit}</lang> A more direct macro-like facility would be: <lang tcl>bind . <F1> {

   foreach c [split "Macro demo!" {}] {
       event generate %W $c
   }

}</lang>

Vedit macro language

<lang vedit> // Configure a key to access menu item. // The menu item may then contain the commands directly, or it may call a macro from disk. // This has the advantage that the key binding is shown in the menu.

Key_Add("Shft-F6","[MENU]TV", OK)

// Configure a key to perform visual mode edit operations (similar to recorded key macro):

Key_Add("Numpad.Enter", "[CURSOR LEFT][LINE END][RETURN]", OK)

// Configure a key to execute macro language commands:

Key_Add("Numpad+", '[VISUAL EXIT] if(BB!=-1) { RCB(10,BB,BE) BB(-1) S("|@(10)",SET+CONFIRM) } else { S("",CONFIRM) }', OK)

// Configure a key to call a macro from disk. The old key assignment is not removed.

Key_Add("Ctrl-Shft-N",'[VISUAL EXIT] Call_File(100,"aspell.vdm","NEXT_ERROR")',INSERT+OK)

// Configure a two-key sequence (C-x C-c to save file).

Key_Add("^X C","[MENU]FS", OK)

// Remove a key assignment. If INSERT option was used when the key was assigned, the old assignment will come in effect again.

Key_Delete("Ctrl-Shft-N")

</lang>