David Lloyd's «Extra Suites» registration .....


Like I said in another thread (http://bbs.macscripter.net/viewtopic.php?id=27429), I bought David Lloyd’s «Extra Suites» through Kagi. They sent me a registration number and a script to register it. I tried it many times and I am unable to get rid of the window that reminds me to register. I wrote to Kagi and David Lloyd four times and got no answer.

While «Extra Suites» works great, not being recognize as registered leaves me with a front-most window reminding me all-the-time to register.

My thread gave no clue on how to fix that problem. Would any of you who are registered accept to share privately your registration number by email. That should fix the problem, if it worked for somebody else. I will provide proof that I paid the registration.

Having that reminder window in front of all my work is really annoying …

Thanks in advance.

Robert Lespérance

Hi Robert,

I have had the same issue ever since Leopard. To get around the problem I added the registration
script to the beginning of every script that used ES.

I was ok with having to put the registration info in each script but a few weeks ago it stopped
working all together. I assume there is a conflict with another program on my system but I
have been unable to locate it. I was about to write my own command line utility when I did
a quick google search and found ‘cliclick’.

Cliclick is free and very easy to use. I quickly changed all my scripts to use
it and have had no issues so far.

Two other apps by this author I found very useful are Pashua and PipeAlert.



A lot of good stuff there, Craig – thanks for the link.

Hi Craig,

I thought I knew what to do, so I renamed the little «exec» file from “clickclick” to “clickclick 25 25”, placed it in the “/usr/local/bin” folder and restarted my computer.

Nothing changed at restart. “Extra Suites” is still annoying with the registration message. So either I missed the point or that procedure does not work on my computer running Tiger5 (10.4.11).


Robert Lespérance

There is a ‘Read me.rtf’ file in the cliclick dmg that explains its’ use.
Read it through to see what all cliclick will do.

You do not have to restart your computer when adding command line tools.
Change the name back to cliclick.

From AppleScript you will call it like this:

do shell script "cliclick " & "25 25" -- or whatever the position of the click

Remove all code from your script that references Extra Suites replacing it with
the equivalent cliclick code and you will stop getting the warnings.
If your script loads other scripts that have ES code in them you will need to
correct those as well.




I read the “Read me” file for sure. It is general and probably written for people that already know about shell scripting. I am not familiar with shell scripts neither terminal.

I change the name of the file and placed as suggested in the “bin” folder. Running the script returns a message saying that the “cliclick” file cannot be found.

I am wondering, if I delete all «tell application “Extra Suites”» blocks, how will I have access to the “Extra Suites” features that I need to run my andlers ?


Change to this:

do shell script "/usr/local/bin/cliclick " & "25 25"

Are you using Extra Suites to do tasks other than mouse clicks?
If this is the case then I have misunderstood your post. If you
need other functionality that Extra Suites provides then the
easiest way to stop the window from popping up is to put the
registration information at the beginning of each script that
uses ES as I pointed out earlier.

I didn’t mean to get you off track if this is your situation.

Your welcome. I sure was stoked to find that website. Hopefully
others will get good use of it as well. :slight_smile:


Since I read about the excellent cliclick tool mentioned in this thread I kept asking myself how it works. I know how to manipulate mouse events in my own applications, but how to do it on a system wide level?

After spending some time reading and studying Apple’s documentation about how to create mouse events, I discovered that CGPostMouseEvent is doing all the magic. And then I found some sample code, which works just fine on my Mac :smiley:

Interesting way to reach new levels of automation. Click click :slight_smile:

I also tried to put the :

tell application "Extra Suites"
	ES register "RegistrationName" with "RegistrationNumber")
end tell

at the beginning of my handler and the script returns «false». I would like to try a «name» and «registration number» that already works, maybe mine is not good. Since my name has «accented characters» I also tried it without these characters.


Robert Lespérance

Hey Martin,

I found that code earlier too. One thing I did not like about it was the -x and -y that have
to be included in the command line so I made a small change to fix it.

Original code:

int x = [args integerForKey:@"x"];
int y = [args integerForKey:@"y"];

Changed to eliminate the -x -y:

NSArray *args = [[NSProcessInfo processInfo] arguments];
  int x = [args objectAtIndex:1];
  int y = [args objectAtIndex:2];

Also commented out this line:

//NSUserDefaults *args = [NSUserDefaults standardUserDefaults];

Since cliclick also has several options I decided to use it instead of roll my own.




For me, this script yields true at the first attempt - so it is not a Leopard issue but a registration flaw.

Hi Eelco,

That is what I suspect. I am with Tiger (10.4.11). But since the registration name and number that I have are the only one I can test, I cannot go any further. I have sent many emails to David Lloyd and to Kagi without getting any answer.

Would you accept to share yours so I could try it on my computer ? I can send you my proof of purchase on Kagi.

Thanks for replying. Regards.

Robert Lespérance

I’ve sent you mine by PM, Robert.

Mine worked for Robert. My theory is that the accented e in his last name is the problem – Robert types it on a French keyboard as a single letter, and David Lloyd probably typed Option-e, then e, to get it.

Hi Adam,

Thank you. very much. It works. My problem is fixed. It is very generous of you to send me your personal information without knowing me. Your information will not be distributed. You can be sure of that.



Hi Craig,

as an integer is no object, it’s recommended to specify the kind of the value

NSArray *args = [[NSProcessInfo processInfo] arguments]; int x = [[args objectAtIndex:1] intValue]; int y = [[args objectAtIndex:2] intValue];

Thanks for pointing that out!


If that is the case, I suspect that the most likely problem is the use of a single code point (the accented character) vs. two code points (an unaccented character plus the combining accent). When I tested it, my ˜Option-e, then e’ sequence generated the single code point version. This also seems like the the most likely result for the the single-key sequence on a French keyboard layout. But maybe something decomposed the character in the email/web system that took the data from the purchaser and delivered it to the key generation software. Ideally, the key generation software should have done Unicode normalization before using the text data as input to the generation routines.

Here is some code to generate both Unicode forms of the “e acute”:

set composed to «data utxt00E9» as Unicode text
set decomposed to «data utxt00650301» as Unicode text
set lengths to {length of composed, length of decomposed}
set prefix to "Robert Lesp"
set suffix to "rance"
set textWithComposed to prefix & composed & suffix
set textWithDecomposed to prefix & decomposed & suffix
set textLengths to {length of textWithComposed, length of textWithDecomposed}

display dialog "Here are the composed and decomposed strings (triple click a line to select it):" default answer "Composed:" & return & textWithComposed & return & "Decomposed:" & return & textWithDecomposed

I found the hex values with Unicode Checker’s Normalize function. I tested that the composition status of the values displayed in the display dialog is preserved across a copy and paste by pasting them into the Diff utility of Unicode Checker.

Maybe one of these will work for the registration call.