IMEのオン・オフ切り替え+CapsLock+US配列キーボード問題

 しばらく立て込んでいて、ツールの開発とブログの更新ができませんでした。

去年末に長い間課題であったIMEのオン・オフ切り替えについて私なりの最終的な解決方法が見つかり、DIMEに実装することができたので紹介します。

 DIMEは今月中にVectorに登録してバージョンアップします。

1.IMEのオン・オフ切り替えの現状

そもそも、現状のIME切り替えはどのようにおこなっているのでしょうか?

私が知る限り、多くの人はJIS配列のキーボードを使っており、当然のようにIMEのオン・オフ切り替えの専用キーである「半角/全角」キーを使って切り替えをしいているようです。

一つのキーで切り替えできますし、キーの表記も分かりやすいので、これはこれで大きな問題は無いのですが、頻繁に使用するキーにも関わらず、かなり辺鄙な場所(1の左隣)にあるので、左手小指がかなりきつい状態になり、タッチタイピングもしにくいです。

この点についてはMicroSoftも改善を試みており「変換」「無変換」キーによる切り替えやControl+SpaceやShift+Spaceに割り当てできるようになりました。

Control+SpaceとShift+Spaceは、入力しやすいとはいえ2つのキーを同時押ししなければいけないので、ややつらいですが「変換」「無変換」キーは入力しやすい位置にあり1つのキーなので問題は解決したように思います。

2.残された問題

「変換」「無変換」キーをIMEの切り替えキーに使えば問題は解決するように思えますが、以下の問題が残ります。

(1)変換、無変換キーを使う人

変換キーの機能はスペースキーに、無変換キーの機能はEnterキーでまかなえるので、このキーを積極的に使う人は少ないですが、実はこれらのキーも今は別の機能があり、それを活用している人もいます。

「変換」キーは確定した文字列を再変換する場合に使い、「無変換」キーは 全角かな→全角カナ→半角カナの順に変換する機能があります。

また、いくつかのキーボードユーティリティソフトでは、変換キー、無変換キーを同時押しすることでさまざまな入力ができるというものがあり、そのようなソフトを使っている人は変換、無変換キーをIMEの切り替えには利用できません。

(2)US配列キーボードを使う人

そもそも変換キー、無変換キーはUS配列のキーボードにはありません。

