gmobile.udev() gmobile.udev()

gmobile.udev - پیکربندی دستگاه برای gmobile

برنامه gmobile به شما امکان می‌دهد جنبه‌های مشخصی را از طریق hwdb مربوط به udev پیکربندی کنید: https://www.freedesktop.org/software/systemd/man/hwdb.html

ویژگی‌های زیر پشتیبانی می‌شوند:

کلیدهای بیدارسازی یک دستگاه ورودی مشخص می‌کنند که کدام کلیدها صفحه نمایش دستگاهِ در حالت بیکار (idle) را از حالت خاموشی خارج می‌کنند. به‌طور پیش‌فرض تمام کلیدها، کلید بیدارسازی هستند. این مقدار پیش‌فرض را می‌توان برای هر صفحه‌کلید به صورت مجزا از طریق مقدار زیر تغییر داد:

GM_WAKEUP_KEY_DEFAULT=0

رفتار کلیدهای جداگانه را می‌توان با مشخص کردن کد کلید (keycode) آن‌ها تغییر داد، برای مثال:

GM_WAKEUP_KEY_<keycode>=[0|1]

مقدار keycode همان کد رویداد (event code) لینوکس است.

توجه داشته باشید که gmobile صرفاً این اطلاعات را فراهم می‌کند. کامپوزیتور Wayland مسئول اعمال آن است.

برای جزئیات بیشتر درباره نحوه افزودن این ویژگی‌ها به hwdb، بخش‌های زیر را ببینید.

یک LED که به عنوان فلاش دوربین به کار می‌رود، می‌تواند به عنوان چراغ‌قوه نیز استفاده شود. حداقل روشنایی چراغ‌قوه باید همچنان برای کاربر قابل مشاهده باشد تا از تخلیه بی‌مورد باتری جلوگیری شود. این حالت معمولاً در سطح 1 برقرار است. ویژگی GM_TORCH_MIN_BRIGHTNESS امکان بازنویسی و تغییر این مقدار را فراهم می‌کند.

GM_TORCH_MIN_BRIGHTNESS=10

توجه داشته باشید که gmobile صرفاً این اطلاعات را فراهم می‌کند. برنامه‌هایی که از فلاش به عنوان چراغ‌قوه استفاده می‌کنند مسئول اعمال آن هستند.

برای جزئیات بیشتر درباره نحوه افزودن این ویژگی‌ها به hwdb، بخش‌های زیر را ببینید.

پایگاه داده سخت‌افزار (hwdb) شامل مجموعه‌ای از قوانین تطبیق است که ویژگی‌های udev را هنگام اتصال دستگاه اختصاص داده و در دسترس قرار می‌دهد. این بخش فقط hwdb را در ارتباط با gmobile شرح می‌دهد و مستندات کاملی از نحوه کار hwdb نیست. برای مطالعه مستندات کامل، لطفاً صفحه راهنمای hwdb(7) را مشاهده کنید.

استفاده gmobile از hwdb به ویژگی‌هایی محدود می‌شود که systemd و فایل‌های قوانین سفارشی (در صورت وجود) ارائه می‌دهند.

برنامه gmobile در حال حاضر فقط از گره‌های دستگاه به شکل /dev/input/eventX استفاده می‌کند که در آن X شماره دستگاه مورد نظر است. اجرای libinput debug-events تمام دستگاه‌های موجود برای libinput و نام گره رویداد آن‌ها را فهرست می‌کند:

$> sudo libinput debug-events
-event0   DEVICE_ADDED            gpio-keys                         seat0 default group1  cap:k
-event2   DEVICE_ADDED            30370000.snvs:snvs-powerkey       seat0 default group2  cap:k
-event3   DEVICE_ADDED            generic ft5x06 (f0)               seat0 default group3  cap:t ntouches 10 calib
...

نام گره رویداد دستگاه خود را یادداشت کرده و آن را به یک مسیر سیستمی (syspath) به شکل /sys/class/input/eventX تبدیل کنید. این مسیر را می‌توان به udevadm info داد:

$> udevadm info -p /sys/class/input/event0/
P: /devices/platform/gpio-keys/input/input0/event0
M: event0
R: 0
U: input
D: c 13:64
N: input/event0
L: 0
S: input/by-path/platform-gpio-keys-event
E: DEVPATH=/devices/platform/gpio-keys/input/input0/event0
E: SUBSYSTEM=input
E: DEVNAME=/dev/input/event0
E: MAJOR=13
E: MINOR=64
E: USEC_INITIALIZED=5327886
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-gpio-keys
E: ID_PATH_TAG=platform-gpio-keys
E: GM_WAKEUP_KEY_114=0
E: GM_WAKEUP_KEY_115=0
…

