Macでexkeymoをビルドするためにopenjdkを使えるようにする
(このページは工事中です)
参照ページ
環境変数などの設定が必要なHomebrew packageをEnvironment Modulesで管理する
Androidで物理キーボードのキーを入れ替える
openjdkを入れる
brew info openjdkで見ると
openjdk is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.
と書いてある。これは他のJDKとの混乱を避けるためにデフォルトではPATHや他の環境変数は設定されないということらしい。
ひとまずbrew install openjdkはしておく。
dotfilesを弄ってPATHには/opt/homebrew/opt/openjdk/binを入れておく。
それでexkeymoで./mvnw clean installをやってもまだコンパイラがないと怒られる。
export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
export JAVA_HOME=/opt/homebrew/opt/openjdk
これでやっと./mvnw clean installが通るようになる。
Environment Modulesを入れてopenjdkを設定する
後々のためにEnvironment Modulesを導入してそれで環境変数を設定するようにしておく。
Environment ModulesはTclを使う。MacOS同梱のtclshは古いようなのでbrewからtcl-tkをインストールしておく。
brew install tcl-tk
よく調べると、brewにmodulesという名前でパッケージがある模様。
brew install modules
code:add to .environ
# for Environment Modules
for initdir in /opt/homebrew/opt/modules/init; do
if -d "$initdir" ; then
for file in $(ls "$initdir"); do
if $(expr "$SHELL" : "^.*/$file$") -gt 0 ; then
source "/opt/homebrew/opt/modules/init/$file"
module use "$HOME"/.modulefiles
fi
done
fi
done
code:~/.modulefiles/openjdk
#%Module
conflict openjdk localjdk
setenv JAVA_HOME "/opt/homebrew/opt/openjdk"
prepend-path --delim " " CPPFLAGS "-I$::env(JAVA_HOME)/include"
prepend-path PATH "$::env(JAVA_HOME)/bin"
シェルスタートアップ時のPATHの設定ではjavaコマンドのあるディレクトリは含めないようにしておく。
Environment Modules使い方
module load openjdk
echo $JAVA_HOME
/opt/homebrew/opt/openjdk
module unload openjdk
echo $JAVA_HOME
exkeymoのビルド
exkeymoをcloneしたディレクトリで./mvnw clean install
exkeymoの起動 java -Dserver.port=8899 -jar target/exkeymo-server-1.0-SNAPSHOT-jar-with-dependencies.jar
適当な端末のブラウザからhttp://exkeymoを起動したホスト:8899/にアクセスしてキーアサインの設定をしてapkファイルをダウンロード。
キーアサインを変更したいAndroid端末にapkファイルをインストール。
当該端末の⚙️>システム>キーボード>物理キーボード>キーボードの機種名をタップ>いずれかの「レイアウト」をタップ>「ExKeyMo Layout」を選択
(2026-05-25)