<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dwarffortresswiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dukederek</id>
	<title>Dwarf Fortress Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://dwarffortresswiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dukederek"/>
	<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php/Special:Contributions/Dukederek"/>
	<updated>2026-05-08T22:58:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.11</generator>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31742</id>
		<title>40d:Macros and keymaps</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31742"/>
		<updated>2008-02-14T11:19:10Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dumping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Playing Dwarf Fortress means lots of typing.  Although the game (as of version v0.27.169.33) has no internal macro/keymap system, using an external program can save you a great deal of time when dumping, rewalling, designating, and so forth.&lt;br /&gt;
&lt;br /&gt;
#  Go to [[Utilities#AutoHotKey]] and download AutoHotKey.  Installation is simple and the program uses few system resources.&lt;br /&gt;
#  Write macro scripts (file type .ahk), which may contain any number of commands.  You activate scripts by double-clicking .ahk files and deactivate them by right-clicking the AutoHotKey icon on the task bar.  Both of these can be done at any time - even right in the middle of a game.  AutoHotKey also allows for automated activation of scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AutoHotKey Examples ==&lt;br /&gt;
&lt;br /&gt;
===Dumping===&lt;br /&gt;
Taken from an old version of [[User:Jackard|Jackard's user page]].&lt;br /&gt;
&lt;br /&gt;
To use, first have your bookeeper do enough desk work so you can view individual items in the stocks listing.  Then bring it up and press del to quickly mark stuff.  To adjust the key repeat rate, edit the KEY_HOLD_MS value in \data\init\init.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
del::&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
  send d{down}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  send {del}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dumping script by [[User:Dukederek|Dukederek]]:&lt;br /&gt;
&lt;br /&gt;
This script uses a system similar the commands in the designations menu to mark most of the contents of a large area for dumping. [[User:Dukederek|My talk page]] has more detailed instruction.&lt;br /&gt;
&lt;br /&gt;
Essentially you need to create two text files with the following titles and content. When playing DF it is safe to have blockdumpinit running constantly as long as you dont plan on using the ctrl-d combination for something else.&lt;br /&gt;
&lt;br /&gt;
'''blockdumpinit.ahk'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^d::&lt;br /&gt;
RunWait, &amp;quot;blockdumpmain.ahk&amp;quot;&lt;br /&gt;
Return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''blockdumpmain.ahk'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SetKeyDelay 25&lt;br /&gt;
return::&lt;br /&gt;
Send k&lt;br /&gt;
return&lt;br /&gt;
up::&lt;br /&gt;
Send w&lt;br /&gt;
return&lt;br /&gt;
left::&lt;br /&gt;
Send a&lt;br /&gt;
return&lt;br /&gt;
down::&lt;br /&gt;
Send s&lt;br /&gt;
return&lt;br /&gt;
right::&lt;br /&gt;
Send d&lt;br /&gt;
return&lt;br /&gt;
q::&lt;br /&gt;
ExitApp&lt;br /&gt;
return&lt;br /&gt;
shift::&lt;br /&gt;
x := 0&lt;br /&gt;
y := 1&lt;br /&gt;
Loop{&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&lt;br /&gt;
if keypress = w&lt;br /&gt;
{&lt;br /&gt;
y := --y&lt;br /&gt;
Send {up}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = s&lt;br /&gt;
{&lt;br /&gt;
y := ++y&lt;br /&gt;
Send {down}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = a&lt;br /&gt;
{&lt;br /&gt;
x := --x&lt;br /&gt;
Send {left}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = d&lt;br /&gt;
{&lt;br /&gt;
x := ++x&lt;br /&gt;
Send {right}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = k &lt;br /&gt;
{&lt;br /&gt;
break&lt;br /&gt;
}else if keypress = q&lt;br /&gt;
{&lt;br /&gt;
ExitApp&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
y := y / 2&lt;br /&gt;
z := y&lt;br /&gt;
z := Floor(z)&lt;br /&gt;
z := y/z&lt;br /&gt;
Send d{NumpadAdd}d&lt;br /&gt;
If z = 0&lt;br /&gt;
{	&lt;br /&gt;
If x = 0&lt;br /&gt;
ExitApp&lt;br /&gt;
Else{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d&lt;br /&gt;
}ExitApp&lt;br /&gt;
}&lt;br /&gt;
}If z &amp;lt;&amp;gt; 1&lt;br /&gt;
{&lt;br /&gt;
Loop %y%{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {right}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d{NumpadAdd}d&lt;br /&gt;
}Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}&lt;br /&gt;
}Else If z = 1&lt;br /&gt;
{&lt;br /&gt;
y := y + 0.5&lt;br /&gt;
Loop %y%{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {right}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d{NumpadAdd}d&lt;br /&gt;
}Send d{NumpadSub}d&lt;br /&gt;
}ExitApp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rewalling ===&lt;br /&gt;
Taken from [[User:Valdemar|Valdemar's user page]].&lt;br /&gt;
&lt;br /&gt;
This is a macro to aid with rewalling. To use, copy-paste the script into a new .ahk file and run the script with AutoHotkey. Then, in Dwarf Fortress, press b-C-w, move the cursor to where you want to start the wall, and hold Ctrl-Shift-Arrowkey, using the direction you want to rewall in. To build floors, press b-C-f instead, and use Ctrl-Alt-Arrowkey. To stop, just release the keys.&lt;br /&gt;
&lt;br /&gt;
The script will use the first material in the list. I suggest you create a stockpile near the construction site that only accepts the item you wish to build with and temporarily forbid any nearby materials you don't want to build with. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$^+Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
$^!Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ProcessEvent(direction, type)&lt;br /&gt;
{   &lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send %type%&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {%direction%}&lt;br /&gt;
    Loop&lt;br /&gt;
    {&lt;br /&gt;
        if not GetKeyState(direction, &amp;quot;P&amp;quot;) &lt;br /&gt;
            break  &lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send %type%&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {%direction%}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Grid-by-grid designation===&lt;br /&gt;
For easier diagonal and fancy mining.  Assumes that DF is active.  &amp;quot;^!&amp;quot; means ctrl-alt-direction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^!NumpadEnd::&lt;br /&gt;
send {Enter}{Enter}{NumpadEnd}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadDown::&lt;br /&gt;
send {Enter}{Enter}{NumpadDown}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgDn::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgDn}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadLeft::&lt;br /&gt;
send {Enter}{Enter}{NumpadLeft}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadRight::&lt;br /&gt;
send {Enter}{Enter}{NumpadRight}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadHome::&lt;br /&gt;
send {Enter}{Enter}{NumpadHome}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadUp}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgUp}&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Room-designation macros===&lt;br /&gt;
&lt;br /&gt;
====Valdemar's Designator Macro====&lt;br /&gt;
This macro can read a spreadsheet and designate rooms according to it. [http://www.bay12games.com/cgi-local/ultimatebb.cgi?ubb=get_topic&amp;amp;f=2&amp;amp;t=001507 Forum Thread/Download]&lt;br /&gt;
&lt;br /&gt;
====Fedor's chambered circle====&lt;br /&gt;
A circular room with eight equal-sized chambers, suitable for everything from housing to workshops to a mausoleum.&amp;lt;br&amp;gt;&lt;br /&gt;
[http://mkv25.net/dfma/movie-216-room-designationmacro01 See this macro in action]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Macros_and_Keymaps_Examples#Room-designation Macro 01|Macro text]]&lt;br /&gt;
&lt;br /&gt;
====Valdemar's bedroom complex====&lt;br /&gt;
A large fractal bedroom/dining complex, with 56 bedrooms and room for 24 tables.&lt;br /&gt;
&lt;br /&gt;
You can press Alt-B to create a bedroom block, or Alt-C to create a full complex with 4 bedroom blocks and a dining block in the center.&lt;br /&gt;
&lt;br /&gt;
Note - the macro is much faster than the demo movie shows, it is done in under a minute.&lt;br /&gt;
&lt;br /&gt;
[http://mkv25.net/dfma/movie-252 Demo Movie]&lt;br /&gt;
&lt;br /&gt;
[http://www.pindi.us/files/fractalbr.zip Download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Game_Interface FAQ}}&lt;br /&gt;
[[Category:ahk scripts]]&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31741</id>
		<title>40d:Macros and keymaps</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31741"/>
		<updated>2008-02-14T11:15:30Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dumping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Playing Dwarf Fortress means lots of typing.  Although the game (as of version v0.27.169.33) has no internal macro/keymap system, using an external program can save you a great deal of time when dumping, rewalling, designating, and so forth.&lt;br /&gt;
&lt;br /&gt;
#  Go to [[Utilities#AutoHotKey]] and download AutoHotKey.  Installation is simple and the program uses few system resources.&lt;br /&gt;
#  Write macro scripts (file type .ahk), which may contain any number of commands.  You activate scripts by double-clicking .ahk files and deactivate them by right-clicking the AutoHotKey icon on the task bar.  Both of these can be done at any time - even right in the middle of a game.  AutoHotKey also allows for automated activation of scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AutoHotKey Examples ==&lt;br /&gt;
&lt;br /&gt;
===Dumping===&lt;br /&gt;
Taken from an old version of [[User:Jackard|Jackard's user page]].&lt;br /&gt;
&lt;br /&gt;
To use, first have your bookeeper do enough desk work so you can view individual items in the stocks listing.  Then bring it up and press del to quickly mark stuff.  To adjust the key repeat rate, edit the KEY_HOLD_MS value in \data\init\init.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
del::&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
  send d{down}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  send {del}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dumping script by [[User:Dukederek|Dukederek]]:&lt;br /&gt;
&lt;br /&gt;
This script uses a system similar the commands in the designations menu to mark the contents of a large area for dumping.  [[User:Dukederek|My talk page]] has instruction on how to use this if it is not evident from the code below&lt;br /&gt;
&lt;br /&gt;
'''blockdumpinit.ahk'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^d::&lt;br /&gt;
RunWait, &amp;quot;blockdumpmain.ahk&amp;quot;&lt;br /&gt;
Return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''blockdumpmain.ahk'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SetKeyDelay 25&lt;br /&gt;
return::&lt;br /&gt;
Send k&lt;br /&gt;
return&lt;br /&gt;
up::&lt;br /&gt;
Send w&lt;br /&gt;
return&lt;br /&gt;
left::&lt;br /&gt;
Send a&lt;br /&gt;
return&lt;br /&gt;
down::&lt;br /&gt;
Send s&lt;br /&gt;
return&lt;br /&gt;
right::&lt;br /&gt;
Send d&lt;br /&gt;
return&lt;br /&gt;
q::&lt;br /&gt;
ExitApp&lt;br /&gt;
return&lt;br /&gt;
shift::&lt;br /&gt;
x := 0&lt;br /&gt;
y := 1&lt;br /&gt;
Loop{&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&lt;br /&gt;
if keypress = w&lt;br /&gt;
{&lt;br /&gt;
y := --y&lt;br /&gt;
Send {up}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = s&lt;br /&gt;
{&lt;br /&gt;
y := ++y&lt;br /&gt;
Send {down}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = a&lt;br /&gt;
{&lt;br /&gt;
x := --x&lt;br /&gt;
Send {left}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = d&lt;br /&gt;
{&lt;br /&gt;
x := ++x&lt;br /&gt;
Send {right}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = k &lt;br /&gt;
{&lt;br /&gt;
break&lt;br /&gt;
}else if keypress = q&lt;br /&gt;
{&lt;br /&gt;
ExitApp&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
y := y / 2&lt;br /&gt;
z := y&lt;br /&gt;
z := Floor(z)&lt;br /&gt;
z := y/z&lt;br /&gt;
Send d{NumpadAdd}d&lt;br /&gt;
If z = 0&lt;br /&gt;
{	&lt;br /&gt;
If x = 0&lt;br /&gt;
ExitApp&lt;br /&gt;
Else{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d&lt;br /&gt;
}ExitApp&lt;br /&gt;
}&lt;br /&gt;
}If z &amp;lt;&amp;gt; 1&lt;br /&gt;
{&lt;br /&gt;
Loop %y%{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {right}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d{NumpadAdd}d&lt;br /&gt;
}Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}&lt;br /&gt;
}Else If z = 1&lt;br /&gt;
{&lt;br /&gt;
y := y + 0.5&lt;br /&gt;
Loop %y%{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {right}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d{NumpadAdd}d&lt;br /&gt;
}Send d{NumpadSub}d&lt;br /&gt;
}ExitApp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rewalling ===&lt;br /&gt;
Taken from [[User:Valdemar|Valdemar's user page]].&lt;br /&gt;
&lt;br /&gt;
This is a macro to aid with rewalling. To use, copy-paste the script into a new .ahk file and run the script with AutoHotkey. Then, in Dwarf Fortress, press b-C-w, move the cursor to where you want to start the wall, and hold Ctrl-Shift-Arrowkey, using the direction you want to rewall in. To build floors, press b-C-f instead, and use Ctrl-Alt-Arrowkey. To stop, just release the keys.&lt;br /&gt;
&lt;br /&gt;
The script will use the first material in the list. I suggest you create a stockpile near the construction site that only accepts the item you wish to build with and temporarily forbid any nearby materials you don't want to build with. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$^+Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
$^!Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ProcessEvent(direction, type)&lt;br /&gt;
{   &lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send %type%&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {%direction%}&lt;br /&gt;
    Loop&lt;br /&gt;
    {&lt;br /&gt;
        if not GetKeyState(direction, &amp;quot;P&amp;quot;) &lt;br /&gt;
            break  &lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send %type%&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {%direction%}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Grid-by-grid designation===&lt;br /&gt;
For easier diagonal and fancy mining.  Assumes that DF is active.  &amp;quot;^!&amp;quot; means ctrl-alt-direction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^!NumpadEnd::&lt;br /&gt;
send {Enter}{Enter}{NumpadEnd}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadDown::&lt;br /&gt;
send {Enter}{Enter}{NumpadDown}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgDn::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgDn}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadLeft::&lt;br /&gt;
send {Enter}{Enter}{NumpadLeft}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadRight::&lt;br /&gt;
send {Enter}{Enter}{NumpadRight}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadHome::&lt;br /&gt;
send {Enter}{Enter}{NumpadHome}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadUp}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgUp}&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Room-designation macros===&lt;br /&gt;
&lt;br /&gt;
====Valdemar's Designator Macro====&lt;br /&gt;
This macro can read a spreadsheet and designate rooms according to it. [http://www.bay12games.com/cgi-local/ultimatebb.cgi?ubb=get_topic&amp;amp;f=2&amp;amp;t=001507 Forum Thread/Download]&lt;br /&gt;
&lt;br /&gt;
====Fedor's chambered circle====&lt;br /&gt;
A circular room with eight equal-sized chambers, suitable for everything from housing to workshops to a mausoleum.&amp;lt;br&amp;gt;&lt;br /&gt;
[http://mkv25.net/dfma/movie-216-room-designationmacro01 See this macro in action]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Macros_and_Keymaps_Examples#Room-designation Macro 01|Macro text]]&lt;br /&gt;
&lt;br /&gt;
====Valdemar's bedroom complex====&lt;br /&gt;
A large fractal bedroom/dining complex, with 56 bedrooms and room for 24 tables.&lt;br /&gt;
&lt;br /&gt;
You can press Alt-B to create a bedroom block, or Alt-C to create a full complex with 4 bedroom blocks and a dining block in the center.&lt;br /&gt;
&lt;br /&gt;
Note - the macro is much faster than the demo movie shows, it is done in under a minute.&lt;br /&gt;
&lt;br /&gt;
[http://mkv25.net/dfma/movie-252 Demo Movie]&lt;br /&gt;
&lt;br /&gt;
[http://www.pindi.us/files/fractalbr.zip Download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Game_Interface FAQ}}&lt;br /&gt;
[[Category:ahk scripts]]&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35254</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35254"/>
		<updated>2008-01-22T17:12:03Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dump Macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-d&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost tile you want to dump from using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-d&amp;quot; (press q here to quit if you pressed it accidentally)&lt;br /&gt;
* Press shift &lt;br /&gt;
* Using the arrow keys move to the bottomrightmost tile. To cancel press q&lt;br /&gt;
* press return and watch the yellow cross fly about designatin'&lt;br /&gt;
&lt;br /&gt;
The limitation is that only the first two items on each tile's list are set to be dumped but that's not so bad it it?&lt;br /&gt;
&lt;br /&gt;
Anyway, here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Call this one blockdumpinit.ahk'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^d::&lt;br /&gt;
RunWait, &amp;quot;blockdumpmain.ahk&amp;quot;&lt;br /&gt;
Return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Call this one blockdumpmain.ahk'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SetKeyDelay 25&lt;br /&gt;
return::&lt;br /&gt;
Send k&lt;br /&gt;
return&lt;br /&gt;
up::&lt;br /&gt;
Send w&lt;br /&gt;
return&lt;br /&gt;
left::&lt;br /&gt;
Send a&lt;br /&gt;
return&lt;br /&gt;
down::&lt;br /&gt;
Send s&lt;br /&gt;
return&lt;br /&gt;
right::&lt;br /&gt;
Send d&lt;br /&gt;
return&lt;br /&gt;
q::&lt;br /&gt;
ExitApp&lt;br /&gt;
return&lt;br /&gt;
shift::&lt;br /&gt;
x := 0&lt;br /&gt;
y := 1&lt;br /&gt;
Loop{&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&lt;br /&gt;
if keypress = w&lt;br /&gt;
{&lt;br /&gt;
y := --y&lt;br /&gt;
Send {up}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = s&lt;br /&gt;
{&lt;br /&gt;
y := ++y&lt;br /&gt;
Send {down}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = a&lt;br /&gt;
{&lt;br /&gt;
x := --x&lt;br /&gt;
Send {left}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = d&lt;br /&gt;
{&lt;br /&gt;
x := ++x&lt;br /&gt;
Send {right}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = k &lt;br /&gt;
{&lt;br /&gt;
break&lt;br /&gt;
}else if keypress = q&lt;br /&gt;
{&lt;br /&gt;
ExitApp&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
y := y / 2&lt;br /&gt;
z := y&lt;br /&gt;
z := Floor(z)&lt;br /&gt;
z := y/z&lt;br /&gt;
Send d{NumpadAdd}d&lt;br /&gt;
If z = 0&lt;br /&gt;
{	&lt;br /&gt;
If x = 0&lt;br /&gt;
ExitApp&lt;br /&gt;
Else{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d&lt;br /&gt;
}ExitApp&lt;br /&gt;
}&lt;br /&gt;
}If z &amp;lt;&amp;gt; 1&lt;br /&gt;
{&lt;br /&gt;
Loop %y%{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {right}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d{NumpadAdd}d&lt;br /&gt;
}Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}&lt;br /&gt;
}Else If z = 1&lt;br /&gt;
{&lt;br /&gt;
y := y + 0.5&lt;br /&gt;
Loop %y%{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {right}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d{NumpadAdd}d&lt;br /&gt;
}Send d{NumpadSub}d&lt;br /&gt;
}ExitApp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
=== Code Below: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35253</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35253"/>
		<updated>2008-01-22T17:10:09Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dump Macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-d&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost tile you want to dump from using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-d&amp;quot; (press q here to quit if you pressed it accidentally)&lt;br /&gt;
* Press shift &lt;br /&gt;
* Using the arrow keys move to the bottomrightmost tile. To cancel press q&lt;br /&gt;
* press return and watch the yellow cross fly about designatin'&lt;br /&gt;
&lt;br /&gt;
The limitation is that only the first two items on each tile's list are set to be dumped but that's not so bad it it?&lt;br /&gt;
&lt;br /&gt;
Anyway, here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Call this one blockdumpinit.ahk'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^d::&lt;br /&gt;
RunWait, &amp;quot;blockdumpmain.ahk&amp;quot;&lt;br /&gt;
Return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Call this one blockdumpmain.ahk'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SetKeyDelay 25&lt;br /&gt;
+up::&lt;br /&gt;
Send {up 10}&lt;br /&gt;
return&lt;br /&gt;
+left::&lt;br /&gt;
Send {left 10}&lt;br /&gt;
return&lt;br /&gt;
+down::&lt;br /&gt;
Send {down 10}&lt;br /&gt;
+right::&lt;br /&gt;
Send {right 10}&lt;br /&gt;
return&lt;br /&gt;
return::&lt;br /&gt;
Send k&lt;br /&gt;
return&lt;br /&gt;
up::&lt;br /&gt;
Send w&lt;br /&gt;
return&lt;br /&gt;
left::&lt;br /&gt;
Send a&lt;br /&gt;
return&lt;br /&gt;
down::&lt;br /&gt;
Send s&lt;br /&gt;
return&lt;br /&gt;
right::&lt;br /&gt;
Send d&lt;br /&gt;
return&lt;br /&gt;
q::&lt;br /&gt;
ExitApp&lt;br /&gt;
return&lt;br /&gt;
shift::&lt;br /&gt;
x := 0&lt;br /&gt;
y := 1&lt;br /&gt;
Loop{&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&lt;br /&gt;
if keypress = w&lt;br /&gt;
{&lt;br /&gt;
y := --y&lt;br /&gt;
Send {up}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = s&lt;br /&gt;
{&lt;br /&gt;
y := ++y&lt;br /&gt;
Send {down}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = a&lt;br /&gt;
{&lt;br /&gt;
x := --x&lt;br /&gt;
Send {left}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = d&lt;br /&gt;
{&lt;br /&gt;
x := ++x&lt;br /&gt;
Send {right}&lt;br /&gt;
continue&lt;br /&gt;
}else if keypress = k &lt;br /&gt;
{&lt;br /&gt;
break&lt;br /&gt;
}else if keypress = q&lt;br /&gt;
{&lt;br /&gt;
ExitApp&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
y := y / 2&lt;br /&gt;
z := y&lt;br /&gt;
z := Floor(z)&lt;br /&gt;
z := y/z&lt;br /&gt;
Send d{NumpadAdd}d&lt;br /&gt;
If z = 0&lt;br /&gt;
{	&lt;br /&gt;
If x = 0&lt;br /&gt;
ExitApp&lt;br /&gt;
Else{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d&lt;br /&gt;
}ExitApp&lt;br /&gt;
}&lt;br /&gt;
}If z &amp;lt;&amp;gt; 1&lt;br /&gt;
{&lt;br /&gt;
Loop %y%{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {right}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d{NumpadAdd}d&lt;br /&gt;
}Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}&lt;br /&gt;
}Else If z = 1&lt;br /&gt;
{&lt;br /&gt;
y := y + 0.5&lt;br /&gt;
Loop %y%{&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {left}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d&lt;br /&gt;
Loop %x%{&lt;br /&gt;
Send {right}d{NumpadAdd}d&lt;br /&gt;
}Send {up}d{NumpadAdd}d&lt;br /&gt;
}Send d{NumpadSub}d&lt;br /&gt;
}ExitApp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
=== Code Below: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35252</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35252"/>
		<updated>2008-01-22T17:05:20Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dump Macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
=== Code Below: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=40d_Talk:Macros_and_keymaps&amp;diff=33452</id>
		<title>40d Talk:Macros and keymaps</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=40d_Talk:Macros_and_keymaps&amp;diff=33452"/>
		<updated>2008-01-21T20:46:49Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* dump macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Is 'Playing Dungeon Fortress' (first few words of the article) supposed to be a joke? --[[User:Valdemar|Valdemar]] 21:36, 25 December 2007 (EST)&lt;br /&gt;
:Probably meant to say &amp;quot;fortress mode&amp;quot;... Must be a typo which got overlooked. --[[User:Eagle of Fire|Eagle of Fire]] 21:41, 25 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== dump macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro that works a bit like the actual designation commands (with a few limitations). Is it okay just to add it to this page?&lt;br /&gt;
&lt;br /&gt;
I have put it on my userpage now. someone with more authority can now place it where they wish&lt;br /&gt;
&lt;br /&gt;
[[User:Dukederek|Dukederek]] 12:44, 21 January 2008 (EST)&lt;br /&gt;
:Feel free to put it here.[[User:Fedor|Fedor]] 15:30, 21 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
::After a few botched attempts, i think it's up in a satisfactory way :)  [[User:Dukederek|Dukederek]] 15:46, 21 January 2008 (EST)&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35251</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35251"/>
		<updated>2008-01-21T20:45:39Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dump Macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
=== Code Below: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35250</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35250"/>
		<updated>2008-01-21T20:45:24Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Code Below: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first three items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
=== Code Below: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31739</id>
		<title>40d:Macros and keymaps</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31739"/>
		<updated>2008-01-21T20:45:03Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dumping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Playing Dwarf Fortress means lots of typing.  Although the game (as of version v0.27.169.33) has no internal macro/keymap system, using an external program can save you a great deal of time when dumping, rewalling, designating, and so forth.&lt;br /&gt;
&lt;br /&gt;
#  Go to [[Utilities#AutoHotKey]] and download AutoHotKey.  Installation is simple and the program uses few system resources.&lt;br /&gt;
#  Write macro scripts (file type .ahk), which may contain any number of commands.  You activate scripts by double-clicking .ahk files and deactivate them by right-clicking the AutoHotKey icon on the task bar.  Both of these can be done at any time - even right in the middle of a game.  AutoHotKey also allows for automated activation of scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AutoHotKey Examples ==&lt;br /&gt;
&lt;br /&gt;
===Dumping===&lt;br /&gt;
Taken from an old version of [[User:Jackard|Jackard's user page]].&lt;br /&gt;
&lt;br /&gt;
To use, first have your bookeeper do enough desk work so you can view individual items in the stocks listing.  Then bring it up and press del to quickly mark stuff.  To adjust the key repeat rate, edit the KEY_HOLD_MS value in \data\init\init.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
del::&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
  send d{down}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  send {del}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dumping script by [[User:Dukederek|Dukederek]]:&lt;br /&gt;
&lt;br /&gt;
This script uses a system similar the commands in the designations menu to mark the contents of a large area for dumping.  [[User:Dukederek|My talk page]] has instruction on how to use this if it is not evident from the code below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^return::&lt;br /&gt;
x = 0&lt;br /&gt;
y = 0&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
Loop&lt;br /&gt;
{&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&lt;br /&gt;
if keypress = w&lt;br /&gt;
{&lt;br /&gt;
y := --y&lt;br /&gt;
Send {up}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = s&lt;br /&gt;
{&lt;br /&gt;
y := ++y&lt;br /&gt;
Send {down}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = a&lt;br /&gt;
{&lt;br /&gt;
x := --x&lt;br /&gt;
Send {left}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = d&lt;br /&gt;
{&lt;br /&gt;
x := ++x&lt;br /&gt;
Send {right}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = k&lt;br /&gt;
{&lt;br /&gt;
break&lt;br /&gt;
}&lt;br /&gt;
else if keypress = q&lt;br /&gt;
{&lt;br /&gt;
Return&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
SetKeyDelay 1&lt;br /&gt;
Send {left %x%}&lt;br /&gt;
Send {up %y%}&lt;br /&gt;
x := x + 1&lt;br /&gt;
y := y + 1&lt;br /&gt;
Loop %y%&lt;br /&gt;
{&lt;br /&gt;
Loop %x%&lt;br /&gt;
{&lt;br /&gt;
Send d&lt;br /&gt;
Send {NumpadAdd}&lt;br /&gt;
Send d&lt;br /&gt;
Send {right}&lt;br /&gt;
}&lt;br /&gt;
Send {left %x%}&lt;br /&gt;
Send {down}&lt;br /&gt;
}&lt;br /&gt;
Loop %y%&lt;br /&gt;
{&lt;br /&gt;
Send {up}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rewalling ===&lt;br /&gt;
Taken from [[User:Valdemar|Valdemar's user page]].&lt;br /&gt;
&lt;br /&gt;
This is a macro to aid with rewalling. To use, copy-paste the script into a new .ahk file and run the script with AutoHotkey. Then, in Dwarf Fortress, press b-C-w, move the cursor to where you want to start the wall, and hold Ctrl-Shift-Arrowkey, using the direction you want to rewall in. To build floors, press b-C-f instead, and use Ctrl-Alt-Arrowkey. To stop, just release the keys.&lt;br /&gt;
&lt;br /&gt;
The script will use the first material in the list. I suggest you create a stockpile near the construction site that only accepts the item you wish to build with and temporarily forbid any nearby materials you don't want to build with. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$^+Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
$^!Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ProcessEvent(direction, type)&lt;br /&gt;
{   &lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send %type%&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {%direction%}&lt;br /&gt;
    Loop&lt;br /&gt;
    {&lt;br /&gt;
        if not GetKeyState(direction, &amp;quot;P&amp;quot;) &lt;br /&gt;
            break  &lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send %type%&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {%direction%}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Grid-by-grid designation===&lt;br /&gt;
For easier diagonal and fancy mining.  Assumes that DF is active.  &amp;quot;^!&amp;quot; means ctrl-alt-direction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^!NumpadEnd::&lt;br /&gt;
send {Enter}{Enter}{NumpadEnd}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadDown::&lt;br /&gt;
send {Enter}{Enter}{NumpadDown}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgDn::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgDn}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadLeft::&lt;br /&gt;
send {Enter}{Enter}{NumpadLeft}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadRight::&lt;br /&gt;
send {Enter}{Enter}{NumpadRight}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadHome::&lt;br /&gt;
send {Enter}{Enter}{NumpadHome}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadUp}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgUp}&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Room-designation macros===&lt;br /&gt;
&lt;br /&gt;
====Valdemar's Designator Macro====&lt;br /&gt;
This macro can read a spreadsheet and designate rooms according to it. [http://www.bay12games.com/cgi-local/ultimatebb.cgi?ubb=get_topic&amp;amp;f=2&amp;amp;t=001507 Forum Thread/Download]&lt;br /&gt;
&lt;br /&gt;
====Fedor's chambered circle====&lt;br /&gt;
A circular room with eight equal-sized chambers, suitable for everything from housing to workshops to a mausoleum.&amp;lt;br&amp;gt;&lt;br /&gt;
[http://mkv25.net/dfma/movie-216-room-designationmacro01 See this macro in action]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Macros_and_Keymaps_Examples#Room-designation Macro 01|Macro text]]&lt;br /&gt;
&lt;br /&gt;
====Valdemar's bedroom complex====&lt;br /&gt;
A large fractal bedroom/dining complex, with 56 bedrooms and room for 24 tables.&lt;br /&gt;
&lt;br /&gt;
You can press Alt-B to create a bedroom block, or Alt-C to create a full complex with 4 bedroom blocks and a dining block in the center.&lt;br /&gt;
&lt;br /&gt;
Note - the macro is much faster than the demo movie shows, it is done in under a minute.&lt;br /&gt;
&lt;br /&gt;
[http://mkv25.net/dfma/movie-252 Demo Movie]&lt;br /&gt;
&lt;br /&gt;
[http://www.pindi.us/files/fractalbr.zip Download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Game_Interface FAQ}}&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35249</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35249"/>
		<updated>2008-01-21T20:42:24Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dump Macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first three items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
=== Code Below: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
        Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31738</id>
		<title>40d:Macros and keymaps</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31738"/>
		<updated>2008-01-21T20:41:53Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dumping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Playing Dwarf Fortress means lots of typing.  Although the game (as of version v0.27.169.33) has no internal macro/keymap system, using an external program can save you a great deal of time when dumping, rewalling, designating, and so forth.&lt;br /&gt;
&lt;br /&gt;
#  Go to [[Utilities#AutoHotKey]] and download AutoHotKey.  Installation is simple and the program uses few system resources.&lt;br /&gt;
#  Write macro scripts (file type .ahk), which may contain any number of commands.  You activate scripts by double-clicking .ahk files and deactivate them by right-clicking the AutoHotKey icon on the task bar.  Both of these can be done at any time - even right in the middle of a game.  AutoHotKey also allows for automated activation of scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AutoHotKey Examples ==&lt;br /&gt;
&lt;br /&gt;
===Dumping===&lt;br /&gt;
Taken from an old version of [[User:Jackard|Jackard's user page]].&lt;br /&gt;
&lt;br /&gt;
To use, first have your bookeeper do enough desk work so you can view individual items in the stocks listing.  Then bring it up and press del to quickly mark stuff.  To adjust the key repeat rate, edit the KEY_HOLD_MS value in \data\init\init.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
del::&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
  send d{down}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  send {del}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dumping script by [[User:Dukederek|Dukederek]]:&lt;br /&gt;
&lt;br /&gt;
This script uses a system similar the commands in the designations menu to mark the contents of a large area for dumping.  [[User:Dukederek|My talk page]] has instruction on how to use this if it is not evident from the code below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^return::&lt;br /&gt;
x = 0&lt;br /&gt;
y = 0&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
Loop&lt;br /&gt;
{&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&lt;br /&gt;
if keypress = w&lt;br /&gt;
{&lt;br /&gt;
y := --y&lt;br /&gt;
Send {up}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = s&lt;br /&gt;
{&lt;br /&gt;
y := ++y&lt;br /&gt;
Send {down}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = a&lt;br /&gt;
{&lt;br /&gt;
x := --x&lt;br /&gt;
Send {left}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = d&lt;br /&gt;
{&lt;br /&gt;
x := ++x&lt;br /&gt;
Send {right}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = k&lt;br /&gt;
{&lt;br /&gt;
break&lt;br /&gt;
}&lt;br /&gt;
else if keypress = q&lt;br /&gt;
{&lt;br /&gt;
Return&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
SetKeyDelay 1&lt;br /&gt;
Send {left %x%}&lt;br /&gt;
Send {up %y%}&lt;br /&gt;
x := x + 1&lt;br /&gt;
y := y + 1&lt;br /&gt;
Loop %y%&lt;br /&gt;
{&lt;br /&gt;
Loop %x%&lt;br /&gt;
{&lt;br /&gt;
Send d&lt;br /&gt;
Send {NumpadAdd}&lt;br /&gt;
Send d&lt;br /&gt;
Send {NumpadAdd}&lt;br /&gt;
Send d&lt;br /&gt;
Send {right}&lt;br /&gt;
}&lt;br /&gt;
Send {left %x%}&lt;br /&gt;
Send {down}&lt;br /&gt;
}&lt;br /&gt;
Loop %y%&lt;br /&gt;
{&lt;br /&gt;
Send {up}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rewalling ===&lt;br /&gt;
Taken from [[User:Valdemar|Valdemar's user page]].&lt;br /&gt;
&lt;br /&gt;
This is a macro to aid with rewalling. To use, copy-paste the script into a new .ahk file and run the script with AutoHotkey. Then, in Dwarf Fortress, press b-C-w, move the cursor to where you want to start the wall, and hold Ctrl-Shift-Arrowkey, using the direction you want to rewall in. To build floors, press b-C-f instead, and use Ctrl-Alt-Arrowkey. To stop, just release the keys.&lt;br /&gt;
&lt;br /&gt;
The script will use the first material in the list. I suggest you create a stockpile near the construction site that only accepts the item you wish to build with and temporarily forbid any nearby materials you don't want to build with. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$^+Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
$^!Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ProcessEvent(direction, type)&lt;br /&gt;
{   &lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send %type%&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {%direction%}&lt;br /&gt;
    Loop&lt;br /&gt;
    {&lt;br /&gt;
        if not GetKeyState(direction, &amp;quot;P&amp;quot;) &lt;br /&gt;
            break  &lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send %type%&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {%direction%}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Grid-by-grid designation===&lt;br /&gt;
For easier diagonal and fancy mining.  Assumes that DF is active.  &amp;quot;^!&amp;quot; means ctrl-alt-direction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^!NumpadEnd::&lt;br /&gt;
send {Enter}{Enter}{NumpadEnd}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadDown::&lt;br /&gt;
send {Enter}{Enter}{NumpadDown}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgDn::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgDn}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadLeft::&lt;br /&gt;
send {Enter}{Enter}{NumpadLeft}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadRight::&lt;br /&gt;
send {Enter}{Enter}{NumpadRight}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadHome::&lt;br /&gt;
send {Enter}{Enter}{NumpadHome}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadUp}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgUp}&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Room-designation macros===&lt;br /&gt;
&lt;br /&gt;
====Valdemar's Designator Macro====&lt;br /&gt;
This macro can read a spreadsheet and designate rooms according to it. [http://www.bay12games.com/cgi-local/ultimatebb.cgi?ubb=get_topic&amp;amp;f=2&amp;amp;t=001507 Forum Thread/Download]&lt;br /&gt;
&lt;br /&gt;
====Fedor's chambered circle====&lt;br /&gt;
A circular room with eight equal-sized chambers, suitable for everything from housing to workshops to a mausoleum.&amp;lt;br&amp;gt;&lt;br /&gt;
[http://mkv25.net/dfma/movie-216-room-designationmacro01 See this macro in action]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Macros_and_Keymaps_Examples#Room-designation Macro 01|Macro text]]&lt;br /&gt;
&lt;br /&gt;
====Valdemar's bedroom complex====&lt;br /&gt;
A large fractal bedroom/dining complex, with 56 bedrooms and room for 24 tables.&lt;br /&gt;
&lt;br /&gt;
You can press Alt-B to create a bedroom block, or Alt-C to create a full complex with 4 bedroom blocks and a dining block in the center.&lt;br /&gt;
&lt;br /&gt;
Note - the macro is much faster than the demo movie shows, it is done in under a minute.&lt;br /&gt;
&lt;br /&gt;
[http://mkv25.net/dfma/movie-252 Demo Movie]&lt;br /&gt;
&lt;br /&gt;
[http://www.pindi.us/files/fractalbr.zip Download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Game_Interface FAQ}}&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35248</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35248"/>
		<updated>2008-01-21T20:41:13Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Code Below: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
=== Code Below: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
        Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31737</id>
		<title>40d:Macros and keymaps</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=40d:Macros_and_keymaps&amp;diff=31737"/>
		<updated>2008-01-21T20:39:32Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Playing Dwarf Fortress means lots of typing.  Although the game (as of version v0.27.169.33) has no internal macro/keymap system, using an external program can save you a great deal of time when dumping, rewalling, designating, and so forth.&lt;br /&gt;
&lt;br /&gt;
#  Go to [[Utilities#AutoHotKey]] and download AutoHotKey.  Installation is simple and the program uses few system resources.&lt;br /&gt;
#  Write macro scripts (file type .ahk), which may contain any number of commands.  You activate scripts by double-clicking .ahk files and deactivate them by right-clicking the AutoHotKey icon on the task bar.  Both of these can be done at any time - even right in the middle of a game.  AutoHotKey also allows for automated activation of scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AutoHotKey Examples ==&lt;br /&gt;
&lt;br /&gt;
===Dumping===&lt;br /&gt;
Taken from an old version of [[User:Jackard|Jackard's user page]].&lt;br /&gt;
&lt;br /&gt;
To use, first have your bookeeper do enough desk work so you can view individual items in the stocks listing.  Then bring it up and press del to quickly mark stuff.  To adjust the key repeat rate, edit the KEY_HOLD_MS value in \data\init\init.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
del::&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
  send d{down}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  send {del}&lt;br /&gt;
  return&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dumping script by [[User:Dukederek|Dukederek]]:&lt;br /&gt;
&lt;br /&gt;
This script uses a system similar the commands in the designations menu to mark the contents of a large area for dumping.  [[User:Dukederek|My talk page]] has instruction on how to use this if it is not evident from the code below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^return::&lt;br /&gt;
x = 0&lt;br /&gt;
y = 0&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
Loop&lt;br /&gt;
{&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&lt;br /&gt;
if keypress = w&lt;br /&gt;
{&lt;br /&gt;
y := --y&lt;br /&gt;
Send {up}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = s&lt;br /&gt;
{&lt;br /&gt;
y := ++y&lt;br /&gt;
Send {down}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = a&lt;br /&gt;
{&lt;br /&gt;
x := --x&lt;br /&gt;
Send {left}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = d&lt;br /&gt;
{&lt;br /&gt;
x := ++x&lt;br /&gt;
Send {right}&lt;br /&gt;
continue&lt;br /&gt;
}&lt;br /&gt;
else if keypress = k&lt;br /&gt;
{&lt;br /&gt;
break&lt;br /&gt;
}&lt;br /&gt;
else if keypress = q&lt;br /&gt;
{&lt;br /&gt;
Return&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
SetKeyDelay 1&lt;br /&gt;
Send {left %x%}&lt;br /&gt;
Send {up %y%}&lt;br /&gt;
x := x + 1&lt;br /&gt;
y := y + 1&lt;br /&gt;
Loop %y%&lt;br /&gt;
{&lt;br /&gt;
Loop %x%&lt;br /&gt;
{&lt;br /&gt;
Send d&lt;br /&gt;
Send {NumpadAdd}&lt;br /&gt;
Send d&lt;br /&gt;
Send {right}&lt;br /&gt;
}&lt;br /&gt;
Send {left %x%}&lt;br /&gt;
Send {down}&lt;br /&gt;
}&lt;br /&gt;
Loop %y%&lt;br /&gt;
{&lt;br /&gt;
Send {up}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rewalling ===&lt;br /&gt;
Taken from [[User:Valdemar|Valdemar's user page]].&lt;br /&gt;
&lt;br /&gt;
This is a macro to aid with rewalling. To use, copy-paste the script into a new .ahk file and run the script with AutoHotkey. Then, in Dwarf Fortress, press b-C-w, move the cursor to where you want to start the wall, and hold Ctrl-Shift-Arrowkey, using the direction you want to rewall in. To build floors, press b-C-f instead, and use Ctrl-Alt-Arrowkey. To stop, just release the keys.&lt;br /&gt;
&lt;br /&gt;
The script will use the first material in the list. I suggest you create a stockpile near the construction site that only accepts the item you wish to build with and temporarily forbid any nearby materials you don't want to build with. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$^+Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
$^+Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
$^!Left:: ProcessEvent(&amp;quot;Left&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Right:: ProcessEvent(&amp;quot;Right&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Up:: ProcessEvent(&amp;quot;Up&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
$^!Down:: ProcessEvent(&amp;quot;Down&amp;quot;,&amp;quot;f&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ProcessEvent(direction, type)&lt;br /&gt;
{   &lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {Enter}&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send %type%&lt;br /&gt;
    Sleep 100&lt;br /&gt;
    Send {%direction%}&lt;br /&gt;
    Loop&lt;br /&gt;
    {&lt;br /&gt;
        if not GetKeyState(direction, &amp;quot;P&amp;quot;) &lt;br /&gt;
            break  &lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {Enter}&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send %type%&lt;br /&gt;
        Sleep 100&lt;br /&gt;
        Send {%direction%}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Grid-by-grid designation===&lt;br /&gt;
For easier diagonal and fancy mining.  Assumes that DF is active.  &amp;quot;^!&amp;quot; means ctrl-alt-direction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^!NumpadEnd::&lt;br /&gt;
send {Enter}{Enter}{NumpadEnd}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadDown::&lt;br /&gt;
send {Enter}{Enter}{NumpadDown}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgDn::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgDn}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadLeft::&lt;br /&gt;
send {Enter}{Enter}{NumpadLeft}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadRight::&lt;br /&gt;
send {Enter}{Enter}{NumpadRight}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadHome::&lt;br /&gt;
send {Enter}{Enter}{NumpadHome}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadUp}&lt;br /&gt;
return&lt;br /&gt;
^!NumpadPgUp::&lt;br /&gt;
send {Enter}{Enter}{NumpadPgUp}&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Room-designation macros===&lt;br /&gt;
&lt;br /&gt;
====Valdemar's Designator Macro====&lt;br /&gt;
This macro can read a spreadsheet and designate rooms according to it. [http://www.bay12games.com/cgi-local/ultimatebb.cgi?ubb=get_topic&amp;amp;f=2&amp;amp;t=001507 Forum Thread/Download]&lt;br /&gt;
&lt;br /&gt;
====Fedor's chambered circle====&lt;br /&gt;
A circular room with eight equal-sized chambers, suitable for everything from housing to workshops to a mausoleum.&amp;lt;br&amp;gt;&lt;br /&gt;
[http://mkv25.net/dfma/movie-216-room-designationmacro01 See this macro in action]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Macros_and_Keymaps_Examples#Room-designation Macro 01|Macro text]]&lt;br /&gt;
&lt;br /&gt;
====Valdemar's bedroom complex====&lt;br /&gt;
A large fractal bedroom/dining complex, with 56 bedrooms and room for 24 tables.&lt;br /&gt;
&lt;br /&gt;
You can press Alt-B to create a bedroom block, or Alt-C to create a full complex with 4 bedroom blocks and a dining block in the center.&lt;br /&gt;
&lt;br /&gt;
Note - the macro is much faster than the demo movie shows, it is done in under a minute.&lt;br /&gt;
&lt;br /&gt;
[http://mkv25.net/dfma/movie-252 Demo Movie]&lt;br /&gt;
&lt;br /&gt;
[http://www.pindi.us/files/fractalbr.zip Download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Game_Interface FAQ}}&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35247</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35247"/>
		<updated>2008-01-21T19:35:19Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* Dump Macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
=== Code Below: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=40d_Talk:Macros_and_keymaps&amp;diff=33450</id>
		<title>40d Talk:Macros and keymaps</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=40d_Talk:Macros_and_keymaps&amp;diff=33450"/>
		<updated>2008-01-21T17:44:03Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: /* dump macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Is 'Playing Dungeon Fortress' (first few words of the article) supposed to be a joke? --[[User:Valdemar|Valdemar]] 21:36, 25 December 2007 (EST)&lt;br /&gt;
:Probably meant to say &amp;quot;fortress mode&amp;quot;... Must be a typo which got overlooked. --[[User:Eagle of Fire|Eagle of Fire]] 21:41, 25 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== dump macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro that works a bit like the actual designation commands (with a few limitations). Is it okay just to add it to this page?&lt;br /&gt;
&lt;br /&gt;
I have put it on my userpage now. someone with more authority can now place it where they wish&lt;br /&gt;
&lt;br /&gt;
[[User:Dukederek|Dukederek]] 12:44, 21 January 2008 (EST)&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35246</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35246"/>
		<updated>2008-01-21T17:42:44Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35245</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35245"/>
		<updated>2008-01-21T17:42:24Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
IfWinActive Dwarf Fortress&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
else&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35244</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35244"/>
		<updated>2008-01-21T17:41:06Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&lt;br /&gt;
x = 0&lt;br /&gt;
y = 0&lt;br /&gt;
IfWinActive Dwarf Fortress&lt;br /&gt;
{&lt;br /&gt;
Loop&lt;br /&gt;
{&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&lt;br /&gt;
&lt;br /&gt;
if keypress = w&lt;br /&gt;
    	{&lt;br /&gt;
	y := --y&lt;br /&gt;
	Send {up}&lt;br /&gt;
	continue&lt;br /&gt;
	}&lt;br /&gt;
else if keypress = s&lt;br /&gt;
    	{&lt;br /&gt;
	y := ++y&lt;br /&gt;
	Send {down}&lt;br /&gt;
	continue&lt;br /&gt;
	}&lt;br /&gt;
else if keypress = a&lt;br /&gt;
    	{&lt;br /&gt;
	x := --x&lt;br /&gt;
	Send {left}&lt;br /&gt;
	continue&lt;br /&gt;
	}&lt;br /&gt;
else if keypress = d&lt;br /&gt;
    	{&lt;br /&gt;
	x := ++x&lt;br /&gt;
	Send {right}&lt;br /&gt;
	continue&lt;br /&gt;
	}&lt;br /&gt;
else if keypress = k &lt;br /&gt;
	{&lt;br /&gt;
	break&lt;br /&gt;
	}&lt;br /&gt;
else if keypress = q&lt;br /&gt;
	{&lt;br /&gt;
	Return&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
SetKeyDelay 1&lt;br /&gt;
Send {left %x%}&lt;br /&gt;
Send {up %y%}&lt;br /&gt;
x := x + 1&lt;br /&gt;
y := y + 1&lt;br /&gt;
&lt;br /&gt;
Loop %y%&lt;br /&gt;
{&lt;br /&gt;
	Loop %x%&lt;br /&gt;
	{&lt;br /&gt;
	Send d&lt;br /&gt;
	Send {NumpadAdd}&lt;br /&gt;
	Send d&lt;br /&gt;
	Send {right}&lt;br /&gt;
	}&lt;br /&gt;
Send {left %x%}&lt;br /&gt;
Send {down}&lt;br /&gt;
}&lt;br /&gt;
Loop %y%&lt;br /&gt;
{&lt;br /&gt;
Send {up}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35243</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35243"/>
		<updated>2008-01-21T17:37:55Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35242</id>
		<title>User:Dukederek</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=User:Dukederek&amp;diff=35242"/>
		<updated>2008-01-21T17:37:20Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: New page: == Dump Macro  I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you s...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dump Macro&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro for AutoHotKey which works something like the designation tools in the actual DF interface. The current limitation is that it only works if you start at the top left of the group of tiles you wish to dump and finish at the bottom right.&lt;br /&gt;
&lt;br /&gt;
I have mapped it to &amp;quot;ctrl-return&amp;quot; so that it can be left running when not needed and not interfere with any other commands in DF.&lt;br /&gt;
&lt;br /&gt;
To use.&lt;br /&gt;
* Go to the top leftmost square you want to dump using the k &amp;quot;look around&amp;quot; button&lt;br /&gt;
* Press &amp;quot;ctrl-return&amp;quot;&lt;br /&gt;
* Using w a s d, move the yellow cross to the bottom rightmost square of things you wish to dump. To cancel press q&lt;br /&gt;
* press k&lt;br /&gt;
&lt;br /&gt;
The limitations are that only the first two items on each tile's list are set to be dumped. Also, it seems non-trivial to map this to the arrow keys rather than w a s d but that's not so bad right?&lt;br /&gt;
&lt;br /&gt;
Here is the code, for those not in the know [http://www.autohotkey.com install autohotkey], paste the text below into a file named &amp;quot;blockdump.ahk&amp;quot; or something, double click the file so there is a green and white &amp;quot;H&amp;quot; icon in your system tray.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ^return::&amp;lt;br&amp;gt;&lt;br /&gt;
x = 0&amp;lt;br&amp;gt;&lt;br /&gt;
y = 0&amp;lt;br&amp;gt;&lt;br /&gt;
Loop&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Input, keypress, B, {esc} , w,a,s,d,k,q&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
if keypress = w&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := --y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = s&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	y := ++y&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = a&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := --x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {left}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = d&amp;lt;br&amp;gt;&lt;br /&gt;
    	{&amp;lt;br&amp;gt;&lt;br /&gt;
	x := ++x&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	continue&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = k &amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	break&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
else if keypress = q&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Return&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
SetKeyDelay 1&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up %y%}&amp;lt;br&amp;gt;&lt;br /&gt;
x := x + 1&amp;lt;br&amp;gt;&lt;br /&gt;
y := y + 1&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
	Loop %x%&amp;lt;br&amp;gt;&lt;br /&gt;
	{&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {NumpadAdd}&amp;lt;br&amp;gt;&lt;br /&gt;
	Send d&amp;lt;br&amp;gt;&lt;br /&gt;
	Send {right}&amp;lt;br&amp;gt;&lt;br /&gt;
	}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {left %x%}&amp;lt;br&amp;gt;&lt;br /&gt;
Send {down}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
Loop %y%&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
Send {up}&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
return&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=40d_Talk:Macros_and_keymaps&amp;diff=33449</id>
		<title>40d Talk:Macros and keymaps</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=40d_Talk:Macros_and_keymaps&amp;diff=33449"/>
		<updated>2008-01-21T16:58:57Z</updated>

		<summary type="html">&lt;p&gt;Dukederek: dump macro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Is 'Playing Dungeon Fortress' (first few words of the article) supposed to be a joke? --[[User:Valdemar|Valdemar]] 21:36, 25 December 2007 (EST)&lt;br /&gt;
:Probably meant to say &amp;quot;fortress mode&amp;quot;... Must be a typo which got overlooked. --[[User:Eagle of Fire|Eagle of Fire]] 21:41, 25 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== dump macro ==&lt;br /&gt;
&lt;br /&gt;
I have written a dump macro that works a bit like the actual designation commands (with a few limitations). Is it okay just to add it to this page?&lt;/div&gt;</summary>
		<author><name>Dukederek</name></author>
	</entry>
</feed>