<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Get Info: #keyquencer</title>
    <description>Posts tagged “keyquencer” — Blog of independent game and app developer Matt Sephton. Featuring vintage Macintosh, game development, digital artwork, Japanese esoterica, video game reviews, hacks and tips, and much more.</description>
    <link>https://blog.gingerbeardman.com/tag/keyquencer/</link>
    <atom:link href="https://blog.gingerbeardman.com/tag/keyquencer/index.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 11 Jul 2026 16:22:12 +0000</pubDate>
    <lastBuildDate>Sat, 11 Jul 2026 16:22:12 +0000</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>

    
      
        <item>
          <title>Adding the “Move to Trash” function to System 7.1</title>
          <description>&lt;p&gt;First, a little bit of Macintosh History. You probably know that on modern macOS you can select a file in Finder, on your Desktop, or in an app, and send it to the Trash by choosing the Move to Trash menu item, or by pressing Cmd+Backspace/Delete. This keyboard shortcut was added in System 7.5.3 where it was largely unadvertised and somewhat of a secret feature, but quickly became indispensable for those who knew. Of course, these days it is proudly displayed in macOS Finder menu.&lt;/p&gt;

&lt;p&gt;Fast forward to today, when &lt;a href=&quot;https://twitter.com/james_wages&quot;&gt;James Wages&lt;/a&gt; asked about a good way to do this on System 7.1, and posed a partial solution along with a challenge. But we’ll get to that in a moment. Since I regularly use &lt;a href=&quot;/2021/04/17/turning-an-ipad-pro-into-the-ultimate-classic-macintosh/&quot;&gt;System 7 on my iPad Pro&lt;/a&gt; I’d also missed this function and had come up with a few different workarounds to map Move to Trash to Cmd+Backspace/Delete.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;#keyquencer&quot;&gt;KeyQuencer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#finderhack&quot;&gt;FinderHack &amp;amp; KeyQuencer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#hexedit&quot;&gt;FinderHack &amp;amp; HexEdit&lt;/a&gt; &lt;br /&gt;Bonus:&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#keyquencer-redux&quot;&gt;KeyQuencer, Redux&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;keyquencer&quot;&gt;KeyQuencer&lt;/h2&gt;

&lt;p&gt;The first workaround was to script a &lt;a href=&quot;https://macintoshgarden.org/apps/keyquencer&quot;&gt;KeyQuencer&lt;/a&gt; macro to simulate the mouse drag of the selected item to the trash can. This relied on you positioning the mouse pointer over the selected file and also making sure the Trash icon was always in the required position on screen. It worked, but it was less than ideal because it was far too fragile. I’ll leave reproducing this as an excercise for the reader.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;KeyQuencer&lt;/em&gt; is one of my favourite and most used classic Macintosh apps, written by prolific Italian developer &lt;a href=&quot;http://www.montalcini.com&quot;&gt;Alessandro Levi Montalcini&lt;/a&gt; who is still developing &lt;a href=&quot;https://www.usboverdrive.com&quot;&gt;useful things&lt;/a&gt; today! Anyway, it could be used for a wide variety of macro and automation purposes. It was very versatile as it contained its own scripting language and a dictionary of functions that touched most aspects of System 7. I use it to map &lt;a href=&quot;/tag/keyquencer/&quot;&gt;all sorts of esoteric functions&lt;/a&gt; to hotkeys, like changing screen resolutions and colour depth, or performing complicated multi-step tasks on a single key stroke. An equivalent for modern macOS is &lt;a href=&quot;https://www.keyboardmaestro.com/main/&quot;&gt;Keyboard Maestro&lt;/a&gt;, which is no doubt more capable but also more difficult to use.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;finderhack&quot;&gt;FinderHack&lt;/h2&gt;

&lt;p&gt;So, James mentioned &lt;a href=&quot;https://macintoshgarden.org/apps/finderhack&quot;&gt;FinderHack&lt;/a&gt; which is a system Extension that gave earlier versions of System 7 a similar set of Finder features to those introduced in 7.5.3. But, crucially, it mapped the Move to Trash hotkey to Cmd+T, which is different enough to become annoying as you can no longer rely on muscle memory. The challenge: how can we map this to the modern Cmd+Backspace/Delete shortcut?&lt;/p&gt;

&lt;p&gt;So, I turned to KeyQuencer once again and created a short macro which would type the Cmd+T key combination and I assigned it to Cmd+Backspace/Delete. It worked! Pressing my hotkey typed the FinderHack hotkey.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/move-to-trash-1.png&quot; alt=&quot;PNG&quot; title=&quot;This macro, bound to Cmd+Backspace/Delete, types Cmd+T to effectively map one hotkey to another&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So we already have a good solution but resources are often scarce on classic Macintosh, so I wondered if I might be able to cut out the middleman and change the keyboard shortcut by modifying FinderHack directly. James had noticed that ResEdit would not allow you to type the Backspace character. I confirmed the same was true in Resorcerer. So, what to do?&lt;/p&gt;