US配列には半角/全角キーもないので、Alt+`や、最近利用できるようになったControl+SpaceもしくはShift+Spaceを使っているようです。

ただ、これらのキーは2つのキーの同時押しなので、やはり頻繁に使うには負担がかかります。

3.隠れた救世主CapsLockキー

恥ずかしながら、私も最近知ったのですが、なんと邪魔なキーの代表とも言われるCapsLockキー単独でIMEのオン・オフができます。

CapsLockキーは「A」の左隣というホームポジションの特等席にありながら、常時大文字に固定するという日本語入力には不必要な機能なので、非常に嫌われており、このキーを無効化する方法なども紹介されているほどです。

また、有効活用しようということで、このキーをControlキーに割り当てる方法が紹介されていますが思ったほど操作性は向上しません。理由はControlキーとの組み合わせで押すキーがZ、X、Cなどが多くCapsLockとの組み合わせでは押しやすくならないからです。

このキーがどうやら2012年ぐらいから、単独押しでIMEのオン・オフという機能に変わったようです。

では、従来の大文字固定はどうするかというとShift+CapsLockに割り当てられました。

つまり、あまり使わないCapsLockの本来の機能はShiftを押しながらでないと働かず、通常の単独押しでは日本語で頻繁に使うIMEのオン・オフに変更されていたのです。

キーの配置も抜群に良い位置ですし、単独キーなので、すべての問題を解決する救世主となるのですが…

4.US配列の呪い

しかし、US配列のキーボードでは、このCapsLockはどうなっているのでしょうか?

それは単独押しでCapsLock(大文字固定)、Shift+CapsLockでIMEのオン・オフとなります。

言語を日本語にしているユーザーはたとえUS配列のキーボードでも単独押しではIMEのオン・オフが望ましいのですが、そこまではMicroSoftのエンジニアには分からなかったのでしょう。「やはりUS配列だから、元のCapsLockの機能をデフォルトにしよう」となったのだと推測します。

これでは、職場では日本語配列、自宅ではUS配列のキーボードを使っている人は混乱して大変です。

5.US配列ユーザーの戦い

この仕様はUS配列キーボードを使っているユーザーにとってやっかいな問題で以下のような方法で対応しています。

(1)CapsLockキーの入れ替え

これはCapsLockキーをあまり使わないF13キーなどに入れ替えて、F13キーをIMEのオン・オフにするという方法です。

しかし、この方法はレジストリを変更する必要があるので、職場のパソコンなどではできない場合があったり、設定を有効にするためには再起動が必要であるなどの制約があります。

(2)日本語配列だけどUS配列にする

この方法は中々スマートです。

OSのキーの配列は日本語配列に設定するので、そのままだと2のシフトは「”」になったりしてUS配列のキーの表記とは異なった状態になります。

これを「ULE4JIS」というフリーソフトを使って、US配列通りのキー出力ができるようにする方法です。

これならCapsLockは日本語配列の機能のままなので、まったく問題なくIMEの切り替えが行えます。

ただ、この方法はUS配列のキーボードであってもWindows10の設定では日本語配列にし、さらにULE4JISというアプリを常駐させるという、やや面倒な方法でCpasLockの機能を実現しています。

普通のパソコンであれば、US配列のキーボードの設定は当然Windows10の設定ではUS配列になっているでしょうから、一度はキーボードの配列を日本語配列に変更しなければなりません。

6.最終的な解決策 DIME機能アップ

CapsLockキーがIMEを切り替えるために使えること、US配列キーボードではShiftキーとの同時押しになっており中途半端であること、そしてそれを回避するためにUS配列キーボードを使っているユーザーがさまざまな工夫をしていることが分かり、この問題を根本的に解決したいと考えました。

またIMEの状態表示を分かりやすくするDIMEというフリーソフトの更新も長い間できていなかったので、今回はDIMEのバージョンアップで問題を解決することにしました。

以下、DIMEでの解決方法を紹介します。

(1)US配列、日本語配列どちらでも機能する

DIMEを常駐させれば、US配列であれ日本語配列であれCapsLockキーを押せばIMEをオン・オフできます。

というより、US配列のときのみCapsLockキーを押すと大文字固定ではなく Alt+` (US配列におけるIMEのオン・オフ切り替えキー)を出力するという本当に簡単な解決策です。

日本語配列の場合はCapsLock単独では「半角/全角」キーを押したことになるので、影響はありません。

キー配列が異なっても、同じキー操作=CapsLockの単独押しでIMEがオン・オフできる、レジストリやキー配列の設定変更をしなくてよい、単にDIMEを常駐させるだけという理想的な解決策になったと思います。

(2)Shift+CapsLockはどうなるか?

①日本語配列の場合

日本語配列の場合はShif+CapsLockでCapsLock」が出力されますが、このときにツール側でShiftキーが押されているかを判定し、押されていれば通常のCapsLockを送信することにより、通常通りCapsLockがかかります。

②US配列の場合

US配列の場合はShift+CapsLockで「英数」が出力されますが、この出力をツール側でとらえることはできないのでそのまま英数=IMEのオン・オフ切り替えとなります。

したがってUS配列のときには通常のCapsLock機能が使えなくなるという不具合が残ります。

そこでDIMEでは、別途CpasLockキーの変わりになるキーの組み合わせをユーザーが自由に設定できるようにしました。

私は今のところ、Control+Spaceに設定していますが、CapsLock機能は滅多に使わないので別に不都合はありません。

7.その他の修正・改善

DIMEのその他の修正、改善は以下の通りです。

(1)デバッグ用キーの削除

Control+1でデバッグ用に変数リストを出す機能を削除し忘れていましたので、このキーは削除しました。

(2)音による通知

これは試みですが、IMEがオンのときに音を鳴らすようにしました。

もちろん、入力中は窓の色表示と同じく音は鳴らないようにして邪魔にならないようにしました。

しばらく使っていますが、私はやはり画面で確認する従来の方法がしっくりきています。

ただし、画面の色を変更すると不便なソフトを使っているときは、この音による通知も便利かもしれません。

現在、ソフトは完成しドキュメントを修正・追記しているところです。

今月中には公開できると思います。

