LIRCD-UINPUT(8) System Managers Manual LIRCD-UINPUT(8)

lircd-uinput - بازپخش فشردن دکمه‌های lirc به عنوان رویدادهای uinput

lircd-uinput [گزینه‌ها]... [سوکت خروجی lircd]
lircd-uinput [گزینه‌ها]... [فایل]

lircd-uinput رویدادهای کدگشایی‌شده فشردن دکمه را از سوکت خروجی lircd(8) می‌خواند و آن‌ها را به عنوان رویدادهای کلید به دستگاه uinput کرنل تزریق می‌کند. کرنل این رویدادها را درست مانند سخت‌افزار ورودی معمولی، از طریق یک دستگاه /dev/input/event در دسترس برنامه‌های دیگر قرار می‌دهد.

دستور lircd-uinput طوری طراحی شده است که به عنوان یک سرویس systemd اجرا شود.

آرگومان سوکت خروجی lircd یک مسیر اختیاری به سوکت خروجی lircd است. مقدار پیش‌فرض آن مقدار output در بخش [lircd] از فایل پیکربندی lirc_options است، و در صورت عدم تنظیم، به /var/run/lirc/lircd بازمی‌گردد.

اگر به جای سوکت، یک فایل متنی ساده ارائه شود، فرض می‌شود حاوی رویدادهای فشرده‌شدن دکمه مطابق مستندات lircd(8) است. در این حالت، lircd-uinput کدهای موجود در این فایل را ارسال کرده و خارج می‌شود.

برای اینکه این سازوکار درست کار کند، رویدادهای رهاسازی کلید (release) نیز باید به دستگاه uinput ارسال شوند. بخش «مدیریت تکرار کلید» را مشاهده کنید.

دستور lircd-uinput تنها می‌تواند رویدادهای دکمه‌هایی را پردازش کند که نام آن‌ها با استفاده از فضای نام رسمی تعریف شده باشد، یعنی دکمه‌هایی که برای کرنل شناخته‌شده هستند. بخش «نکات» را ببینید.

مگر اینکه مجوزهای پیش‌فرض /dev/uinput تغییر یافته باشد، lirc-uinput باید با دسترسی مدیر سیستم (root) اجرا شود. بخش «نکات» را ببینید.

یافتن دستگاه /dev/input/event ایجادشده توسط کرنل ممکن است پیچیده باشد و نام آن پایدار نیست. بخش «نکات» را ببینید.

دستگاه هسته uinput؛ پیش‌فرض /dev/uinput است.
دستور lircd-uinput بسته به اینکه آیا نام دکمه با پسوند رهاسازی پایان می‌یابد یا خیر، رویدادهای متفاوتی تولید می‌کند. پیش‌فرض _EVUP است. بخش «مدیریت تکرار کلید» را ببینید.
تنظیم پارامترهای تکرار خودکار هسته برای دستگاه /dev/input/event ایجادشده. مقدار delay مدت زمان پیش از تکرار رویداد کلید است و period فاصله زمانی میان رویدادهای تکرار کلید است. هر دو مقدار بر حسب میلی‌ثانیه بوده و با کاما از یکدیگر جدا می‌شوند. هر مقداری را می‌توان حذف کرد یا روی 0 قرار داد که در این صورت پیش‌فرض‌های هسته یا سیستم استفاده می‌شوند. بخش «مدیریت تکرار کلید» را ببینید.
تولید رویدادهای رهاسازی کلید به صورت ساختگی (مصنوعی). این گزینه الزامی است مگر اینکه lircd از گزینه منسوخ‌شده --release استفاده کند. مدت زمان وقفه (timeout) مورد استفاده را می‌توان با کلید release-timeout در بخش lircd-uinput از فایل lirc_options.conf تغییر داد. در صورت استفاده از یک فایل متنی به عنوان ورودی، این گزینه بی‌فایده است. بخش «مدیریت تکرار کلید» را ببینید.
مسیر فایلی شامل نام دکمه‌هایی که باید غیرفعال شوند، در هر خط یک دکمه. به صورت پیش‌فرض، lircd-uinput تمامی دکمه‌های یافت‌شده در ورودی را ارسال می‌کند. بخش «نکات» را ببینید.
فایل گزینه‌ها حاوی مقادیر پیش‌فرض. پیش‌فرض /etc/lircd/lirc_options.conf است.
انتخاب فایل گزارش؛ می‌تواند رشته 'syslog' به معنای استفاده از syslog(1) یا مسیر یک فایل لاگ باشد. پیش‌فرض استفاده از syslog است.
تعیین میزان جزئیات گزارش‌گیری. مقدار level می‌تواند یکی از سطوح نمادین syslog باشد: 'error' ،'warning' ،'info' ،'notice' یا 'debug'. همچنین lircd-uinput سه سطح اضافی 'trace' ،'trace1' و 'trace2' را تعریف می‌کند که پیام‌های باز هم بیشتری ارائه می‌دهند (سطح 'trace2' بیشترین پیام را دارد). با این حال، این پیام‌ها در لاگ به عنوان 'debug' علامت‌گذاری می‌شوند.
نمایش خلاصه نحوه استفاده.
نمایش اطلاعات نسخه.

