Multi Touch In DAT

پرش به ناوبری | پرش به جستجو

خلاصه (Summary)

Multi Touch In DAT برای دریافت پیام‌ها و رویدادها از API استاندارد چندلمسی (Multi-Touch) ویندوز استفاده می‌شود. این DAT تمام پیام‌ها را دریافت می‌کند و هر پیام جدید باعث تغییر جدول خروجی می‌شود.
وقتی یک پیام به DAT اضافه می‌شود، می‌توان هر اسکریپتی را که به پیام جدید اشاره می‌کند فراخوانی کرد.

Multi Touch In DAT می‌تواند به Render Pick DAT ارسال شود یا همراه با متدهای interactTouch در Panel Component و Web Render TOP استفاده گردد.
⚠️ Multi Touch DAT روی macOS پشتیبانی نمی‌شود.

این DAT می‌تواند یکی از دو فرمت جدول زیر را خروجی دهد:

  1. Raw Events به‌صورت یک لیست FIFO (اولین ورودی، اولین خروجی)

  2. ID Table که رویدادها را به شکلی کاربردی‌تر، با یک ردیف برای هر انگشت، پردازش می‌کند

فرمت Raw Events یک DAT از نوع FIFO ایجاد می‌کند (همچنین ببینید: FIFO DAT) که در آن، برای هر رویداد چندلمسی، یک ردیف به انتهای جدول اضافه شده و هم‌زمان یک ردیف از ابتدای جدول حذف می‌شود.

نکته:
برای کنترل ابزارهای پنلی (Panel Gadgets) با نمایشگرهای چندلمسی که رویدادها را از طریق سیستم رویداد ویندوز ارسال می‌کنند، معمولاً نیازی به DAT نیست.
اما زمانی که از چند انگشت روی یک پنل استفاده می‌کنید (مثلاً داخل یک Container که یک رندر سه‌بعدی نمایش می‌دهد و می‌خواهید اشیای آن را Pick کنید)، استفاده از DAT ضروری است.


فرمت ID Table شامل ستون‌های زیر است:

  • id – هر بار که یک انگشت روی صفحه قرار می‌گیرد، مقدار id یک واحد افزایش می‌یابد

  • sn – شمارنده‌ی پیوسته برای هر فشار انگشت

  • select – وقتی مقدار آن 1 است، یعنی این ردیف نشان‌دهنده‌ی یک انگشتِ در حال تماس با صفحه است

  • downf – شماره فریم مطلقی که تماس انگشت آغاز شده است

  • upf – شماره فریم مطلقی که تماس انگشت پایان یافته است

  • x, y – موقعیت افقی و عمودی بر حسب پیکسل

    توجه: مقادیر x و y بر حسب پیکسل صفحه نمایش هستند، نه پیکسل‌های عرض و ارتفاع پنل. مثلاً گوشه‌ی بالا-راست یک پنل زمانی که داخل پنل یا ویوی دیگری اسکیل شده باشد متفاوت خواهد بود. بهتر است از u و v استفاده کرده و آن‌ها را با عرض و ارتفاع پنل مقیاس کنید.

  • u, v – موقعیت نرمال‌شده از 0 تا 1 در راستای افقی و عمودی

  • downu, downv – موقعیت نرمال‌شده (0 تا 1) در لحظه‌ی اولین تماس انگشت

  • contactx, contacty – عرض ناحیه‌ی تماس

  • contactu, contactv – ارتفاع ناحیه‌ی تماس

  • monitor – شماره مانیتور (از 0 شروع می‌شود)

  • clicktime – مشابه downf اما بر حسب ثانیه

  • elapsedtime – مدت زمانی (بر حسب ثانیه) که انگشت روی صفحه قرار داشته است

  • changedtime – مدت زمان گذشته از فشار انگشت تا آخرین تغییر مقدار u یا v

  • dclick – وقوع دابل‌تپ (دو بار ضربه)

  • aux – داده‌ی اضافی که کاربر از طریق متد interactTouch() در PanelCOMP_Class ارسال می‌کند.
    اگر رویداد توسط ماوس و با گزینه Include Mouse ایجاد شده باشد، aux شامل دکمه‌های ماوس استفاده‌شده خواهد بود (1 = چپ، 2 = وسط، 4 = راست، قابل بررسی به‌صورت بیت‌وایز).

می‌توانید از Callback DAT متصل‌شده (با نام mtouchin1_callbacks) برای واکنش به رویدادهای چندلمسی استفاده کنید. این روش برای رابط‌های دوبعدی که به Render Pick DAT نیاز ندارند مناسب است.

نمونه‌ی Palette:multiTouch را در Palette و بخش Tools ببینید.
همچنین ببینید: MultiTouch page

PythonIcon.png
multitouchinDAT_Class


فهرست مطالب (Contents)

  1. Summary

  2. Parameters – Multi Touch In Page

  3. Parameters – Received Messages Page

  4. Parameters – Common Page

  5. Info CHOP Channels
      5.1 Common DAT Info Channels
      5.2 Common Operator Info Channels


