Barcode Scanner Emulator
گوهکلید HID توضیح دادهشده
گوهکلید حالت پیشفرض کار اکثر قریببهاتفاق اسکنرهای بارکد است. این راهنما توضیح میدهد چیست، در سطح USB چگونه کار میکند و برای آزمون برنامه شما چه معنایی دارد.
گوهکلید چیست؟
این اصطلاح از اسکنرهای قدیمی درگاه سریال میآید که بهمعنای واقعی میان صفحهکلید و درگاه رایانه «گوه» میشدند، سیگنال صفحهکلید را میگرفتند و نویسههای خواندهشده را در آن تزریق میکردند. اسکنرهای امروزی دیگر به گوه فیزیکی نیاز ندارند — این عبارت اکنون هر اسکنری را میگوید که داده خواندهشده را طوری نشان دهد که گویی از صفحهکلید آمده، صرفنظر از نوع اتصال.
USB HID و شبیهسازی صفحهکلید
USB یک کلاس Human Interface Device (HID) مخصوص صفحهکلید، ماوس و دستگاههای ورودی مشابه تعریف میکند. وقتی اسکنر روی USB بهصورت صفحهکلید HID شمارش میشود، سیستمعامل راهانداز عمومی و داخلی صفحهکلید خود را بار میکند — راهانداز مخصوص اسکنر لازم نیست. سفتافزار اسکنر هر نویسه رمزگشاییشده را به کدکلید HID تبدیل میکند که صفحهکلید فیزیکی میفرستاد، و گزارشها با همان سازوکار انتقال وقفهای هر صفحهکلید USB تحویل میشوند.
برنامه شما ورودی اسکنر را چگونه میبیند
فوران سریع ضربهکلید در برابر تایپ انسان: اسکنر تمام محموله را بهصورت دنباله سریع جفتهای keydown/keyup میفرستد و معمولاً صرفنظر از طول بارکد، در کمتر از یک ثانیه تمام میکند.
رویداد ماوس نیست: اسکنرها در حالت صفحهکلید HID هرگز رویداد اشارهگر، کلیک یا فوکوس نمیسازند. اگر هنگام اسکن فیلد شما فوکوس نداشته باشد، ورودی از دست میرود یا به عنصری میرود که فوکوس دارد.
رویداد چسباندن نیست: چون داده بهصورت ضربهکلیدهای جدا میآید نه عملیات کلیپبورد، گردانندههای رویداد paste ورودی اسکنر را نمیبینند و ماسکهای ورودی که فقط به paste گوش میدهند آن را بیصدا از دست میدهند.
مشکلات چیدمان صفحهکلید
چرا نویسههای نادرست ظاهر میشوند: اسکنر نویسههای رمزگشاییشده را با چیدمان صفحهکلید تنظیمشده خودش به کدکلید HID نگاشت میکند. اگر آن چیدمان با چیدمان صفحهکلید سیستمعامل یکی نباشد، نویسهها جابهجا میشوند — نشانه کلاسیک این است که رقمها یا نشانهگذاری روی سامانههای QWERTY در برابر AZERTY بهصورت نویسه نادرست خوانده میشوند.
ناهماهنگی محلی: این مشکل پیکربندی سمت اسکنر است، نه اشکال نرمافزار. بیشتر اسکنرها تعویض محلی را با بارکدهای پیکربندی چاپشده در دفترچه پشتیبانی میکنند و رفع آن یعنی برنامهریزی دوباره اسکنر تا با محلی سیستمعامل جور شود، نه تغییر کد برنامه.
پیشوندها و پسوندها
اسکنرها معمولاً دنبالههای قابلتنظیم پیشوند و پسوند را دور محموله پشتیبانی میکنند. رایجترین مقدارهای پسوند ENTER (CR، 0x0D)، TAB (0x09) و گاهی یک جفت کامل CR+LF هستند. پیشوندها کمتر رایجاند، اما گاهی برای هدایت اسکن به فیلدهای مشخص در برنامههای پایانه قدیمی به کار میروند.
محدودیتهای آزمون در مرورگر
مرورگر بستههای خام USB HID را نمیبیند، نمیتواند دستگاههای HID متصل را بهطور خاص بهعنوان اسکنر بشمارَد (جز API وبHID که بیشتر اسکنرها داده را از آن بیرون نمیدهند) و نمیتواند اسکنر حالت صفحهکلید HID را از صفحهکلید واقعی جدا کند. فقط رویدادهای صفحهکلید دیدهشدنی در مرورگر (keydown، keyup، keypress) برای جاوااسکریپت در دسترساند و ابزارهای این سایت دقیقاً همانها را بررسی میکنند.
مرتبط
برای بررسی رویدادهای خام صفحهکلید از آزمایشگر رویداد صفحهکلید استفاده کنید، یا برای جزئیات پیکربندی پسوند راهنمای پسوندهای ENTER در برابر TAB را بخوانید.