C ++のカーソル内のキーボードレイアウトの簡単なインジケーター

現在のレイアウトを表示するトピックは、habrasociety 2 以上心配しまし 。 私は多くの既存のソリューションを試しましたが、さまざまな理由でそれらは私には不向きでした。 現在のレイアウトを表示するための最も便利なオプションを選択するために、C ++で小さなアプリケーションを作成しました。左のShiftキーを押すと、システムテキスト編集カーソルに言語が表示されます。 100行未満のコードとコンパイルされた形式で約4キロバイト-これに基づいて、現在のレイアウトが実際にどのように見えるかについてのビューを簡単に実現できます。



これはどのように行われますか?



WinAPI以外は必要ないため、プログラムはVisual Studio 2010でRTLなしでコンパイルします。したがって、非常に少量の実行可能ファイルを取得します。 Shiftクリックを追跡するには 、dllを使用せずにキーボードフックをインストールします。 システムテキスト編集カーソルを変更するには、 SetSystemCursor関数を使用します。これにより、すべてのアプリケーションで必要なタイプの標準カーソルを一度に置き換えることができます。 したがって、画面にインジケータを表示するために追加のリソースを費やす必要がなくなります-これがシステム自体の役割です。 デフォルトでは、テキスト編集カーソルには影がなく、下の各ピクセルの色が反転します。 これは2色カーソルでのみ可能であるため、この便利なプロパティを維持するには、インジケーターを白黒にする必要があります。



結果はどこからダウンロードできますか?



ソースコードは、 main.cppファイル(bitbucket.org)で確認するか、プロジェクトlangcursor-1.0-src.zip (5 kb)としてダウンロードできます。 注意! プロジェクトはリリースバージョンでのみコンパイルされます(RTLがないため)。

アーカイブ内の既製の実行可能ファイル: langcursor-1.0-bin.zip (1 kb)。



何を変更できますか?



他のレイアウトの表示を追加する場合は、名前としてレイアウト識別子を使用してカーソルリソースを追加します( 言語識別子テーブルの最後の列の値をresource.hファイルで指定できます)。 小さい白黒の言語表示が気に入らない場合は、たとえば色付きのフラグなど、カーソルを自分のカーソルで置き換えることができます。 ただし、カラーカーソルを使用する場合、カーソルの下の色を反転させることはできず、カーソルは影を落とし始めます(設定でオフになっていない場合)。

さらに、C / C ++に精通している場合は、自分でコードを完全に変更できます。 試してみて、あなたのベストプラクティスを共有してください! すべての人々は異なっており、それは1つに合っています-他の人がそうするという事実ではありません。 しかし、一緒に、私たちは最も便利な解決策を考え出すことができることを願っています:)



変更されたバージョン



ここで Shiftキーを押すことなく、常に言語アイコンを表示します

ウクライナ語の継続的な表示とサポートを備えたバージョンはこちらです。



All Articles