Last Updated on 2025/10/16 by りょう


以前、uConsoleのコントローラーボタンでアプリケーションを起動できるように設定し、使い勝手が大きく向上した。
「AntiMicroX」というアプリでコントローラーボタンに実際のキーを割り当て、ボタンの押下を監視して該当のボタン(キー)が検知されたら対象アプリを起動するという常駐スクリプトを作成した。
その後、AntiMicroXはボタンを押した際だけではなく離した際の検出も可能なことを知り、それなら押されてから離されるまでの経過時間を用いて短押し/長押しの判定が出来るのではないか?と考えた。
現在の割り当ては下記の通り。
【X】ボタン押下によるアプリケーションランチャー(fuzzel)の起動以外は単にボタンをキーに変換しているだけでスクリプトを介していないため、今回のような時間計測による判定は行えない。
「ボタン検知 ⇒ 判定 ⇒ キー出力」のようにスクリプトに含めれば可能かな。
| コントローラーボタン | 割り当て/機能 | スクリプト内で処理 |
| Y | 【Enter】キーに割り当て | ー |
| X | 【F13】キーに割り当て アプリケーションランチャー(fuzzel)起動 | 〇 |
| B | 【F14】キーに割り当て fcitx5/mozcの文字入力モード(全角/半角)切替 | ー |
| A | 【CTRL】キーに割り当て | ー |
さて、ひとまずアクションを簡単にしたいのはリブートやシャットダウンの操作。
毎回、左下隅のメニューまでカーソルを移動して【ログアウト】から各操作を選ぶのは地味に手間。
なので、【X】ボタンを長押ししたらリブートやシャットダウンなどのログアウト/電源管理メニューが表示されるようにしたい。
wlogout
インストール
Bookworm(Wayland/Labwc環境)に対応したログアウト/電源管理メニューアプリとしては「wlogout」が有り、単独で試したところ問題無く使用できたので採用。
sudo apt update sudo apt install wlogout
起動確認

システム標準の「ログアウト」には無い【Suspend】と【Hibernate】が追加されているが機能は未確認。
カーソルキーかマウスカーソルで選択し、【Enter】キーかマウスボタンの左クリックで決定する。
起動スクリプト作成
以前作成したスクリプト「fuzzel.sh」を元に短押し/長押し判定とそれぞれのアプリ起動を追加し、且つ、冗長記述を整理する。
「/usr/local/bin」にシェルスクリプト「start_AntiMicroX.sh」を作成する。
尚、fuzzel以外のアプリも対象にするためスクリプト名称を変更した。
cd /usr/local/bin sudo nano start_AntiMicroX.sh
#!/bin/bash
#AntiMicroX
/usr/bin/antimicrox --show %f &
#wait 5sec
sleep 5
#
DEVICE="/dev/input/event11"
# modify for USER
export XDG_RUNTIME_DIR="/run/user/1000"
export WAYLAND_DISPLAY="wayland-0"
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
pressed_time=0
/usr/bin/evtest "$DEVICE" | while read line; do
# button pressed
if echo "$line" | grep -q "KEY_F13.*value 1"; then
pressed_time=$(date +%s%3N)
fi
# button released
if echo "$line" | grep -q "KEY_F13.*value 0"; then
released_time=$(date +%s%3N)
duration=$((released_time - pressed_time))
if [ $duration -lt 500 ]; then
# short press (less than 500ms)
/usr/bin/fuzzel &
else
# long press (over than 500ms)
/usr/bin/wlogout -b 3 -p layer-shell &
fi
fi
done
1. 「AntiMicroX」を起動し、コントローラーのボタンでキーボードのキーをエミュレートする。
2. 「AntiMicroX」の起動完了を待つため、しばらく(5秒間)停止。
3. デバイス番号とユーザー環境変数を設定する。
4. 「evtest」でエミュレートされたキーの状態を取得する。
5. 【F13】キー(実体は【X】ボタン)を押した時間と離した時間を取得し経過時間を算出する。
6. 経過時間が500ms未満なら短押しと判断して「fuzzel」を起動する。
経過時間が500ms以上なら長押しと判断して「wlogout」を起動する。
7. 4.から繰り返す。
※ AntiMicroXのインストールやセットアップ、設定に必要なデバイス番号や環境変数の取得などについては、冒頭のリンク先を参照のこと。
作成したシェルスクリプト「start_AntiMicroX.sh」に実行権限を付与する。
chmod +x ~/start_AntiMicroX.sh
シェルスクリプト自動実行(Wayland/Labwc環境)
シェルスクリプト「start_AntiMicroX.sh」をシステム起動時に自動実行する場合は、「~/.config/labwc/」フォルダ内に「autostart」ファイルを作成する。
(sleep 3 && /usr/local/bin/start_AntiMicroX.sh) &
システム起動直後は環境変数や権限がまだ整っていないタイミングで実行される可能性が有るため、暫く(上記の設定では約3秒)待ってシェルスクリプトを実行する。
使用感
これでまた一段と使い勝手が向上した。
冒頭でも書いた通り、リブートやシャットダウンはuConsoleを使用する度に行う操作なので、少し手間を省くだけでも効果が大きい。
既にワンボタンでアプリケーションランチャーを起動出来るので、アプリ起動の手間自体はかなり省けている。
今後何かショートカットしたい操作が出てきたら、他のボタンも短押し/長押しを検討しよう。
写真(Leica M10-D、Ricoh GRⅢ)、アマチュア無線(JR4WDU)、デジタルガジェット、3Dプリント、ミリタリー(トイガン、小物)…などなど、興味の赴くままに広く浅く細く長く愉しんでいます。