خطوطی که با E: شروع می‌شوند، ویژگی‌های udev در دسترس برای برنامه‌ها هستند. ویژگی‌های اضافه شده توسط gmobile همگی دارای پیشوند GM_ هستند. این ویژگی‌ها فقط در صورتی وجود دارند که یک مدخل hwdb تطبیق پیدا کند.

دیتابیس واقعی hwdb در یک فایل باینری روی دیسک ذخیره می‌شود و هر زمان که یک فایل .hwdb تغییر کند باید به صورت دستی به‌روزرسانی شود. این کار هم زمانی که کاربر به صورت دستی فایل .hwdb را ویرایش می‌کند و هم زمانی که gmobile مجموعه‌ای به‌روزشده از مدخل‌ها را ارائه می‌دهد، لازم است.

برای به‌روزرسانی فایل باینری روی دیسک، دستور زیر را اجرا کنید:

sudo systemd-hwdb update

سپس، برای فعال‌سازی بارگذاری مجدد تمام ویژگی‌ها روی دستگاه خود، اجرا کنید:

sudo udevadm trigger /sys/class/input/eventX

سپس با udevadm info بررسی کنید که آیا ویژگی‌ها به‌روزرسانی شده‌اند یا خیر؛ بخش پرس‌وجو در hwdb (Querying the hwdb) را ببینید. اگر ویژگی جدیدی روی دستگاه ظاهر نشد، از udevadm test برای بررسی پیام‌های خطای udev و hwdb (مانند خطاهای نحوی در فایل‌های قوانین udev) استفاده کنید:

sudo udevadm test /sys/class/input/eventX

این بخش برای کاربرانی کاربرد دارد که نیاز به افزودن، تغییر یا حذف یک مدخل hwdb برای دستگاه خود دارند. توجه داشته باشید که hwdb بخشی از API عمومی نیست و ممکن است در هر زمان تغییر کند. هنگامی که دستگاه به درستی به کار گرفته شد، تغییرات باید به مخزن gmobile ارسال شوند: https://gitlab.gnome.org/World/Phosh/gmobile

مدخل‌های hwdb تنها در صورتی اعمال می‌شوند که یک قانون udev با قالب تطبیق صحیح به hwdb ارجاع دهد. نرم‌افزار gmobile همراه با مجموعه‌ای از قوانین برای پرس‌وجو از hwdb ارائه می‌شود و قوانین مختلف با پیشوند خود مشخص می‌شوند. مجدداً تأکید می‌شود که این بخش جزئی از API عمومی نیست. تطبیق‌های gmobile از رشته تحت‌اللفظی "gmobile" تشکیل شده‌اند و پس از آن نام دستگاه (با پیشوند name:) به همراه اولین سازگار درخت دستگاه (device tree compatible) ماشین (با پیشوند dt:) یا modalias مربوط به dmi می‌آید. برای مثال:

gmobile:name:gpio-keys:dt:purism,librem5*

نام دستگاه در مسیر /sys/class/input/eventX/device/name دستگاه در دسترس است، در حالی که سازگار درخت دستگاه در /sys/firmware/devicetree/base/compatible قرار دارد.

رشته تطبیق hwdb بخش اول مدخل hwdb است. بخش دوم ویژگی مورد نظر برای تنظیم است. هر مدخل hwdb می‌تواند با چندین دستگاه مطابقت داشته باشد و چندین ویژگی را اعمال کند. برای مثال:

gmobile:name:gpio-keys:dt:purism,librem5*
  GM_WAKEUP_KEY_114=0
  GM_WAKEUP_KEY_115=0

در مثال بالا، روی دستگاه gpio-keys منطبق، هر دو ویژگی اعمال خواهند شد.

پایگاه داده hwdb امکان حذف ویژگی‌ها را نمی‌دهد. در مواردی که یک ویژگی باید لغو شود (unset)، باید مقدار آن برابر 0 قرار گیرد.

برای آزمایش، هرگونه مدخل hwdb مختص کاربر باید در فایلی در مسیر /etc/udev/hwdb.d/99-gmobile.hwdb قرار گیرد، اما لطفاً حتماً آن‌ها را به پروژه بالادست ارسال کنید، زیرا قالب hwdb ممکن است بدون اطلاع قبلی تغییر کند.

hwdb(7) systemd-hwdb(8) phoc(1) phosh(1)