Zoodo: Mouseless iCal Todos

zoodoStudies have shown that using the keyboard is faster than using a mouse.

Not everyone agrees. In 1989 Bruce “Tog” Tognazzini (”Leading authority on software design” — HotWired) revealed that:

We?¢‚Ǩ‚Ñ¢ve done a cool $50 million of R & D on the Apple Human Interface. We discovered, among other things, two pertinent facts:

?¢‚Ǩ¬¢ Test subjects consistently report that keyboarding is faster than mousing.
?¢‚Ǩ¬¢ The stopwatch consistently proves mousing is faster than keyboarding.

This contradiction between user-experience and reality apparently forms the basis for many user/developers?¢‚Ǩ‚Ñ¢ belief that the keyboard is faster.

Interesting as this perception vs. reality debate is, I have long wanted a way to create iCal ToDos that didn’t involve fiddling around with a mouse. And here it is.

ZooDo is a small app that allows you to create iCal ToDos without touching the mouse once.

After installing the app, launch it using Quicksilver (or LaunchBar or Butler or other launcher of choice). It presents you with the following dialog:

zoodo_window

The cursor is already sitting in the first field, ready for you to type.

Typing and tabbing gets you to the Create button. It’s possible to get trapped in the Notes field where the tab key stops moving between fields, but Control-Tab gets you out. Hit Return and you are done.

Mouseless To Do creation. Feels faster to me.

ZooDo is freeware (donations not refused) and is available from the developer’s web site .

  • Digg
  • Facebook
  • Delicious
  • StumbleUpon
  • Evernote
  • Share/Bookmark
Tags: , , , , , ,

Related posts


