ヤルキデナイズド

Unclassified Articles on Software and IT

Yosemite で AquaSKK の入力モードが切り替わり続ける問題を適当に直した

追記:この修正が取り込まれたバージョンのバイナリはここから入手できる↓

AquaSKK(OS X yosemite対応版) - みずぴー日記


YosemiteAquaSKK を使うと、 Safari などに入力するとき入力モードが高速で切り替わり続けるバグが出ることがある。

理屈は分かってないがそれっぽい箇所を適当に直したらバグが直ったっぽいので一応メモしておく。他への影響は追っていないので知らない。無保証。

修正済みのフォーク:uasi/aquaskk · GitHub

修正点:platform/mac/src/server/SKKInputController.mm#L159-L169あたりを if (activated_) { activated_ = NO; ... } で囲む。

    } else {
        // 個々の入力モードを選択している場合
        SKKEvent param;

        // ex) "com.apple.inputmethod.Roman" => SKK_ASCII_MODE
        param.id = [menu_ convertIdToEventId:(NSString*)value];

        if(param.id != InvalidInputMode) {
            session_->HandleEvent(param);

            modeIcon_->SelectInputMode([menu_ convertIdToInputMode:(NSString*)value]);
        }
    }

    } else {
        if (activated_) {
            activated_ = NO;
            // 個々の入力モードを選択している場合
            SKKEvent param;

            // ex) "com.apple.inputmethod.Roman" => SKK_ASCII_MODE
            param.id = [menu_ convertIdToEventId:(NSString*)value];

            if(param.id != InvalidInputMode) {
                session_->HandleEvent(param);

                modeIcon_->SelectInputMode([menu_ convertIdToInputMode:(NSString*)value]);
            }
        }
    }