&lt;h2 id=&quot;hexedit&quot;&gt;HexEdit&lt;/h2&gt;

&lt;p&gt;Opening FinderHack directly in &lt;a href=&quot;https://macintoshgarden.org/apps/hexedit&quot;&gt;HexEdit&lt;/a&gt; we can scroll down a little to find the menu definitions, find “Move to Trash” and can change the following hex value from 54 (“T”) to 08 (“Backspace/Delete”), those being ASCII values, and reminding ourselves that the Backspace/Delete key is different than Forward Delete key on some Apple keyboards that have both.&lt;/p&gt;

&lt;div class=&quot;carousel__holder&quot;&gt;
    &lt;div class=&quot;carousel&quot;&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;a&quot; checked=&quot;checked&quot; /&gt;
        
          &lt;input class=&quot;carousel__activator&quot; type=&quot;radio&quot; name=&quot;carousel&quot; id=&quot;b&quot; /&gt;
        
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
          
          
          
          
          &lt;div class=&quot;carousel__controls&quot;&gt;
              &lt;label class=&quot;carousel__control carousel__control--backward&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
              &lt;label class=&quot;carousel__control carousel__control--forward&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
          &lt;/div&gt;
        
        &lt;div class=&quot;carousel__track&quot;&gt;
          &lt;ul&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/move-to-trash-2.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/move-to-trash-2.png&quot; /&gt;&lt;/li&gt;
            
            &lt;li class=&quot;carousel__slide&quot; style=&quot;background-image: url(&apos;https://cdn.gingerbeardman.com/images/posts/move-to-trash-3.png&apos;);&quot;&gt;&lt;img class=&quot;carousel__staticimage&quot; src=&quot;https://cdn.gingerbeardman.com/images/posts/move-to-trash-3.png&quot; /&gt;&lt;/li&gt;
            
          &lt;/ul&gt;
        &lt;/div&gt;
        &lt;div class=&quot;carousel__indicators&quot;&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;a&quot;&gt;&lt;/label&gt;
            
              &lt;label class=&quot;carousel__indicator&quot; for=&quot;b&quot;&gt;&lt;/label&gt;
            
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
.carousel__holder {width: 100%; position: relative; padding-bottom: 100%; margin: 1rem 0 1rem;}
.carousel {
  height: 100%;
  width: 100%;
  overflow: hidden;
  text-align: center;
  position: absolute;
  padding: 0;
}
.carousel__staticimage,
.carousel__controls,
.carousel__activator {
  display: none;
}

.carousel__activator:nth-of-type(1):checked ~ .carousel__track {
  -webkit-transform: translateX(-000%);
          transform: translateX(-000%);
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__slide:nth-of-type(1) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__controls:nth-of-type(1) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(1) {
  opacity: 1;
}

.carousel__activator:nth-of-type(2):checked ~ .carousel__track {
  -webkit-transform: translateX(-100%);
          transform: translateX(-100%);
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__slide:nth-of-type(2) {
  transition: opacity 0.5s, -webkit-transform 0.5s;
  transition: opacity 0.5s, transform 0.5s;
  transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
  -webkit-transform: scale(1);
          transform: scale(1);
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__controls:nth-of-type(2) {
  display: block;
  opacity: 1;
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(2) {
  opacity: 1;
}


.carousel__control {
  height: 30px;
  width: 30px;
  margin-top: -15px;
  top: 50%;
  position: absolute;
  display: block;
  cursor: pointer;
  border-width: 5px 5px 0 0;
  border-style: solid;
  opacity: 0.35;
  opacity: 1;
  outline: 0;
  z-index: 3;
  color: #fafafa;
  mix-blend-mode: difference;
}
.carousel__control:hover {
  opacity: 1;
}
.carousel__control--backward {
  left: 20px;
  -webkit-transform: rotate(-135deg);
          transform: rotate(-135deg);
}
.carousel__control--forward {
  right: 20px;
  -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
}
.carousel__indicators {
  position: absolute;
  bottom: 20px;
  width: 100%;
  text-align: center;
}
.carousel__indicator {
  height: 10px;
  width: 10px;
  border-radius: 100%;
  display: inline-block;
  z-index: 2;
  cursor: pointer;
  opacity: 0.35;
  margin: 0 2.5px 0 2.5px;
}
.carousel__indicator:hover {
  opacity: 0.75;
}
.carousel__track {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 0;
  margin: 0;
  transition: -webkit-transform 0.5s ease 0s;
  transition: transform 0.5s ease 0s;
  transition: transform 0.5s ease 0s, -webkit-transform 0.5s ease 0s;
}
.carousel__track .carousel__slide {
  display: block;
  top: 0;
  left: 0;
  right: 0;
  opacity: 1;
}

.carousel__track .carousel__slide:nth-of-type(1) {
  -webkit-transform: translateX(000%) translateZ(0);
          transform: translateX(000%) translateZ(0);
}

.carousel__track .carousel__slide:nth-of-type(2) {
  -webkit-transform: translateX(100%) translateZ(0);
          transform: translateX(100%) translateZ(0);
}


.carousel--scale .carousel__slide {
  -webkit-transform: scale(0);
          transform: scale(0);
}
.carousel__slide {
  height: 100%;
  position: absolute;
  opacity: 0;
  overflow: hidden;
}
.carousel__slide .overlay {height: 100%;}
.carousel--thumb .carousel__indicator {
  height: 30px;
  width: 30px;
}
.carousel__indicator {
  background-color: #fafafa;
}

.carousel__slide:nth-of-type(1),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(1) {
  background-size: cover;
  background-position: center;
}

.carousel__slide:nth-of-type(2),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(2) {
  background-size: cover;
  background-position: center;
}

&lt;/style&gt;

&lt;script&gt;
  function isVisible(el) {
        while (el) {
            if (el === document) {
                return true;
            }

            var $style = window.getComputedStyle(el, null);

            if (!el) {
                return false;
            } else if (!$style) {
                return false;
            } else if ($style.display === &apos;none&apos;) {
                return false;
            } else if ($style.visibility === &apos;hidden&apos;) {
                return false;
            } else if (+$style.opacity === 0) {
                return false;
            } else if (($style.display === &apos;block&apos; || $style.display === &apos;inline-block&apos;) &amp;&amp;
                $style.height === &apos;0px&apos; &amp;&amp; $style.overflow === &apos;hidden&apos;) {
                return false;
            } else {
                return $style.position === &apos;fixed&apos; || isVisible(el.parentNode);
            }
        }
  }
  
  setInterval(function(){
    var j=0;
    var elements = document.querySelectorAll(&apos;.carousel__control--forward&apos;);
    for(i=(elements.length - 1);i&gt;-1;i--) {
      if(isVisible(elements[i])) j=i;
    }
    elements[j].click();
  },7000);
  
&lt;/script&gt;

&lt;p&gt;The final modified file is up over at Macintosh Garden: &lt;a href=&quot;https://macintoshgarden.org/apps/finderhack&quot;&gt;macintoshgarden.org/apps/finderhack&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/move-to-trash-4.png&quot; alt=&quot;PNG&quot; title=&quot;Notice that System 7 has no glyph for the Backspace key&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Removing the confirmation alert&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used a &lt;a href=&quot;https://github.com/fuzziqersoftware/resource_dasm/issues/77&quot;&gt;disassembler&lt;/a&gt; to figure out the code that was responsible for showing the confirmation alert that appears after pressing the hotkey, but I wasn’t sure how best to remove it. So I asked on 68KMLA.org and user &lt;em&gt;cheesestraws&lt;/em&gt; came up with a solution (thanks!) that involved NOPing out the Alert syscall setup, invokation, and return, and making the comparison that usually checks the alert button always default to the OK. I was so close to figuring out this solution myself, but I lacked a key bit of knowledge for how to figure out the hex code for a totally new instruction. Well, now I know how to do that! &lt;a href=&quot;https://68kmla.org/bb/index.php?threads/skipping-a-confirmation-alert-and-doing-the-ok-code-path.47220/post-529695&quot;&gt;Here’s all the details of how to change the machine code&lt;/a&gt;. I could have and probablt should have used Ghidra to figure out this edit to the code.&lt;/p&gt;

&lt;p&gt;Once this was done it became obvious how much of a hack FinderHack really is. After deleting the file the icon of the now missing file persists in Finder for up to a few seconds on my emulated Mac, and up to 20 seconds on period hardware! This is unacceptable, so I had to go deeper.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;keyquencer-redux&quot;&gt;KeyQuencer, Redux&lt;/h2&gt;

&lt;p&gt;I went back to old faithful, KeyQuencer, to see if there was a way I could force Finder to refresh the icon more quickly. Whilst I was reading the docs I saw the following:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;What Is KeyQuencer?

KeyQuencer is a utility that lets you create shortcuts, called macros, that
perform a series of tasks with a single keystroke. A macro is a set of
instructions that KeyQuencer uses to perform a task on a computer, for
example you can use KeyQuencer macros to:

   * Apply shortcuts directly to the current Finder selection, like moving
     items to the Trash.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Well! It turns out KeyQuencer could have solved our problem from day one! Lesson learned: RTFM.&lt;/p&gt;

&lt;p&gt;So, how do we go about setting up KeyQuencer to enable this feature? Well, before we get to that let’s talk about how KeyQuencer does its thing. It consists of three main parts:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;em&gt;KeyQuencer Engine&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;one or more &lt;em&gt;KeyQuencer Extensions&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;KeyQuencer Panel&lt;/em&gt; and/or &lt;em&gt;KeyQuencer Editor&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;one or more &lt;em&gt;KeyQuencer Macros&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The beating heart of KeyQuencer is the &lt;em&gt;KeyQuencer Engine&lt;/em&gt; system extension that lives in the usual System/Extensions folder, along with a folder in System called &lt;em&gt;KeyQuencer Extensions&lt;/em&gt; that contains KeyQuencer’s own type of extensions. Still with me?&lt;/p&gt;

&lt;p&gt;Inside the &lt;em&gt;KeyQuencer Extensions&lt;/em&gt; folder you put any KeyQuencer Extension files that you want to use, by copying them from the KeyQuencer installation folder. This was a method to keep memory usage low by only loading the functions you’re using rather than the whole suite. So if you’re using a function from the File category, you copy the “File” KeyQuencer Extension in there.&lt;/p&gt;

&lt;p&gt;Once all that is set up you can create/add KeyQuencer Macros, using either KeyQuencer Panel or KeyQuencer Editor. There are lots of sample macros included with the app to get you started, and many were made and shared by the community. The app also includes detailed command help so you know exactly what is possible and how to make it so. Eventually you can construct your own macro, which is what I’ll do here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step: words&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Download &lt;a href=&quot;https://macintoshgarden.org/apps/keyquencer&quot;&gt;KeyQuencer 2.5.6&lt;/a&gt; which gives us a folder called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KeyQuencer 2.5.6 99/07/18&lt;/code&gt; and copy the following files to their destinations:
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KeyQuencer Engine&lt;/code&gt; goes in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System/Extensions&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KeyQuencer Panel&lt;/code&gt; goes in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System/Control Panels&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KeyQuencer Extensions/Archive and Files/File&lt;/code&gt; goes in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System/KeyQuencer Extensions&lt;/code&gt; (create the destination folder)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Install &lt;a href=&quot;https://macintoshgarden.org/apps/applescript-11&quot;&gt;AppleScript 1.1&lt;/a&gt; &lt;em&gt;Finder Scripting Software&lt;/em&gt; (this is the updated &lt;em&gt;Scriptable Finder 7.1.3&lt;/em&gt; and &lt;em&gt;Finder Scripting Extension&lt;/em&gt;)&lt;/li&gt;
  &lt;li&gt;Restart the Macintosh when prompted&lt;/li&gt;
  &lt;li&gt;Create the Macro (you could also copy and paste it from a sample macro file):
    &lt;ul&gt;
      &lt;li&gt;Open &lt;em&gt;KeyQuencer Panel&lt;/em&gt; control panel&lt;/li&gt;
      &lt;li&gt;Inside the panel choose File &amp;gt; New Macro&lt;/li&gt;
      &lt;li&gt;Give the macro a name: “Move to Trash”&lt;/li&gt;
      &lt;li&gt;Give the macro a hotkey: Cmd+Backspace/Delete&lt;/li&gt;
      &lt;li&gt;Enter the macro script: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;File move selected to trash enforce&lt;/code&gt; by pasting, typing, or using the gui&lt;/li&gt;
      &lt;li&gt;Click OK&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Select some files and press Cmd+Backspace/Delete to move them to the trash!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step by step: video&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s a screen recording of me doing the above on a fresh System 7.1:&lt;/p&gt;

&lt;lite-youtube style=&quot;aspect-ratio: 4/3;&quot; videoid=&quot;99oQ5zZMHkI&quot; params=&quot;start=0&amp;amp;modestbranding=2&quot;&gt;
&lt;/lite-youtube&gt;

</description>
          <author>by Matt Sephton</author>
          <pubDate>Fri, 12 Apr 2024 22:08:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2024/04/12/adding-the-move-to-trash-function-to-system-7/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2024/04/12/adding-the-move-to-trash-function-to-system-7/</guid>
        </item>
      
    
      
        <item>
          <title>My System 7 software choices</title>
          <description>&lt;p&gt;System 7 is a great operating system. The experience using it today remains very close to modern macOS. It’s surprising how little has changed on our Desktop in the 30 years since. That said, the experience can be improved with the judicious use of additional software.&lt;/p&gt;

&lt;p&gt;When adding things to the system my goal is always to increase quality of life and improve user experience. Functionality is key and nothing is added without careful consideration. If I can install one package to add several functions I’d rather do that than add several individual packages. If I can install software to match modern macOS features or muscle memory then I’ll do so.&lt;/p&gt;

&lt;p&gt;Below are my personal choices that improve my time spent using System 7.&lt;/p&gt;

&lt;h2 id=&quot;control-panels&quot;&gt;Control Panels&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/better-edit-keys&quot;&gt;Better Edit Keys&lt;/a&gt; - adds modern text editing and selection keyboard controls, such as the ability to grow the selection by word&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/capture-402&quot;&gt;Capture&lt;/a&gt; - screen grabbing software&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/capture-ae&quot;&gt;Capture AE&lt;/a&gt; - logger for Apple Events calls&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/aladdin-desktop-tools&quot;&gt;Desktop Makeover&lt;/a&gt; - provides custom Finder features such as menu shortcuts, enhanced diskette icons, allows you to hide Balloon Help&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/draganywindow&quot; title=&quot;https://macintoshgarden.org/apps/draganywindow&quot;&gt;DragAnyWindow&lt;/a&gt; - adds solid dragging of any window, apps can be excluded&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/hidden-finder-features&quot;&gt;Hidden Finder Features&lt;/a&gt; - enables hidden Finder keyboard shortcuts to create aliases by dragging, reveal alias original, and move file to Trash&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/keyquencer&quot;&gt;KeyQuencer&lt;/a&gt; - macro and automation utility, the ultimate tool for power-users&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/popup-folder-201&quot;&gt;PopupFolder&lt;/a&gt; - allows access to folder contents from hierarchical pop-up menu without having to drill down into folders&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/quickeys-353&quot;&gt;QuicKeys&lt;/a&gt; - macro and automation utility, I use it only for composing Apple Event calls&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/smart-scroll&quot;&gt;Smart Scroll&lt;/a&gt; - live scrolling and proportionally sized scrollbar thumb&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/smartlaunch-308&quot;&gt;SmartLaunch&lt;/a&gt; - application launcher, I launch this using Cmd+Return KeyQuencer macro&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/snitch&quot;&gt;Snitch&lt;/a&gt; - Get Info extender, can do batch type/creator changes by summoning whilst holding Shift&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/symbionts-286&quot;&gt;Symbionts&lt;/a&gt; - occasionally used to troubleshoot Control Panels and Extensions&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/windowshade&quot;&gt;WindowShade&lt;/a&gt; - collapse a window into its title bar by double-clicking&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/yesnocancel-121&quot;&gt;YesNoCancel&lt;/a&gt; - adds modern keyboard control to dialog boxes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;extensions&quot;&gt;Extensions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/2020patch&quot;&gt;2020Patch&lt;/a&gt; - fixes year 2020 date bug&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/about&quot;&gt;About&lt;/a&gt; - replacement for About This Macintosh window, with task manager features&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/apollo&quot;&gt;Apollo&lt;/a&gt; - pop-up menu at any location to select and launch apps&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/copypaste-33&quot;&gt;CopyPaste&lt;/a&gt; - multiple clipboard manager, works everywhere but ResEdit!&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macgui.com/downloads/?file_id=26327&quot;&gt;DirtyDesk&lt;/a&gt; - disables Clean Up Desktop menu item&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/natural-order&quot;&gt;Natural Order&lt;/a&gt; - improves sorting order in Finder&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;text-editors&quot;&gt;Text Editors&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://macgui.com/downloads/?file_id=20966&quot;&gt;Alpha&lt;/a&gt; - programmer’s editor, includes TCL scripting&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/anarcho-16&quot;&gt;Anarcho&lt;/a&gt; - has a few unique features&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/bbedit-5&quot;&gt;BBEdit&lt;/a&gt; - packed with features&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macgui.com/downloads/?file_id=21218&quot;&gt;Eddan&lt;/a&gt; - has a way to summon THINK References&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;word-processors&quot;&gt;Word Processors&lt;/h2&gt;

&lt;p&gt;Take your pick of the best:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/macwrite-pro-15&quot;&gt;MacWritePro&lt;/a&gt; 1.5&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/nisus-writer-4&quot;&gt;Nisus Writer&lt;/a&gt; 4&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/microsoft-word&quot;&gt;Word&lt;/a&gt; 5.1&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/wordperfect-35-novell&quot;&gt;WordPerfect&lt;/a&gt; 3.5&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/writenow&quot;&gt;WriteNow&lt;/a&gt; 4&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;other-utilities&quot;&gt;Other Utilities&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/compact-pro&quot;&gt;CompactPro&lt;/a&gt; - file compressor/decompressor&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/graphicconverter-4x&quot;&gt;GraphicConverter&lt;/a&gt; - image file converter&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/disktop-453&quot;&gt;DiskTop&lt;/a&gt; - file manager desk accessory&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/gregs-browser&quot;&gt;Greg’s Browser&lt;/a&gt; - file manager with StuffIt integration&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/masterfinder-13-fat&quot;&gt;MasterFinder&lt;/a&gt; - multi-column file manager&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/mindexpander&quot;&gt;MindExpander&lt;/a&gt; - file decompressor&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/super-resedit-213&quot;&gt;(Super) ResEdit&lt;/a&gt; - resource editor with built-in code viewer&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/resorcerer-125&quot;&gt;Resorcerer&lt;/a&gt; - resource editor with built-in code viewer&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/shrinkwrap-21&quot;&gt;ShrinkWrap&lt;/a&gt; - disk and archiving helper&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.macgui.com/downloads/?file_id=23652&quot;&gt;ShowSizes&lt;/a&gt; - disk usage analyser&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/type-resolve-201&quot;&gt;Type Resolve&lt;/a&gt; - drag-and-drop type/creator changer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;operating-system&quot;&gt;Operating System&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/macintosh-os-755&quot;&gt;System 7.5.3 plus updates&lt;/a&gt; - Apple released this version for free!&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/japanese-language-kit-v12&quot;&gt;Japanese Language Kit&lt;/a&gt; - adds support for Japanese, I use this on a duplicate System folder&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/system-picker&quot;&gt;System Picker&lt;/a&gt; - choose which system folder to boot from&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://macintoshgarden.org/apps/applescript-11&quot;&gt;AppleScript 1.1&lt;/a&gt; - to enable Finder Scripting on &lt;em&gt;System 7.1&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;related-posts&quot;&gt;Related posts&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/17/turning-an-ipad-pro-into-the-ultimate-classic-macintosh&quot;&gt;Turning an iPad Pro into the Ultimate Classic Macintosh&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/21/building-basiliskii-for-ios/&quot;&gt;How to install BasiliskII on your iPad&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/19/automating-interactions-using-apple-events/&quot;&gt;Exploring Custom Keyboards and Automation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/03/28/changing-the-size-of-toolbar-items-using-resedit/&quot;&gt;Optimising Macintosh app toolbars for touch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/24/macintosh-drawing-software-compared/&quot;&gt;Macintosh drawing software compared&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/25/mixing-external-tools-across-deneba-software/&quot;&gt;Mixing External Tools across Deneba software&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;My System 7 software choices&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/05/03/interoperability-of-system-7-and-ios/&quot;&gt;About the interoperability of System 7 and iOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Fri, 30 Apr 2021 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/04/30/my-system-7-software-choices/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/04/30/my-system-7-software-choices/</guid>
        </item>
      
    
      
        <item>
          <title>Changing the text size of a list using Resorcerer</title>
          <description>&lt;p&gt;I sometimes use an app called KeyQuencer Launcher that is part of the KeyQuencer software. The app presents a simple window containing a list of macros allowing quick and easy access.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/changing-textsize-1.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;KeyQuencer Launcher window&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The text in the window is very small, which makes sense as you want to see multiple macros in as little space as possible. However, my use case in System 7 on iPad is a little different as I’d like to see fewer, larger items that are easy to select by touch.&lt;/p&gt;

&lt;p&gt;Knowing a little about how Macintosh apps are put together I thought it should be easy enough to change the text size in the window by modifying the app’s binary code directly. This can be done using a tool called Resorcerer (you could also use Super ResEdit, or ResEdit with the CODE viewer resources installed).&lt;/p&gt;

&lt;p&gt;By searching for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0xA88A&lt;/code&gt; (the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_TextSize&lt;/code&gt; toolbox call) I was lucky enough to find a single place in the app where the text size is set. I changed the value passed to the preceding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;move.m&lt;/code&gt; from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0E&lt;/code&gt; (decimal 14) to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;12&lt;/code&gt; (decimal 18) and the text size was increased.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/changing-textsize-2.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;Toolbox Trap 0xA88A&quot; /&gt;&lt;/p&gt;

&lt;p&gt;That was enough of a solution for me, though it is possible to change the font or to increase text size more dramatically if required.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/changing-textsize-3.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;KeyQuencer Launcher window with increased text size&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;related-posts&quot;&gt;Related posts&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/17/turning-an-ipad-pro-into-the-ultimate-classic-macintosh&quot;&gt;Turning an iPad Pro into the Ultimate Classic Macintosh&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/21/building-basiliskii-for-ios/&quot;&gt;How to install BasiliskII on your iPad&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/19/automating-interactions-using-apple-events/&quot;&gt;Exploring Custom Keyboards and Automation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Optimising Macintosh app toolbars for touch&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/24/macintosh-drawing-software-compared/&quot;&gt;Macintosh drawing software compared&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/25/mixing-external-tools-across-deneba-software/&quot;&gt;Mixing External Tools across Deneba software&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/30/my-system-7-software-choices/&quot;&gt;My System 7 software choices&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/05/03/interoperability-of-system-7-and-ios/&quot;&gt;About the interoperability of System 7 and iOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Wed, 28 Apr 2021 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/04/28/changing-the-text-size-of-a-list-using-resorcerer/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/04/28/changing-the-text-size-of-a-list-using-resorcerer/</guid>
        </item>
      
    
      
        <item>
          <title>Automating interactions using Apple Events</title>
          <description>&lt;p&gt;&lt;a href=&quot;/2021/04/17/turning-an-ipad-pro-into-the-ultimate-classic-macintosh/&quot;&gt;As I’ve previously mentioned&lt;/a&gt;, UltraPaint and artWORKS share a lot of DNA so their structure is effectively identical, including the tool palette. This is a good thing as I intend to automate tool selection in both apps and I’ll take any help 30-year-old software wants to send my way!&lt;/p&gt;

&lt;p&gt;Chapter 6 in the book “The Automatic Mac” (1992, &lt;a href=&quot;https://vintageapple.org/macbooks/&quot;&gt;download&lt;/a&gt;) details a number of ways of scripting graphics programs. They use Canvas as an example, which is great because that is a very close relative to the artWORKS and UltraPaint apps that I use. The book informed a lot of what I’m doing here, though my approach differs because of my available tools and personal preference.&lt;/p&gt;

&lt;h2 id=&quot;simply-clicking&quot;&gt;Simply Clicking&lt;/h2&gt;

&lt;p&gt;My first thought was to try the naive way of selecting tools by just clicking them! If the tool palettes are positioned in the same place (this can also be automated) then macros can simply click at specific screen locations to select a tool. This approach works well for both apps. But this is a very fragile way of automating interactions—if windows are inadvertently moved the automation will break. So, there’s definitely room for improvement.&lt;/p&gt;

&lt;h2 id=&quot;going-deeper&quot;&gt;Going Deeper&lt;/h2&gt;

&lt;p&gt;According to period Apple documentation (&lt;a href=&quot;https://www.google.co.uk/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=&amp;amp;ved=2ahUKEwiIr_OAzYXwAhXErHEKHR_sAcYQFjAAegQIChAD&amp;amp;url=https%3A%2F%2Fdeveloper.apple.com%2Flegacy%2Flibrary%2Fdocumentation%2Fmac%2Fpdf%2FInterapplication_Communication%2FIntro_to_IAC.pdf&amp;amp;usg=AOvVaw0WKA5J59562fzTuOMZ58PG&quot;&gt;PDF&lt;/a&gt;, &lt;a href=&quot;http://mirror.informatimago.com/next/developer.apple.com/documentation/mac/IAC/IAC-94.html&quot;&gt;HTML&lt;/a&gt;) a means of automation was introduced in System 7:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The interapplication communication (IAC) architecture provides a standard and extensible mechanism for communication among Macintosh applications. The IAC architecture makes it possible for your application to&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;provide automated copy and paste operations between your application and other applications&lt;/li&gt;
    &lt;li&gt;be manipulated by means of scripts&lt;/li&gt;
    &lt;li&gt;send and respond to Apple events&lt;/li&gt;
    &lt;li&gt;send and respond to high-level events other than Apple events&lt;/li&gt;
    &lt;li&gt;read and write blocks of data between applications&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sounds perfect—my idea of a good time!&lt;/p&gt;

&lt;h2 id=&quot;apple-events&quot;&gt;Apple Events&lt;/h2&gt;

&lt;p&gt;To support AppleScript, apps were required to offer suites of supported messages and mechanisms. These are advertised through the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aete&lt;/code&gt; resource. ResEdit shows this data as raw hex, unless you install a template to enable it to make sense of it. Resorcerer supports it out of the box. There are a bunch of other tools that can display the data in a human readable way such an Apple-created &lt;a href=&quot;https://staticky.com/mirrors/ftp.apple.com/developer/Development_Kits/AppleScript/Development_Tools/Aete_Editor_Stack_1.0b3/&quot;&gt;HyperCard stack&lt;/a&gt;, a third-party app called &lt;a href=&quot;https://macintoshgarden.org/apps/eightyrez&quot;&gt;EightyRez&lt;/a&gt;, and automation tool &lt;a href=&quot;https://macintoshgarden.org/apps/quickeys-353&quot;&gt;QuicKeys&lt;/a&gt; to name just a few.&lt;/p&gt;

&lt;p&gt;QuicKeys sounded ideal as it lets me query the data, using a set of dropdown menus, and use it to specify automation to try out the Apple Events way of selecting a tool. It worked first time! But it was slow, and there was a distracting loss of window focus as the macro was executed.&lt;/p&gt;

&lt;p&gt;In search of something better turned to my favourite classic automation tool: KeyQuencer. I’d previously searched trough various archives for any available macros, so had a vague memory there was something out there I might be able to use. I dug up AESend, an Apple Events extension for KeyQuencer.&lt;/p&gt;

&lt;p&gt;I used QuicKeys GUI to set up the initial Apple Events call, as it allows you to pick options from drop-down lists. Then I used the Capture AE control panel to decode the Apple Events call into something human readable that I could adapt for use in KeyQuencer. I’d still take that approach for any new Apple Events.&lt;/p&gt;

&lt;p&gt;The result was much faster Apple Events sending and no distracting window focus flickering.&lt;/p&gt;

&lt;h2 id=&quot;two-in-one&quot;&gt;Two-in-One&lt;/h2&gt;

&lt;p&gt;The end result is a macro of two parts: the first section operates artWORKS using Apple Events, continuing without complaint if the app is not open, and the second section operates UltraPaint using simple mouse clicks.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/automating-apple-events.png#pixel&quot; alt=&quot;PNG&quot; title=&quot;Example of a KeyQuencer Macro that works in both artWORKS and UltraPaint&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I plan to adding support for Canvas 3.x at some point as this shares Apple Events support with artWORKS.&lt;/p&gt;

&lt;h2 id=&quot;investigation&quot;&gt;Investigation&lt;/h2&gt;

&lt;p&gt;According to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aete&lt;/code&gt; resource description in both artWORKS and Canvas, selection of Internal Tools using Apple Events is limited to 10 seemingly random tools. This made no sense to me, so I tried specifying higher tools and this experimentation proved that all 18 internal tools are indeed available. I guess the description had been truncated at some point?&lt;/p&gt;

&lt;p&gt;Some time later I read “The Automatic Mac” again and it shows a more complete list of tool values! The order seems to be based on the tool palette in Canvas.&lt;/p&gt;

&lt;p&gt;Even so, I went the extra mile to complete a list of both internal and external tools, shown below.&lt;/p&gt;

&lt;h3 id=&quot;internal-tools-btol&quot;&gt;Internal Tools (btol)&lt;/h3&gt;

&lt;table id=&quot;deneba-btol&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;shor&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;ArcRect&lt;/td&gt;
      &lt;td&gt;7&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Arrow&lt;/td&gt;
      &lt;td&gt;1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;BezierCurve&lt;/td&gt;
      &lt;td&gt;10&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Brush&lt;/td&gt;
      &lt;td&gt;14&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Eraser&lt;/td&gt;
      &lt;td&gt;17&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Free Hand&lt;/td&gt;
      &lt;td&gt;8&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Lasso&lt;/td&gt;
      &lt;td&gt;11&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Line&lt;/td&gt;
      &lt;td&gt;3&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Marquee&lt;/td&gt;
      &lt;td&gt;12&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Oval&lt;/td&gt;
      &lt;td&gt;6&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Paint Bucket&lt;/td&gt;
      &lt;td&gt;15&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Paint Object Creator&lt;/td&gt;
      &lt;td&gt;18&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Pencil&lt;/td&gt;
      &lt;td&gt;16&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Polygon&lt;/td&gt;
      &lt;td&gt;9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Rect&lt;/td&gt;
      &lt;td&gt;4&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;RoundRect&lt;/td&gt;
      &lt;td&gt;5&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Spray Can&lt;/td&gt;
      &lt;td&gt;13&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Text&lt;/td&gt;
      &lt;td&gt;2&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;external-tools-etol&quot;&gt;External Tools (etol)&lt;/h3&gt;

&lt;table id=&quot;deneba-etol&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;long&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Coil&lt;/td&gt;
      &lt;td&gt;CoiL&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Concentric Circles&lt;/td&gt;
      &lt;td&gt;CCir&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cube&lt;/td&gt;
      &lt;td&gt;Cube&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cylinder&lt;/td&gt;
      &lt;td&gt;cyln&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Dimensioning&lt;/td&gt;
      &lt;td&gt;DIMN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Doughnuts&lt;/td&gt;
      &lt;td&gt;doug&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Fractals&lt;/td&gt;
      &lt;td&gt;Flin&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Gradient Fill&lt;/td&gt;
      &lt;td&gt;ObFl&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;GridMaker&lt;/td&gt;
      &lt;td&gt;grid&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Mover&lt;/td&gt;
      &lt;td&gt;MovE&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Multigon&lt;/td&gt;
      &lt;td&gt;NGON&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Namestamp&lt;/td&gt;
      &lt;td&gt;NamE&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Parallel Lines&lt;/td&gt;
      &lt;td&gt;Paln&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Point Rotate&lt;/td&gt;
      &lt;td&gt;PtRt&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;QuickTime&lt;/td&gt;
      &lt;td&gt;QkTm&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Registration Marks&lt;/td&gt;
      &lt;td&gt;regP&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Resistor&lt;/td&gt;
      &lt;td&gt;ResT&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Sounder&lt;/td&gt;
      &lt;td&gt;sndT&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Spiral&lt;/td&gt;
      &lt;td&gt;Spir&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Split&lt;/td&gt;
      &lt;td&gt;Splt&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Star&lt;/td&gt;
      &lt;td&gt;STAR&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Timestamp&lt;/td&gt;
      &lt;td&gt;TimE&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;related-posts&quot;&gt;Related posts&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/17/turning-an-ipad-pro-into-the-ultimate-classic-macintosh&quot;&gt;Turning an iPad Pro into the Ultimate Classic Macintosh&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/21/building-basiliskii-for-ios/&quot;&gt;How to install BasiliskII on your iPad&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Exploring Custom Keyboards and Automation&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/03/28/changing-the-size-of-toolbar-items-using-resedit/&quot;&gt;Optimising Macintosh app toolbars for touch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/24/macintosh-drawing-software-compared/&quot;&gt;Macintosh drawing software compared&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/25/mixing-external-tools-across-deneba-software/&quot;&gt;Mixing External Tools across Deneba software&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/30/my-system-7-software-choices/&quot;&gt;My System 7 software choices&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/05/03/interoperability-of-system-7-and-ios/&quot;&gt;About the interoperability of System 7 and iOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Mon, 19 Apr 2021 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/04/19/automating-interactions-using-apple-events/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/04/19/automating-interactions-using-apple-events/</guid>
        </item>
      
    

  </channel>
</rss>
