tag:blogger.com,1999:blog-13186830184048027152024-03-08T06:14:29.523-08:00Bri Bri's bodacious blogBrian Kendall's blog about computer animation, music, Mac OS X development, xGestures, butts, ironic music, game development, silly cartoons, internets, and butts.Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-1318683018404802715.post-9808948756372286232023-09-08T13:12:00.001-07:002023-09-08T13:12:57.696-07:00xGestures 1.9.2<p>Golly gee whiz! There's a new version of xGestures, version 1.9.2! As always, you can download it here: <a href="https://briankendall.net/xGestures/download.htm">https://briankendall.net/xGestures/download.htm</a></p><p>This update doesn't add any new features, but it fixes a bunch of important stuff, some of which had been bothering me for years. Why I waited this long to fix these bugs is a mystery to me. I know that people have a way of tolerating and getting used to little bugs and annoyances in apps that they love, and I think I was doing that with xGestures. But then a little while later I had this "lightbulb over the head" moment where I was like, wait a minute, this is my app, why don't I just fix the damn thing?</p><p>This version also seems to work just fine in macOS Sonoma, at least according to a friend who's been running the beta for a few months now.</p><p>Here are the fixes:</p><p></p><ul style="text-align: left;"><li>Fixed application Exposé in macOS Ventura</li><li>Perform Keystroke action can now type keystrokes involving the numpad or navigation keys (e.g. arrow keys, home, end, etc.)</li><li>Fixed bug where sometimes a gesture would get "stuck" down</li><li>xGestures no longer freezes indefinitely when interacting with apps that have unresponsive UI</li><li>Fixed rendering bugs when drawing a gesture path</li><li>Fixed gestures being misdetected due to small movements from certain mice with high refresh rates (e.g. the MX518)</li><li>Fixed erroneous rocker gesture that could occur after switching away from an app that has gestures disabled</li></ul><p></p><div>The big one for me is the whole "gestures getting stuck" thing. That was quite annoying, and there was no real rhyme or reason to why it happened. That should be fixed now. The other big one is xGestures becoming unresponsive as it tries to interact with an application that's locked up. That shouldn't really happen any longer either (though xGestures might still lock up for a half second or so before its query to the aforementioned locked up app times out). Overall this seems to make it a lot more pleasant to use. Enjoy!</div>Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com8tag:blogger.com,1999:blog-1318683018404802715.post-57818428119291490812023-08-23T12:29:00.004-07:002023-08-23T12:30:14.800-07:00I made a game: Blah Blob!<p>I nearly forgot to post about this on this blog! But I recently made a game! In HyperCard, no less, which means it's in glorious monochrome. It's called Blah Blob!</p><div style="text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpszvMl_148rAZjSgOvxP-kM4sa2m0xOa-MAwNXHUmq-a4Q-P_7bSzNjNvCE8mCAP-fic1XtY4uybubU4DL6h9IhHOYToSoksOksLq7Ixg6P_Cql9qyrtX7DC9jGykI0H8aaTXDDf9HEpvksSIwJp9wWKB14z9nC_S42YgR_GIJMr0TAb39sIC0zQOo-Y/s960/UT0ctZ.png" style="clear: left; margin-bottom: 1em;"><img border="0" data-original-height="500" data-original-width="960" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpszvMl_148rAZjSgOvxP-kM4sa2m0xOa-MAwNXHUmq-a4Q-P_7bSzNjNvCE8mCAP-fic1XtY4uybubU4DL6h9IhHOYToSoksOksLq7Ixg6P_Cql9qyrtX7DC9jGykI0H8aaTXDDf9HEpvksSIwJp9wWKB14z9nC_S42YgR_GIJMr0TAb39sIC0zQOo-Y/w400-h208/UT0ctZ.png" width="400" /></a></div><p>It's a platforming game complete with scrolling levels, which is something of an absurdity to make in HyperCard. To those who are familiar with HyperCard then it should come as no surprise that this game requires a PowerMac G3 or better for it to play at full speed, which makes it something of a silly game to have made in HyperCard, because no classic Macintosh from the era when HyperCard still widely used can actually run it at any sensible speed. But this game wasn't about being sensible. It was about having fun making a game in HyperCard like the sort I used to make when I was a kid. And it was a ton of fun to make!</p><p>It has 20 levels of increasingly devious difficulty. Be warned, the game gets pretty difficult, though those who enjoyed games like Super Meat Boy or Celeste might find themselves right at home with it. Just note that you have to get the timing of bounces right. There's no jump button in this game, though you'd be forgiven at first for thinking that there is.</p><p>Here's a link to where you can download it: <a href="https://bribrikendall.itch.io/blah-blob">https://bribrikendall.itch.io/blah-blob</a></p><p>The modern macOS, Windows, and Linux builds all come prepackaged with an emulator so that you don't have to worry about the business of figuring out how to run it. Just download them and run them! But if you are the sort of person that would be able to run the stack on classic mac hardware, the standalone stack is available for download too!</p><p>And for those who follow this blog for xGestures news, I have a new version in the works that fixes a bunch of old and annoying bugs. I'll release it soon, as soon as I'm convinced it's in good shape!</p>Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com0tag:blogger.com,1999:blog-1318683018404802715.post-12624337669191522892022-11-16T11:11:00.003-08:002022-11-17T08:36:57.765-08:00xGestures lives on: version 1.9.1<p>I have just finished a new version of xGestures, available as always at the following link: <a href="https://briankendall.net/xGestures/download.htm">https://briankendall.net/xGestures/download.htm</a></p><p>There aren't any new features in this build, though there are a number of important fixes. Several of you reported to me that xGestures was crashing every time your macOS Ventura systems woke up from sleeping. That should now be fixed. Technically, this is one of those "how did it ever not crash" bugs so this may fix crashes in earlier versions of macOS too.</p><p>I also added a little advanced settings button with a toggle that changes how xGestures filters out mouse events. This setting is specifically there to make xGestures work with SteerMouse.</p><p>There's a few other little fixes at well that I won't repeat here since it's in the change log.</p><p>edit on November 17: I forgot to notarize xGestures before I released it! 😖 But I've since fixed it and re-uploaded it. Hopefully that didn't give so many of you any issues.</p>Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com8tag:blogger.com,1999:blog-1318683018404802715.post-89322897128284366002022-02-21T21:20:00.001-08:002022-02-21T21:20:46.013-08:00Hark! A new version of xGestures, version 1.9.0<p>Not wanting it to languish for too long, and also wanting to deal with the many emails I've gotten from users asking about xGestures crashing regularly, I've gone ahead and made a new version.</p><p>As always, you can download it here: <a href="https://briankendall.net/xGestures/download.htm">https://briankendall.net/xGestures/download.htm</a></p><p>As mentioned, there are a few crashes that this version fixes. It also automatically removes the quarantine flag from itself after installation, so hopefully the info in the previous blog post will no longer be necessary. And it's now a universal binary! Well, actually, xGestures is old enough that this is the second time it's become a universal binary. Last time it was PowerPC and Intel. This time it's Intel and Apple Silicon.</p><p>But... this version also <b>adds a new feature</b>! This is one that I should have added a long, long time ago. It's a simple check box in the "Options" tab that reads: <i>Bring window to front when using keystroke or menu item actions</i></p><p>It's fairly straight forward: if you perform a gesture that's assigned an action for typing a keystroke or picking a menu item, xGestures will bring whichever window that'll receive the action to the front before executing it. The reason is simple: windows that aren't in the front can't receive keystrokes and apps that aren't frontmost can't have their menus picked.</p><p>This is mainly intended to be used with the "Window under the start of the gesture determines the application" feature. Before now, if you performed a gesture over a window that wasn't frontmost, any keystroke xGestures types would go to the wrong window, or even the wrong application! And if the gesture was meant to pick a menu item, it would just flat out fail.</p><p>So, if you have "Window under the start of the gesture determines the application" enabled, you totally want to also enable "Bring window to front when using keystroke or menu item actions". It doesn't get turned on by default because I staunchly believe that minor application updates should not cause their behavior to change, and this way no one gets caught off guard. But nonetheless you want that enabled.</p>Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com5tag:blogger.com,1999:blog-1318683018404802715.post-20421187974394471212021-08-29T15:08:00.001-07:002021-11-04T10:28:14.791-07:00What the? A blog post! xGestures and macOS 11.5.2 (and Monterey)<p>Hello everybody!</p><p>I've been getting a lot of emails from people about how xGestures stops working after updating the macOS 11.5.2 (and also Monterey). It seems that Apple has once again changed something subtle about how the various security thingamajigs in the system operate, and the upshot here is that anyone who installed the xGestures pref pane in such a way that it still has the "quarantine" flag on it will find that the pref pane can no longer launch xGestures itself.</p><p>Without any further ado, here is the fix:</p><p>1. Open Terminal (or your favorite terminal app like iTerm2)</p><p>2. Execute the following commands (note that they should each be a single line even though the blog post may break it into two):</p><p style="text-align: left;"><span style="font-family: courier;"></span></p><blockquote><span style="font-family: courier;">xattr -r -d com.apple.quarantine ~/Library/PreferencePanes/xGestures.prefPane</span></blockquote><blockquote><span style="font-family: courier;">xattr -r -d com.apple.quarantine /Library/PreferencePanes/xGestures.prefPane</span> </blockquote><blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;"><p style="text-align: left;">(One of the two of those should do it, depending on whether you installed xGestures for all users or just the current user account.) </p></blockquote><p></p><p style="text-align: left;">3. Try relaunching xGestures</p><p>At some point I'll release a new version of xGestures that addresses this issue. I've also recently discovered and fixed a crash that was introduced in version 1.80, so I definitely owe you all a new version with that fix. I'll try to make it a proper universal app too so that it doesn't need to run in Rosetta on an Apple Silicon mac.</p><p>Even though I still don't have a lot of time to work on xGestures, I'll go ahead and reaffirm that I intend to keep it working going into the future so long as there is still no other mouse gesture app that works as well as it does. And even with it being as old and somewhat kludgy as it is, so far there isn't.</p>Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com18tag:blogger.com,1999:blog-1318683018404802715.post-32525944636999993922019-09-13T22:51:00.001-07:002019-09-13T22:51:17.009-07:00xGestures 1.80 is upxGestures 1.80 is now out of beta and available for download here: <a href="https://www.briankendall.net/xGestures/download.htm">https://www.briankendall.net/xGestures/download.htm</a><br />
<br />
I wouldn't be surprised if there were still more bugs to fix, particularly in Catalina. But for the time being I think it's good to go. I'll try to keep fixing any more bugs I find!Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com17tag:blogger.com,1999:blog-1318683018404802715.post-62446953010434332712019-08-27T09:33:00.001-07:002019-08-27T13:39:55.483-07:00New 64-bit beta build of xGesturesFor the few of you still following this blog, I've been working on a new update to xGestures. It's 64-bit and intended to be Catalina compatible. I've also fixed a number of long-time bugs that have been festering for a while, like the "Uninstall" button not working, an application's list of gestures getting annoyingly mixed up and out of order, and there not being separate actions for zooming a window and making it full screen. I've fixed a number of crashes too, though I suspect there's still plenty more lurking around in there somewhere.<br />
<br />
This build is most of the way done, but I haven't tested it extensively in Catalina yet. Please shoot me an email if you try it out and encounter a bug!<br />
<br />
Here's a link (version 1.80b3):<br />
https://nextcloud.briankendall.net/index.php/s/WYGSs8iyqso2zHD<br />
<br />Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com3tag:blogger.com,1999:blog-1318683018404802715.post-68258938147748809262019-05-31T13:37:00.002-07:002019-05-31T13:37:24.517-07:0064-bit xGestures and macOS 10.15I've received a few emails wondering about the future of xGestures and macOS 10.15, which will no longer support 32-bit apps at all. The good news is that I am working on a 64-bit version of xGestures! The trouble is that, since I originally wrote xGestures in 2004, a lot of it used old 32-bit Carbon APIs that are no longer supported, so a bunch of the app has to be re-written.<br />
<br />
I do have an in-progress 64-bit version for those you want to try it out. Here's a link:<br />
<a href="https://www.dropbox.com/s/rrkfsy3jhesyh7u/xgestures-179b1.zip?dl=0">https://www.dropbox.com/s/rrkfsy3jhesyh7u/xgestures-179b1.zip?dl=0</a><br />
<br />
The one feature that's missing is visual feedback when gesturing. I'm going to try and reimplement it before 10.15 comes out.<br />
<div>
<br /></div>
I've found that it seems to work better in 10.14 than version 1.78.<br />
<br />
If however xGestures is currently working fine for you, then there's no reason to update.Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com6tag:blogger.com,1999:blog-1318683018404802715.post-96176414737864662018-04-13T21:55:00.000-07:002018-04-13T21:59:27.171-07:00Oh yeah, blogs. Remember those?Does anyone even still use blogs anymore? Maybe I should share a tweet about my latest tumblr post on Facebook for all of my Slack friends.<br />
<br />
Anyway, I made a new version of xGestures: 1.78. It fixes a bug that made mouse clicks unreliable in macOS 10.13. 😱 If you're running High Sierra, I recommend updating! It fixes a few other things too.<br />
<br />
I hope people are still finding xGestures useful like I am. I've said it before, but just to reaffirm, I do intend to keep updating it as long as I'm using a mac and no one makes a suitable alternative. Because, you know, I can't live without mouse gestures.Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com12tag:blogger.com,1999:blog-1318683018404802715.post-66331349623542489542016-12-18T14:28:00.000-08:002016-12-18T14:28:00.251-08:00xGestures is now freeware and updated for macOS 10.12Well, here we are... another blog post nearly two years after my last one. Sufficed to say that I haven't really had the time to maintain this blog, as I've been completely absorbed in my work and personal life for the last decade or so. But I do have some new news.<br />
<br />
First, I've updated xGestures to version 1.77. The update should fix some bugs that come up in macOS 10.12, namely that it was impossible to install the software, and it should make it easier to make xGestures one of the apps that's allowed to control your computer.<br />
<br />
Second, xGestures is now freeware. Given that I don't have the time to update it any longer, almost no one is buying it anymore (I've been getting one registration every two weeks or so), and also given that it only costed five dollars, I figured the right thing to do was to make it freeware from here on out.<br />
<br />
I'd like to take this moment to thank everyone that paid $5 for xGestures over the years.<br />
<br />
🎈🎉🎊🎈 <b><i>Thank you! </i></b>🎈🎉🎊🎈<br />
<br />
You all helped support me, particularly towards the beginning of xGestures' life when I was still in the sketchy early years of my adulthood, back around the time I was still in college or recently graduated, and I was more or less broke. I originally made xGestures just for myself and my own sanity, since prior to xGestures there wasn't any good mouse gestures app for macOS / OS X / Mac OS X / whatever, and I simply couldn't live without mouse gestures. It was very encouraging for me to see so many other people fall in love with xGestures and find it to be the same indispensable tool that I do.<br />
<br />
Without any further ado, here is the link to xGestures 1.77: <a href="https://briankendall.net/xGestures/download_files/xgestures177.dmg">xgestures177.dmg</a><br />
<br />
So that leaves a big question... what's next for xGestures? The rather sad answer is, not much.<br />
<br />
As long as there isn't another mouse gestures app for macOS that's as good as xGestures, I will continue to update it for the latest version of macOS. It is an indispensable tool for me, after all, so if it should stop working, I'll pretty much have no choice but to fix it. But as of now, I have no plans for adding in any new features.<br />
<br />
I had a dream some time ago of making a new version of xGestures, completely rewritten from the ground up to be something even better and more powerful than it was before. But these days, my time is very valuable, and I don't have the time to work on a big project like that alongside everything else that's earning me money. xGestures was always a niche utility, and in the age of Magic Trackpads it's even more niche than it was before, making it not viable as a commercial product. Maybe some day I'll find the time and inclination to make a freeware (or perhaps even open source) brand spankin' new mouse gestures app, but that's not happening in the foreseeable future.<br />
<br />
(I'd just like to throw in that <a href="https://www.boastr.net/">BetterTouchTool</a> may be a suitable replacement, although I don't personally feel that its drawing feature is quite the right replacement for the Opera-style mouse gestures that xGestures provides. But it's close! You may like it, and all of the other great features it provides.)Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com9tag:blogger.com,1999:blog-1318683018404802715.post-43925717852567155802015-02-09T10:04:00.002-08:002015-02-09T10:04:26.294-08:00I'm not dead, and neither is xGestures!Hello to the few people that read this!<br /><br />Sorry I've been completely neglecting my website and xGestures. I have a lot of other stuff on my plate these days, not the least of which is the paid work I'm doing, so after all is said and done I have almost no free time and energy to continue working on xGestures.<br /><br />That said, I still use it and rely on it every day, so I won't let it completely waste away. If you're a dedicated user of xGestures, you can take some solace knowing that I can't live without it either, so if it totally breaks, I'll have no choice but to fix it or risk being driven to madness by a world bereft of mouse gestures.<br /><br />Concerning OS X 10.10 Yosemite: xGestures *does* work in it, if you perform some steps to make it allowed to use OS X's accessibility features, which most of the gesture actions require. Here's how to do it:<br /><ol>
<li>Find the xGestures.prefpane file (located in either ~/Library/PreferencePanes or /Library/PreferencePanes)</li>
<li>Right click and pick "Show package contents"</li>
<li>Open Contents / Resources</li>
<li>Next open System Preferences / Security & Privacy</li>
<li>Pick Privacy tab</li>
<li>Select Accessibility</li>
<li>Click lock, enter an admin password</li>
<li>Drag xGestures.app from the Resources folder onto the list of applications in the Accessibility section</li>
<li>Make sure the checkbox next to it is checked</li>
<li>If xGestures is already listed in the Accessibility section and it's still not working, try removing xGestures from the list and adding it again.</li>
</ol>
I've also started working on a new version that fixes this bug, but half of the users I sent it to said it doesn't fix it, so I still have more work to do. Hopefully at some point soon I'll actually be able to release it.Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com18tag:blogger.com,1999:blog-1318683018404802715.post-49248106097809616772010-06-27T12:43:00.001-07:002010-06-27T12:52:10.144-07:00New xGestures news, plus getting xGestures to work with Chrome<p>Okay, time to update this blog! It's been over a year, which is pretty ridiculous.</p><p>First, since I'm sure some people are wondering about this, I <em>am</em> still developing xGestures, though I haven't had time to put really any substantial work into it for the last couple of years of my life. However, I have recently cut back my hours at my job, and with the extra time one of the things I plan to do is make a new 2.0 release of xGestures with tons of new features. I won't say when it'll be done, because I haven't started working on it just yet and I don't know how long it'll take. But I want it to have oft requested features such as diagonal gestures, if not complex gestures in general, as well as more gesture actions, more ability to have gestures apply to specific contexts, and things like that. I'll be sure to update this blog as work progresses on that. I might also release another minor update to address some long outstanding bugs, but I'm not sure yet.</p><p>Second, an issue a lot of people report to me is that xGestures doesn't work with Google Chrome. I don't know why it took me this long to figure it out, but turning on the "Window under the start of the gesture determines the application" button in the Options section of the preference pane is what breaks things. So if you use Chrome, you probably want to turn that feature off. In whichever new release of xGestures I make, I'll be sure to fix that.</p><p>While I'm talking about the "Window under the start of the gesture..." feature, I'll also add that even if you don't use Chrome, you might want to turn that feature off. It doesn't work very well --- results are inconsistent. Looking back over how xGestures works I can see that I never really implemented that feature properly, especially since lots of gestures don't actually work if the program they're for is in the background. I'll try to address that better in xGestures 2.0, at least by making it work consistently somehow.</p>Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com34tag:blogger.com,1999:blog-1318683018404802715.post-51397139814704866672009-06-17T21:20:00.000-07:002009-06-17T21:25:17.827-07:00Closing the tab that you gestured over<span class="Apple-style-span" style=" ;font-family:Times;"><div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; ">Hey, remember this blog? I barely do.<p></p><p>I just solved an interesting xGestures problem someone posed to me: how can they get it so that the tab they gesture over is closed, rather than making a gesture type Command-W, thus closing whichever tab is active? Furthermore, how can they close tabs when Safari is in the background?</p><p>To solve it, I wrote an AppleScript that should do exactly that. Maybe someone else will find it interesting. The thing to remember about xGestures is that it can have practically any behavior you want by using AppleScript. The problem is that writing AppleScripts is really only an option for people who are already programmers and have the time and inclination to learn to write them. So I'll keep posting the interesting ones I write.</p><p>Here's the script:</p><div><div><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">set x to mouse x</span></span></div><div><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">set y to mouse y</span></span></div><div><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">tell application "Safari"</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">set targetWindow to {}</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">set theWindows to the windows</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">repeat with i from 1 to the count of theWindows</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">set theBounds to bounds of item i of theWindows</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">if x ≥ item 1 of theBounds and x ≤ item 3 of theBounds and y ≥ item 2 of theBounds and y ≤ item 4 of theBounds then</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">if targetWindow ≠ {} then</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">if index of item i of theWindows <></span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">set targetWindow to item i of theWindows</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">end if</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">else</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">set targetWindow to item i of theWindows</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">end if</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">end if</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">end repeat</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">if targetWindow ≠ {} then</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">close current tab of targetWindow</span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">end if</span></span></div><div><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="font-size:small;">end tell</span></span></div></div><p></p><p></p><p></p><p></p><p>This script requires the XTools scripting addition because otherwise there's no way to get the mouse location in an AppleScript. XTools can be downloaded here: http://osaxen.com/files/xtool1.1.html</p></div></span>Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com53tag:blogger.com,1999:blog-1318683018404802715.post-2168007098288513702008-04-21T13:57:00.001-07:002008-04-21T14:17:10.378-07:00HotBox 1.0 is releasedFinally, I manage to release a software project I had been working on sporadically for months. It really does take a lot of time for me to finish things I start. But it's done, and I'm very proud of it!<br /><br />So far, things have been going well. I was afraid for a while that I would be assaulted with bug reports of all sorts of things not working in HotBox, but for the most part, people seem to be happy. I've gotten a few bug reports here and there but they seem to be isolated cases rather than signs of huge, sweeping problems.<br /><br />Also, I'm very thankful to everyone that's donated to HotBox so far. There's all sorts of other projects I want to embark on now that it's done, and of course there's going to be further development in it too, and donations definitely keep me encouraged to keep working. Another thing is if people are donating, that means that they think the program is cool enough that it's worth giving money to the author, and that's awesome. HotBox was absolutely a project I started because I thought it was a really good idea and that other people would enjoy it a lot, and so far it seems to be that people like it. Word.<br /><br />I should address one thing, which is the number one most requested feature in the few days HotBox has been out on the internet, and that is: <strong>Using the cursor while zoomed in</strong>.<br /><br />Here's the quick answer: I really want to add this feature, but I don't know if it's possible, and I don't know when I'll have time to add it. So don't hold your breath yet.<br /><br />Here's a longer answer that requires a bit of an explanation of how HotBox actually works:<br /><br />HotBox doesn't do anything especially magical in terms of getting the screen to zoom in. It basically makes clever use of the Mac OS X accessibility feature for zooming in that's existed in the OS for some time now. A few users were quick to point out that you can accomplishing zooming also by using Command-Option-+ and -, or by holding control and using the scroll wheel, and this is true. The disadvantage, though, was that as soon as your zoomed in that way, moving the mouse around would cause the screen to move with it, and a potentially huge cursor would sit on top of whatever you were trying to watch. Also, it's difficult to get the thing you want to zoom in on to fit the screen perfectly. I made HotBox in order to address those problems, as well as a few others.<br /><br />However, all HotBox is doing is calculating how much the screen needs to zoom in and telling the OS to zoom in that much next time, figuring out exactly where the cursor needs to be on screen in order to make the thing you selected fit properly, <i>moving the cursor to that point and freezing its location</i>, and then simulating a zoom-in hot key press. The result: the screen zooms in on exactly what you selected. (Note the emphasis in the previous paragraph.)<br /><br />So the problem is, if I kept the mouse unfrozen while HotBox is invoked, the screen will scroll around with it. Granted it's possible to change things so that the screen only scrolls around once the cursor reaches the edge of what's visible (and in fact HotBox does this), but then it's still a problem when you move the cursor outside of the zoomed in area. (Some people might have noticed that you can actually still move the cursor around and scroll the screen. This is in fact a bug, and I will probably fix it fairly soon.) Basically I'd need to get it so that the cursor is constrained to a specific region of the screen, and there's no good way to do that in Mac OS X that I know of. My theories on how to pull this off regardless involve some tricks possibly involving a fake cursor, but I won't get into that now.<br /><br />So rest assured, when I get the chance, I'm going to try to add the mouse functionality to HotBox... but I can't guarantee I'll be able to make it work. HotBox's primary function was to make it possible to watch online videos full screen when they don't have a full screen button. But since it can potentially be really useful for presentations and other things like that, I'll see if I can't make it even better.Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com4tag:blogger.com,1999:blog-1318683018404802715.post-40996671393219924902007-11-26T18:37:00.000-08:002007-11-26T18:49:32.409-08:00Updated xGestures again / USB Overdrive trickNew version of xGestures - 1.73. It's a bug fix release, so no new awesome features this time. This version should fix all of the hot corners and Dock related problems Leopard users have been having, as well as several other Leopard bugs.<br /><br />I still haven't had a chance to fix the Wacom tablet problem, but it's still on my list of things to do, as well as several other things. I plan to release at least one more version of xGestures in the not too distant future that fixes the rest of the bugs people have been complaining about off and on, as well as adding some Leopard specific features for things like Spaces and Time Machine.<br /><br />(Incidentally, if you want to have gestures for those now, you can set xGestures to keystroke any of the various Spaces keystrokes. You will have to temporarily change them to something different before you enter them into the xGestures pref pane, since otherwise they'll just switch the screen space and the pref pane won't register the keystroke. But just change the Spaces keystrokes back again afterwards and it should work great.)<br /><br />Also, for users using USB Overdrive: Someone recently emailed me asking how they could use one of their really auxilery mouse buttons with xGestures and USB Overdrive at the same time. (In this case it was mouse button #7.) The problem is, USB Overdrive only allows mouse clicks up to button #5. But you can work around that by having USB Overdrive do a keystroke for the button you want to use, and then set xGestures to use that keystroke for gesturing. It works great!<br /><br />Granted there's probably not a lot of people who'll find that tip useful, since it involves using both USB Overdrive and wanting to use an abnormally high button number to gesture. But I thought it was especially clever, and it was useful to at least one person out there.Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com4tag:blogger.com,1999:blog-1318683018404802715.post-17694014092596389032007-10-22T08:50:00.000-07:002007-10-22T09:09:45.403-07:00Finally updated xGesturesIt's been... over ten months since I released a new version of xGestures? I want to make it clear that I haven't abadonned the project at all. In fact, I still use it every day, all the time. However, I've come to realize that actually programming professionally for 8 hours a day, having a fairly active social life, and being lazy really makes it difficult for me to work on programming projects in my free time. But I'm trying to get better about it.<br /><br />So I've finally released a relatively minor update to xGestures that fixes a bunch of bugs that people have been complaining about for a while. Unfortunately, there are still several bugs that I haven't had the opportunity to fix, and several features people have been requesting forever now that I still haven't had the time to add. But in case you're wondering, here's stuff I really, honestly, plan to do at some point in the future:<br /><ul><li>Adding a feature for exporting and importing preferences. I plan to make this work so that you can import individual application preferences, as well as duplicate gestures and entire applications. So if you have 5 zillion gestures set up for your favorite web browser, and then you start using a slightly different web browser, you can copy over the gestures rather than having to do them all over again.<br /></li><li>I want to fix the Wacom tablet problem. LOTS of people have complained that xGestures doesn't work with Wacom tablets. The problem, though, is that I don't own a Wacom tablet and don't have easy access to one right now. As soon as I can get my hands on one, though, I'm going to see if I can fix things.</li></ul>Now I should probably give some lip service to features that people have requested that are pretty low priority right now. Which is to say, there are a bunch of other things I want or need to do in my spare time before I'll have a chance to work on this stuff. So the big one is diagonal gestures, or other kinds of complex gestures. I really want to add that to xGestures, but it'll take a lot of work and I just don't have the right now. Another big one is complex or advanced gesture actions, that can do neat things like do various different things depending on context, or start performing several actions in order until one of them succeeds. That'd be a great feature to have, but once again it'll take oodles of work. There's also adding a feature like being able to gesture with more than one mouse button. So something like right-click gesturing in a direction will do action A, and middle-click gesturing in the same direction will do action B. Or more rocker gestures, like holding the right button and clicking the middle button or something like that. However, I want to be careful with these new features, because one of the things I'm trying to be careful about is not making xGestures really complex and annoying to use. So if I implement any of these features, I'm going to try my hardest to make them simple and intuitive, but still powerful.<br /><br />I'm also working on a new software project right now that's already getting pretty close to being finished. I'd say it's something like 70% of the way there. I'm almost certainly going to release it as freeware or donationware, because it's simple enough that I don't think it warrants people having to go through the effort of paying money to use it. But it's a cool idea, though, and it might actually be pretty popular. I'm not going to say what it is though just so I can be stupidly secretive with the four people who read this blog!!Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com15tag:blogger.com,1999:blog-1318683018404802715.post-39987726893503520082007-04-08T14:45:00.000-07:002007-04-19T08:55:27.252-07:00Screenshots in xGesturesJust earlier today someone emailed me asking if there was some way to create gestures in xGestures that would take screen shots, like pressing command-shift-3. I figured it would be a pretty simple thing, since you can create keystroke actions and just have one of those press command-shift-3. What I found out is that even if you get passed the first hurdle of figuring out how to enter that keystroke the xGestures preference pane without actually taking a screenshot instead, it still doesn't work. There's a bug in xGestures I'm going to try to address as soon as I get the chance to make those sorts of keystrokes work, because apparently any kind of system-level key command can't be triggered by xGestures.<br /><br />Not to be defeated, though, I figured that maybe there was some kind of neat way to do it using AppleScript. And sure enough, there is. Hidden in Mac OS X is the unix command screencapture, which can be used to take screenshots in exactly the same way as pressing Command-Shift-3. Unfortunately it requires you to give it a path to a file, rather than defaulting to saving the screenshot to the desktop in the form of 'Picture N', so I had to code something in there to make it do that on its own. But here are three AppleScripts you can use with xGestures (or anything that can run AppleScripts, like Quicksilver) for taking screenshots:<br /><span><br /></span><span>This will take a screenshot normally, just like pressing Command-Shift-3:</span><span><br /><br /></span><span style="font-family:courier new;"><span><span><span>repeat with i from 1 to 999<br /> set pathToTest to ("~/Desktop/Picture\\ " & i & ".png")<br /> try<br /> do shell script ("/bin/ls " & pathToTest)<br /> on error<br /> exit repeat<br /> end try<br />end repeat<br />do shell script "screencapture " & pathToTest</span></span></span></span><span><br /><br /></span><br />To make it behave like pressing command-shift-4, replace the last line with:<br /><span><span><span><span style="font-family:courier new;">do shell script "screencapture -i " & pathToTest</span></span></span></span><br /><br />or to make it behave like pressing command-shift-4-space, replace the last line with:<br /><span><span><span><span style="font-family:courier new;">do shell script "screencapture -iW " & pathToTest</span></span></span></span><br /><br />Hopefully someone might find these useful. There's some other AppleScripts I wrote in response to user questions for xGestures, and at some point in the future I'll probably post them, since other people might like to have them too.Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com14tag:blogger.com,1999:blog-1318683018404802715.post-32218680867847794322007-04-08T14:13:00.000-07:002007-04-08T14:45:00.629-07:00Introductory postHello to the cybermation info highway! I've started a blog because I just realized no more than fifteen minutes ago that I actually had a reason to write one. First, I'll get out of the way who I am: I am Brian Kendall. The general things I do include but are not limited to:<br />- Animation, mostly on computers but sometimes traditional animation<br />- Music composition, both instrumental and electronic<br />- Graphics programming<br />- Mac OS X programming and development<br />- Game development and design<br /><br />That covers a lot of ground, so to give a better idea of what I do here are the actual things I'm actively involved with right now:<br /><UL><LI><a href="http://alum.hampshire.edu/~bjk02/xGestures/">xGestures</a>, a mouse gestures suite for Mac OS X<br /><LI>Software development for <a href="http://www.anzovin.com/">Anzovin Studios</a>, including The Setup Machine and forthcoming products!<br /><LI><a href="http://www.myspace.com/pizazzwow">Pizazz!</a>, the internets' hottest, happiest pop stars!<br /></UL><br /><br />I'll mention more things as I start working on them. Aside from the work I've been doing for Anzovin Studios, I've been busy trying to complete more music compositions that I will probably post here at some point, and I'm probably going to start doing some very, very basic game development for the Xbox 360 using Microsoft's XNA game studio, but don't expect anything major to come from that anytime soon.<br /><br />So what I'm going to do with this blog is post updates about the projects I'm working on that people might care about. For example, if I'm doing some kind of new work on xGestures, or I learned about or figured out some cool trick with it, I'll post that. (In fact, that's what my next post after this is going to be.) Or, if I have something neat or relevant to show for one of my other projects, I'll mention that. Really what it comes down to is that every now and then I develop or come up with cool things that are useful, neat, or practical involving computers or the internet or something like that, and I don't tell anyone about it, even though there's probably people out there who might find it really useful. So whenever something like that comes up, I'll post about it. This probably means I won't update the blog very often, because that doesn't really happen all that often, and I'm lazy. What this blog WON'T include is daily musings about my life, what my feelings are, or other mundane things about my day to day life because <i>nobody wants to read that.</i><br /><br />And that's that!Brian Kendallhttp://www.blogger.com/profile/17898866130720497751noreply@blogger.com31