| 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 از پیش تعریفشده وجود دارند که در زیر فهرست شدهاند. برای نحوه نوشتن رمزگشای خود به https://lwn.net/Articles/759188 مراجعه کنید.
فیلد 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
- طول سیگنالدهی برای بیتها. برای نحوه تعریف این موارد به https://clearwater.com.au/code/rc5 مراجعه کنید.
- 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 <linux-media@vger.kernel.org>
حق نشر (COPYRIGHT)
Copyright (C) 2019 by Sean Young <sean@mess.org>
License GPLv2: GNU GPL version 2
http://gnu.org/licenses/gpl.html.
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)
| Thu Mar 7 2019 | v4l-utils 1.32.0 |