Enviar pesquisa
Carregar
InputMethodKit超入門
•
6 gostaram
•
2,750 visualizações
Wataru Kimura
Seguir
Cocoa勉強会 #39
Leia menos
Leia mais
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 36
Baixar agora
Baixar para ler offline
Recomendados
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
Atsushi KOMIYA
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
HTTP/2 入門
HTTP/2 入門
Yahoo!デベロッパーネットワーク
Page reclaim
Page reclaim
siburu
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
Recomendados
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
Atsushi KOMIYA
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
HTTP/2 入門
HTTP/2 入門
Yahoo!デベロッパーネットワーク
Page reclaim
Page reclaim
siburu
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Shohei Okada
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
Yoshio Hanawa
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界
Fixstars Corporation
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
NTT Communications Technology Development
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
RISC-Vの可能性
RISC-Vの可能性
たけおか しょうぞう
ペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おう
Shinya Nakajima
Sqlアンチパターン(メタデータトリブル)
Sqlアンチパターン(メタデータトリブル)
Tomoaki Uchida
こわくない Git
こわくない Git
Kota Saito
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へ
Takaki Hoshikawa
Marp Tutorial
Marp Tutorial
Rui Watanabe
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fixstars Corporation
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
InputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろう
Wataru Kimura
値変換
値変換
Wataru Kimura
Mais conteúdo relacionado
Mais procurados
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Shohei Okada
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
Yoshio Hanawa
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界
Fixstars Corporation
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
NTT Communications Technology Development
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
RISC-Vの可能性
RISC-Vの可能性
たけおか しょうぞう
ペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おう
Shinya Nakajima
Sqlアンチパターン(メタデータトリブル)
Sqlアンチパターン(メタデータトリブル)
Tomoaki Uchida
こわくない Git
こわくない Git
Kota Saito
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へ
Takaki Hoshikawa
Marp Tutorial
Marp Tutorial
Rui Watanabe
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
Fixstars Corporation
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
Mais procurados
(20)
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
明日使えないすごいビット演算
明日使えないすごいビット演算
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
RISC-Vの可能性
RISC-Vの可能性
ペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おう
Sqlアンチパターン(メタデータトリブル)
Sqlアンチパターン(メタデータトリブル)
こわくない Git
こわくない Git
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へ
Marp Tutorial
Marp Tutorial
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Destaque
InputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろう
Wataru Kimura
値変換
値変換
Wataru Kimura
らくらくアップデートSparkle
らくらくアップデートSparkle
Wataru Kimura
Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化
Wataru Kimura
Hotkeyslib3 Cocoaでホットキー
Hotkeyslib3 Cocoaでホットキー
Wataru Kimura
Three20のTTURLRequest
Three20のTTURLRequest
Wataru Kimura
ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析
Wataru Kimura
PSMTabBarControl
PSMTabBarControl
Wataru Kimura
SIMBLでCocoaアプリをパワーアップ
SIMBLでCocoaアプリをパワーアップ
Wataru Kimura
Xcode4 project template (slide)
Xcode4 project template (slide)
Wataru Kimura
リマインダーの繰り返しを自由に設定する (EventKit)
リマインダーの繰り返しを自由に設定する (EventKit)
Wataru Kimura
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信
Wataru Kimura
Clang Modules
Clang Modules
Wataru Kimura
OS X DYLD_* environments
OS X DYLD_* environments
Wataru Kimura
Destaque
(14)
InputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろう
値変換
値変換
らくらくアップデートSparkle
らくらくアップデートSparkle
Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化
Hotkeyslib3 Cocoaでホットキー
Hotkeyslib3 Cocoaでホットキー
Three20のTTURLRequest
Three20のTTURLRequest
ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析
PSMTabBarControl
PSMTabBarControl
SIMBLでCocoaアプリをパワーアップ
SIMBLでCocoaアプリをパワーアップ
Xcode4 project template (slide)
Xcode4 project template (slide)
リマインダーの繰り返しを自由に設定する (EventKit)
リマインダーの繰り返しを自由に設定する (EventKit)
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信
Clang Modules
Clang Modules
OS X DYLD_* environments
OS X DYLD_* environments
Semelhante a InputMethodKit超入門
SICE 2020 Rtm tutorial 2_online_en
SICE 2020 Rtm tutorial 2_online_en
openrtm
OpenRTM-aist入門
OpenRTM-aist入門
Yuki Suga
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
Hideki Saito
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
Shinya Sugiyama
MariaDB Columnstore 使いこなそう
MariaDB Columnstore 使いこなそう
KAWANO KAZUYUKI
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
さくらインターネット株式会社
RTミドルウエア講習会2015
RTミドルウエア講習会2015
Yuki Suga
VagrantとChefで開発スピードを上げる話
VagrantとChefで開発スピードを上げる話
Koji Nakamura
「Entity Framework Coreを使ってみる」 公開用
「Entity Framework Coreを使ってみる」 公開用
ESM SEC
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
Shuichi Gojuki
Oracleの実行計画を読んでみよう! #dbts2017
Oracleの実行計画を読んでみよう! #dbts2017
Ryota Watabe
Server side Swift & Photo Booth
Server side Swift & Photo Booth
LINE Corporation
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4
Atelier Akihabara
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
勇 黒沢
Hol012 windowsコンテナー始動
Hol012 windowsコンテナー始動
Tech Summit 2016
さくらのIoT Platform α technical_details
さくらのIoT Platform α technical_details
さくらインターネット株式会社
WebRTC on Native App
WebRTC on Native App
WebRTCConferenceJapan
Amalgam8 application switch for cloud native services
Amalgam8 application switch for cloud native services
Takehiko Amano
Laravelの認証について
Laravelの認証について
Takeo Noda
Semelhante a InputMethodKit超入門
(20)
SICE 2020 Rtm tutorial 2_online_en
SICE 2020 Rtm tutorial 2_online_en
OpenRTM-aist入門
OpenRTM-aist入門
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
MariaDB Columnstore 使いこなそう
MariaDB Columnstore 使いこなそう
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
RTミドルウエア講習会2015
RTミドルウエア講習会2015
VagrantとChefで開発スピードを上げる話
VagrantとChefで開発スピードを上げる話
「Entity Framework Coreを使ってみる」 公開用
「Entity Framework Coreを使ってみる」 公開用
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
Oracleの実行計画を読んでみよう! #dbts2017
Oracleの実行計画を読んでみよう! #dbts2017
Server side Swift & Photo Booth
Server side Swift & Photo Booth
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
Hol012 windowsコンテナー始動
Hol012 windowsコンテナー始動
さくらのIoT Platform α technical_details
さくらのIoT Platform α technical_details
WebRTC on Native App
WebRTC on Native App
Amalgam8 application switch for cloud native services
Amalgam8 application switch for cloud native services
Laravelの認証について
Laravelの認証について
InputMethodKit超入門
1.
InputMethodKit超⼊門
Cocoa勉強会�#39�/�2010.02.11�(祝)�/�⽊村渡 Powered by Rabbit 0.6.4 and COZMIXNG
2.
Input�Method ✓ 効率の良い⼊⼒ ✓ さまざまなアプリケーションとコ
ミュニケート InputMethodKitは、 後者を⽀援するフレームワーク
3.
InputMethodKit ✓ かな漢字変換などの⼊⼒プログラム
をつくるためのフレームワーク ✓ アプリとして⼊⼒プログラムを作成 ✓ Cocoa ✓ Leopardで導⼊された
4.
さまざまな⽇本語⼊⼒プログラム ✓ ことえり ✓ かわせみ ✓
AquaSKK ✓ Google⽇本語⼊⼒ などなど
5.
InputMethodKitの構成 +----------+
+------------------------+ |=user app=| | =input method app= | | Client <------->(Server)<-> Controller | +----------+ +------------------------+
6.
IMK�Classes IMKServer
ユーザ操作と⼊⼒操作を仲介 IMKInputController ⼊⼒プログラムの処理本体 IMKCandidates 選択候補のユーザインターフェイスを制御
7.
IMK�Protocols IMKServerInput
⼊⼒プログラムのインターフェイス IMKTextInput ⼊⼒プログラムとやりとりするアプリのイ ンターフェイス IMKStateSetting IMKMouseHandling
8.
3つの実装手段 IMKServerInputプロトコル ✓ キーバインディング ✓ ⼊⼒⽂字+修飾キーを解釈 ✓
TSMのイベントを利用
9.
キーバインディング inputText:client:
⼊⼒された⽂字を受け取る didCommandBySelector:client: キーバインディングで定義されたコマンド を受け取る "apple"が⼊⼒された "moveForward:"コマンドが指⽰され た
10.
キーバインディング キー(の組み合わせ)をObjective-C メッセージに割り当て StandardKeyBinding.dictを参照 <key>^f</key> <string>moveForward:</string>
11.
⼊⼒⽂字+修飾キーを解釈 inputText:key:modifiers:client:
⼊⼒された⽂字と修飾キーを受け取る "apple"が⼊⼒された "f"とCtrlキーが⼊⼒された
12.
TSMのイベントを利用 handleEvent:client: よくわからん。 たぶん従来のコンポーネントからの移 ⾏しやすいんじゃないかな。
13.
3つの実装手段 IMKServerInputプロトコル ✓ キーバインディング ✓ ⼊⼒⽂字+修飾キーを解釈 ✓
TSMのイベントを利用 上のふたつのどちらか
14.
つくってみよう
15.
偉大なるお手本 AppleのサンプルNumberInput
16.
NumberInput作成の手順 1.�⼊⼒メニューに表⽰ 2.�ユーザ操作から⼊⼒⽂字を決定 3.�複数の変換モード 4.�変換候補の表⽰ 5.�環境設定のUI
17.
今回のサンプル 単純のため次のように ✓ 英数字のみ扱う ✓ 英単語を候補から選択できる ✓
(できれば)⼊⼒中のテキストから候 補を抽出する
18.
実装手順 1.�最⼩限。⼊⼒プログラムとして選
択できる 2.�試験的な変換⼊⼒ 3.�目的の変換処理、変換候補の選択
19.
最⼩限の実装 ✓ Info.plistに記述 ✓ main()でIMKServerを⽣成 ✓
IMKServerControllerのサブクラス
20.
Info.plist LSBackgroundOnly InputMethodConnectionName InputMethodServerControllerClas s tsInputMethodIconFileKey tsInputMethodCharacterRepertoir eKey
21.
Info.plist LSBackgroundOnly 1に。アプリケーションをバックグラ ウンドにします。
22.
Info.plist InputMethodConnectionName アプリケーションと⼊⼒プログラムの 通信に利用する名前を指定します。こ の名前はほかの⼊⼒プログラムと重複 しないように注意してください。
23.
Info.plist InputMethodServerControllerClas s ⼊⼒サービスを提供するクラスを指定 このクラスはIMKServerControllerの サブクラス
24.
Info.plist tsInputMethodIconFileKey ⼊⼒メニューに表⽰するアイコン(こ とえりなら[あ])の画像ファイルを指 定
25.
Info.plist tsInputMethodCharacterRepertoir eKey ⼊⼒するキャラクタセットをISO1592 で指定(複数可)
26.
プログラム ✓ main.m ✓ IMKServerControllerのサブクラス
27.
main.m ここでIMKServerのインスタンスを⽣ 成し、コネクションの名前などを指定 します。
28.
IMKInputController inputText:client: この⼊⼒プログラムで⼊⼒テキストを 処理するならYESを、そうでなければ NOを返します。 とりあえず常にNOにしておきます。
29.
動作確認�0 ⼊⼒メニューに表⽰できる ✓ /Library/Input Methodsに ✓
ログオフ〜再ログオン 開発時はユーザースイッチを利用する のがよいかも
30.
試験的な変換⼊⼒を実装 -(BOOL)inputText:(NSString*)string
client:(id)sender { if ([string hasPrefix:@"o"]) { [sender insertText:@"Objective-C" replacementRange:NSMakeRange(0, 0)]; return YES; } else { return NO;
31.
動作確認�1 "o"を⼊⼒すると"Objective-C"が 他の⽂字はそのまま abc..lmnObjective-Cpq..xyz
32.
変換候補の表示 cancdidates:
候補の配列を返す candidateSelected: 候補が選択された candidateSelectionChanged: 選択候補が変更された
33.
動作確認�2 ✓ ⼊⼒中にスペースキーで変換候補を
表⽰ ✓ ⼊⼒中の⽂字が表⽰されない...
34.
インライン⼊⼒ これは宿題っ setMarkedText:selectionRange:re placementRange:
35.
終
36.
質問などあれば
どうぞ Powered by Rabbit 0.6.4 and COZMIXNG
Baixar agora