iPhoneでのテキスト編集時。
カーソルを移動する手段には、移動させたい辺りをタップするか、タップした上で押したままにし、虫眼鏡を表示させた上でドラッグするかの2種類あります。
虫眼鏡以外にもカーソルを動かせる手段はあった方がいいなということで、スワイプでカーソルを左右に動かせるようにするSwipeToMoveCursorというTweakを作ってみました。
すべてのケースでスワイプによるカーソル移動ができるとは限りません。
スワイプが便利だと思えないこともあるでしょう。(続きは[MORE]から)
SwipeToMoveCursorの機能
- スワイプ系
- 短い左右スワイプ: カーソルを1字単位で移動
- 長い左右スワイプ: カーソルを行頭、行末に移動(1行入力タイプのテキストフィールドでのみ有効。ただし、論理行でなく物理行)
Type’n Goとは: Type’n Goとは、英語QWERTYキーボードで特定のキーシーケンスをタイプすることで機能を発動させるものです。
- Type’n Go系
- qqn: カーソル下
- qqp: カーソル上
- qql: カーソル右
- qqh: カーソル左
- qqf: 順方向単語単位ジャンプ(英単語)
- qqb: 逆方向単語単位ジャンプ(英単語)
- qqa: 行頭ジャンプ(物理行)
- qqe: 行末ジャンプ(物理行)
- Qqa: 文頭ジャンプ(Home)
- Qqe: 文末ジャンプ(End)
- qqi: タブ挿入
- qq (スペース): 全角空白挿入
- qqs: “ペア挿入、カーソルを間に移動
- Qqs: “”ペア挿入、カーソルを間に移動
- qq”: “”ペア挿入、カーソルを間に移動
- Qq”: 【】ペア挿入、カーソルを間に移動
- qq<: <>ペア挿入、カーソルを間に移動
- Qq<: <>ペア挿入、カーソルを間に移動
- qq’: ”ペア挿入、カーソルを間に移動
- Qq’: 《》ペア挿入、カーソルを間に移動
- qq(: ()ペア挿入、カーソルを間に移動
- Qq(: ()ペア挿入、カーソルを間に移動
- qq{: {}ペア挿入、カーソルを間に移動
- Qq{: 『』ペア挿入、カーソルを間に移動
- qq[: []ペア挿入、カーソルを間に移動
- Qq[: 「」ペア挿入、カーソルを間に移動
- qq\: \/ペア挿入、カーソルを間に移動
- Qq\: \/ペア挿入、カーソルを間に移動
- qqk: カーソル以降削除
- qqv: ペースト
僕はテンキーと英語のQWERTYの二つのみキーボードを有効にしているので、キーボードの切り替えにそれほどストレスを感じませんが、それ以上の数キーボードを有効にしていると、Type’n Goの利用がストレスフルになり、便利さはスポイルされるでしょう。
想定質問:キーボードにカーソルキーを追加することはできませんか?
いろいろ試作しましたが、実用レベルに持っていくのが難しいので実現できていません。
想定質問:~でSwipeToMoveCursorが無効ですがバグですか?
SwipeToMoveCursorはUI部品個別に対応しています。
カーソルを移動させる統一的なAPIが無いためです。
カスタムUI部品ではSwipeToMoveCursorが有効にならないはずですが、カスタムUI部品は無数にあるため、個々に対応するのは現実的ではありません。
従って、SwipeToMoveCursorが無効なことがあっても、それはバグではありません。
ATOK PadはカスタムUI部品を使っていますが、これだけは特別に対応させました。
想定質問:なぜ上下スワイプにカーソル上下移動の機能を割り当てないんですか?
多くの場合上下スクロールとして応答するようになっている関係で、上下のスワイプは無効となります。
Safariでのアドレス編集時などでType’n Goが無効ですがバグですか?
一部のキーボードはType’n Goが使っているAPIを経由せずに文字入力をしているようで、そういうシーンではType’n Goは無効となります。
ATOK PadではType’n Goが動きませんがバグですか?
Type’n GoはOS標準のテキスト入力機能を利用しているため、ATOK Padには適用されません。
既知の不具合
- 横にスクロールするような場面、例えばWebViewで大きなページを表示させているような場合ではスワイプによるカーソル移動は無効
- 元々スワイプの操作がある場合はSwipeToMoveCursorが有効でなくなるか、元々の機能を上書きしてしまう排他的な結果になるはず
- Safariのアドレス編集などでType’n Goが無効になる
動作確認環境
インストール
New野良リポジトリに置いておきました。
「SwipeToMoveCursor」で検索してください。
無保証です。
履歴
- 0.5-1 2011.07.16 長いスワイプによる行頭、行末ジャンプの機能を削除。行頭、行末ジャンプではType’n Goのqqa, qqeを使ってください。これによって、入力の感覚が0.2相当に戻っています。ただし、1行入力タイプのテキストフィールドでのみ、長いスワイプによる行頭、行末ジャンプが使えます。また、Type’n Goのqql, qqhでカーソルの左右移動ができるようにもしました。
- 0.4-1 2011.07.14 ATOK Padで動作がおかしかった問題を修正。その代わり、ATOK Pad上では長いスワイプによる行頭、行末ジャンプ機能を動かなくしました。修正のための必要な犠牲です
- 0.3-1 2011.07.06 TextField上のクリアボタンが押せない問題に対処
- 0.2-1 2011.07.05 長いスワイプ機能、Type’n Go機能追加、ハングル、半角カナでカーソルが移動しない問題に対処
- 0.1-1 2011.03.18 初版
-
iPhone, Jailbreak