0

OS X にネイティブにあるように、Arch を実行する MacBook Pro のキーボード バックライト コントローラーとして機能するプログラムを作成しました。プログラム自体はうまく機能しますが、Arch プログラムで提供する rc.d スクリプトパッケージ、プログラムを正しく開いていないようです...またはそう思います。

Arch パッケージのソースはここにあります(rc.d スクリプトと PKGBUILD ファイル)。/etc/rc.conf のデーモンの行に「mbpkbdbacklightctl」を追加しました。

何が起こるかというと、起動時に rc.d スクリプトが起動し、プログラムがエラーなしで起動され、キーボードのバックライトが点灯していることがわかります。これは、プログラムも適切に実行されていることを意味しますが、gdm がログを開始するとgnome では、プログラムは既に終了しているようです。ログに記録されたエラーを見つけることができませんでしたが、キーボードまたはマウスのイベントが20秒以上登録されていない場合、プログラムはバックライトをオフにし、登録されたときにバックライトをオンにします。これはgdmでも発生しません。ノームで。また、gnome に到達して を実行するpidof -o %PPID /usr/bin/mbpkbdbacklightctlと、プログラムが終了したことを示す何も返されません。gnome を起動したら、正しく動作させるために rc.d スクリプトを再起動する必要があります。

プログラムが終了したため、プログラムに何が起こっているのか把握できていないようです。プログラムのソースはここにありますが、エラーは rc.d スクリプトにあり、gdm の起動時に「生き残る」ためにプログラムを適切に起動しない可能性があると思います。

何が起こっているのかについてのアイデアはありますか?

よろしく、 クリス・ブッフホルツ

4

1 に答える 1

5

ソースコードを読むと、mbpkbdbacklightctl.cpp次の行が表示されます。

95  std::string the_display = ":0.0";
96  Display *x11_display = XOpenDisplay(the_display.c_str());
97  if(x11_display != NULL) {

したがって、アクティブな X サーバーがない場合は失敗します。これは、X セッションの開始後にこのスクリプトを開始する必要があることを意味します。したがって、スクリプトを下に置く必要があります/etc/X11/xinit/xinitrc.d

于 2010-12-26T20:07:17.573 に答える