Ule4Jis Rust は、日本語版 Windows で JIS 配列のキーボードレイアウトドライバを使ったまま、US 配列/101 キーボードの記号入力を再現するためのユーティリティです。
Rust による非公式の再実装であり、ドライバの変更、レジストリ編集、専用ドライバの導入、システム再起動なしに US 配列の使い心地へ近づけることを目的にしています。
このプロジェクトは、nano 氏 / DEZZ Networks によるオリジナルソフトウェア ULE4JIS に着想を得ています。
オリジナルの Readme.txt では、Happy Hacking Keyboard などの US 配列キーボードを日本語版 Windows で使う際の悩みを解決するため、インストール不要、ドライバ変更不要、再起動不要の単体実行ツールとして設計されたことが説明されています。
Ule4Jis Rust は、その問題意識と実用性に敬意を払いながら、Rust と Win32 API で現在の実装として書き直しているものです。オリジナル作者による公式な後継版ではありません。
オリジナルのソフトウェア、履歴、配布条件については以下を参照してください。
- 日本語 Windows の JIS 配列環境で、US 配列キーボードの記号入力をエミュレートします。
- タスクトレイ常駐アプリとして動作します。
- 起動時にエミュレーションを自動開始します。
- トレイアイコンから開始、停止、切り替え、終了ができます。
- 入力送出方式を
SendInputとkeybd_eventで切り替えられます。 - Windows の名前付き mutex により多重起動を抑止します。
- 有効/無効状態に応じてトレイアイコンを切り替えます。
- 日本語/英語の UI 表示に対応しています。
- キーボードドライバやシステムのキーボードレイアウト設定は変更しません。
- Windows
- Rust 2021 edition
windowscrate による Win32 API 呼び出し- 通常の Windows デスクトップセッション
低レベルキーボードフックとタスクトレイを使うため、macOS や Linux では動作しません。
ule4jis.exe を実行します。
起動直後はエミュレーションが有効になります。トレイアイコンから次の操作ができます。
- 左クリック: エミュレーションの有効/無効を切り替え
- 右クリック: メニューを表示
- ダブルクリック: メニューを表示
- メニュー: 開始、停止、入力方式の切り替え、終了
入力方式はデフォルトで SendInput です。アプリケーションや環境によって入力の相性が悪い場合は、トレイメニューの 入力方式: SendInput / 入力方式: keybd_event を選ぶと方式を切り替えられます。
UI 表示はデフォルトで日本語です。英語表示にする場合は ULE4JIS_LANG=en を指定してください。
PowerShell 例:
$env:ULE4JIS_LANG = "en"
.\ule4jis.exe対応値:
jaen
それ以外の値は日本語として扱います。
Windows 用の Rust ツールチェインをインストールしてから、以下を実行します。MSVC toolchain の利用を推奨します。
cargo build --release実行ファイルは以下に生成されます。
target\release\ule4jis.exe
release ビルドは配布用バイナリのサイズを抑えるため、LTO、有効なシンボル削除、panic = "abort" を使います。
開発時の確認:
cargo check
cargo test
cargo clippy --all-targets -- -D warnings現在のマッピングは src/strategy.rs に実装されています。主に US 配列と JIS 配列で位置が異なる記号キーを対象にしています。
対象となる記号の例:
@,^,&,*,(,)_,=,+`,~[,],{,}:,',"\,|
- エミュレーションはこのアプリが起動している間だけ有効です。
- 低レベルキーボードフックを使うアプリケーションと同時に使うと、期待通りに動作しない場合があります(※ PowerToys の「境界線のないマウス」(Mouse Without Borders) 等のリモート入力ソフトと併用時、キーの長押しによってキーリピートが正しく入力されない不具合がありましたが、修飾キーの復元処理を KeyUp 時へ最適化することで対応済みです)。
- 管理者権限のアプリケーション、UAC、セキュアデスクトップなどでは、通常のデスクトップアプリと同じように入力を扱えない場合があります。
- キーボードドライバの置き換えではなく、入力イベントのエミュレーションです。
このアプリは、Windows の低レベルキーボードフックでキーイベントを確認し、必要に応じて代替キーイベントを送出します。
ネットワークアクセスは不要で、キー入力を保存または送信することを目的とした処理はありません。ただし、キーボードフックを使う性質上、信頼できるソースから入手したバイナリのみを使用してください。
オリジナル ULE4JIS の配布条件は、オリジナルの Readme.txt に記載されています。
この Rust 再実装のライセンスは、このリポジトリで別途明示してください。LICENSE ファイルが追加されている場合は、その内容がこのリポジトリに対する正式なライセンス表記です。