کرنل پس از دریافت رویداد فشردن کلید، ارسال رویدادهای تکرار به برنامه‌ها را آغاز می‌کند تا زمانی که lircd-uinput رویداد رهاسازی مربوطه را منتشر کند. رویدادهای رهاسازی می‌توانند توسط lircd(8) با استفاده از گزینه منسوخ‌شده --release تولید شوند. چنین رویدادهایی معمولاً پسوند _EVUP را به رویداد فشردن کلید اصلی اضافه می‌کنند.

رویکرد ترجیحی این است که lircd-uinput رویدادهای رهاسازی را با استفاده از گزینه --add-release-events ایجاد کند. ترکیب هر دوی این گزینه‌ها ممکن است نتایج غیرمنتظره‌ای به دنبال داشته باشد.

توجه داشته باشید که هسته لینوکس از نسخه ۴٫۷ به بعد از پسوند _UP (که پیش از ۰٫۱۰٫۰ توسط lircd استفاده می‌شد) برای مقاصد دیگری استفاده می‌کند.

در هر حال، رویدادهای تکرار تولیدشده توسط هسته را می‌توان با استفاده از گزینه --repeat تنظیم کرد. این گزینه می‌تواند زمان میان فشردن کلید تا نخستین رویداد تکرار و همچنین فاصله زمانی میان هر رویداد تکرار را تعیین کند. گزینه --repeat تنها زمانی باید استفاده شود که هیچ برنامه یا قاعده udev دیگری به صورت خودکار پارامترهای تکرار کلید را پیکربندی نکند. از نظر طراحی، پارامترهای تکرار را نمی‌توان به صورت اتمیک در هنگام ثبت دستگاه ورودی تنظیم کرد؛ بنابراین این گزینه مستعد شرایط رقابتی (race conditions) است.

دقت داشته باشید که مدیریت رویداد تکرار در lircd-uinput با lircd(8) تفاوت دارد؛ زیرا lircd تکرار خودکار سخت‌افزاری را در رویدادهای ارسالی به uinput پیاده‌سازی (شبیه‌سازی) می‌کند (event.value == 2). در مقابل، lircd-uinput تنها رویدادهای فشردن و رهاسازی کلید را ارسال می‌کند و به پشتیبانی هسته از تکرار خودکار اتکا دارد.

به صورت پیش‌فرض، دستگاه /dev/uinput برای کاربران عادی قابل نوشتن نیست. بنابراین lircd-uinput باید با دسترسی ریشه (root) اجرا شود مگر اینکه این مجوزها تغییر کرده باشند.

یکی از راه‌های دستیابی به این موضوع، استفاده از یک قاعده udev است. توزیع lirc حاوی یک قاعده نمونه است که دستگاه lircd-uinput را برای کاربران گروه lirc قابل نوشتن می‌کند. روش دیگر، استفاده از lircd-setup(8) جهت تغییر مجوزها است. فایل lirc_options.conf به صورتی که توزیع شده، شامل یک مثال کامنت‌شده با استفاده از setfacl(1) است.

دستور lircd-uinput تنها می‌تواند رویدادهای دکمه lircd را با نام‌هایی از فضای نام مجاز تعریف‌شده توسط هسته بازپخش کند. فهرست کاملی از نام‌های ممکن دکمه‌ها در /usr/include/linux/input-event-codes.h و همچنین با استفاده از irrecord -l در دسترس است. سایر نام‌های دکمه‌ها بدون اعلام قبلی نادیده گرفته و رها می‌شوند.

کد کلید رویداد (keycode) به نامی بستگی دارد که در فایل پیکربندی lircd به دکمه داده شده است؛ برای نمونه، اگر دکمه نام KEY_1 را داشته باشد، کد کلید 1 تولید خواهد شد.

کرنل رویدادهای تولیدشده توسط lircd-uinput را روی دستگاهی از نوع /dev/input مانند /dev/input/event12 در دسترس قرار می‌دهد. این نام دستگاه پایدار نیست و معمولاً پس از راه‌اندازی مجدد سیستم تغییر می‌کند. توزیع lirc حاوی یک قاعده udev است که در صورت نصب، یک پیوند نمادین با نام /dev/lircd-uinput می‌سازد که همواره قابل استفاده خواهد بود.

دستور lircd-uinput طراحی شده تا جایگزین گزینه منسوخ‌شده --uinput در lircd(8) شود. با این حال، lircd-uinput تمامی رویدادها را بازپخش می‌کند مگر اینکه توسط گزینه --disabled مسدود شده باشند. از سوی دیگر، گزینه --uinput در lircd همه رویدادها را ارسال نمی‌کرد و روش‌های اکتشافی (heuristics) مورد استفاده در آن در طول نسخه‌ها تغییر یافته است.

از آنجا که نام دستگاه ثابت است، تنها یک نمونه از lircd-uinput می‌تواند روی سیستم اجرا شود.

lircd(8)
irrecord(1)
http://www.kernel.org/doc/Documentation/input/event-codes.txt

Last change: Jun 2017 lircd.uinput 0.10.2