
2026/04/19 15:52
Show HN:Python 向けバックライト制御キーボード用 API をご紹介します。
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
backlit_kbd パッケージ(CLI: backlit-kbd)は、Linux でキーボードのバックライトを制御するための多目的な Python ツールであり、sysfs から接続されたデバイスを自動的に発見します。特徴的な機能として、--mock CLI フラグまたはコード内の fallback_to_mock=True/force_mock=True を用いて有効にできる「モックモード」があり、これにより物理ハードウェアに影響を与えることなくロジックや自動化スクリプトの安全なテストが可能になります;実際のハードウェアとの相互作用はデフォルトでは自動的に使用されますが、モックされた場合は例外となります。インストールは PyPI 経由またはエディタブルなローカルセットアップ(オプションの開発依存関係を伴う)で簡単に行えます。
使用方法としては、
NotificationBlinker などのコントローラーを使用した堅牢な Python API 呼び出しが可能であり、CLI 情報については info、設定は set、輝度は percent、増減は inc/dec、オンオフは on/off、点滅は blink、通知は notify という包括的なアクションをサポートしています。例시는 examples/ フォルダ(例:blink_notification.py、brightness_wave.py、disco_light.py)に提供されています。実際のハードウェア制御は通常、管理者権限または udev ルールが必要ですが、アーキテクチャは一般ユーザーとエンタープライズ開発者の双方に対してセキュリティと柔軟性を保証しています。本プロジェクトは標準的なリリースプロセスを採用し、GitHub Actions を用いた CI/CD、astral-sh/setup-uv を通じた Trusted Publishing(OIDC)による PyPI パッケージビルドが行われており、Adarsh Gourab Mahalik が MIT ライセンスの下で公開しています。支援については Buy Me a Coffee および GitHub Sponsors で提供されています。本文
初心者に優しい Python パッケージで、キーボードバックライトの明るさを制御できます。以下の機能をサポートしています:
- リアルな Linux キーボードバックライトデバイス(
から自動検出)sysfs - ハードウェアへのアクセスを行わずに安全にテスト可能なモック機能付き
このパッケージの仕組みについて
--mock オプションを使用すると、すべてのコマンドがメモリー上で動作するため、学習用には安全です。--mock を指定しない場合は、パッケージが自動的に実際のハードウェアを試みます。通常、--device-path オプションは指定する必要ありません。
インストール方法
ステップ 1: PyPI からインストール
ステップ 2(オプション): 開発用にローカルの編集可能バージョンをインストール
ステップ 3(オプション): 開発依存関係をインストール
クイックスタート(Python)
ステップ 1:インポート
from backlit_kbd import NotificationBlinker, create_controller
ステップ 2:安全なコントローラーを作成(モックフォールバック有効)
controller = create_controller(fallback_to_mock=True)
ステップ 3:明るさを 60% に設定
ステップ 4:通知用に点滅させる
controller.blink(count=3, on_ms=120, off_ms=120, level_percent=100.0)
ステップ 5:非同期通知マネージャーを使用
blinker = NotificationBlinker(controller) blinker.start("chat-message", count=5, on_ms=80, off_ms=120)
CLI ガイド(初心者向け)
1. 現在の状態を確認する
- モックバックエンドの場合:
backlit-kbd info --mock - リアルハードウェアの場合:
backlit-kbd info
2. レベル値で明るさを設定する
- モックバックエンドの場合:
backlit-kbd --mock set <値> - リアルハードウェアの場合:
backlit-kbd set <値>
3. パーセント値で明るさを設定する
- モックバックエンドの場合:
backlit-kbd --mock percent <値> - リアルハードウェアの場合:
backlit-kbd percent <値>
4. ブrightness を増減させる
- デフォルトステップ(1)での増加:
backlit-kbd inc - カスタムステップでの増加:
backlit-kbd inc <ステップ数> - カスタムステップでの減少:
backlit-kbd dec <ステップ数> - リアルハードウェアでも同じコマンドが使用できます:
backlit-kbd inc backlit-kbd inc 2 backlit-kbd dec 2
5. オン・オフ操作
- モックバックエンドの場合:
backlit-kbd --mock on --percent 40 backlit-kbd --mock off - リアルハードウェアの場合:
backlit-kbd on --percent 40 backlit-kbd off
6. パターン点滅(同期方式)
- モックバックエンドの場合:
backlit-kbd --mock blink --count 4 --on-ms 100 --off-ms 100 --level-percent 100 - リアルハードウェアの場合:
backlit-kbd blink --count 4 --on-ms 100 --off-ms 100 --level-percent 100
7. 非同期スタイルの通知点滅
- モックバックエンドの場合:
backlit-kbd --mock notify --name chat --count 5 --on-ms 80 --off-ms 120 --level-percent 100 - リアルハードウェアの場合:
backlit-kbd notify --name chat --count 5 --on-ms 80 --off-ms 120 --level-percent 100
完全な CLI コマンド
グローバルオプション
:メモリー上で動作するバックエンドを使用(安全でハードウェアへの書き込みなし)--mock
:特定の sysfs デバイス向けの高度なオーバーライド(オプション)--device-path <PATH>
コマンド一覧
:現在の状態を表示info
:絶対レベルで明るさを設定set <値>
:パーセントで明るさを設定percent <値>
:デフォルトまたはカスタムステップで明るさを上げるinc [<ステップ数>]
:デフォルトまたはカスタムステップで明るさを下げるdec [<ステップ数>]
:バックライトをオンにし、必要に応じてパーセントも指定可能on [--percent N]
:バックライトをオフにするoff
:点滅パターンを設定blink [--count N --on-ms N --off-ms N --level-percent N]
:非同期通知点滅を実行notify [--name NAME --count N --on-ms N --off-ms N --level-percent N]
サンプルスクリプトフォルダ
利用可能なサンプルスクリプト:
examples/blink_notification.pyexamples/brightness_wave.pyexamples/disco_light.py
これらを実行するには:
python examples/blink_notification.py python examples/brightness_wave.py python examples/disco_light.py
テストの実行方法
テストを動かすには:
プロジェクトの仮想環境を使用している場合:
source venv/bin/activate # (Python バージョンに合わせて適宜変更) pytest
トラブルシューティング
リアルハードウェアモードで「Permission denied」エラーが発生する場合
sysfs への書き込みに適切な権限や udev ルールが必要になる場合があります。
リアルハードウェアモードでデバイスが見つからない場合
学習またはテストには
--mock を使用するか、Python コードでは
create_controller(fallback_to_mock=True)
を指定してください。
常に安全な練習モードを使用したい場合
CLI では
--mock を指定するか、コードでは force_mock=True または fallback_to_mock=True を使用します。
リリースと公開について
このリポジトリには GitHub Actions ワークフローが含まれており、プッシュやプルリクエスト時に CI がテストを走査し、ビルド結果を PyPI にデプロイします。astral-sh/setup-uv および PyPI トラステッドパブリッシング(OIDC)を使用しています。
新しいバージョンを公開するには:
でバージョン番号を更新pyproject.toml- タグを作成してプッシュ(例:
)v0.1.1 - GitHub リリースを投稿
サポートに関する情報
コーヒーを一杯、いかがですか?
https://buymeacoffee.com/itsmeadarsh
GitHub スポンサーシップ(個人・企業向け)
https://github.com/sponsors/itsmeadarsh2008
貢献について
- まず
フォルダのサンプルからチェックexamples/ - テストを実行して機能を確認:
フォルダtests/ - イシューや PR を作成・提出
ライセンス
MIT ライセンス。創作者:Adarsh Gourab Mahalik