Submit Search
InputMethodKit超入門
6 likes
2,817 views
Wataru Kimura
Cocoa勉強会 #39
Read more
1 of 36
Download now
Downloaded 15 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
More Related Content
KEY
塹壕よりLivetとMVVM
Hiroshi Maekawa
PDF
マイクロにしすぎた結果がこれだよ!
mosa siru
PDF
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
Enpel
PDF
MySQLで論理削除と正しく付き合う方法
yoku0825
PDF
Wavelet matrix implementation
MITSUNARI Shigeo
PPTX
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
PPTX
async/await のしくみ
信之 岩永
PDF
木を綺麗に描画するアルゴリズム
mfumi
塹壕よりLivetとMVVM
Hiroshi Maekawa
マイクロにしすぎた結果がこれだよ!
mosa siru
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
Enpel
MySQLで論理削除と正しく付き合う方法
yoku0825
Wavelet matrix implementation
MITSUNARI Shigeo
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
async/await のしくみ
信之 岩永
木を綺麗に描画するアルゴリズム
mfumi
What's hot
(20)
PDF
バグハンターの哀しみ
Masato Kinugawa
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita
PDF
katagaitai CTF勉強会 #5 Crypto
trmr
KEY
ラムダ計算入門
Eita Sugimoto
PPTX
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
PPTX
Apache Avro vs Protocol Buffers
Seiya Mizuno
PPTX
Powershell勉強会 v5 (こちらが最新です。)
Tetsu Yama
PPTX
XSSフィルターを利用したXSS攻撃 by Masato Kinugawa
CODE BLUE
PDF
Shougoの開発環境
Shougo
PDF
数式を綺麗にプログラミングするコツ #spro2013
Shuyo Nakatani
PDF
とある診断員とSQLインジェクション
zaki4649
PDF
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
Takahiro Inoue
PDF
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
PDF
Humble Object Patternな話
Hiroto Imoto
PPTX
マイクロサービスにおける非同期アーキテクチャ
ota42y
PDF
ソフトウェア開発のやり方の改善
増田 亨
PDF
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
PPTX
フィーチャモデルの描き方
H Iseri
PDF
今日から使おうSmalltalk
Sho Yoshida
PDF
Spring Framework勉強会
Masakazu Matsushita
バグハンターの哀しみ
Masato Kinugawa
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita
katagaitai CTF勉強会 #5 Crypto
trmr
ラムダ計算入門
Eita Sugimoto
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
Apache Avro vs Protocol Buffers
Seiya Mizuno
Powershell勉強会 v5 (こちらが最新です。)
Tetsu Yama
XSSフィルターを利用したXSS攻撃 by Masato Kinugawa
CODE BLUE
Shougoの開発環境
Shougo
数式を綺麗にプログラミングするコツ #spro2013
Shuyo Nakatani
とある診断員とSQLインジェクション
zaki4649
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
Takahiro Inoue
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
Humble Object Patternな話
Hiroto Imoto
マイクロサービスにおける非同期アーキテクチャ
ota42y
ソフトウェア開発のやり方の改善
増田 亨
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
フィーチャモデルの描き方
H Iseri
今日から使おうSmalltalk
Sho Yoshida
Spring Framework勉強会
Masakazu Matsushita
Ad
Viewers also liked
(14)
PDF
InputMethodKitで入力プログラムをつくろう
Wataru Kimura
PDF
値変換
Wataru Kimura
PDF
らくらくアップデートSparkle
Wataru Kimura
PDF
Precipitateに見る、外部リソースのSpotlight化
Wataru Kimura
PDF
Hotkeyslib3 Cocoaでホットキー
Wataru Kimura
PDF
Three20のTTURLRequest
Wataru Kimura
PDF
ClangでObjective-Cを静的解析
Wataru Kimura
PDF
PSMTabBarControl
Wataru Kimura
PDF
SIMBLでCocoaアプリをパワーアップ
Wataru Kimura
PDF
Xcode4 project template (slide)
Wataru Kimura
PDF
リマインダーの繰り返しを自由に設定する (EventKit)
Wataru Kimura
PDF
Quickcursorに見る、アプリケーション間通信
Wataru Kimura
PDF
Clang Modules
Wataru Kimura
PDF
OS X DYLD_* environments
Wataru Kimura
InputMethodKitで入力プログラムをつくろう
Wataru Kimura
値変換
Wataru Kimura
らくらくアップデートSparkle
Wataru Kimura
Precipitateに見る、外部リソースのSpotlight化
Wataru Kimura
Hotkeyslib3 Cocoaでホットキー
Wataru Kimura
Three20のTTURLRequest
Wataru Kimura
ClangでObjective-Cを静的解析
Wataru Kimura
PSMTabBarControl
Wataru Kimura
SIMBLでCocoaアプリをパワーアップ
Wataru Kimura
Xcode4 project template (slide)
Wataru Kimura
リマインダーの繰り返しを自由に設定する (EventKit)
Wataru Kimura
Quickcursorに見る、アプリケーション間通信
Wataru Kimura
Clang Modules
Wataru Kimura
OS X DYLD_* environments
Wataru Kimura
Ad
Similar to InputMethodKit超入門
(20)
PDF
SICE 2020 Rtm tutorial 2_online_en
openrtm
PDF
OpenRTM-aist入門
Yuki Suga
PDF
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
Hideki Saito
PDF
Locondo 20190215@ec tech_group
Shinya Sugiyama
PDF
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
PPTX
MariaDB Columnstore 使いこなそう
KAWANO KAZUYUKI
PDF
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
さくらインターネット株式会社
PDF
RTミドルウエア講習会2015
Yuki Suga
PDF
VagrantとChefで開発スピードを上げる話
Koji Nakamura
PDF
「Entity Framework Coreを使ってみる」 公開用
ESM SEC
PDF
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
Shuichi Gojuki
PDF
Oracleの実行計画を読んでみよう! #dbts2017
Ryota Watabe
PDF
Server side Swift & Photo Booth
LINE Corporation
PDF
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
PDF
アトリエ秋葉原 Choregraphe WS#4
Atelier Akihabara
PDF
Prometheus超基礎公開用.pdf
勇 黒沢
PDF
Hol012 windowsコンテナー始動
Tech Summit 2016
PDF
さくらのIoT Platform α technical_details
さくらインターネット株式会社
PPTX
WebRTC on Native App
WebRTCConferenceJapan
PDF
Amalgam8 application switch for cloud native services
Takehiko Amano
SICE 2020 Rtm tutorial 2_online_en
openrtm
OpenRTM-aist入門
Yuki Suga
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
Hideki Saito
Locondo 20190215@ec tech_group
Shinya Sugiyama
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
MariaDB Columnstore 使いこなそう
KAWANO KAZUYUKI
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
さくらインターネット株式会社
RTミドルウエア講習会2015
Yuki Suga
VagrantとChefで開発スピードを上げる話
Koji Nakamura
「Entity Framework Coreを使ってみる」 公開用
ESM SEC
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
Shuichi Gojuki
Oracleの実行計画を読んでみよう! #dbts2017
Ryota Watabe
Server side Swift & Photo Booth
LINE Corporation
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
アトリエ秋葉原 Choregraphe WS#4
Atelier Akihabara
Prometheus超基礎公開用.pdf
勇 黒沢
Hol012 windowsコンテナー始動
Tech Summit 2016
さくらのIoT Platform α technical_details
さくらインターネット株式会社
WebRTC on Native App
WebRTCConferenceJapan
Amalgam8 application switch for cloud native services
Takehiko Amano
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
Download