Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ule4Jis Rust

Ule4Jis Rust は、日本語版 Windows で JIS 配列のキーボードレイアウトドライバを使ったまま、US 配列/101 キーボードの記号入力を再現するためのユーティリティです。

Rust による非公式の再実装であり、ドライバの変更、レジストリ編集、専用ドライバの導入、システム再起動なしに US 配列の使い心地へ近づけることを目的にしています。

オリジナル ULE4JIS への敬意

このプロジェクトは、nano 氏 / DEZZ Networks によるオリジナルソフトウェア ULE4JIS に着想を得ています。

オリジナルの Readme.txt では、Happy Hacking Keyboard などの US 配列キーボードを日本語版 Windows で使う際の悩みを解決するため、インストール不要、ドライバ変更不要、再起動不要の単体実行ツールとして設計されたことが説明されています。

Ule4Jis Rust は、その問題意識と実用性に敬意を払いながら、Rust と Win32 API で現在の実装として書き直しているものです。オリジナル作者による公式な後継版ではありません。

オリジナルのソフトウェア、履歴、配布条件については以下を参照してください。

特徴

  • 日本語 Windows の JIS 配列環境で、US 配列キーボードの記号入力をエミュレートします。
  • タスクトレイ常駐アプリとして動作します。
  • 起動時にエミュレーションを自動開始します。
  • トレイアイコンから開始、停止、切り替え、終了ができます。
  • 入力送出方式を SendInputkeybd_event で切り替えられます。
  • Windows の名前付き mutex により多重起動を抑止します。
  • 有効/無効状態に応じてトレイアイコンを切り替えます。
  • 日本語/英語の UI 表示に対応しています。
  • キーボードドライバやシステムのキーボードレイアウト設定は変更しません。

対応環境

  • Windows
  • Rust 2021 edition
  • windows crate による Win32 API 呼び出し
  • 通常の Windows デスクトップセッション

低レベルキーボードフックとタスクトレイを使うため、macOS や Linux では動作しません。

使い方

ule4jis.exe を実行します。

起動直後はエミュレーションが有効になります。トレイアイコンから次の操作ができます。

  • 左クリック: エミュレーションの有効/無効を切り替え
  • 右クリック: メニューを表示
  • ダブルクリック: メニューを表示
  • メニュー: 開始、停止、入力方式の切り替え、終了

入力方式はデフォルトで SendInput です。アプリケーションや環境によって入力の相性が悪い場合は、トレイメニューの 入力方式: SendInput / 入力方式: keybd_event を選ぶと方式を切り替えられます。

表示言語

UI 表示はデフォルトで日本語です。英語表示にする場合は ULE4JIS_LANG=en を指定してください。

PowerShell 例:

$env:ULE4JIS_LANG = "en"
.\ule4jis.exe

対応値:

  • ja
  • en

それ以外の値は日本語として扱います。

ビルド

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 ファイルが追加されている場合は、その内容がこのリポジトリに対する正式なライセンス表記です。

About

JIS配列ドライバのままUS配列の記号入力を可能にする Windows 向け Rust ユーティリティ

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages