Show HN:Python 向けバックライト制御キーボード用 API をご紹介します。

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
    :メモリー上で動作するバックエンドを使用(安全でハードウェアへの書き込みなし)
  • --device-path <PATH>
    :特定の sysfs デバイス向けの高度なオーバーライド(オプション)

コマンド一覧

  • 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.py
  • examples/brightness_wave.py
  • examples/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)を使用しています。

新しいバージョンを公開するには:

  1. pyproject.toml
    でバージョン番号を更新
  2. タグを作成してプッシュ(例:
    v0.1.1
  3. GitHub リリースを投稿

サポートに関する情報

コーヒーを一杯、いかがですか?
https://buymeacoffee.com/itsmeadarsh

GitHub スポンサーシップ(個人・企業向け)
https://github.com/sponsors/itsmeadarsh2008


貢献について

  • まず
    examples/
    フォルダのサンプルからチェック
  • テストを実行して機能を確認:
    tests/
    フォルダ
  • イシューや PR を作成・提出

ライセンス

MIT ライセンス。創作者:Adarsh Gourab Mahalik

同じ日のほかのニュース

一覧に戻る →

2026/04/22 2:14

Vercel の侵害事件:OAuth 攻撃によるプラットフォーム環境変数のリスク浮上

## Japanese Translation: 最も重要な教訓は、攻撃者がサードパーティの OAuth の侵害を利用して、2024 年 6 月頃に始まり公開された 2026 年 4 月 19 日まで約 22 カ月到達した間、Vercel の内部システムへの侵入を成し遂げたという点です。この期間中、敵対者は顧客の機密情報や従業員のデータ、OpenAI のようなサービスにリンクされた認証情報を盗みました。この侵害は Vercel の環境変数モデルによって拡大されました:「sensitive」と明示的にマークされていない変数は静態で暗号化されて保存されていたため、内部へのアクセスが得られた時点で読み取ることができました。これにより、侵害された OAuth アプリケーションから従業員の Google Workspace アカウントへ、さらに非機密の環境変数の列挙および下流の認証情報の悪用への横移動が可能になりました。 Vercel の CEO ガビエル・ロイシュは、攻撃者の驚くべき速度と Vercel に対する深い理解を AI の拡張作用に帰因しました。地下フォーラムで ShinyHunters と関連するハッカー集団が従業員のレコード約 580 件、トークン、および API キーの保有を主張していますが、公式な確認が出るまでこれらの主張は検証されていません。この出来事は、LiteLLM(2024 年 3 月 24 日)、Axios(2024 年 3 月 31 日)、Codecov(2021 年)、CircleCI(2023 年)、Snowflake(2024 年)などの主要ソフトウェア提供者を標的とするサプライチェーン攻撃のより広範な 2026 年の傾向を反映しています。 即時の是正策として、すべての非機密 Vercel 環境変数を再設定し、アプリケーションを再起動する必要があります。パスワードのみの再設定では、すでに古い認証情報を既に使用していた以前のデプロイメントが無効化できないためです。調査は困難に直面しており、デフォルトの Google Workspace ログがわずか 6 ヶ月間のみ保持されるため、正確なエントリーポイントや最も早期の侵害活動が隠れてしまう可能性があります。究極的には、セキュリティ環境は、現代のサプライチェーン構成において「非機密」というラベルが静的な未暗号化データを保護することを失敗するという危険なギャップを開示しています。

2026/04/22 0:29

CrabTrap:実環境におけるエージェントを保護するための、LLM を採用した「審査官」として機能する HTTP プロキシ

## Japanese Translation: Capital One の完全子会社であり、米国ユタ州ソルトレイクシティ 650 S 500W スイート 300 に本社を置く Brex LLC は、コア・バンキングサービスにおいて関係ないパートナー銀行を利用する金融プラットフォームとして運営されています。支払いサービスは Brex Payments LLC(免許を受けた資金送金業者)が管理しており、Vault fonds には即座に FDIC の保険が付与され、Treasury fonds はパートナー・プログラム銀行へ転送される際に FDIC 資格を取得します。証券は Brex Treasury LLC を通じて提供され、同社は各株式で $1.00 の価値を維持することを目的とするファンドへの投資を行うが、これは保証されておらず、収益は市場状況によって変動し、元本損失の可能性もあることに注意すべきです。クレジットカードは製品により異なります:Brex Mastercard® Corporate は Emigrant Bank、Fifth Third Bank N.A.、または Airwallex(オランダ)B.V. が発行し、Brex Commercial Card は Visa ライセンスの下で Sutton Bank が発行します。現在、ATM アクセスは利用できませんが、すべてのローンには承認が必要です。また、Brex LLC は法的、税務、直接的投資アドバイスを提供しません。料金プランはユーザー 1 人あたり月 $0 から開始し、高度な機能を必要とする場合はユーザー 1 人あたり月 $12 です。資金を投入する前に、これらの構造的ニュアンス、パートナー依存関係、および本質的な市場リスクを考慮する必要があります。

2026/04/18 19:53

スティーブンのソーセージロールは、今なお最も影響力の大きいパズルゲームの一つとして確立されている。

## Japanese Translation: この原稿は『Stephen's Sausage Roll』の 10 周年を祝い、パズルゲームの定義を継続的に確立し続けてきたタイムレスな傑作として位置づけています。2016 年 4 月に PC でリリースされ、ゲームプレイについてほとんど何も明らかにしない予告編と共に登場したこの oversized fork-based ソコバンタイトル(プレイヤーがブロック、ラダー、フォークを使用して肉を焼くためにソーセージを押す)は、細心の注意を払った設計、深いパズル層、そして公平だが困難な難易度を通じて直ちにプレイヤーを魅了しました。ゲームは Stephen Lavelle 氏(Increpare Games)によってデザインされており、ソコバンの設計を探求するグリッドベースのパズルの作成を可能にする PuzzleScript も以前にリリースしています。開発者は『Stephen's Sausage Roll』を「削ぎ落とされた純粋さ」の傑作として評価し、「ソーセージのような」ゲームや新しい世代のソコバンタイトルを鼓舞していると述べています。Alan Hazelden 氏(*A Monster's Expedition*)はそれを「少ないもので多くのことを成し遂げるためのマスタークラス」と呼び、Patrick Traynor 氏(*Patrick's Parabox*)はそれが純粋なパズルデザインを追求するようそしてタイトルに自分の名前を含めるよう刺激したと述べています。Gwen Frey 氏(*Kine*, *Lab Rat*)はそれを「ソコバンへのゲートウェイ薬物」と呼び、彼女のキャリアを変えたと言っています。Corey Martin 氏(*Bonfire Peaks*)はその純粋さを「1976 年の Ramones」に例え、Joseph Mansfield 氏(Thinky Games)はそれが手慣れた古典的なソコバンから深みのある焦点を当てた設計への転換を標記していると指摘しています。Thinky Games は開発者の証言をフィーチャーした 10 歳の誕生日祭りを開催しており、これにより『Stephen's Sausage Roll』がどのようにジャンルを形成し続けているかが強調され、その遺産がリソースに制約のある志の高い創作者のための成功したブループリントとして検証され、新しい世代のパズル愛好家に enduring するために確保されています。

Show HN:Python 向けバックライト制御キーボード用 API をご紹介します。 | そっか~ニュース