RC_KEYMAP(5) File Formats RC_KEYMAP(5) نام (NAME) rc_keymap - پرونده toml توصیف‌کننده نگاشت کلیدهای کنترل از راه دور توضیحات (DESCRIPTION) یک پرونده rc_keymap یک کنترل از راه دور را توصیف می‌کند. این پرونده پروتکل‌های مورد استفاده و نگاشت از مادون قرمز (IR) رمزگشایی‌شده به کدهای کلید ورودی لینوکس را فهرست می‌کند. این پرونده توسط ir-keytable(1) برای رمزگشایی IR، و توسط ir-ctl(1) برای ارسال IR استفاده می‌شود. قالب پرونده toml است. از آنجا که یک کنترل از راه دور می‌تواند از چندین پروتکل استفاده کند، سطح بالا آرایه‌ای از پروتکل‌ها است. اکثریت قریب به اتفاق کنترل‌ها تنها از یک پروتکل استفاده می‌کنند. ورودی پروتکل نگاشت کلید (KEYMAP PROTOCOL ENTRY) برای هر پروتکلی که کنترل از راه دور استفاده می‌کند، باید یک ورودی در آرایه سطح بالای protocols وجود داشته باشد. فیلد Name (Name Field) هر ورودی protocols دارای یک فیلد name است. نام توسط ir-keytable یا ir-ctl استفاده نمی‌شود، اما می‌توان از آن برای دادن نامی توصیفی‌تر از نام پرونده (مانند شماره مدل) به کنترل از راه دور استفاده کرد. فیلد Protocol (Protocol Field) فیلد protocol پروتکل را مشخص می‌کند. این می‌تواند یکی از رمزگشاهای هسته لینوکس باشد، که در این صورت شامل nec، rc-5، rc-6، jvc، sony، sanyo، rc-5-sz، sharp، mce-kbd، xmp، imon، rc-mm، other یا unknown است. اگر با هیچ‌یک از این ورودی‌ها مطابقت نداشته باشد، فرض می‌شود که یک رمزگشای مبتنی بر BPF است. مقادیر unknown و other پروتکل‌هایی هستند که توسط دستگاه‌های خاص RC رمزگشایی می‌شوند که در آن‌ها پروتکل به ترتیب ناشناخته یا اختصاصی است. برخی رمزگشاهای پروتکل BPF از پیش تعریف‌شده وجود دارند که در زیر فهرست شده‌اند. برای نحوه نوشتن رمزگشای خود به مراجعه کنید. فیلد Variant (Variant Field) فیلد variant مشخص می‌کند که یک پروتکل خاص از کدام گونه استفاده می‌کند. برای مثال پروتکل‌های sony، rc-5 و rc-6 گونه‌هایی با طول بیت متفاوت دارند. این فیلد توسط ir-ctl هنگام ارسال IR استفاده می‌شود. گونه‌های زیر در حال حاضر تعریف شده‌اند: پروتکل rc-5 دارای گونه‌های rc-5، rc-5x-20 و rc-5-sz است. پروتکل nec دارای گونه‌های nec، nec-x و nec-32 است. پروتکل sony دارای گونه‌های sony-12، sony-15 و sony-20 است. پروتکل rc-6 دارای گونه‌های rc-6-0، rc-6-6a-20، rc-6-6a-24، rc-6-6a-32 و rc-6-mce است. پروتکل rc-mm دارای گونه‌های rc-mm-12، rc-mm-24 و rc-mm-32 است. فیلد Scancodes (Scancodes field) جدول scancodes کدهای اسکن و نگاشت آن‌ها به کد کلید ورودی لینوکس را فهرست می‌کند. چندین کد اسکن می‌توانند به یک کد کلید نگاشت شوند. فیلد scancodes برای پروتکل‌های raw وجود ندارد. اگر کد اسکن با 0x شروع شود، به عنوان یک عدد هگزادسیمال تفسیر می‌شود. اگر با 0 شروع شود، به عنوان یک عدد هشت‌هشتی تفسیر می‌شود. کدهای کلید معتبر در پرونده هدر input-event-codes.h فهرست شده‌اند. به عنوان مثال می‌توان به KEY_ENTER، KEY_ESC یا BTN_LEFT برای دکمه چپ ماوس اشاره کرد. توجه داشته باشید که اگر نگاشت کلید تنها برای ارسال IR استفاده شود، کلید نیازی به یک کد کلید معتبر لینوکس ندارد؛ می‌تواند هر رشته‌ای بدون فاصله باشد. فیلد Raw (Raw field) اگر پروتکل raw باشد، فیلد raw آرایه‌ای از نگاشت کد کلید به داده‌های خام است. برای هر ورودی، یک فیلد keycode و یک فیلد raw وجود دارد. فیلد keycode یک کد کلید ورودی لینوکس است، همان‌طور که در فیلد scancodes در بالا توضیح داده شد. فیلد raw یک رشته است که مقادیر پالس و فاصله را که با فاصله از هم جدا شده‌اند فهرست می‌کند. مقدار اول پالس برحسب میکروثانیه است، دومی فاصله، سومی پالس و غیره. مقادیر فاصله می‌توانند با علامت - و مقادیر پالس با علامت + همراه باشند. باید تعداد فردی از مقادیر وجود داشته باشد تا آخرین ورودی یک پالس باشد. فیلدهای باقی‌مانده (پارامترهای BPF) اگر پروتکل یک رمزگشای مبتنی بر BPF باشد، ممکن است هر تعداد پارامتر عددی داشته باشد. این پارامترها برای پشتیبانی از پروتکل‌هایی با طول سیگنال غیر استاندارد برای پروتکل‌های استاندارد IR استفاده می‌شوند. هر فیلد دیگری که در اینجا مشخص شده و توسط رمزگشای BPF انتخاب‌شده مورد نیاز باشد استفاده خواهد شد. تمام فیلدهای دیگر نادیده گرفته می‌شوند. رمزگشاهای پروتکل غیر BPF مبتنی بر هسته هیچ پارامتری ندارند. پروتکل‌های BPF (BPF PROTOCOLS) برخی از رمزگشاهای پروتکل BPF عمومی هستند و برای کار کردن به پارامتر نیاز دارند. سایر موارد برای کنترل‌های خاص هستند و باید بدون هیچ پارامتری کار کنند. پارامترهای زمان‌بندی همگی برحسب میکروثانیه (µs) هستند. raw این رمزگشا باید زمانی استفاده شود که نگاشت کلید خام است؛ برای هر کلید، یک ورودی در آرایه raw با مقادیر پالس و فاصله برای آن کلید وجود دارد. هیچ رمزگشایی انجام نمی‌شود، IR ورودی صرفاً با مقادیر مختلف پالس و فاصله مطابقت داده می‌شود. imon_rsc این رمزگشا به‌طور خاص برای کنترل iMON RSC است که همراه با iMON Station (از جمله دیگر موارد) بسته‌بندی شده بود. این رمزگشا برای اهرم جهت‌دار در وسط است؛ آن‌ها را به حرکات ماوس رمزگشایی می‌کند. دکمه‌ها همگی با استفاده از nec-x کدگذاری شده‌اند، بنابراین نگاشت کلید برای عملکرد صحیح به دو پروتکل نیاز دارد. این به پروتکل imon ارتباطی ندارد. margin تعیین میزان رواداری برای طول پیام. پیش‌فرض 200. grundig این رمزگشا به‌طور خاص برای کنترل‌های قدیمی grundig است. header_pulse طول پالس اول، پیش‌فرض 900. header_space طول فاصله پس از آن، پیش‌فرض 2900. leader_pulse طول پالس دوم، پیش‌فرض 1300. xbox این رمزگشا به‌طور خاص برای XBox Remote DVD است که برای نسل اول XBox است. margin تعیین میزان رواداری برای طول پیام. پیش‌فرض 200. manchester بیشتر کنترل‌های از راه دور کدگذاری‌شده با منچستر یا rc-5، rc-6، یا rc-mm هستند. برخی کنترل‌ها از گونه متفاوتی استفاده می‌کنند (مثلاً ممکن است پالس هدر داشته باشند) و این رمزگشا برای همین است. برخی پارامترها باید مشخص شوند، به‌طور پیش‌فرض برای rc-5 تنظیم شده است. margin تعیین میزان رواداری برای طول پیام. پیش‌فرض 200. header_pulse تعیین طول پالس آغازین. همیشه وجود ندارد. پیش‌فرض 0. header_space تعیین طول فاصله پس از پالس آغازین. در صورت تنظیم header_pulse باید تنظیم شود. zero_pulse, zero_space, one_pulse, one_space طول سیگنال‌دهی برای بیت‌ها. برای نحوه تعریف این موارد به مراجعه کنید. bits تعداد بیت‌ها. پیش‌فرض 14. scancode_mask بیت‌هایی که باید از کد اسکن حاصل ماسک شوند. toggle_bit بیتی که ضامن (toggle) را مشخص می‌کند. اگر این مقدار بیشتر از تعداد بیت‌ها باشد، هیچ ضامنی تعریف نشده است. pulse_distance این یک رمزگشای عمومی برای پروتکل‌هایی است که بیت‌ها را بر اساس فاصله بین پالس‌ها تعریف می‌کنند و پالس‌ها همیشه دارای طول یکسان هستند. شناخته‌شده‌ترین پروتکل از این نوع nec است. این رمزگشا برای مواردی است که از nec استفاده نمی‌شود. پارامترها باید تنظیم شوند. margin تعیین میزان رواداری برای طول پیام. پیش‌فرض 200. header_pulse طول نخستین پالس آغازین. پیش‌فرض 2125. header_space طول فاصله پس از پالس آغازین. پیش‌فرض 1875. repeat_pulse طول پالس آغازین برای تکرار کلید. پیش‌فرض 0. repeat_space طول فاصله پس از پالس آغازین برای تکرار کلید. پیش‌فرض 0. bit_pulse طول پالس برای هر بیت. پیش‌فرض 625. bit_0_space طول فاصله برای بیت صفر. پیش‌فرض 375. bit_1_space طول فاصله برای بیت یک. پیش‌فرض 1625. trailer_pulse طول پالس پس از آخرین بیت. برای تکمیل آخرین بیت لازم است. پیش‌فرض 625. bits تعداد بیت‌ها. پیش‌فرض 4. reverse آیا بیت‌ها باید با کم‌ارزش‌ترین بیت در ابتدا خوانده شوند. برای فعال‌سازی روی غیر صفر تنظیم کنید. پیش‌فرض 0. header_optional برخی کنترل‌ها پالس و فاصله هدر را برای تکرار کلید ارسال نمی‌کنند، بنابراین برای اختیاری کردن هدر این گزینه را روی غیر صفر قرار دهید. پیش‌فرض 0. یک پیاده‌سازی جایگزین ممکن است فقط به پیام‌های تکراری اجازه حذف هدر را بدهد، اما در صورتی که نخستین پیام حاوی هدر به دلیل تداخل به درستی رمزگشایی نشود، رمزگشایی فشردن کلیدها با شکست مواجه خواهد شد. pulse_length این یک رمزگشای عمومی برای پروتکل‌هایی است که بیت‌ها را بر اساس طول پالس‌ها تعریف می‌کنند و فاصله‌ها همیشه یکسان هستند. پروتکل sony شناخته‌شده‌ترین پروتکل است، اما این رمزگشا برای پروتکل‌هایی است که sony نیستند. margin تعیین میزان رواداری برای طول پیام. پیش‌فرض 200. header_pulse طول نخستین پالس آغازین. پیش‌فرض 2125. header_space طول فاصله پس از پالس آغازین. پیش‌فرض 1875. repeat_pulse طول پالس آغازین برای تکرار کلید. پیش‌فرض 0. repeat_space طول فاصله پس از پالس آغازین برای تکرار کلید. پیش‌فرض 0. bit_space طول فاصله برای هر بیت. پیش‌فرض 625. bit_0_pulse طول پالس برای بیت صفر. پیش‌فرض 375. bit_1_pulse طول پالس برای بیت یک. پیش‌فرض 1625. trailer_pulse طول پالس پس از آخرین بیت. اختیاری. پیش‌فرض 0. bits تعداد بیت‌ها. پیش‌فرض 4. reverse آیا بیت‌ها باید با کم‌ارزش‌ترین بیت در ابتدا خوانده شوند. برای فعال‌سازی روی غیر صفر تنظیم کنید. پیش‌فرض 0. header_optional برخی کنترل‌ها پالس و فاصله هدر را برای تکرار کلید ارسال نمی‌کنند، بنابراین برای اختیاری کردن هدر این گزینه را روی غیر صفر قرار دهید. پیش‌فرض 0. یک پیاده‌سازی جایگزین ممکن است فقط به پیام‌های تکراری اجازه حذف هدر را بدهد، اما در صورتی که تنها اولین پیام به دلیل تداخل به درستی رمزگشایی نشود، رمزگشایی فشردن کلیدها با شکست مواجه خواهد شد. مثال (EXAMPLE) [[protocols]] name = "iMON Station RSC" protocol = "nec" variant = "necx" [protocols.scancodes] 0x801010 = "KEY_EXIT" 0x80102f = "KEY_POWER" 0x80104a = "KEY_SCREENSAVER" 0x801049 = "KEY_TIME" 0x801054 = "KEY_NUMERIC_1" 0x801055 = "KEY_NUMERIC_2" 0x801056 = "KEY_NUMERIC_3" 0x801057 = "KEY_NUMERIC_4" 0x801058 = "KEY_NUMERIC_5" 0x801059 = "KEY_NUMERIC_6" 0x80105a = "KEY_NUMERIC_7" 0x80105b = "KEY_NUMERIC_8" 0x80105c = "KEY_NUMERIC_9" 0x801081 = "KEY_SCREEN" 0x80105d = "KEY_NUMERIC_0" 0x801082 = "KEY_MAX" 0x801048 = "KEY_ESC" 0x80104b = "KEY_MEDIA" 0x801083 = "KEY_MENU" 0x801045 = "KEY_APPSELECT" 0x801084 = "KEY_STOP" 0x801046 = "KEY_CYCLEWINDOWS" 0x801085 = "KEY_BACKSPACE" 0x801086 = "KEY_KEYBOARD" 0x801087 = "KEY_SPACE" 0x80101e = "KEY_RESERVED" 0x801098 = "BTN_0" 0x80101f = "KEY_TAB" 0x80101b = "BTN_LEFT" 0x80101d = "BTN_RIGHT" 0x801016 = "BTN_MIDDLE" 0x801088 = "KEY_MUTE" 0x80105e = "KEY_VOLUMEDOWN" 0x80105f = "KEY_VOLUMEUP" 0x80104c = "KEY_PLAY" 0x80104d = "KEY_PAUSE" 0x80104f = "KEY_EJECTCD" 0x801050 = "KEY_PREVIOUS" 0x801051 = "KEY_NEXT" 0x80104e = "KEY_STOP" 0x801052 = "KEY_REWIND" 0x801053 = "KEY_FASTFORWARD" 0x801089 = "KEY_ZOOM" [[protocols]] protocol = "imon_rsc" اشکالات (BUGS) گزارش باگ‌ها به Linux Media Mailing List حق نشر (COPYRIGHT) Copyright (C) 2019 by Sean Young License GPLv2: GNU GPL version 2 . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. همچنین ببینید (SEE ALSO) ir-keytable(1) and ir-ctl(1) v4l-utils 1.32.0 Thu Mar 7 2019 RC_KEYMAP(5)