14件のコメント

  1. Dime2.0ダウンロードして使い始めました。
    IME状態の視認性向上というテーマ、深度が大きい部分を触るので技術力のない自分にはありがたい限りです。
    キャレットなどで状態表示するものもありますがVisualStudio2019のエディター画面では使用できませんでしたが、DIMEはVisualStudio2019でも正常に動作しています。有難うございます。
    これでタスクバーで常時表示するアイコンが一つ増えました。

    音による通知、IMEの切り替えスイッチキーの追加、無効にできないでしょうか。
    音の方についてはファイルを指定していない場合通知音が鳴らす状態です。
    タイマー値を大きくとれば良いのですがタイマーが回っているというのも気になる部分でもあります。

    1. 了解しました。
      もうすぐ、Dimeをバージョンアップする予定ですので、そのときに設定を拡張して対応します。

    2. 音の方については、設定ファイルのSoundTimeを0にすれば音は鳴らなくなります。
      タイマーは、これに関係なくIMEの状態表示をアップデートするために動いていますので、大きな影響はありません。
      IMEの切り替えスイッチキーはCapsLockの設定のことと思いますが、根本的な解決は今回のバージョンでも解決できませんでしたので、Control+Shift+Win+F7という、普通あまり使われないキーの組み合わせをデフォルトにしました。
      一度お試しください。

  2. 私はMac、Windows共にUS配列キーボードを使用しています。
    MacではOS側の設定でCapsLockキーのみで日本語ON/OFFできていて、Windowsのシフトキー+CapsLockキーが使いづらくて、何とかならないかずっと悩んでいました。今日たまたまこのツールを発見して今までの悩みが解決しました。本当に感謝です!ありがとうございました!

    1. 感想、ありがとうございます!

      US配列のキーボードを使っていて、CapsLochキーでIMEをON/OFFする人はほとんどいないと思っていましたが、お役に立ててよかったです。
      実は、私自身もUS配列を使っていて自分でも便利に感じています。

  3. 私は現在海外駐在で、現地で手に入るものは皆US配列になってしまいます。このツールを入れてから、おかげさまで入力効率が格段にアップしました!
    日本語キーボードを入手できない海外在住の方ならきっと喜ぶツールだと思います。
    (蛇足ですが、海外からアクセスしている、このサイトはコメント送信できないんですね。
    送る際は、VPNで日本IPに切り替えてから送信しています。)

  4. こんにちは。DIME4.1を日々愛用していて気付いたのですが、楽天のViberデスクトップアプリで、CapsLockキーによる日本語切替が使えません。他のアプリでは使えます。
    Viberアプリの作りが他のアプリと違うからなのでしょうか?

    1. 楽天Viberは利用していませんでしたが、先ほどデスクトップアプリを入れてマイノートなどで入力してみました。
      こちらでは問題なくCapsLockで日本語切り替えできました。
      キーボードのレイアウトは英語101/102でした。
      もしかすると、パソコン個別の問題かもしれませんね。

  5. ご面倒おかけしました。Viberアプリをアインストールして
    再度インストールしたところ、問題解決しました。
    ありがとうございました。

  6. MacからWindowsにRDPしており、Windowsが日本語入力、MacがUSキーボードというところでULE4JISを利用して解決しました。
    さらに欲求が出てきてMacの日本語入力と同じようにCapsLockキーを1回叩くだけでRDPでWindows利用時(ULE4JIS) 動作中にDIMEが使えないかと試してみました。
    画面は、切り替わるのですが日本語入力への切り替わりはうまく動かないようです。
    何か良いアイデアがあればと思いコメント入力しております。

    1. すみません。
      こちらでMacからRDPする環境がなく、動作を確かめる手段がありません。CapslockがRDPでうまく連携できていないか、ULE4JISと競合するなどの問題があるのかもしれません。
      残念ながら参考になる情報を持ち合わせておりません。

  7. お陰様でずっと悩んでいたUSキーボード+CapsLock問題が解決できました。本当にありがとうございます!!!

    1. 私自身もJIS配列とUS配列のキーボードの両方を使っているので、この機能がないと困ります。できればOS側で設定できれば良いと思うのですが、日本語環境独自の問題なのでMicrosoftが対応する可能性は低いでしょうね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です