پارامترها – صفحه Multi Touch In

Active (active)
وقتی فعال باشد، رویدادها ثبت می‌شوند.

Output (outputtype)
نحوه‌ی نمایش خروجی در جدول را مشخص می‌کند.

Panel (panel)
پنل کامپوننتی که رویدادهای لمس از آن دریافت می‌شود.

Relative IDs (relativeid)
شناسه‌های لمس را طوری مرتب می‌کند که فقط لمس‌های داخل پنل مشخص‌شده شمرده شوند.

Relative Position (relativepos)
موقعیت و مختصات نرمال‌شده را نسبت به گوشه‌ی پایین-چپ پنل مشخص‌شده خروجی می‌دهد.

Occlude Panels by Hierarchy (occlusion)
فقط فرزندان پنل مشخص‌شده رویدادهای چندلمسی را دریافت می‌کنند؛ لمس روی پنل والد یا هم‌سطح نادیده گرفته می‌شود.

Occlude Panels by Depth Layer (occbydepth)
فیلتر کردن رویدادهای چندلمسی بر اساس لایه عمق پنل‌ها.

Occlude Panels Above Depth (occdepthlayer)
رویدادهای پنل‌هایی با مقدار Depth Layer بیشتر از این عدد نادیده گرفته می‌شوند.

Include Mouse (mouse)
وقتی فعال باشد، کلیک ماوس یک رویداد لمس ایجاد می‌کند. این رویداد همیشه ID شماره 1 را با اولین لمس مشترک دارد. استفاده هم‌زمان از ماوس و مولتی‌تاچ ممکن است رفتارهای غیرمنتظره ایجاد کند.

Position Threshold (posthresh)
اگر انگشت کمتر از این مقدار حرکت کرده باشد، پیام جدیدی اضافه نمی‌شود. واحد این مقدار توسط دستگاه ورودی تعیین می‌شود، نه الزاماً رزولوشن صفحه.

Contact Threshold (contactthresh)
برخی دستگاه‌های لمسی عرض و ارتفاع تماس را به‌عنوان فشار ثبت می‌کنند. این مقدار حداقل آستانه‌ای است که کمتر از آن هیچ رویدادی ثبت نمی‌شود.

Min Rows Displayed (minrows)
حداقل تعداد ردیف‌هایی که همیشه در جدول نمایش داده می‌شوند.

Double Click (secs) (doubleclickthresh)
حداکثر فاصله زمانی بین دو کلیک برای شناسایی دابل‌کلیک.


پارامترها – صفحه Received Messages

Callbacks DAT (callbacks)
مسیر DAT شامل Callbackها.

Execute from (executeloc)
محل اجرای اسکریپت را مشخص می‌کند.

From Operator (fromop)
مسیر اپراتوری که در صورت تنظیم Execute From روی Specified Operator، اسکریپت از آن اجرا می‌شود.

Clamp Output (clamp)
به‌طور پیش‌فرض DAT به 100 پیام محدود است، اما با این گزینه می‌تواند نامحدود شود.

Maximum Lines (maxlines)
حداکثر تعداد پیام‌ها؛ پیام‌های قدیمی‌تر زودتر حذف می‌شوند.

Clear Output (clear)
تمام خطوط به‌جز عنوان را حذف می‌کند.
نمونه پاک‌سازی با اسکریپت:
opparm -c /serial1 clear


پارامترها – صفحه Common

Language (language)
انتخاب زبان اسکریپت DAT.

Edit/View Extension (extension)
پسوند فایلی که DAT برای ویرایشگرهای خارجی ارائه می‌دهد.

Custom Extension (customext)
تعیین پسوند سفارشی.

Word Wrap (wordwrap)
فعال‌سازی شکستن خودکار خطوط برای نمایش نود.


کانال‌های Info CHOP

اطلاعات تکمیلی Multi Touch In DAT از طریق Info CHOP در دسترس است.

کانال‌های اطلاعات عمومی DAT

  • num_rows – تعداد ردیف‌ها

  • num_cols – تعداد ستون‌ها

کانال‌های اطلاعات عمومی اپراتور

  • total_cooks – تعداد دفعات Cook شدن از شروع اجرا

  • cook_time – مدت زمان آخرین Cook (میلی‌ثانیه)

  • cook_frame – شماره فریم Cook نسبت به تایم‌لاین کامپوننت

  • cook_abs_frame – شماره فریم Cook نسبت به زمان مطلق

  • cook_start_time – زمان شروع Cook در فریم مربوطه

  • cook_end_time – زمان پایان Cook در فریم مربوطه

  • cooked_this_frame – اگر در این فریم Cook شده باشد مقدار 1 است

  • warnings – تعداد هشدارها (در صورت وجود)

  • errors – تعداد خطاها (در صورت وجود)