codefirst / aquaskk

An input method without morphological analysis.
GNU General Public License v2.0
350 stars 30 forks source link

Sticky Shift の実装 #86

Closed shwaka closed 6 years ago

shwaka commented 6 years ago

AquaSKK にもいわゆる Sticky Shift の機能を追加することは可能でしょうか?

調べてみたところ,以下のような patch がありました. https://gist.github.com/anyakichi/1242540 結構古いものですが,私が試した範囲では問題なく動作しています.

なお,私の macOS の version が古いためか NSColorSystemEffectPressed などの変数(?)が定義されていなかったので, 少しだけ古い version の AquaSKK を利用いたしました.

[ビルド環境]

mzp commented 6 years ago

いいですね!! どうやって有効・無効を切り替えるかあたりが残ってる課題でしょうか。

もしよろしければプルリクエストの形にしていただけると、すばやく取り込めるかと思います。

shwaka commented 6 years ago

keymap.confStickyKey ; などと記述しないと有効にならないので, 有効・無効については問題ないと思います.

プルリクエストの件,承知いたしました. ただ,他人の書いた patch を勝手に取り込んでしまって良いものなのでしょうか? ライセンスが明示されていれば良いですが, 今回は(短いpatchだから?)特に指定されていないですよね.

banjun commented 6 years ago

まずはずばり聞いてみるのはどうでしょうか・・・? (期待をこめて) > @anyakichi

anyakichi commented 6 years ago

ずいぶん昔のもので私自身はほとんど覚えてないのですが、お役に立ちそうであればお使いください。ライセンス的な話としてはソフトウェアのオリジナルに従うということで問題ないです。

私の手元にビルド環境があるわけでもないので、プルリクエストの作成についてはお願いできればと思います。

shwaka commented 6 years ago

ご快諾いただきありがとうございます。

もちろんプルリクエストは私が作成いたします。

shwaka commented 6 years ago

プルリクエスト #87 を作成いたしました。 (プルリクエスト作成は初めてのため、何か不備がありましたら申し訳ありません。その場合は遠慮なく仰ってください)

実際に使う際には keymap.confStickyKey ; と記述することで、; を sticky shift として利用できるようになります。他のキーでも(衝突さえしなければ)多分大丈夫だと思います。

