Zoodo: Mouseless iCal Todos
Studies have shown
that using the
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
ZooDo is a small app that allows you to create iCal ToDos without touching the mouse once.
After installing the app, launch it using

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
ZooDo is freeware (donations not refused) and is available from the developer’s web site
.
Related posts

February 3rd, 2006 at 8:17 am
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
February 3rd, 2006 at 8:23 am
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.
February 3rd, 2006 at 8:32 am
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
February 4th, 2006 at 12:12 pm
[...] A few days ago Darren posted two AppleScripts in the comments on the post about Zoodo. [...]
February 19th, 2006 at 10:20 am
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.
March 3rd, 2006 at 4:47 pm
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?
March 3rd, 2006 at 6:01 pm
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?