[0030]次に、実施形態について詳細に説明し、それらの例を添付の図面に示す。以下の詳細記述では、本発明の十分な理解を提供するために、多くの特定の詳細が記述されている。しかし、当業者には明らかであろうが、本発明は、これらの特定の詳細がなくても実施されうる。その他の事例では、周知の方法、手順、構成要素、回路およびネットワークは、実施形態の態様を不要にあいまいにしないように、詳細には記述していない。
[0031]また理解されるであろうが、第1、第2などの用語は、本明細書では、各種の要素(エレメント)を記述するために使用されうるけれども、これらの要素はこれらの用語によって限定されるべきでない。これらの用語は、要素と要素とを区別するためだけに用いられている。例えば、本発明の範囲から逸脱することなく、第1の接触は第2の接触と呼ばれてもよいだろうし、同様に、第2の接触が第1の接触と呼ばれてもよいだろう。第1の接触と第2の接触とは、どちらも接触であるが、同じ接触ではない。
[0032]本明細書で本発明の記述の中で用いられる用語は、特定の実施形態を記述することを目的としており、本発明を限定することを意図していない。本発明の記述および添付の請求項で用いられる場合、単数形「a」、「an」、「the」は、文脈が別に明示しない限り、複数形も同様に含むことを意図する。さらに理解されるであろうが、「および/または(and/or)」という用語は、本明細書で用いられる場合、関連するリストされた項目のうちの1つ以上のいずれかの、または、すべての起こりうる組み合わせを言及し、それを包含する。さらに理解されるであろうが、「含む(include)」、「含んでいる(including)」、「備える(comprise)」および/または「備えている(comprising)」という用語は、本明細書で用いられる場合、述べられた特徴、整数、ステップ、動作、要素および/または構成要素の存在を明記するが、1つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在もしくは追加を排除しない。
[0033]本明細書では、「もしも(if)」は、文脈に依存して、「する時(when)」または「した時点で(upon)」または「判定したことに応じて(in response to determining)」または「検出したことに応じて(in response to detecting)」を意味すると解釈されてもよい。同様に、「と判定された場合(if it is determined)」または「[述べられた条件またはイベント]が検出された場合(if [a stated condition or event] is detected)」は、文脈に依存して、「判定した時点で(upon determining)」または「判定したことに応じて(in response to determining)」または「[述べられた条件またはイベント]を検出した時点で(upon detecting [the stated condition or event])」または「[述べられた条件またはイベント]を検出したことに応じて(in response to detecting [the stated condition or event])」を意味すると解釈されてもよい。
[0034]コンピューティングデバイス、そのようなデバイスのためのユーザインタフェース、およびそのようなデバイスを使用するための関連プロセスの実施形態について記述する。一部の実施形態では、コンピューティングデバイスは、携帯用通信デバイス、例えば移動電話であり、その他の機能、例えばPDAおよび/または音楽プレーヤ機能も有している。携帯用多機能デバイスの例示的な実施形態には、限定することなく、カリフォルニア州CupertinoのApple Inc.のiPhone(登録商標)およびiPod Touch(登録商標)デバイスが含まれる。また、その他の携帯用デバイス、例えばタッチセンシティブ表面(例えばタッチスクリーンディスプレイおよび/またはタッチパッド)を持つラップトップコンピュータまたはタブレットコンピュータが用いられてもよい。また、理解されるべきだが、一部の実施形態では、デバイスは、携帯用通信デバイスではなく、タッチセンシティブ表面(例えばタッチスクリーンディスプレイおよび/またはタッチパッド)を持つデスクトップコンピュータである。
[0035]下記の議論では、ディスプレイおよびタッチセンシティブ表面を含むコンピューティングデバイスについて記述する。しかし、理解されるべきだが、コンピューティングデバイスは、1つ以上の他の物理的ユーザインタフェースデバイス、例えば物理的キーボード、マウス、および/またはジョイスティックを含んでいてもよい。
[0036]デバイスは多様なアプリケーション、例えば、描画アプリケーション、プレゼンテーションアプリケーション、文章処理アプリケーション、ウェブサイト作成アプリケーション、ディスクオーサリングアプリケーション、表計算アプリケーション、ゲームアプリケーション、電話アプリケーション、テレビ会議アプリケーション、電子メールアプリケーション、インスタントメッセージングアプリケーション、エクササイズ(workout)サポートアプリケーション、写真管理アプリケーション、デジタルカメラアプリケーション、デジタルビデオカメラアプリケーション、インターネット閲覧アプリケーション、デジタル音楽プレーヤアプリケーション、および/またはデジタルビデオプレーヤアプリケーションのうちの1つ以上をサポートする。
[0037]デバイス上で実行されうる各種のアプリケーションは、少なくとも1つの共通の物理的ユーザインタフェースデバイス、例えばタッチセンシティブ表面を使用してもよい。タッチセンシティブ表面の1つ以上の機能、およびデバイス上に表示される対応する情報は、アプリケーション毎に、および/または、それぞれのアプリケーションの中で、調整されたり、および/または、変更されたりしてもよい。このようにして、デバイスの共通の物理的アーキテクチャ(例えばタッチセンシティブ表面)は、ユーザにとって直感的かつ透過的なユーザインタフェースを使って多様なアプリケーションをサポートしうる。
[0038]ユーザインタフェースは、1つ以上のソフトキーボードの実施形態を含んでいてもよい。ソフトキーボードの実施形態は、表示されたキーボードのアイコン上に標準の(QWERTY)および/または標準でない構成のシンボルを含んでいてもよく、それらは例えば、2006年7月24日に出願された米国特許出願第11/459,606号「Keyboards for Portable Electronic Devices」および2006年7月24日に出願された米国特許出願第11/459,615号「Touch Screen Keyboards For Portable Electronic Devices」に記述されており、その内容を全部、参照により本願に援用する。キーボードの実施形態の中には、既存の物理的キーボード、例えばタイプライタのキーボードにあるキーの数と比べてアイコン(またはソフトキー)の数が少ない実施形態があってもよい。これによって、ユーザは、キーボードの中の1つ以上のアイコン、それゆえ、1つ以上の対応するシンボルを選択するのがより容易になる。キーボードの実施形態は、適応的であってよい。例えば、表示されたアイコンが、例えば1つ以上のアイコンおよび/または1つ以上の対応するシンボルを選択するようなユーザの動作に従って修正されてもよい。デバイス上の1つ以上のアプリケーションが、共通の、および/または異なるキーボード実施形態を利用してもよい。それゆえ、使用されるキーボードの実施形態は、少なくとも一部のアプリケーションに合わせてカスタマイズされてもよい。一部の実施形態では、1つ以上のキーボードの実施形態が、それぞれのユーザに合わせてカスタマイズされてもよい。例えば、1つ以上のキーボードの実施形態が、それぞれのユーザの言葉の利用履歴(辞書編集法、スラング、個別の用途)に基づいてそれぞれのユーザに合わせてカスタマイズされてもよい。一部のキーボードの実施形態は、ソフトキーボードの実施形態を用いる時に、1つ以上のアイコンを、それゆえ1つ以上のシンボルを、選択する場合にユーザエラーの確率を減らすように調整されてもよい。
[0039]次に、タッチセンシティブディスプレイを備えた携帯用デバイスの実施形態に注意を向けよう。図1Aおよび図1Bは、一部の実施形態による、タッチセンシティブディスプレイ112を持つ携帯用多機能デバイス100を示すブロック図である。タッチセンシティブディスプレイ112は、便宜上「タッチスクリーン」と呼ばれることもあり、また、タッチセンシティブディスプレイシステムとして知られ、またはそう呼ばれることもある。デバイス100は、メモリ102(1つ以上のコンピュータ可読記憶媒体を含みうる)と、メモリコントローラ122と、1つ以上の処理ユニット(CPU)120と、周辺装置インタフェース118と、RF回路部108と、音声回路部110と、スピーカ111と、マイク113と、入力/出力(I/O)サブシステム106と、他の入力または制御デバイス116と、外部ポート124とを含んでいてもよい。デバイス100は、1つ以上の光センサ164を含んでいてもよい。これらの構成要素は、1つ以上のコミュニケーションバスまたは信号線103を経て通信してもよい。
[0040]理解されるべきだが、デバイス100は、携帯用多機能デバイスの一例にすぎず、デバイス100は、図示するより構成要素が多いことも少ないこともあり、2つ以上の構成要素を組み合わせることもあり、あるいは、構成要素の別の構成または配置を有することもある。図1Aおよび図1Bに示す各種の構成要素は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの両方の組み合わせとして、1つ以上の信号処理回路および/または特定用途向け集積回路を含めて実装されてもよい。
[0041]メモリ102は、高速ランダムアクセスメモリを含んでいてもよく、また、不揮発性メモリ、例えば1つ以上の磁気ディスクストレージデバイス、フラッシュメモリデバイス、またはその他の不揮発性ソリッドステートメモリデバイスを含んでいてもよい。メモリ102へのデバイス100の他のコンポーネント、例えばCPU120および周辺インタフェース118によるアクセスは、メモリコントローラ122によって制御されてもよい。
[0042]周辺装置インタフェース118を用いて、デバイスの入出力周辺装置をCPU120およびメモリ102に接続することができる。1つ以上のプロセッサ120は、各種のソフトウェアプログラムおよび/またはメモリ102の中に記憶された命令の集合を動作させるかまたは実行して、デバイス100についての各種の機能を行い、データを処理する。
[0043]一部の実施形態では、周辺装置インタフェース118と、CPU120と、メモリコントローラ122とは、例えばチップ104のような単一のチップ上に実装されてもよい。一部の実施形態では、それらは別個のチップ上に実装されてもよい。
[0044]RF(radio frequency)回路部108は、電磁信号とも呼ばれるRF信号を送受信する。RF回路部108は、電気信号を電磁信号に、電磁信号を電気信号に変換し、電磁信号を介して通信ネットワークおよびその他の通信デバイスと通信する。RF回路部108は、アンテナシステムと、RFトランシーバと、1つ以上の増幅器と、チューナと、1つ以上のオシレータと、デジタル信号プロセッサと、CODECチップセットと、SIM(subscriber identity module)カードと、メモリと、等々を含めて、これらの機能を行うための周知の回路部を含んでいてもよいが、それらに限定されない。RF回路部108は、WWW(World Wide Web)とも呼ばれるインターネット、イントラネット、および/または、セルラー電話ネットワーク、ワイヤレスローカルエリアネットワーク(LAN)、および/またはメトロポリタンエリアネットワーク(MAN)のようなワイヤレスネットワーク、のようなネットワークとワイヤレス通信によって通信してもよいし、その他のデバイスとワイヤレス通信によって通信してもよい。ワイヤレス通信は、GSM(Global System for Mobile Communications)、EDGE(Enhanced Data GSM Environment)、HSDPA(high−speed downlink packet access)、W−CDMA(wideband code division multiple access)、CDMA(code division multiple access)、TDMA(time division multiple access)、Bluetooth、Wi−Fi(Wireless Fidelity)(例えばIEEE802.11a、IEEE802.11b、IEEE802.11gおよび/またはIEEE802.11n)、VoIP(voice over Internet Protocol)、Wi−MAX、電子メール用のプロトコル(例えばIMAP(Internet message access protocol)および/またはPOP(post office protocol))、インスタントメッセージング(例えばXMPP(extensible messaging and presence protocol)、SIMPLE(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions)、IMPS(Instant Messaging and Presence Service))、および/または、SMS(Short Message Service)、あるいはいずれかの他の適切な通信プロトコル(本明細書の提出日の時点ではまだ開発されていない通信プロトコルを含む)を含めるがそれらに限定されない、複数の通信標準、プロトコル、および技術のいずれを使用してもよい。
[0045]音声回路部110と、スピーカ111と、マイク113とは、ユーザとデバイス100との間の音声インタフェースを提供する。音声回路部110は、周辺装置インタフェース118から音声データを受信し、音声データを電気信号に変換し、電気信号をスピーカ111に送信する。スピーカ11は、電気信号を人間に聞こえる音波に変換する。また、音声回路部110は、音波からマイク113によって変換された電気信号を受信する。音声回路部110は、電気信号を音声データに変換し、音声データを処理するために周辺装置インタフェース118へ送信する。音声データは、周辺装置インタフェース118によって、メモリ102および/またはRF回路部108から取得されるか、および/または、メモリ102および/またはRF回路部108へ送信されてもよい。また、一部の実施形態では、音声回路部110は、ヘッドフォンジャック(例えば図2の212)を含んでいる。ヘッドフォンジャックは、音声回路部110と、例えば出力のみのヘッドフォンや出力(例えば片耳または両耳用のヘッドフォン)と入力(例えばマイク)とを備えたヘッドフォンのような、着脱式音声入力/出力周辺装置との間のインタフェースを提供する。
[0046]I/Oサブシステム106は、デバイス100の入力/出力周辺装置、例えばタッチスクリーン112およびその他の入力制御デバイス116を、周辺装置インタフェース118に接続する。I/Oサブシステム106は、ディスプレイコントローラ156と、その他の入力または制御デバイス用の1つ以上の入力コントローラ160とを含んでいてもよい。1つ以上の入力コントローラ160は、その他の入力または制御デバイス116との間で電気信号の送受信を行う。その他の入力または制御デバイス116には、物理的ボタン(例えばプッシュボタン、ロッカーボタン等)、ダイヤル、スライド式スイッチ、ジョイスティック、クリックホイール等が含まれてもよい。一部の代替的実施形態では、入力コントローラ160は、キーボード、赤外線ポート、USBポート、および例えばマウスのようなポインタデバイスのうちのいずれかに接続されても(あるいは、まったくされなくても)よい。1つ以上のボタン(例えば図2の208)は、スピーカ111および/またはマイク113の音量調節のための上/下ボタンを含んでいてもよい。1つ以上のボタンは、プッシュボタン(例えば図2の206)を含んでいてもよい。すばやくプッシュボタンを押すことにより、タッチスクリーン112のロックをはずすかまたは、デバイスのロックを解除するためにタッチスクリーン上でジェスチャを用いるプロセスを開始してもよく、それについては、2005年12月23日に出願した米国特許出願第11/322,549号「Unlocking a Device by Performing Gestures on an Unlock Image」に記述されており、それをそのまま全部、参照により本願に援用する。プッシュボタン(例えば206)を長めに押すことにより、デバイス100の電源をオンまたはオフにしてもよい。ユーザが、1つ以上のボタンの機能性をカスタマイズすることができてもよい。バーチャルボタンもしくはソフトボタンおよび1つ以上のソフトキーボードを実装するのに、タッチスクリーン112が用いられる。
[0047]タッチセンシティブディスプレイ112は、デバイスとユーザとの間の入力インタフェースおよび出力インタフェースを提供する。ディスプレイコントローラ156は、タッチスクリーン112との間で電気信号を送受信する。タッチスクリーン112は、視覚的出力をユーザに表示する。視覚的出力は、グラフィックスと、テキストと、アイコンと、ビデオと、それらのいずれかの組み合わせと(集合的に「グラフィックス」と称する)を含んでいてもよい。一部の実施形態では、視覚的出力の一部または全部が、ユーザインタフェースのオブジェクトに対応していてもよい。
[0048]タッチスクリーン112は、タッチセンシティブ表面と、触覚および/または触感による接触に基づいてユーザからの入力を受け入れるセンサまたはセンサの集合とを有する。タッチスクリーン112およびディスプレイコントローラ156は(メモリ102の中のいずれかの関連のモジュールおよび/または命令の集合と共に)、タッチスクリーン112上の接触(および接触の移動または中断)を検出し、検出した接触を、タッチスクリーン112上に表示されるユーザインタフェースオブジェクト(例えば1つ以上のソフトキー、アイコン、ウェブページ、または画像)との対話に変換する。例示的な一実施形態では、タッチスクリーン112とユーザとの間の接点は、ユーザの指に対応する。
[0049]タッチスクリーン112は、LCD(liquid crystal display)技術、LPD(light emitting polymer display)技術、またはLED(light emitting diode)技術を用いてもよいが、他の実施形態では他のディスプレイ技術が用いられてもよい。タッチスクリーン112およびディスプレイコントローラ156は、接触またはいずれかの動作またはその中断を、静電容量、抵抗、赤外線、表面音波だけでなく、タッチスクリーン112との1つ以上の接点を判定するための他の近接センサアレーまたは他の要素も含むけれどもそれらに限定されることなく、現在既知であるか今後開発される複数のタッチセンシング技術のいずれを用いて検出してもよい。例示的な一実施形態では、カリフォルニア州CupertinoのApple Inc.製のiPhone(登録商標)およびiPod Touch(登録商標)にみられるような、投影型相互静電容量センシング技術が用いられている。
[0050]タッチスクリーン112の一部の実施形態におけるタッチセンシティブディスプレイは、米国特許第6,323,846号(Westerman他)、第6,570,557号(Westerman他)、および/または第6,677,932号(Westerman)、および/または米国特許公開第2002/0015024A1のなかに記述されたマルチタッチ・センシティブ・タッチパッドに類似していてもよく、その各々をそのまま全部、参照により本願に援用する。しかし、タッチスクリーン112は、携帯用デバイス100からの視覚的な出力を表示するが、タッチセンシティブタッチパッドは、視覚的な出力を提供しない。
[0051]タッチスクリーン112の一部の実施形態におけるタッチセンシティブディスプレイが、以下の出願の中に記述されたようであってよい。すなわち、(1)2006年5月2日に出願された米国特許出願第11/381,313号「Multipoint Touch Surface Controller」、(2)2004年5月6日に出願された米国特許出願第10/840,862号「Multipoint Touchscreen」、(3)2004年7月30日に出願された米国特許出願第10/903,964号「Gestures For Touch Sensitive Input Devices」、(4)2005年1月31日に出願された米国特許出願第11/048,264号「Gestures For Touch Sensitive Input Devices」、(5)2005年1月18日に出願された米国特許出願第11/038,590号「Mode−Based Graphical User Interfaces For Touch Sensitive Input Devices」、(6)2005年9月16日に出願された米国特許出願第11/228,758号「Virtual Input Device Placement On A Touch Screen User Interface」、(7)2005年9月16日に出願された米国特許出願第11/228,700号「Operation Of A Computer With A Touch Screen Interface」、(8)2005年9月16日に出願された米国特許出願第11/228,737号「Activating Virtual Keys Of A Touch−Screen Virtual Keyboard」、および、(9)2006年3月3日に出願された米国特許出願第11/367,749号「Multi−Functional Hand−Held Device」である。これらの出願のすべてを、そのまま全部、参照により本願に援用する。
[0052]タッチスクリーン112は、100dpiを超える解像度を有してもよい。一部の実施形態では、タッチスクリーンは、およそ160dpiの解像度を有する。ユーザは、いずれかの適切なオブジェクトまたは付属物、例えばスタイラス、指等を用いて、タッチスクリーン112に接触してもよい。一部の実施形態では、ユーザインタフェースは、主に指に基づく接触およびジェスチャにより機能するように設計されるが、その場合、指がタッチスクリーン上で接触する面積が広いため、スタイラスに基づく入力ほど正確でないことがありうる。一部の実施形態では、デバイスは、指に基づくおおまかな入力を、正確なポインタ/カーソル位置またはユーザが望んだ動作を行うためのコマンドへと翻訳する。
[0053]一部の実施形態では、タッチスクリーンに加えて、デバイス100は、個別の機能を起動または停止させるための(図示しない)タッチパッドを含んでいてもよい。一部の実施形態では、タッチパッドは、タッチスクリーンとは異なり、視覚的出力を表示しない、デバイスのタッチセンシティブエリアである。タッチパッドは、タッチスクリーン112とは別のタッチセンシティブ表面であるかまたは、タッチスクリーンによって形成されるタッチセンシティブ表面の延長であってもよい。
[0054]一部の実施形態では、デバイス100は、物理的またはバーチャルなホイール(例えばクリックホイール)を入力制御デバイス116として含んでいてもよい。ユーザは、クリックホイールを回転させることによってかまたは(例えば、接点の移動量が、クリックホイールの中心点に対するその角変位によって測定される場合)クリックホイールを使って接点を移動させることによって、タッチスクリーン112の中に表示される1つ以上のグラフィカルオブジェクト(例えばアイコン)の間をナビゲートするかまたはそれらと対話してもよい。また、クリックホイールは、1つ以上の表示されたアイコンを選択するのに用いられてもよい。例えば、ユーザがクリックホイールの少なくとも一部分または関連のボタンを押し下げてもよい。クリックホイールを介してユーザによって提供されたユーザコマンドおよびナビゲーションコマンドが、入力コントローラ160だけでなく、メモリ102の中の1つ以上のモジュールおよび/または命令の集合によって処理されてもよい。バーチャルなクリックホイールの場合、クリックホイールとクリックホイールコントローラとはそれぞれ、タッチスクリーン112およびディスプレイコントローラ156の一部であってもよい。バーチャルなクリックホイールの場合、クリックホイールは、デバイスとユーザとの対話に応じてタッチスクリーンディスプレイに現れたり消えたりする不透明または半透明のオブジェクトであってもよい。一部の実施形態では、バーチャルなクリックホイールは、携帯用多機能デバイスのタッチスクリーン上に表示され、ユーザがタッチスクリーンに接触することによって操作される。
[0055]また、デバイス100は、各種の構成要素に電力を供給するための電力系統162を含んでいる。電力系統162は、電力管理システムと、1つ以上の電源(例えばバッテリ、交流電流(AC))と、再充電システムと、電源障害検出回路と、電力コンバータまたは電力インバータと、電力ステータスインジケータ(例えばLED(light−emitting diode))と、携帯用デバイスの中の電力の生成、管理、分配に関連するその他のいずれかの構成要素とを含んでいてもよい。
[0056]また、デバイス100は、1つ以上の光センサ164を含んでいてもよい。図1Aおよび図1Bは、I/Oサブシステム106の中の光センサコントローラ158に接続された光センサを示す。光センサ164は、CCD(charge−coupled device)またはCMOS(complementary metal−oxide semiconductor)フォトトランジスタを含んでいてもよい。光センサ164は、1つ以上のレンズを通して投影された、環境からの光を受信して、その光を、画像を表すデータに変換する。イメージングモジュール(カメラモジュールとも呼ばれる)143と連動して、光センサ164は、静止画像またはビデオをキャプチャしてもよい。一部の実施形態では、タッチスクリーンディスプレイが静止画像またはビデオ画像を取得するためのビューファインダとして用いられうるように、光センサが、デバイスの前面にあるタッチスクリーンディスプレイ112の反対側の、デバイス100の背面に位置している。一部の実施形態では、ユーザがテレビ会議の他の参加者をタッチスクリーンディスプレイ上で見ながらユーザの画像がテレビ会議用に取得されうるように、光センサが、デバイスの前面に位置している。一部の実施形態では、単一の光センサ164が、テレビ会議だけでなく静止画像および/またはビデオ画像の取得のためにもタッチスクリーンディスプレイと共に用いられうるように、光センサ164の位置は、ユーザによって(例えば、デバイスのハウジングの中でレンズとセンサとを回転させることによって)変更されうる。
[0057]また、デバイス100は、1つ以上の近接センサ166を含んでいてもよい。図1Aおよび図1Bは、周辺装置インタフェース118に接続された近接センサ166を示す。または、近接センサ166は、I/Oサブシステム106の中の入力コントローラ160に接続されてもよい。近接センサ166は、米国特許出願第11/241,839号「Proximity Detector In Handheld Device」、第11/240,788号「Proximity Detector In Handheld Device」、第11/620,702号「Using Ambient Light Sensor To Augment Proximity Sensor Output」、第11/586,862号「Automated Response To And Sensing Of User Activity In Portable Devices」、および、第11/638,251号「Methods And Systems For Automatic Configuration Of Peripherals」に記述したように動作してもよく、それらをそのまま全部、参照により本願に援用する。一部の実施形態では、近接センサは、多機能デバイスがユーザの耳の近くに置かれた場合に(例えばユーザが電話をかけようとする場合)タッチスクリーン112をオフにして使用不能にする。
[0058]また、デバイス100は、1つ以上の加速度計168を含んでいてもよい。図1Aおよび図1Bは、周辺装置インタフェース118に接続された加速度計168を示す。または、加速度計168は、I/Oサブシステム106の中の入力コントローラ160に接続されてもよい。加速度計168は、米国特許公開第20050190059号「Acceleration−based Theft Detection System for Portable Electronic Devices」および第20060017692号「Methods And Apparatuses For Operating A Portable Device Based On An Accelerometer」の中に記述されたように動作してもよく、それらを両方共そのまま全部、参照により本願に援用する。一部の実施形態では、情報は、1つ以上の加速度計から受信されたデータの分析に基づいてポートレートビューまたはランドスケープビューとしてタッチスクリーンディスプレイ上に表示される。デバイス100は、任意で、加速度計168に加えて、デバイス100の位置および向き(例えばポートレートまたはランドスケープ)に関する情報を取得するための磁気計(図示せず)とGPS(またはGLONASSまたはその他の全地球的航法システム)受信器(図示せず)とを含んでいる。
[0059]一部の実施形態では、メモリ102の中に記憶されるソフトウェアコンポーネントには、オペレーティングシステム126と、通信モジュール(または命令の集合)128と、接触/動きモジュール(または命令の集合)130と、グラフィックスモジュール(または命令の集合)132と、テキスト入力モジュール(または命令の集合)134と、GPS(Global Positioning System)モジュール(または命令の集合)135と、アプリケーション136(または命令の集合)とが含まれる。さらに、一部の実施形態では、メモリ102は、図1A、図1B、および図3に示すように、デバイス/グローバル内部状態157を記憶する。デバイス/グローバル内部状態157は、もしあれば、どのアプリケーションが現在アクティブであるのかを示す、アクティブアプリケーション状態と、どのアプリケーション、ビュー、またはその他の情報が、タッチスクリーンディスプレイ112の各種の領域を占有しているのかを示す表示状態と、デバイスの各種のセンサおよび入力制御デバイス116から取得された情報を含む、センサ状態と、デバイスの位置および/または姿勢に関する位置情報とのうち、1つ以上を含んでいる。
[0060]オペレーティングシステム126(例えば、Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS、または例えばVx Worksのように内蔵されたオペレーティングシステム)は、一般的なシステムタスクを制御および管理(例えばメモリ管理、ストレージデバイス制御、電力管理等)するための各種のソフトウェアコンポーネントおよび/またはドライバを含んでおり、各種のハードウェアおよびソフトウェアコンポーネント間の通信を円滑化する。
[0061]通信モジュール128は、1つ以上の外部ポート124を経た他のデバイスとの通信を円滑化し、また、RF回路部108および/または外部ポート124によって受信されたデータを処理するための各種のソフトウェアコンポーネントを含んでいる。外部ポート124(例えばUSB(Universal Serial Bus)、FIREWIRE等)は、直接またはネットワーク経由(例えばインターネット、ワイヤレスLAN等)で間接的に、他のデバイスに接続するように構成される。一部の実施形態では、外部ポートは、iPod(Apple Inc.の登録商標)で用いられている30ピンコネクタと同じ、または類似した、および/または互換性のある、マルチピン(例えば30ピン)コネクタである。
[0062]接触/動きモジュール130は、(ディスプレイコントローラ156と連動して)タッチスクリーン112とその他のタッチセンシティブデバイス(例えばタッチパッドまたは物理的クリックホイール)との接触を検出してもよい。接触/動きモジュール130は、例えば接触が行われたかどうかを(例えば指が下がるイベントを検出して)判定することと、接触の移動があるかどうかを(例えば1つ以上の指がドラッグするイベントを検出して)判定してその移動をタッチスクリーン表面全体にわたって追跡することと、接触が中止されたかどうかを(例えば指が上がるイベントまたは接触の中断を検出して)判定することとのような、接触の検出に関連する各種の操作を行うための各種のソフトウェアコンポーネントを含んでいる。接触/動きモジュール130は、タッチセンシティブ表面から接触データを受信する。接点の移動を判定することは、一連の接触データによって表されるのだが、接点の速さ(大小)と、速度(大小および向き)と、および/または加速度(大小および/または向きの変化)とを判定することを含んでもよい。これらの操作は、単一の接触(例えば1本の指の接触)または複数の同時接触(例えば「マルチタッチ」/複数の指の接触)に適用されうる。一部の実施形態では、接触/動きモジュール130およびディスプレイコントローラ156は、タッチパッド上の接触を検出する。一部の実施形態では、接触/動きモジュール130およびコントローラ160は、クリックホイール上の接触を検出する。
[0063]接触/動きモジュール130は、ユーザによるジェスチャ入力を検出してもよい。タッチセンシティブ表面上の多様なジェスチャは、多様な接触パタンを有する。それゆえ、ジェスチャは、個別の接触パタンを検出することによって検出されうる。例えば、指をタップするジェスチャを検出することは、指が下がるイベントを検出し、その後、指が上がる(リフトオフ)イベントを指が下がるイベントと同じ位置(アイコンの位置)で(または実質的に同じ位置で)検出することを含んでいる。別の例として、タッチセンシティブ表面を指でスワイプするジェスチャを検出することは、指が下がるイベントを検出した後に1つ以上の指をドラッグするイベントを検出し、その後、指が上がる(リフトオフ)イベントを検出することを含んでいる。
[0064]グラフィックスモジュール132は、表示されるグラフィックスの輝度を変更するためのコンポーネントを含めて、タッチスクリーン112またはその他のディスプレイ上にグラフィックスをレンダリングして表示するための各種の既知のソフトウェアコンポーネントを含んでいる。本明細書では、「グラフィックス」という用語は、テキストと、ウェブページと、(例えば、ソフトキーを含むユーザインタフェースオブジェクトのような)アイコンと、デジタル画像と、ビデオと、アニメーションとそれに類似したものとを限定することなく含めて、ユーザに表示されうるいかなるオブジェクトをも含んでいる。
[0065]一部の実施形態では、グラフィックスモジュール132は、用いられることになるグラフィックスを表すデータを記憶している。個々の図形は、対応するコードを割り当てられてもよい。グラフィックスモジュール132は、アプリケーション等から、必要に応じて、コーディネートされたデータおよびその他のグラフィックプロパティデータと共に表示されることになるグラフィックスを指定する1つ以上のコードを受信し、次いで、ディスプレイコントローラ156に出力するためのスクリーン画像データを生成する。
[0066]テキスト入力モジュール134は、グラフィックスモジュール132の構成要素であってもよいが、各種のアプリケーション(例えば、連絡先137、電子メール140、IM141、ブラウザ147、そしてテキスト入力を必要とするいずれかの他のアプリケーション)にテキストを入力するためのソフトキーボードを提供する。
[0067]GPSモジュール135は、デバイスの位置を判定し、この情報を各種のアプリケーションで使用するために(例えば位置特定に基づくダイヤル操作で使用するために電話138に、ピクチャ/ビデオメタデータとしてカメラ143に、例えば天気ウィジェット、ローカル・イエローページ・ウィジェット、地図/航法用ウィジェットのような、位置特定に基づくサービスを提供するアプリケーションに)提供する。
[0068]アプリケーション136は、以下のモジュール(または命令の集合)またはそれらの下位集合または上位集合を含んでいてもよい。
・連絡先モジュール137(アドレス帳またはコンタクトリストと呼ばれることもある)、
・電話モジュール138、
・テレビ会議モジュール139、
・電子メールクライアントモジュール140、
・インスタントメッセージング(IM)モジュール141、
・エクササイズサポートモジュール142、
・静止画像および/またはビデオ画像用のカメラモジュール143
・画像管理モジュール144、
・ビデオプレーヤモジュール145、
・音楽プレーヤモジュール146、
・ブラウザモジュール147、
・カレンダモジュール148、
・天気ウィジェット149−1、株式ウィジェット149−2、電卓ウィジェット149−3、アラームクロックウィジェット149−4、辞書ウィジェット149−5、およびユーザによって取得されるその他のウィジェットならびにユーザが作成したウィジェット149−6のうち1つ以上を含みうるウィジェットモジュール149、
・ユーザが作成したウィジェット149−6を作成するためのウィジェットクリエータモジュール150、
・検索モジュール151、
・ビデオプレーヤモジュール145と音楽プレーヤモジュール146とを結合するビデオおよび音楽プレーヤモジュール152、
・メモモジュール153、
・地図モジュール154、および/または、
・オンラインビデオモジュール155。
[0069]メモリ102の中に記憶されうるその他のアプリケーション136の例には、他の文章作成アプリケーション、他の画像編集アプリケーション、描画アプリケーション、プレゼンテーションアプリケーション、JAVA対応アプリケーション、暗号化、デジタル権利管理、音声認識、および音声複製等が含まれる。
[0070]タッチスクリーン112、ディスプレイコントローラ156、コンタクトモジュール120、グラフィックスモジュール132およびテキスト入力モジュール134と連動して、連絡先モジュール137は、名前をアドレス帳に追加することと、名前をアドレス帳から削除することと、名前に電話番号、電子メールアドレス、物理的アドレスまたはその他の情報を関連付けることと、名前に画像を関連付けることと、名前をカテゴリ化したりソートしたりすることと、電話138、テレビ会議139、電子メール140、またはIM141等によって通信を開始および/または円滑化するため、電話番号または電子メールアドレスを提供すること等を含めて、(例えば、メモリ102またはメモリ370の中の連絡先モジュール137のアプリケーション内部状態192の中に記憶された)アドレス帳またはコンタクトリストを管理するのに用いられてもよい。
[0071]RF回路部108、音声回路部110、スピーカ111、マイク113、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックスモジュール132およびテキスト入力モジュール134と連動して、電話番号に対応する文字のシーケンスを入力し、アドレス帳137の中の1つ以上の電話番号にアクセスし、入力された電話番号を修正し、それぞれの電話番号をダイヤルし、会話を行い、そして、会話が完了した時に接続を切るかまたは電話を切るのに電話モジュール138を用いてもよい。上記のように、ワイヤレス通信が、複数の通信標準、プロトコルおよび技術のいずれを用いてもよい。
[0072]RF回路部108、音声回路部110、スピーカ111、マイク113、タッチスクリーン112、ディスプレイコントローラ156、光センサ164、光センサコントローラ158、接触モジュール130、グラフィックスモジュール132、テキスト入力モジュール134、連絡先リスト137および電話モジュール138と連動して、テレビ会議モジュール139は、ユーザと1人以上の他の参加者との間でユーザの命令に従ってテレビ会議を開始し、実行し、終了するための実行可能な命令を含んでいる。
[0073]RF回路部108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックスモジュール132およびテキスト入力モジュール134と連動して、電子メールクライアントモジュール140は、ユーザの命令に応じて電子メールを作成し、送信し、受信し、管理するための実行可能な命令を含んでいる。画像管理モジュール144と連動して、電子メールクライアントモジュール140は、カメラモジュール143で撮影された静止画像またはビデオ画像を添えて電子メールを作成して送信することを非常に容易にする。
[0074]RF回路部108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックスモジュール132およびテキスト入力モジュール134と連動して、インスタントメッセージングモジュール141は、インスタントメッセージに対応する文字のシーケンスを入力し、以前に入力した文字を修正し、それぞれのインスタントメッセージを(例えば、電話に基づくインスタントメッセージについてのSMS(Short Message ServiceまたはMMS(Multimedia Message Service)プロトコルを用いてかまたは、インターネットに基づくインスタントメッセージについてのXMPP、SIMPLE、IMPSを用いて)送信し、インスタントメッセージを受信し、そして受信されたインスタントメッセージを見るための実行可能な命令を含んでいる。一部の実施形態では、送信された、および/または、受信されたインスタントメッセージには、MMSおよび/またはEMS(Enhanced Messaging Service)でサポートされるように、グラフィックス、写真、音声ファイル、ビデオファイル、および/または、その他の添付物が含まれてもよい。本明細書では、「インスタントメッセージング」とは、電話に基づくメッセージ(例えばSMSまたはMMSを用いて送信されるメッセージ)とインターネットに基づくメッセージ(例えばXMPP、SIMPLE,またはIMPSを用いて送信されるメッセージ)との両方のことを言う。
[0075]RF回路部108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックスモジュール132、テキスト入力モジュール134、GPSモジュール135、地図モジュール154および音楽プレーヤモジュールと連動して、エクササイズサポートモジュール142は、エクササイズを(例えば、時間、距離、および/またはカロリー燃焼目標を添えて)作成し、エクササイズセンサ(スポーツデバイス)と通信し、エクササイズセンサデータを受信し、エクササイズを監視するのに用いられるセンサを較正し、エクササイズ用の音楽を選択して演奏し、そして、エクササイズデータを表示・記憶・送信するための実行可能な命令を含んでいる。
[0076]タッチスクリーン112、ディスプレイコントローラ156、光センサ164、光センサコントローラ158、接触モジュール130、グラフィックスモジュール132および画像管理モジュール144と連動して、カメラモジュール143は、静止画像またはビデオ(ビデオストリームを含めて)をキャプチャしてそれらをメモリ102の中に記憶し、静止画像またはビデオの特性を修正し、あるいは、静止画像またはビデオをメモリ102から削除するための実行可能な命令を含んでいる。
[0077]タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックスモジュール132、テキスト入力モジュール134およびカメラモジュール143と連動して、画像管理モジュール144は、静止画像および/またはビデオ画像を校正し、修正(例えば編集)し、または他の要領で操作し、ラベルを付け、削除し、(例えばデジタルスライドショーまたはアルバムとして)提示し、そして、記憶するための実行可能な命令を含んでいる。
[0078]タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックスモジュール132、音声回路部110およびスピーカ111と連動して、ビデオプレーヤモジュール145は、ビデオを表示し、提示し、またはその他の要領で(例えばタッチスクリーン112上に、または外部ポート124を介して外部の接続されたディスプレイ上に)再生するための実行可能な命令を含んでいる。
[0079]タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックスモジュール132、音声回路部110、スピーカ111、RF回路部108、およびブラウザモジュール147と連動して、音楽プレーヤモジュール146は、例えばMP3またはAACファイルのような1つ以上のファイル形式で記憶された、録音された音楽およびその他の音声ファイルをユーザがダウンロードして再生することを可能にする実行可能な命令を含んでいる。一部の実施形態では、デバイス100は、例えばiPod(Apple Inc.の登録商標)のようなMP3プレーヤの機能性を含んでいてもよい。
[0080]RF回路部108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックスモジュール132およびテキスト入力モジュール134と連動して、ブラウザモジュール147は、ウェブページまたはその部分だけでなくウェブページにリンクされた添付ファイルおよびその他のファイルをも、検索し、それにリンクし、受信し、そして表示することを含めて、ユーザ命令に従ってインターネットを閲覧するための実行可能な命令を含んでいる。
[0081]RF回路部108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックスモジュール132、テキスト入力モジュール134、電子メールクライアントモジュール140およびブラウザモジュール147と連動して、カレンダモジュール148は、ユーザ命令に従って、カレンダおよびカレンダに関連するデータ(例えばカレンダのエントリ、やることリスト等)を作成し、表示し、修正し、記憶するための実行可能な命令を含んでいる。
[0082]RF回路部108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックスモジュール132、テキスト入力モジュール134およびブラウザモジュール147と連動して、ウィジェットモジュール149は、ユーザによってダウンロードされ、使用されうる(例えば、天気ウィジェット149−1、株式ウィジェット149−2、電卓ウィジェット149−3、アラームクロックウィジェット149−4、および辞書ウィジェット149−5)かまたはユーザによって作成されうる(例えばユーザが作成したウィジェット149−6)ミニアプリケーションである。一部の実施形態では、ウィジェットは、HTML(Hypertext Markup Language)ファイルと、CSS(Cascading Style Sheets)ファイルと、JavaScriptファイルとを含んでいる。一部の実施形態では、ウィジェットは、XML(Extensible Markup Language)ファイルと、JavaScriptファイル(例えばYahoo!Widgets)とを含んでいる。
[0083]RF回路部108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックスモジュール132、テキスト入力モジュール134およびブラウザモジュール147と連動して、ウィジェットクリエータモジュール150が、(例えば、ウェブページのユーザ指定部分をウィジェットに変えて)ウィジェットを作成するためにユーザによって使用されてもよい。
[0084]タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックスモジュール132およびテキスト入力モジュール134と連動して、検索モジュール151は、ユーザの命令による1つ以上の検索基準(例えば1つ以上のユーザ指定の検索語)に合致するテキスト、音楽、音声、画像、ビデオ、および/またはメモリ102の中のその他のファイルを検索するための実行可能な命令を含んでいる。
[0085]タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックスモジュール132およびテキスト入力モジュール134と連動して、メモモジュール153は、ユーザ命令に従って、メモ、やることリスト等を作成して管理するための実行可能な命令を含んでいる。
[0086]RF回路部108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックスモジュール132、テキスト入力モジュール134、GPSモジュール135およびブラウザモジュール147と連動して、地図モジュール154は、ユーザ命令に従って、地図および地図に関連するデータ(例えば、ドライブの指示、店に関するデータ、および個別の位置またはその近くにおけるその他の観光スポット、およびその他の位置特定に基づくデータ)を受信し、表示し、修正し、そして記憶するために用いられうる。
[0087]タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックスモジュール132、音声回路部110、スピーカ111、RF回路部108、テキスト入力モジュール134、電子メールクライアントモジュール140およびブラウザモジュール147と連動して、オンラインビデオモジュール155は、ユーザがアクセスし、閲覧し、(例えばストリーミングおよび/またはダウンロードによって)受信し、(例えばタッチスクリーン上で、または、外部ポート124を介して接続された外部のディスプレイ上で)再生し、個別のオンラインビデオへのリンクを持つ電子メールを送信し、そして、例えばH.264のような1つ以上のファイル形式のオンラインビデオをその他の要領で管理することを可能にする命令を含んでいる。一部の実施形態では、電子メールクライアントモジュール140ではなく、インスタントメッセージングモジュール141を用いて、個別のオンラインビデオへのリンクを送信する。オンラインビデオアプリケーションの追加記述は、2007年6月20日に出願された米国仮特許出願第60/936,562号「Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos」および2007年12月31日に出願された米国特許出願第11/968,067号「Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos」に記載されており、その内容を全部、参照により本願に援用する。
[0088]上記の識別されたモジュールおよびアプリケーションの各々は、上記の1つ以上の機能と本願に記述する方法(例えば、本明細書で記述したコンピュータに実装された方法と、その他の情報処理方法)とを行うための実行可能な命令の集合に対応する。これらのモジュール(すなわち命令の集合)は、別個のソフトウェア、手順またはモジュールとして実装される必要はなく、それゆえ、各種のこれらのモジュールの部分集合が、各種の実施形態の中で組み合わされたり、その他の要領で再構成されたりしてもよい。例えば、ビデオプレーヤモジュール145は、音楽プレーヤモジュール146と組み合わされて、単一のモジュール(例えば、図1Bのビデオおよび音楽プレーヤモジュール152)にされてもよい。一部の実施形態では、メモリ102は、上記で識別したモジュールおよびデータ構造の部分集合を記憶してもよい。さらに、メモリ102は、上記で記述されていない追加のモジュールおよびデータ構造を記憶してもよい。
[0089]一部の実施形態では、デバイス100は、デバイス上の機能の事前設定された集合の操作が、まったくタッチスクリーンおよび/またはタッチパッドだけを通して行われるようなデバイスである。タッチスクリーンおよび/またはタッチパッドをデバイス100の操作用の主要な入力制御デバイスとして用いることによって、デバイス100上の物理的入力制御デバイス(例えばプッシュボタン、ダイヤル等)の数が削減されうる。
[0090]まったくタッチスクリーンおよび/またはタッチパッドだけを通して行われうる事前設定された機能の集合には、ユーザインタフェース間のナビゲーションが含まれる。一部の実施形態では、ユーザがタッチすると、タッチパッドがデバイス100を、デバイス100上に表示されうるいかなるユーザインタフェースからもメイン、ホーム、またはルートメニューへとナビゲートする。そのような実施形態では、タッチパッドは、「メニューボタン」と呼ばれてもよい。一部のその他の実施形態では、メニューボタンは、タッチパッドの代わりに、物理的なプッシュボタンまたはその他の物理的な入力制御デバイスであってもよい。
[0091]図1Cは、一部の実施形態による、イベント処理のための例示的な構成要素を示すブロック図である。一部の実施形態では、(図1Aおよび図1Bの)メモリ102または(図3の)メモリ370は、(例えばオペレーティングシステム126の中に)イベントソータ170と、それぞれのアプリケーション136−1(例えば前述のアプリケーション137乃至151、155、380乃至390のうちのいずれか)とを含んでいる。
[0092]イベントソータ170は、イベント情報を受信して、アプリケーション136−1と、イベント情報の配信先であるアプリケーション136−1のアプリケーションビュー191とを判定する。イベントソータ170は、イベントモニタ171とイベント発送モジュール174とを含んでいる。一部の実施形態では、アプリケーション136−1は、アプリケーションがアクティブであるか実行中である場合にタッチセンシティブディスプレイ112上に表示される現在のアプリケーションビューを示す、アプリケーション内部状態192を含んでいる。一部の実施形態では、イベントソータ170は、デバイス/グローバル内部状態157を用いて、どのアプリケーションが現在アクティブであるのかを判定し、そして、アプリケーション内部状態192を用いて、イベント情報の配信先であるアプリケーションビュー191を判定する。
[0093]一部の実施形態では、アプリケーション内部状態192は、追加情報として、例えば、アプリケーション136−1が実行を再開する時に用いられることになる再開情報と、アプリケーション136−1によって表示されているかまたは表示される準備ができている情報を示すユーザインタフェース状態情報と、アプリケーション136−1の以前の状態またはビューにユーザが戻ることを可能にするための状態の待ち行列と、ユーザが行った以前の動作のやり直しまたは取り消しの待ち行列とのうちの1つ以上を含んでいる。
[0094]イベントモニタ171は、周辺装置インタフェース118からイベント情報を受信する。イベント情報には、サブイベント(例えば、マルチタッチジェスチャの一部として、タッチセンシティブディスプレイ112上のユーザのタッチ)についての情報が含まれる。周辺装置インタフェース118は、I/Oサブシステム106、または、例えば近接センサ166のようなセンサ、加速度計168、および/または(音声回路部110を通して)マイク113から受信する情報を送信する。周辺装置インタフェース118がI/Oサブシステム106から受信する情報は、タッチセンシティブディスプレイ112またはタッチセンシティブ表面からの情報を含んでいる。
[0095]一部の実施形態では、イベントモニタ171は、所定の間隔で周辺装置インタフェース118に要求を送信する。それに応じて、周辺装置インタフェース118は、イベント情報を送信する。その他の実施形態では、周辺装置インタフェース118は、重大なイベント(例えば、所定の雑音閾値を超える、および/または、所定の持続時間を超える入力を受信すること)がある場合に限って、イベント情報を送信する。
[0096]また、一部の実施形態では、イベントソータ170は、ヒットビュー判定モジュール172および/またはアクティブイベント・レコグナイザ判定モジュール173を含んでいる。
[0097]ヒットビュー判定モジュール172は、タッチセンシティブディスプレイ112が2つ以上のビューを表示した時、サブイベントが1つ以上のビューの中のどこで発生したかを判定するためのソフトウェア手順を提供する。ビューは、ユーザがディスプレイ上で見ることのできる制御部およびその他の要素で構成されている。
[0098]アプリケーションに関連するユーザインタフェースのもう1つの態様は、本明細書ではアプリケーションビューまたはユーザインタフェースウィンドウと呼ばれることもあるビューの集合であり、その中で情報が表示され、タッチに基づくジェスチャが行われる。その中でタッチが検出される(それぞれのアプリケーションの)アプリケーションビューは、アプリケーションのプログラマチック階層またはビュー階層の中のプログラマチックレベルに対応してもよい。例えば、タッチが検出される最低のレベルのビューは、ヒットビューと呼ばれてもよく、適切な入力として認められるイベントの集合は、タッチに基づくジェスチャを開始する最初のタッチのヒットビューに、少なくとも部分的に、基づいて判定されてもよい。
[0099]ヒットビュー判定モジュール172は、タッチに基づくジェスチャのサブイベントに関する情報を受信する。アプリケーションが、階層として編成された複数のビューを有する場合、ヒットビュー判定モジュール172は、ヒットビューを、サブイベントを処理すべき階層の中の最低のビューとして識別する。ほとんどの状況では、ヒットビューは、最初のサブイベント(すなわち、イベントまたは潜在的イベントを形成するサブイベントのシーケンスの中の最初のサブイベント)が生じる最低レベルのビューである。一旦ヒットビューがヒットビュー判定モジュールによって識別されると、ヒットビューは典型的には、ヒットビューとして識別された同じタッチすなわち入力源に関するすべてのサブイベントを受信する。
[00100]アクティブイベント・レコグナイザ判定モジュール173は、ビューの階層の中でどのビューがサブイベントの個別のシーケンスを受信すべきかを判定する。一部の実施形態では、アクティブイベント・レコグナイザ判定モジュール173は、ヒットビューだけが、サブイベントの個別のシーケンスを受信するべきだと判定する。その他の実施形態では、アクティブイベント・レコグナイザ判定モジュール173は、サブイベントの物理的位置を含むすべてのビューが、アクティブに関わっているビューであると判定し、従って、すべてのアクティブに関わっているビューが、サブイベントの個別のシーケンスを受信すべきだと判定する。その他の実施形態では、たとえタッチサブイベントが、1つの個別のビューに関連するエリアに完全に限定されたとしても、階層の中のより上位のビューは、やはり、アクティブに関わっているビューのままであり続けるだろう。
[00101]イベント発送モジュール174は、イベント情報をイベントレコグナイザ(例えばイベントレコグナイザ180)へ発送する。アクティブイベント・レコグナイザ判定モジュール173を含む実施形態では、イベント発送モジュール174は、アクティブイベント・レコグナイザ判定モジュール173によって判定されたイベントレコグナイザへイベント情報を配信する。一部の実施形態では、イベント発送モジュール174は、それぞれのイベント受信器モジュール182によって取得されたイベント情報を、イベント待ち行列に記憶する。
[00102]一部の実施形態では、オペレーティングシステム126はイベントソータ170を含んでいる。あるいは、アプリケーション136−1がイベントソータ170を含んでいる。別の実施形態では、イベントソータ170は、スタンドアロンモジュールであるかまたは、例えば接触/動きモジュール130のような、メモリ102の中に記憶された別のモジュールの一部である。
[00103]一部の実施形態では、アプリケーション136−1は、1つ以上のアプリケーションビュー191を含んでおり、その各々は、アプリケーションのユーザインタフェースのそれぞれのビューの中で生じるタッチイベントを処理するための命令を含んでいる。アプリケーション136−1の個々のアプリケーションビュー191は、1つ以上のイベントレコグナイザ180と、1つ以上のイベントハンドラ190とを含んでいる。典型的には、それぞれのアプリケーションビュー191は、複数のイベントレコグナイザ180と、複数のイベントハンドラ190とを含んでいる。他の実施形態では、1つ以上のイベントレコグナイザ180は、例えばユーザインタフェースキット(図示せず)かまたは、そこからアプリケーション136−1が方法および他のプロパティを継承する高位レベルオブジェクトのような、別個のモジュールの一部である。一部の実施形態では、それぞれのアプリケーションビュー191は、データ更新器176と、オブジェクト更新器177と、GUI更新器178と、および/または、イベントソータ170から受信されたイベントデータ179とのうち1つ以上をも含んでいる。
[00104]それぞれのイベントレコグナイザ180は、イベント情報(例えばイベントデータ179)をイベントソータ170から受信し、そして、イベント情報からイベントを識別する。イベントレコグナイザ180は、イベント受信器182と、イベント比較器184とを含んでいる。また、一部の実施形態では、イベントレコグナイザ180は、メタデータ183と、(サブイベント配信命令を含みうる)イベント配信命令188との少なくとも部分集合を含んでいる。
[00105]イベント受信器182は、イベント情報をイベントソータ170から受信する。イベント情報は、サブイベントについての情報、例えば、タッチまたはタッチの移動を含んでいる。また、サブイベントに依存して、イベント情報は、例えばサブイベントの位置のような、追加情報を含んでいる。また、サブイベントが、タッチの動きに関わる場合、イベント情報は、サブイベントの速度および向きを含んでもよい。一部の実施形態では、イベントは、1つの向きから別の向きへの(例えばポートレートの向きからランドスケープの向きへの、またはその逆の)デバイスの回転を含んでおり、イベント情報は、デバイスの現在の向き(デバイスの姿勢とも呼ばれる)についての対応する情報を含んでいる。
[00106]イベント比較器184は、イベント情報を事前設定されたイベントまたはサブイベント定義と比較し、そして、比較に基づいて、イベントもしくはサブイベントを判定するかまたは、イベントもしくはサブイベントの状態を判定または更新する。一部の実施形態では、イベント比較器184は、イベント定義186を含んでいる。イベント定義186は、イベントの定義(例えば、事前設定されたサブイベントのシーケンス)、例えば、イベント1(187−1)、イベント2(187−2)等を含んでいる。一部の実施形態では、イベント187のサブイベントは、例えば、タッチ開始、タッチ終了、タッチ動作、タッチ中止、および複数のタッチを含んでいる。一例では、イベント1(187−1)についての定義は、表示されたオブジェクト上の2回のタップである。2回のタップは、例えば、所定の段階についての表示されたオブジェクト上の第1のタッチ(タッチ開始)と、所定の段階についての第1のリフトオフ(タッチ終了)と、所定の段階についての表示されたオブジェクト上の第2のタッチ(タッチ開始)と、所定の段階についての第2のリフトオフ(タッチ終了)とを含んでいる。別の例では、イベント2(187−2)についての定義は、表示されたオブジェクト上のドラッギングである。ドラッギングは、例えば、所定の段階についての表示されたオブジェクト上のタッチ(または接触)と、タッチセンシティブディスプレイ112を横断するタッチの移動と、タッチのリフトオフ(タッチ終了)とを含んでいる。また、一部の実施形態では、イベントは、イベントに関連するイベントハンドラ190についての情報を含んでいる。
[00107]一部の実施形態では、イベント定義187は、それぞれのユーザインタフェースオブジェクトについてのイベントの定義を含んでいる。一部の実施形態では、イベント比較器184は、どのユーザインタフェースオブジェクトがサブイベントに関連しているかを判定するため、ヒットテストを行う。例えば、3つのユーザインタフェースオブジェクトがタッチセンシティブディスプレイ112上に表示されているアプリケーションウィンドウにおいて、タッチセンシティブディスプレイ112上でタッチが検出された時、イベント比較器184は、3つのユーザインタフェースオブジェクトのうちのどれがタッチ(サブイベント)に関連しているかを判定するため、ヒットテストを行う。個々の表示されたオブジェクトがそれぞれのイベントハンドラ190に関連付けられると、イベント比較器は、ヒットテストの結果を用いて、どのイベントハンドラ190が起動されるべきかを判定する。例えば、イベント比較器184は、ヒットテストをトリガするサブイベントおよびオブジェクトに関連するイベントハンドラを選択する。
[00108]また、一部の実施形態では、それぞれのイベント187についての定義は、サブイベントのシーケンスがイベントレコグナイザのイベントタイプに対応しているか否かが判定されるまでイベント情報の配信を遅らせる遅延作用を含んでいる。
[00109]それぞれのイベントレコグナイザ180が、一連のサブイベントはイベント定義186の中のいずれのイベントにも合致しないと判定した場合、それぞれのイベントレコグナイザ180は、イベント不可能、またはイベントキャンセル状態を入力し、その後は、タッチに基づくジェスチャのその後のサブイベントを無視する。この状況では、もしあれば、ヒットビューについてアクティブであり続けるその他のイベントレコグナイザは、進行中のタッチに基づくジェスチャのサブイベントの追跡と処理とを続ける。
[00110]一部の実施形態では、それぞれのイベントレコグナイザ183は、構成可能なプロパティと、フラグと、および/または、イベント配信システムがどのようにしてアクティブに関わっているイベントレコグナイザへのサブイベント配信を行うかを示すリストとを備えたメタデータ183を含んでいる。一部の実施形態では、メタデータ183は、構成可能なプロパティと、フラグと、および/または、イベントレコグナイザがどのようにして相互に対話しうるかを示すリストとを含んでいる。一部の実施形態では、メタデータ183は、構成可能なプロパティと、フラグと、および/または、サブイベントがビュー階層またはプログラマチック階層の中の多様なレベルへ配信されるかどうかを示すリストとを含んでいる。
[00111]一部の実施形態では、それぞれのイベントレコグナイザ180は、イベントのうちの1つ以上の個別のサブイベントが認識された場合にイベントに関連するイベントハンドラ190を起動する。一部の実施形態では、それぞれのイベントレコグナイザ180は、イベントに関連するイベント情報をイベントハンドラ190に配信する。イベントハンドラ190を起動することは、サブイベントをそれぞれのヒットビューに送信すること(および送信を延期すること)とは区別される。一部の実施形態では、イベントレコグナイザ180は、認識されたイベントに関連するフラグをスロー(throw)し、そして、フラグに関連するイベントハンドラ190は、フラグをキャッチ(catch)して事前設定されたプロセスを行う。
[00112]一部の実施形態では、イベント配信命令188は、イベントハンドラを起動することなくサブイベントについてのイベント情報を配信するサブイベント配信命令を含んでいる。代わりに、サブイベント配信命令は、イベント情報を、一連のイベントハンドラに関連するイベントハンドラに、またはアクティブに関わっているビューに配信する。一連のイベントハンドラにかまたはアクティブに関わっているビューに関連するイベントハンドラは、イベント情報を受信して、所定のプロセスを行う。
[00113]一部の実施形態では、データ更新器176は、アプリケーション136−1で用いられるデータを作成して更新する。例えば、データ更新器176は、連絡先モジュール137の中で用いられる電話番号を更新し、またはビデオプレーヤモジュール145の中で用いられるビデオファイルを記憶する。一部の実施形態では、オブジェクト更新器177は、アプリケーション136−1で用いられるオブジェクトを作成して更新する。例えば、オブジェクト更新器177は、新たなユーザインタフェースオブジェクトを作成するかまたは、ユーザインタフェースオブジェクトの位置を更新する。GUI更新器178は、GUIを更新する。例えば、GUI更新器178は、ディスプレイ情報を準備して、それをグラフィックスモジュール132へ送信してタッチセンシティブディスプレイ上に表示させる。
[00114]一部の実施形態では、イベントハンドラ190は、データ更新器176と、オブジェクト更新器177と、GUI更新器178とを含んでいるかまたはそれらにアクセスする。一部の実施形態では、データ更新器176と、オブジェクト更新器177と、GUI更新器178とは、それぞれのアプリケーション136−1またはアプリケーションビュー191の単一のモジュールの中に含まれている。その他の実施形態では、それらは、2つ以上のソフトウェアモジュールの中に含まれている。
[00115]理解されるべきだが、タッチセンシティブディスプレイ上のユーザのタッチについてのイベント処理に関する前述の議論は、入力デバイスを使って多機能デバイス100を操作するための他の形のユーザ入力にも適用されるのであるが、そのすべてがタッチスクリーン上で開始されるのではなく、例えば、マウスの移動やマウスボタンの押し下げを、1つまたは複数のキーボードの押し下げや保持、タッチパッド上のユーザの移動のタップ、ドラッグ、スクロール等、ペンスタイラス入力、デバイスの動き、口頭の命令、検出された目の動き、バイオメトリック入力、および/またはいずれかのそれらの組み合わせと組み合わせるかまたは組み合わせることなく統合し、それらが、認識されることになるイベントを定義するサブイベントに対応する入力として利用されてもよい。
[00116]図2は、一部の実施形態による、タッチスクリーン112を有する携帯用多機能デバイス100を示す図である。タッチスクリーンは、ユーザインタフェース(UI)200の中に1つ以上のグラフィックスを表示してもよい。本実施形態および以下に記述するその他の実施形態では、ユーザは、例えば1つ以上の指202(図では原寸に比例して描かれてはいない)または1つ以上のスタイラス203(図では原寸に比例して描かれてはいない)を使ってグラフィックスに接触するかまたはタッチすることによって、1つ以上のグラフィックスを選択してもよい。一部の実施形態では、1つ以上のグラフィックスの選択は、ユーザが1つ以上のグラフィックスとの接触を中断する時に行われる。一部の実施形態では、接触には、デバイス100と接触していた指のジェスチャ、例えば1つ以上のタップ、1つ以上のスワイプ(左から右へ、右から左へ、上へおよび/または下へ)および/またはローリング(左から右へ、右から左へ、上へおよび/または下へ)が含まれうる。一部の実施形態では、グラフィックとの不注意な接触は、グラフィックを選択しなくてもよい。例えば、選択に対応するジェスチャがタップである場合、アプリケーションのアイコンをスワイプするジェスチャは、対応するアプリケーションを選択しなくてもよい。
[00117]また、デバイス100は、例えば「ホーム」またはメニューボタン204のような、1つ以上の物理的ボタンを含んでいてもよい。前述したように、メニューボタン204を用いて、デバイス100上で実行されうるアプリケーションの集合の中のいずれかのアプリケーション136へのナビゲートが行われてもよい。あるいは、一部の実施形態では、メニューボタンは、タッチスクリーン112上に表示されるGUIの中のソフトキーとして実装される。
[00118]一実施形態では、デバイス100は、タッチスクリーン112と、メニューボタン204と、デバイスの電源をオン/オフにしてデバイスをロックするためのプッシュボタン206と、音声調整ボタン208と、SIM(Subscriber Identity Module)カードスロット210と、ヘッドフォンジャック212と、ドッキング/充電用外部ポート124とを含んでいる。プッシュボタン206を用いて、ボタンを押して事前設定された時間間隔の間ボタンを押された状態に保持することによってデバイスの電源をオン/オフにし、ボタンを押して事前設定された時間間隔が経過する前にボタンを解放することによってデバイスをロックし、および/または、デバイスのロックを解除して、ロック解除プロセスを開始してもよい。また、代替的実施形態では、デバイス100は、マイク113を通して一部の機能の起動または停止のための口頭入力を受け入れてもよい。
[00119]図3は、一部の実施形態による、ディスプレイとタッチセンシティブ表面とを備えた例示的な多機能デバイスのブロック図である。デバイス300は携帯用である必要はない。一部の実施形態では、デバイス300は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、マルチメディアプレーヤデバイス、ナビゲーションデバイス、(例えば子供の学習玩具のような)教育デバイス、ゲーミングシステム、または制御デバイス(例えばホームまたは業務用コントローラ)である。デバイス300は、典型的には、1つ以上の処理ユニット(CPU)310と、1つ以上のネットワーク通信インタフェースまたはその他の通信インタフェース360と、メモリ370と、これらの構成要素を相互接続するための1つ以上の通信バス320とを含んでいる。通信バス320は、システムの構成要素間の通信を相互接続して制御する回路部(チップセットと呼ばれることもある)を含んでいてもよい。デバイス300は、典型的にはタッチスクリーンディスプレイであるディスプレイ340を含むI/O(input/output)インタフェース330を含んでいる。また、I/Oインタフェース330は、キーボードおよび/またはマウス(またはその他のポインティングデバイス)350とタッチパッド355とを含んでいてもよい。メモリ370は、高速ランダムアクセスメモリ、例えばDRAM、SRAM、DDR RAMまたはその他のランダムアクセス・ソリッドステート・メモリデバイスを含んでおり、また、不揮発性メモリ、例えば、1つ以上の磁気ディスクストレージデバイス、光学ディスクストレージデバイス、フラッシュメモリデバイス、またはその他の不揮発性ソリッドステート・ストレージデバイスを含んでいてもよい。メモリ370は、任意で、CPU310から離れた位置の1つ以上のストレージデバイスを含んでいてもよい。一部の実施形態では、メモリ370は、携帯用多機能デバイス100(図1)のメモリ102の中に記憶されたプログラム、モジュールおよびデータ構造と類似したプログラム、モジュールおよびデータ構造、またはそのサブセットを記憶している。さらに、メモリ370は、携帯用多機能デバイス100のメモリ102の中に現存しない追加のプログラム、モジュールおよびデータ構造を記憶してもよい。例えば、デバイス300のメモリ370は、描画モジュール380、プレゼンテーションモジュール382、ワードプロセッシングモジュール384、ウェブサイト作成モジュール386、ディスクオーサリングモジュール388、および/または、表計算モジュール390を記憶してもよいが、一方で、携帯用多機能デバイス100(図1)のメモリ102は、これらのモジュールを記憶しなくてもよい。
[00120]上記で識別した図3の個々の要素は、前述した1つ以上のメモリデバイスの中に記憶されてもよい。上記で識別した個々のモジュールは、上記の機能を行うための命令の集合に対応する。上記で識別したモジュールまたはプログラム(すなわち、命令の集合)は、別個のソフトウェアプログラム、手順またはモジュールとして実装される必要はなく、それゆえ、これらのモジュールの各種の部分集合が、各種の実施形態の中で組み合わされてもよいし、その他の要領で再構成されてもよい。一部の実施形態では、メモリ370は、上記で識別したモジュールおよびデータ構造の部分集合を記憶してもよい。さらに、メモリ370は、上述していない追加のモジュールおよびデータ構造を記憶してもよい。
[00121]次に、携帯用多機能デバイス100に実装されうるユーザインタフェース(「UI」)の実施形態に注意を向けよう。
[00122]図4Aおよび図4Bは、一部の実施形態による、携帯用多機能デバイス100上のアプリケーションのメニューのための例示的なユーザインタフェースを示す図である。同様のユーザインタフェースがデバイス300上に実装されてもよい。一部の実施形態では、ユーザインタフェース400Aは、以下の要素、またはその部分集合または上位集合を含んでいる。
・例えばセルラーおよびWiFi信号のようなワイヤレス通信用の信号強度指標402、
・時刻404、
・Bluetooth指標405、
・電池状態指標406、
・以下のような頻繁に使用するアプリケーション用のアイコンを備えたトレイ408
・電話138、これは、不在着信もしくはボイスメールメッセージの数の指標414を含んでいてもよい
・電子メールクライアント140、これは未読の電子メールの数の指標410を含んでいてもよい
・ブラウザ147、
・音楽プレーヤ146、および
・その他のアプリケーション用のアイコン、例えば、
・IM141、
・画像管理144、
・カメラ143、
・ビデオプレーヤ145、
・天気149−1、
・株式149−2、
・エクササイズサポート142、
・カレンダ148、
・電卓149−3、
・アラームクロック149−4、
・辞書149−5、および
・ユーザ作成によるウィジェット149−6。
[00123]一部の実施形態では、ユーザインタフェース400Bは、以下の要素、またはそれらの部分集合もしくは上位集合を含んでいる。
・上記の402、404、405、406、141、148、144、143、149−3、149−2、149−1、149−4、410、414、138、140、および147、
・地図154、
・メモ153、
・設定412、これは、以下にさらに述べるように、デバイス100およびその各種のアプリケーション136の設定へのアクセスを提供する
・ビデオおよび音楽プレーヤモジュール152、これは、iPod(Apple Inc.の登録商標)モジュール152とも呼ばれる
・オンラインビデオモジュール155、YouTube(Google Inc.の登録商標)モジュール155とも呼ばれる。
[00124]下記の記述の中で、「接触(コンタクト)」という用語は、(連絡先リスト、アドレス帳などにおけるエントリを記述するのに用いられる場合を除いて)「タッチジェスチャ」についての省略用語として用いられ、それゆえ、以下で言及または記述された個々の接触は、タッチセンシティブディスプレイまたはその他のタッチセンシティブ表面のセンサ(またはセンサの集合)によって検出されたいずれかの適切なタッチジェスチャであってもよい。さらに、一部の実施形態では、「タッチジェスチャ」は、タッチセンシティブスクリーン112またはその他のタッチセンシティブ表面に物理的接触を行う、1つ以上の指または1つ以上のスタイラスによって行われるジェスチャだけではなく、タッチセンシティブスクリーン112またはその他のタッチセンシティブ表面の1つ以上のセンサがこれらのジェスチャを検出することができるほどタッチセンシティブスクリーン112またはその他のタッチセンシティブ表面に、全体としてまたは部分的に、十分近い状態で行われるジェスチャも含んでいる。
[00125]「条件付きで使用可能な(conditionally enabled)」ボタンという用語は、使用可能にされた場合には作動可能であり、使用不可にされた場合には作動不可能な、ソフトキーボードまたはユーザインタフェース上に表示されるボタン、キー、またはオブジェクトを意味する。「条件付きで使用可能なボタン」という用語は、ボタンが使用可能か使用不可かは条件によるわけだから、「条件付きで使用不可である(conditionally disabled)ボタン」と論理的に同等である。
[00126]ソフトボタンまたはオブジェクトに関連する位置でユーザが開始したタッチジェスチャに応じてのソフトボタンまたはその他のユーザインタフェースオブジェクトの作動は、タッチダウンイベント、リフトオフイベント、またはいずれかの他の検出可能なイベントの時点で行われてもよい。「作動(activation)」という用語は、ボタンまたはボタンに関連する機能を作動させるイベントを意味する。例えば、ソフトキーボード上のキーの作動は、キーに対応する文字をテキストバッファに追加するイベントであるか、または、例えばテキスト入力モードを英語の小文字から大文字にシフトすること、キーボードの1つ以上のキーを別の記号または機能を表すためにシフトすること、現在のソフトキーボードをそれぞれの代替キーボードと置換すること等のようなキーボード機能を行うイベントである。
[00127]次に、例えばデバイス300または携帯用多機能デバイス100のような、ディスプレイとタッチセンシティブ表面とを備えた多機能デバイス上で実装されうるユーザインタフェース(「UI」)と、関連のプロセスとの実施形態に注意を向けよう。
[00128]図5A乃至5Iは、一部の実施形態による、ボタンまたはその他の表示されたオブジェクトを条件付きで作動させるための例示的なインタフェースを示す図である。これらの図の中のインタフェースは、図6A乃至6Bおよび図7のプロセスを含めて、以下に記すプロセスを示すのに用いられる。ボタンもしくはオブジェクトを作動させると、その結果、ボタンもしくはオブジェクトに対応する動作または機能が行われるが、場合によっては、行われる動作または機能は、作動されたボタンまたはオブジェクトのIDと、ボタンまたはオブジェクトが作動される文脈との両方に依存する。それぞれのボタンまたはオブジェクトの作動に応じて行われる動作の例の網羅的でない集合には、(作動されたボタンまたはオブジェクトに対応する)記号を文書または入力テキストフィールドに追加することと、表示されるキーボードを、現在表示されているキーボードから、作動されたボタンまたはオブジェクトに対応するキーボードに変更することと、作動されたボタンまたはオブジェクトに対応するアプリケーションまたは機能の実行を開始または再開するかまたは表示を再開することとが含まれる。以下に記述するように、場合によっては、ボタンまたはオブジェクトの作動の結果として、一次機能(例えば、入力テキストフィールドに文字または記号を挿入すること)と二次機能(例えば、ユーザインタフェースに表示された1つ以上のボタンまたはオブジェクトの作動を一時的に使用可能または使用不可にすること、または、一次機能に関係する機能の実行を一時的に使用可能または使用不可にすること)との両方が行われる。
[00129]図5A乃至5Iでは、一部の指の接触の移動の大きさが、説明する目的で誇張されることがある。指の接触の移動に関係する図の中のいずれの描写も、本明細書で開示された方法およびデバイスに関連する大きさや縮尺を理解するための必要条件または限定と考えられるべきではない。
[00130]UI500A(図5A)は、デバイス100のタッチスクリーン112上の(例えば、メモモジュール153、電子メールクライアントモジュール140等のための)例示的なテキスト入力ユーザインタフェースを描いている。この例では、UI500Aは、テキスト入力領域502とQWERTYソフトキーボード504とを含んでいる。テキスト入力領域502は、テキスト506−1を持つ入力テキスト506と、位置508−Aにあるカーソル508とを含んでいてもよい。一部の実施形態では、ソフトキーボード504は、1つ以上の言語に関連付けられている。ソフトキーボード504は、1つ以上のソフトボタン(または「ソフトキー」)510を含んでいる。ボタン510の一部は、それぞれの文字に関連付けられている。例えば、ボタン510−Aは文字「Q」に、ボタン510−Bは文字「W」に、ボタン510−Cは文字「E」に、そしてボタン510−Eは復帰改行または強制改行文字に関連付けられている。ボタン510の別の一部は、特定のテキスト入力機能または操作に関連付けられている。例えば、ボタン510−Dは削除/バックスペース操作に、ボタン510−Fは、(例えば、他のボタン510の文字入力を修正するための)シフト機能に関連付けられている。
[00131]また、キーボード504は、キーボードの操作に関係するソフトボタン(または「ソフトキー」)512を含んでいる。例えば、ボタン512は、QWERTYキーボード504を数および記号のキーボードに切り換えるためのボタン512−Aと、キーボード504を異なる言語に関連付けられたキーボードに切り換えるかまたはキーボード504を異なる言語に切り換えるためのボタン512−Bと、キーボード504を隠すためのボタン512−Cとを含んでいる。それゆえ、この例ではボタン512は、モード変更ボタンであり、表示されたソフトキーボードを変更することによって、または、ディスプレイからキーボードを除去することによって、デバイスの操作モードを変更する。
[00132]UI500H(図5H)は、デバイス100のタッチスクリーン112上の(例えばメモモジュール153、電子メールクライアントモジュール140等のための)別の例示的なテキスト入力ユーザインタフェースを描いている。UI500Hは、テキスト入力領域502と数字および記号ソフトキーボード520とを含んでいる。テキスト入力領域502は、テキスト506−1を持つ入力テキスト506と、位置508−Aにあるカーソル508とを含んでいてもよい。一部の実施形態では、キーボード520は、1つ以上の言語に関連付けられている。ソフトキーボード520は、1つ以上のソフトボタン(または「ソフトキー」)522を含んでいる。ボタン522の一部は、それぞれの数字または記号に関連付けられている。例えば、ボタン522−Aは数字「1」に、ボタン522−Bは数字「2」に、そしてボタン522−Cはクエスチョンマーク記号(「?」)に関連付けられている。ボタン522の別の一部は、特定のテキスト入力機能または操作に関連付けられている。例えば、ボタン522−D、522−E、522−Fは、ボタン510−D、510−E、510−Fと、それぞれ同じ機能性を有している。また、キーボード522は、ボタン512−Bおよび512−Cと同様、アルファベット/文字キーボードを切り替えるためのボタン512−Dを含んでいる。
[00133]一部の実施形態では、ボタン510または522は、無条件に使用可能なボタンであり、ボタン512は、条件付きで使用可能なボタンである。条件付きで使用可能なボタン512は、それらの作動に関して特定の条件を有するが、無条件に使用可能なボタン510および522は、それらの条件には制約されない。あるいは、一部の実施形態では、ボタン512は特定の条件下で使用不可にされるが、ボタン510または522は、それらの条件下では使用不可にされない。条件付きで使用可能なボタンの一例は、第2のキーボード(例えば、数字キーまたはその他の記号を有するキーボードであって、少なくともその一部は、キーボード選択ボタンを含む第1のキーボードによっては表示されない)を起動するためのキーボード選択ボタンである。この例では、キーボード選択ボタンは、条件付きで使用可能であるが、それは、他の所定のソフトキーボードボタン(例えば、表示されたソフトキーボードの中のいずれかの文字ボタン)の作動に応じて一時的に使用不可にされるからであり、そうでない場合は、作動のために使用可能にされる。
[00134]一部の実施形態によると、条件付きで使用可能なそれぞれのボタン512の作動の条件は、それぞれのボタン512に対応する位置上の接触が、キーボード504または520上の別のボタンに対応する位置上の接触の検出から開始される事前設定された期間(すなわち、事前設定された時間量の時間ウィンドウ)内に検出されるかどうかであり、ボタン512の作動は、時間ウィンドウの間は使用不可にされる。一部の実施形態では、時間ウィンドウは、ボタン510、522、512を含めて、キーボード504または520上のいずれかのボタン上の接触の検出から開始される。一部の実施形態では、時間ウィンドウは、ボタン510または520上の接触の検出から開始されるが、ボタン512上では開始されない。以下に論じるように、時間ウィンドウは、事前設定された持続時間を有しており、すなわち、事前設定された時間量の間は持続するのだが、それは、一部の実施形態では固定されており(すなわち、不変であり)、その他の実施形態では、可変であるかまたは文脈(コンテキスト)に依存する。
[00135]UI500B(図5B)は、タッチスクリーン112上の接触514を示す。この例では、接触514は、タッチスクリーン112上でボタン510−Cの位置に対応する位置514−Aにあり、また、それは、ボタン510−Cの作動領域にも対応する。位置514−Aでの接触514の検出に応じて、文字「e」516が入力テキスト506に挿入され、テキスト506−1がテキスト506−2に変わり、カーソル508が位置508−Bへ進む。
[00136]また、ボタン510−Cの位置に対応する位置514−Aでの接触514の検出によって、事前設定された時間量の時間ウィンドウが開始し、その間、キーボード504の条件付きで使用可能な1つ以上のボタン(例えばボタン512)の位置に対応するタッチスクリーン112上の位置で検出される接触は無視され、これらのボタンは、時間ウィンドウの間は使用不可にされる。一部の実施形態では、時間ウィンドウの事前設定された持続時間は固定され(すなわち、不変で)、例えば200ミリ秒と500ミリ秒との間の持続時間を有し、別の例では、時間ウィンドウの事前設定された持続時間は、150ミリ秒と700ミリ秒との間の値に固定され、さらに別の例では、時間ウィンドウの事前設定された持続時間は、300ミリ秒と750ミリ秒との間の値に固定される。その他の実施形態では、時間ウィンドウの長さは、経験則と、ユーザの履歴と、その他の関連の文脈上の情報に依存する。一例では、デバイスが、ユーザのキーストローク間の、またはワード内キーストローク間の平均遅延を測定し、その値を事前設定された平均キーストローク遅延値と比較し、そして、ユーザの平均キーストローク遅延と事前設定された平均との間の差に従って時間ウィンドウの長さを調整する。別の例では、時間ウィンドウの長さは、一組のアプリケーション(例えばメモおよび電子メールアプリケーション)については、他のアプリケーション(または他の複数のアプリケーション)(例えばブラウザアプリケーション)とは異なる。時間ウィンドウは、モード変更抑制時間ウィンドウと呼ばれることもあるが、それは、一部の実施形態では時間ウィンドウの間はキーボードモード変更が抑制されるからである。
[00137]UI500C(図5C)は、接触514の直後のタッチスクリーン112上の接触518を示す。UI500Cは、接触518が行われて検出されうるキーボード504上の(多くのうちで)3つのありうる位置を示す。この例では、接触518は、タッチスクリーン112上の位置518−A、518−B、または518−Cで検出されうる。以下の図は、接触514に続いてそれぞれの位置518−A、518−B、または518−Cで検出される接触518の効果を示す。
[00138]UI500D(図5D)は、接触514の直後のタッチスクリーン112上の接触518を示す。この例では、接触518は、タッチスクリーン112上でボタン510−Bの位置に対応する位置518−Aにあり、また、それは、ボタン510−Bの作動領域にも対応している。位置518−Aでの接触518の検出に応じて、文字「w」520が入力テキスト506に挿入され、テキスト506−2がテキスト506−3に変わり、カーソル508が位置508−Cへ進む。ボタン510−Bは、接触514からの時間ウィンドウによって影響を受けない無条件に使用可能なボタンであり、位置518−Aで検出された接触518が接触514からの時間ウィンドウの内側で行われようと外側で行われようと、文字の挿入とカーソルの移動とは行われる。
[00139]さらに、位置518−Aで接触518を検出すると、事前設定された時間量を有する新たな時間ウィンドウが始まる。実際上は、時間ウィンドウが接触518の検出から開始するかまたはそれに従って調整されるように、時間ウィンドウがシフトされるかまたはそうでなければ変更される。
[00140]UI500E(図5E)は、接触514の直後のタッチスクリーン112上の接触518を示す。この例では、接触518は、タッチスクリーン112上でボタン510−Dの位置に対応する位置518−Bにあり、また、それは、ボタン510−Dの作動領域にも対応している。位置518−Bでの接触518の検出に応じて、テキスト506−2の中の文字「e」516が削除され、テキスト506−2がテキスト506−1に戻り、カーソル508が位置508−Aへ移動する。ボタン510−Dは、接触514によってトリガされる時間ウィンドウによって影響を受けない無条件に使用可能なボタンであり、位置518−Bで検出された接触518が接触514からの時間ウィンドウの内側で行われようと外側で行われようと、文字の削除とカーソルの移動とは行われる。さらに、位置518−Bで接触518を検出すると、新たな時間ウィンドウが始まる。上記で説明したように、時間ウィンドウは事前設定された持続時間を有しており、それは、一部の実施形態では固定されており(すなわち、不変であり)、その他の実施形態では、可変であるかまたは文脈に依存する。
[00141]UI500F(図5F)は、接触514の直後のタッチスクリーン112上の接触518を示す。この例では、接触518は、タッチスクリーン112上でボタン512−Cの位置に対応する位置518−Cにあり、また、それは、ボタン512−Cの作動領域にも対応している。ボタン512−Cは、接触514からの時間ウィンドウによって影響を受ける条件付きで使用可能なボタンである。接触518がいつ行われたか(それゆえ、接触518がいつ検出されたか)に依存して、位置518−Cでの接触518の検出に応じて、キーボード504が隠されるかまたは何も起こらない。時間ウィンドウの中の或る時刻に接触518が位置518−Cで検出された場合、キーボード504は隠されず、そしてUI500Fは、表示され続け、接触518は無視される。時間ウィンドウの後の或る時刻に接触518が位置518−Cで検出された場合、UI500G(図5G)に示すように、キーボード504は隠される。
[00142]時系列550(原寸に比例して描かれていない)(図5I)は、上記の接触が検出されうる時刻を描いており、検出された接触によって開始された時刻ウィンドウを示している。時系列550は、接触が検出された時刻552と、その後の接触が検出されうる時刻554、556、558とを(例えば、時間ウィンドウの時間の長さの中で時刻552の前には接触は検出されないと仮定して)描いている。時刻552において検出されたボタン510(例えば位置514−Aの接触514)または522(または一部の実施形態では、ボタン512を含めて、ソフトキーボード504または522上のいずれかのボタン)に対応する位置での接触は、時刻552から開始される持続時間の時間ウィンドウ560−Aを開始する。時刻552で検出された接触の位置に対応するボタンが、作動される。接触が時刻554で検出され、その接触がボタン510または522に対応する位置にある場合には(例えば、接触514が、ボタン510−Cに対応する位置514−Aにある)、対応するボタンが、作動され(例えばボタン510−Cが作動される)、ボタン510または520の作動は、時間ウィンドウによっては影響を受けない。接触が時刻554で検出され、その接触が条件付きで使用可能なボタンに対応する位置にある場合には(例えば、接触518が、ボタン512−Cに対応する位置518−Cにある)、対応するボタンの作動が阻止され(例えばボタン512−Cの作動が阻止され)、条件付きで使用可能なボタンは、時間ウィンドウ560−Aの間は使用不可にされる。他方、時刻552と558との間に検出される接触が何ら介在することなく、時間ウィンドウ560−Aの外側である時刻558に条件付きで使用可能なボタンに対応する位置で接触が検出された場合には、対応する条件付きで使用可能なボタンが作動される。
[00143]上記の時刻552に検出された接触の直後に時刻554で検出されたボタン510または522上の接触は、時間ウィンドウ560−Aと同じ長さを有しうる時間ウィンドウ560−Bを開始する。時刻554で検出された接触の直後の接触が、条件付きで使用可能なボタンに対応する位置での接触であり、かつ、接触が時刻556で検出される場合には、条件付きで使用可能なボタンの作動が阻止される。作動が阻止されるのは、たとえ時刻556が時間ウィンドウ560−Aの外側であったとしても、時刻556は、時間ウィンドウ560−Bの中にあるからである。代わりに接触が時刻558に検出された場合には、時刻558は時間ウィンドウ560−Aおよび560−Bの外側にあるのだから、対応する条件付きで使用可能なボタンが作動される。
[00144]図6A乃至6Bは、一部の実施形態による、ボタンを作動させる方法600を示すフロー図である。方法600は、ディスプレイとタッチセンシティブ表面とを備えた多機能デバイス(例えば、図3のデバイス300または図1の携帯用多機能デバイス)で行われる。一部の実施形態では、ディスプレイはタッチセンシティブディスプレイであり、タッチセンシティブ表面はディスプレイ上にある。
[00145]下記のように、方法600は、ユーザにかかる認知上の負担を軽減するかたちでボタンを作動させる直感的なやり方を提供し、それによって、より効率的なヒューマン・マシン・インタフェースを実現する。電池で動作するコンピューティングデバイスにとっては、モード変更ボタンまたはその他の条件付きで使用可能なボタンを不注意で作動することを阻止しながら、ユーザがデバイスをより迅速かつより効率よく使用できるようにすることは、電力を節約し、次回の電池充電までの時間を増加させる。
[00146]デバイスが、無条件に使用可能な複数のボタンと条件付きで使用可能な1つ以上のボタンとを含む複数のボタンを有するソフトキーボードを表示する(602)。例えば図5Aで、キーボード504がタッチスクリーン112上に表示される。キーボード504は、無条件に使用可能なボタン510と、ボタン512とを含んでおり、ボタン512のうち1つ以上(例えばボタン512−C)は、条件付きで使用可能なボタンである。別の例として、図5Hで、キーボード520がタッチスクリーン112上に表示される。キーボード520は、無条件に使用可能なボタン522と、ボタン512とを含んでおり、ボタン512のうち1つ以上は、条件付きで使用可能なボタンである。
[00147]一部の実施形態では、条件付きで使用可能な1つ以上のボタンには、キーボードを隠すためのボタン(例えばボタン512−C)(620)と、ソフトキーボードに関連する言語を変更するためのボタン(例えばボタン512−B)(622)と、ソフトキーボードが第1の言語に関連付けられている場合には、ソフトキーボードを第2の言語に関連付けられたソフトキーボードに切り換えるためのボタン(例えばボタン512−B)(624)と、アルファベットキーボードから数字および記号キーボードに切り換えるためのボタン(例えばボタン512−A)(626)と、数字および記号キーボードからアルファベットキーボードに切り換えるためのボタン(例えばボタン512−D)(628)とのうちの1つ以上が含まれる。
[00148]デバイスは、第1のボタンによる第1の入力を第1の時刻に検出する(604)。例えば、図5Bで、接触514(第1の入力)が、ボタン510−Cに対応する位置514−Aで時刻552(図5I)に検出される。
[00149]デバイスは、第1の入力を検出したことに対して第1のボタンを作動させることによって応じる(606)。例えば、図5Bでは、デバイスは、位置514−Aでの接触514の検出に対してボタン510−Cを作動させることによって応じる。作動の効果には、文字「e」516を入力テキスト506に挿入することと、カーソル508が位置508−Bに移動することとが含まれる。
[00150]第1のボタンの作動を検出してそれに対して動作した後、デバイスは第2のボタンによる第2の入力を第2の時刻に検出する(608)。例えば、図5Cでは、デバイスは、接触518を時刻552の後の第2の時刻(図5Iの時刻554または556)に検出する。第2の時刻に接触518が検出される位置に依存して(例えば、接触518によってどのボタンが選択されるかに依存して)、そして、先のボタンの作動によって開始された時間ウィンドウの中に第2の時刻が入るかどうかに依存して、異なる効果が生じうる。
[00151]第2のボタンによる第2の入力を第2の時刻に検出したことに応じて(610)、第1のボタンが無条件に使用可能なボタンであって第2のボタンが無条件に使用可能なボタンである場合、デバイスは第2のボタンを作動させる(612)。例えば、図5Dで、接触518が、無条件に使用可能なボタン510−Bに対応する位置518−Aで検出される。ボタン510−Bが作動され、作動の効果には、文字「w」520を入力テキスト506に挿入することと、カーソル508が位置508−Cに移動することとが含まれる。別の例として、図5Eで、代わりに、接触518が、無条件に使用可能なボタン510−Dに対応する位置518−Dで検出される。ボタン510−Dが作動され、作動の効果には、文字「e」516を入力テキスト506から削除することと、カーソル508が位置508−Aに移動することとが含まれる。
[00152]第2のボタンによる第2の入力を第2の時刻に検出したことに応じて(610)、第1のボタンが無条件に使用可能なボタンであって第2のボタンが条件付きで使用可能なボタンである場合(614)、第2のボタンが作動されるか否かは、接触514が検出される第1の時刻と接触518が検出される第2の時刻との間の時間枠に依存する。第1の時刻と第2の時刻との間の時間枠が、事前設定された閾値(一部の実施形態では固定値であり、他の実施形態では可変であるかまたは文脈に依存する値である)を上回る場合、デバイスは第2のボタンを作動させる(616)。第1の時刻と第2の時刻との間の時間枠が、事前設定された閾値に等しいかまたはそれを下回る(すなわち、第2の接触が、モード変更抑制時間ウィンドウの間に行われる)場合、デバイスは、第2のボタンが作動されるのを阻止する(618)。
[00153]例えば、図5Fで、接触518が、条件付きで使用可能なボタン512−Cに対応する位置518−Cで検出される。接触518が時刻556に検出された場合には、時刻552と時刻556との間の時間枠が閾値(時間ウィンドウ560−Aの長さ)を上回り、時刻556は時間ウィンドウ560−Aの外側にあることから、ボタン512−Cは、接触518の検出に応じて作動される。作動の効果には、例えば、図5Gに示すように、キーボード504を隠すことが含まれる。接触518が時刻554に検出された場合には、時刻552と時刻554との間の時間枠が閾値に等しいかまたはそれを下回り、時刻554は時間ウィンドウ560−Aの上または内側にあることから、ボタン512−Cの作動が阻止される。この場合、キーボード504は、隠されず、UI500Fは表示され続ける。
[00154]方法600の一部の操作が組み合わされてもよいし、および/または、一部の操作の順序が変更されてもよい。上記の図6A乃至6Bの議論(および以下の図7の議論)は、「ボタン」および「ソフトキーボード」という用語を使っているが、方法600および700のその他の実施形態は、ボタン以外のオブジェクトに関してユーザが開始した作動、例えばキーボード以外のアイコンにも適用可能である。さらに、方法600は、所定のボタンを条件付きで、かつ、一時的に使用不可にすることを記述しており、それを条件付き作動不能化とも呼ぶが、方法600のその他の実施形態は、デバイスのユーザインタフェースまたはデバイスによって実行されるアプリケーションの中の各種のボタンまたはその他のオブジェクトを条件付きで、かつ、一時的に使用可能にすることにも適用可能であり、それを条件付き作動可能化とも呼ぶ。例えば、方法600の操作616と618との役割が逆転している実施形態では、方法は、一時的かつ条件付きで、ボタン(例えばキーボードのボタンまたはキーボード以外のボタン)またはオブジェクトの特定の集合を、別のボタンまたはオブジェクトの作動に応じて使用可能にする。
[00155]図7は、一部の実施形態による、ボタンを作動させる方法700を示すフロー図である。方法700は、ディスプレイとタッチセンシティブ表面とを備えた多機能デバイス(例えば図3のデバイス300、または図1の携帯用多機能デバイス100)で行われる。一部の実施形態では、ディスプレイはタッチスクリーンディスプレイであり、タッチセンシティブ表面はディスプレイ上にある。
[00156]以下に記すように、方法700は、ボタンを作動させる直感的なやり方を提供する。方法は、ボタンを作動させる際のユーザにかかる認知上の負担を軽減し、それによって、より効率的なヒューマン・マシン・インタフェースを実現する。電池で動作するコンピューティングデバイスにとっては、ユーザがボタンをより迅速かつより効率よく作動させられるようにすることは、電力を節約し、次回の電池充電までの時間を増加させる。
[00157]デバイスは、無条件に使用可能な複数のボタンと条件付きで使用可能な1つ以上のボタンとを含む複数のボタンを有するソフトキーボードを表示する。例えば、図5Aで、キーボード504がタッチスクリーン112上に表示される。キーボード504は、ボタン510とボタン512とを含んでおり、ボタン512のうち1つ以上は(例えばボタン512−C)、条件付きで使用可能である。別の例として、図5Hで、キーボード520がタッチスクリーン112上に表示される。キーボード520は、無条件に使用可能なボタン522とボタン512とを含んでおり、ボタン512のうち1つ以上は、条件付きで使用可能なボタンである。
[00158]デバイスは、無条件に使用可能なそれぞれのボタンによる第1の入力を第1の時刻に検出する(704)。例えば、図5Bで、接触514(第1の入力)が、無条件に使用可能なボタン510−Cに対応する位置514−Aで時刻552に検出される。
[00159]第1の入力を第1の時刻に検出したことに応じて(706)、デバイスは、無条件に使用可能なそれぞれのボタンを作動させ(708)、そして、第1の時刻から開始される事前設定された時間枠の間、条件付きで使用可能なボタンのうち少なくとも1つを使用不可にする(710)。例えば、図5Bで、デバイスは、時刻552における位置514−Aでの接触514の検出に対してボタン510−Cを作動させることによって応じる。作動の効果には、文字「e」516を入力テキスト506に挿入することと、カーソル508が位置508−Bに移動することとが含まれる。さらに、接触514の検出に応じて、時刻552から開始される時間ウィンドウ560−Aの間、ボタン512−Cが使用不可にされる。
[00160]デバイスは、第1の入力に応じて使用不可にされた条件付きで使用可能であるボタンによる第2の入力を検出し、第2の入力は事前設定された時間枠の中にある第2の時刻に検出される(712)。例えば、図5Fで、接触518が、時間ウィンドウ560−Aの中にある時刻554に、時刻552における接触514の検出に応じて使用不可にされたボタン512−Cに対応する位置518−Cで検出される。
[00161]第2の入力を第2の時刻に検出したこと応じて、デバイスは第2の入力を無視する(714)。例えば、位置518−Cでの接触518にもかかわらず、キーボード504は隠されず(すなわち、UI500Fは表示され続け)、位置518−Cにおける接触518は無視される。
[00162]条件付きで使用可能なボタンを実装するための上記の方法および装置は、他の実施形態においても、ソフトキーボード以外のユーザインタフェースに条件付きで使用可能または条件付きで使用不可にされるキー、ボタン、またはその他のオブジェクトを実装する目的で、利用することができる。
[00163]上記の情報処理方法における動作は、1つ以上の機能モジュールを、例えば汎用プロセッサまたは特定用途チップのような情報処理装置の中で実行することによって実装されてもよい。これらのモジュールと、これらのモジュールの組み合わせと、および/または、それらの組み合わせに(例えば、図1A、1Bおよび3に関して上述したように)一般的なハードウェアを伴うものとは、本発明の保護の範囲内にすべて含まれている。
[00164]例えば、図6A、6Bおよび7に示した動作が、図1A乃至1Cに示した構成要素によって実装されうる。例えば、「第1のボタンによる第1の入力を第1の時刻に検出する」(604)は、イベントソータ170、イベントレコグナイザ180、およびイベントハンドラ190によって実装されうる。イベントソータ170の中のイベントモニタ171はタッチセンシティブディスプレイ112上の接触を検出し、イベント発送モジュール174は、イベント情報をアプリケーション136−1に配信する。この場合、アプリケーション136−1は、ソフトキーボードおよびテキスト表示領域を操作するための方法およびグラフィカルユーザインタフェースを含んでいる。アプリケーション136−1のそれぞれのイベントレコグナイザ180は、イベント情報をそれぞれのイベント定義186と比較して、タッチセンシティブ表面上の第1の位置での第1の接触が、例えばソフトキーボードの中の具体的なボタンまたはキーのような、事前設定されたイベントまたはサブイベントに対応するかどうかを判定する。事前設定されたイベントまたはサブイベントが検出された場合、イベントレコグナイザ180は、第1の接触の検出に関連するイベントハンドラ190を起動する。イベントハンドラ190は、データ更新器176またはオブジェクト更新器177を利用するかまたは呼び出して、データまたはテキスト表示領域を更新しうる。同様に、当業者であれば、他のプロセスが、図1A乃至1Cに示す構成要素に基づいてどのようにして実装されうるかは、明らかであろう。
[00165]説明のための前述の記述は、特定の実施形態に関して記述してきた。しかし、上記の例示的議論は、網羅的であることも、開示されたのと違わぬ形態に本発明を限定することも、意図されていない。上記の教示内容に照らして、多くの修正形態および変形形態が可能である。実施形態は、本発明の原理とその実際の適用とを最も良く説明し、それによって当業者が本発明と、意図された個別の用途に適した各種の修正を伴う各種の実施形態とを最も良く利用できるようにすることを目的として選ばれ、記述されてきた。