…と書いていて気付いたのですが、build失敗していますね… 私の環境 (https://github.com/codefirst/aquaskk/issues/86#issue-367585704 参照、古いversion) では、 make pkgmake test ともに成功しているのですが、 https://github.com/codefirst/aquaskk/commit/a67abe78ac9ba7f475c009d93157881818d36d34 よりも後の変更と競合しているのでしょうか。

shwaka commented 6 years ago

make pkg が成功しているというのは、部分的に嘘を含んでいました。 正しくは「 make pkg により /tmp/AquaSKK/aquaskk-dist.pkg が生成され、このファイルからパッチ適用済みのAquaSKKがインストールできる。しかし、 make pkg の際には(当然)署名関係のエラーが発生している」と書くべきでした。

make pkg の際の出力は以下の通りです

Check dependencies

=== BUILD TARGET AquaSKK OF PROJECT AquaSKK WITH CONFIGURATION Release ===

Check dependencies

BUILD SUCCEEDED

rm -fr AquaSKK.pkg mkdir -p /tmp/AquaSKK/root//Library/Input\ Methods cp -r proj/build/Release/AquaSKK.app /tmp/AquaSKK/root//Library/Input\ Methods pkgbuild --root /tmp/AquaSKK/root --component-plist pkg/aquaskk.plist --identifier org.codefirst.aquaskk.pkg --version 4.2.5 /tmp/AquaSKK/aquaskk-pkg.pkg pkgbuild: Reading components from pkg/aquaskk.plist pkgbuild: Adding component at Library/Input Methods/AquaSKK.app pkgbuild: Adding component at Library/Input Methods/AquaSKK.app/Contents/SharedSupport/AquaSKKPreferences.app pkgbuild: Wrote package to /tmp/AquaSKK/aquaskk-pkg.pkg productbuild --distribution pkg/distribution.xml --package-path /tmp/AquaSKK --resources 'proj/contents' /tmp/AquaSKK/aquaskk-dist.pkg productbuild: Wrote product to /tmp/AquaSKK/aquaskk-dist.pkg productsign --sign "Developer ID Installer: HIROKI MIZUNO" /tmp/AquaSKK/aquaskk-dist.pkg AquaSKK.pkg productsign: error: Could not find appropriate signing identity for “Developer ID Installer: HIROKI MIZUNO”. make: *** [pkg] Error 1


`make test` を手元で実行した際の終了ステータスは `0` です。しかし、TravisCI上では90秒程かかっているのに対して、こちらは数秒程度で終わってしまうのが少し不安です。
なお、出力は以下の通りです。

0:shun:~/Git/aquaskk/platform/mac $ make test cd ../../src/engine/tests; make test; SKKDictionaryFile::open(): can't open: SKKDictionaryFile::open(): can't open: SKK-JISYO.S1SKK-JISYO.S2

SKKLocalUserDictionary: saved SKKLocalUserDictionary: saved SKKDictionaryFile::open(): can't open: /dev/null SKKDistributedUserDictionary: put failed SKKDistributedUserDictionary: delete failed /2018/10/10(Wed)/2018 年 10 月 10 日(水)/19:45:18/19 時 45 分 18 秒/3.362e+07/ SKKLocalUserDictionary: saved success=400 / total=400, (100%) SKKLocalUserDictionary: saved SKKKeymapEntry::SKKKeymapEntry(): invalid key name[Unknown] SKKLocalUserDictionary: saved SKKLocalUserDictionary: saved SKKLocalUserDictionary: saved



お手数おかけして大変申し訳ないのですが、何かお気付きのことがありましたらご助言いただれば幸いです。
banjun commented 6 years ago

make test の失敗についてはこのコミット以外でも発生していそうです。

shwaka commented 6 years ago

そうなのですか.それでしたら私がどうこうするような話ではないですね. (再度TravisCIを確認してみたら make test も通っていて何が何やら…) ともあれ,mergeしていただきありがとうございます.

ところで,StickyShiftが実装されていることを(issue以外の)どこかに記述しておいた方が良いと思うのですが, 何か適切な場所はありますでしょうか? 見たところ README.md はあまりそういう用途では使われていないようですし.

banjun commented 6 years ago

StickyShiftが実装されていることを(issue以外の)どこかに記述しておいた方が良いと思うのですが

良いと思います。wiki (このgithubレポのwiki) かなぁと思うのですが,いまのところいい感じのページは無いです。

本当はこれ↓に相当するものが欲しい感じはありますが,さしあたりStickyKeyの設定の存在だけでも書いておくのが良い気がしてます。 https://osdn.net/projects/aquaskk/wiki/keymap.confの文法

shwaka commented 6 years ago

承知しました。 ただ、不要な混乱を防ぐために、StickyKeyのcommitが取り込まれた状態のreleaseが出た後に記載した方が良いと思っています。releaseをすぐに出してもらうことは可能でしょうか?

banjun commented 6 years ago

週末のうちにリリースしたいです。少々お待ちください。

banjun commented 6 years ago

@shun-wakatsuki 4.7.0でリリースしました。確認おねがいします!

shwaka commented 6 years ago

@banjun ありがとうございます. 軽く試してみましたところ,動作については問題ないと思います.

しかし,リリースに添えられたコメント 「Sticky Shiftの実装とそのkeymap.confの設定を追加 #86 #87」 には違和感を覚えます.

ちゃんとコードを読んだわけではないので憶測でしかないですが, リポジトリ内に複数ある keymap.conf の役割は

だと認識しています. そして今回変更されたのは make test 用のもののみです.

しかし,上述のコメントはユーザー向けのデフォルト設定が変更されたように読めてしまいます.

私の認識が正しいのであれば,コメントの後半は誤解を招くだけだと思うのですが,いかがでしょうか.

また,上記とは別に 「Sticky Shift はデフォルトでONにするべきか否か」 は議論の余地があると思いますが, 私はデフォルトではOFFにするべきだと思っています. 私の知る範囲では,他のSKK実装でもそうなっていたと思います.

banjun commented 6 years ago

そうですね,そう読む可能性はありますね。 Sticky Shift対応したとして,どこで設定されるのか? (通常はユーザーレベルのkeymap.confを想定,= ~/Library/Application Support/AquaSKK/) を短く書く意図だったので,表現を変えておきました。 デフォルトONにすべきか,については,私もすべきではないと思っています。

shwaka commented 6 years ago

すみません。そもそも私も完全に誤読していたようです。 ともあれ、修正ありがとうございます。

また、Wikiに Sticky Shift について一言書き足しておきました。本当に一言だけですが…

banjun commented 6 years ago

Wiki記載ありがとうございます!

maki-tetsu commented 5 years ago

AquaSKK 非常に助かっております。 今回 StickyShift に対応と聞いてこれで Hammerspoon から開放されました(^^;

今回のリリースについて、Sticky shift の有効方法が辿らないと分かりづらかったので、 リリース情報に上記記載の Wiki へのリンクがあると幸せになれそうだと思ったので、 コメントさせてもらいました。

御一考ください。