7 Responses to “Zoodo: Mouseless iCal Todos”

  1. Darren says:

    There’s an applescript floating around in the quicksilver forums that gives nearly the same functionality if you launch it as a trigger through quicksilver. Unfortunately, the website is down but the following is a tinkered version:

    set iCalendars to {}
    set theCals to {}
    set priList to {”None”, “Very Important”, “Important”, “Not Important”}
    set priNums to {0, 3, 5, 9}

    tell application “iCal”
    set theCals to calendars whose writable is true
    repeat with i from 1 to count of theCals
    copy title of item i of theCals to end of iCalendars
    end repeat
    end tell

    tell application “Quicksilver” to activate
    display dialog “Enter toDo Summary: ” default answer “”
    set theSummary to the text returned of the result

    display dialog “Enter toDo Description: ” default answer “”
    set theDescription to the text returned of the result

    display dialog “Enter the days until this is due (leave blank for no due date): ” default answer “”
    set theDaysTo to the text returned of the result

    display dialog “At what hour shall I sound the alarm (a number 1-24, blank for no alarm): ” default answer “”
    set theAlarmTime to the text returned of the result

    set theChoice to choose from list iCalendars with prompt “Choose the Calendar to use” OK button name “Choose” without multiple selections allowed and empty selection allowed

    if theChoice is not false then
    set theCalChoice to item 1 of theChoice
    end if

    set theCalName to theCalChoice

    – Run through our Calendar list and find the iCal id of the chosen Calendar
    set i to 1
    repeat with anitem in iCalendars
    if item i of iCalendars is equal to theCalName then
    set theNum to i
    exit repeat
    end if
    set i to i + 1
    end repeat

    set currentCal to item theNum of theCals

    set theChoice to choose from list priList with prompt “Choose the Priority” OK button name “Choose” without multiple selections allowed and empty selection allowed
    if theChoice is not false then
    set thePriChoice to item 1 of theChoice
    end if
    set i to 1
    repeat with anitem in priList
    if item i of priList is equal to thePriChoice then
    set theNum to i
    exit repeat
    end if
    set i to i + 1
    end repeat
    set thePri to item theNum of priNums

    tell application “iCal”
    if theDaysTo is not “” then
    set theDate to (current date) + ((theDaysTo as number) * days)
    set theToDo to (make todo at end of todos of currentCal with properties {due date:theDate, priority:thePri, summary:theSummary, description:theDescription})
    if theAlarmTime is not “” then
    set theAlarm to (theAlarmTime as integer) * 60
    –this doesn’t work (any ideas?)
    –make new sound alarm at end of sound alarms of theToDo with properties {trigger interval:theAlarm}
    end if
    else
    make todo at end of todos of currentCal with properties {priority:thePri, summary:theSummary, description:theDescription}
    end if
    end tell

  2. Tim says:

    Darren: Thanks for posting this. Excellent!

    The support team at the hosting company for blacktree say in an email that, “We are in contact with the site owner regarding an issue with the site.”

    Let’s hope it’s a small issue.

  3. Darren says:

    And here’s the same script, except it’s to create new events:

    set iCalendars to {}
    set theCals to {}

    tell application “iCal”
    set theCals to calendars whose writable is true
    repeat with i from 1 to count of theCals
    copy title of item i of theCals to end of iCalendars
    end repeat
    end tell

    tell application “Quicksilver” to activate
    display dialog “Enter Event Summary: ” default answer “”
    set theSummary to the text returned of the result

    display dialog “Enter Event Description: ” default answer “”
    set theDescription to the text returned of the result

    display dialog “Enter Date of the event: i.e 10/25/2004″ default answer “”
    set theSdate to the text returned of the result

    display dialog “Enter time of the event : (24 hour time)” default answer “12:00″
    set theTime to the text returned of the result

    display dialog “Enter ending time of event (24 hour time)” default answer “13:00″
    set theEtime to the text returned of the result

    display dialog “Number of Hours before event to sound alarm(blank for no alarm): ” default answer “”
    set theAlarmTime to the text returned of the result

    set theChoice to choose from list iCalendars with prompt “Choose the Calendar to use” OK button name “Choose” without multiple selections allowed and empty selection allowed

    if theChoice is not false then
    set theCalChoice to item 1 of theChoice
    end if

    set theCalName to theCalChoice

    – Run through our Calendar list and find the iCal id of the chosen Calendar
    set i to 1
    repeat with anitem in iCalendars
    if item i of iCalendars is equal to theCalName then
    set theNum to i
    exit repeat
    end if
    set i to i + 1
    end repeat

    set currentCal to item theNum of theCals

    set theDate to date theSdate
    set theDate to date theTime of theDate
    set endDate to date theSdate
    set endDate to date theEtime of endDate

    tell application “iCal”
    set theEvent to (make event at end of events of currentCal with properties {start date:theDate, end date:endDate, summary:theSummary, description:theDescription})
    if theAlarmTime is not “” then
    set theAlarm to (theAlarmTime as integer) * -60
    make new sound alarm at end of sound alarms of theEvent with properties {trigger interval:theAlarm}
    end if
    end tell

  4. [...] A few days ago Darren posted two AppleScripts in the comments on the post about Zoodo. [...]

  5. subw says:

    It is possible to create keyboard-based new iCal to-dos without any additional software or plug-in other than Quicksilver and iCal itself.

    1. Just use Quicksilver to launch iCal
    2. Hit Control-K
    3. Type the name, hit tab
    4. Navigate through the fields and change the values.
    5. Use the spacebar to activate/deactivate fields that are not normal text and the up and down arrows to navigate through lists.

    While this way is a possibility, Zodoo seems still useful to me as it might be a touch more easy to use.

  6. EvanO says:

    Even simpler, use the iCal module for Quicksilver.

    1. Activate QS
    2. hit full stop
    3. type your ToDo
    4. tab
    5. type “todo” (create todo will apear with the iCal icon)
    6. hit return

    This will open iCal and add the ToDo to your list.

    What I’d like to know is how to remove/check off iCal Todo’s without touching the mouse. Any ideas?

  7. Darren says:

    I prefer the applescript since you can input the due date, priority, notes, etc., but if you don’t care much for that stuff, then the ical module is fine.

    As for the unchecking ical todos, i’ve been asking everyone in a bunch of different forums for an applescript that’ll have display boxes of your todos so that you can select them and check them off through the keyboard. Anyone help out with this?

Leave a Reply