SHOWKEY(1) General Commands Manual SHOWKEY(1)

showkey - بررسی کدهای فشرده شدن کلیدهای ارسالی از صفحه کلید

showkey [-h|--help] [-a|--ascii] [-s|--scancodes] [-k|--keycodes] [-V|--version]

دستور showkey یا اسکن‌کدها (scan codes)، یا کد کلید (keycode)، یا کد «ascii» هر کلید فشرده‌شده را در خروجی استاندارد چاپ می‌کند. در دو حالت نخست، برنامه تا زمانی اجرا می‌شود که ۱۰ ثانیه از آخرین رویداد فشرده شدن یا رها شدن کلید سپری شود، یا این‌که یک سیگنال مناسب، مانند SIGTERM، از فرآیند دیگری دریافت کند. در حالت «ascii»، برنامه زمانی به پایان می‌رسد که کاربر ^D را وارد کند.

هنگامی که در حالت تخلیه اسکن‌کد (scancode dump mode) باشد، showkey هر بایت دریافتی از صفحه‌کلید را با قالب هگزادسیمال در خروجی استاندارد چاپ می‌کند. هرگاه فاصله‌ای در حدود ۰.۱ ثانیه میان بایت‌های دریافتی رخ دهد، یا بافر دریافت داخلی پر شود، یک سطر جدید چاپ می‌شود. از این قابلیت می‌توان برای تشخیص تقریبی این‌که صفحه‌کلید در هنگام فشردن یک کلید خاص چه توالی بایت‌هایی را یکجا ارسال می‌کند، استفاده کرد. حالت تخلیه اسکن‌کد در اصل برای اشکال‌زدایی درایور صفحه‌کلید یا سایر رابط‌های سطح پایین در نظر گرفته شده است؛ بنابراین نباید برای کاربر معمولی چندان جالب توجه باشد. با این حال، برخی صفحه‌کلیدهای مدرن کلیدها یا دکمه‌هایی دارند که اسکن‌کدهایی تولید می‌کنند که هسته هیچ کد کلیدی به آن‌ها اختصاص نداده است و کاربر پس از فهمیدن این موارد می‌تواند با استفاده از setkeycodes(8) کدهای کلید را به آن‌ها اختصاص دهد.

هنگامی که در حالت پیش‌فرض تخلیه کد کلید (keycode dump mode) باشد، showkey شماره کد کلید هر کلید فشرده‌شده یا رهاشده را در خروجی استاندارد چاپ می‌کند. نوع رویداد (فشردن یا رها کردن) نیز گزارش می‌شود. کدهای کلید شماره‌هایی هستند که توسط هسته به هر کلید فیزیکی مجزا اختصاص داده می‌شوند. هر کلید، صرف‌نظر از این‌که صفحه‌کلید هنگام فشردن آن یک یا چند اسکن‌کد ارسال کند، همواره تنها یک شماره کد کلید مرتبط دارد. با استفاده از showkey در این حالت، می‌توانید بفهمید چه شماره‌هایی را باید در فایل‌های نگاشت کلید (keymap) شخصی‌سازی‌شده خود به کار ببرید.

هنگامی که در حالت تخلیه «ascii» باشد، showkey مقدار یا مقادیر ده‌دهی (decimal)، هشت‌هشتی (octal) و شانزده‌شانزدهی (hexadecimal) کلید فشرده‌شده را بر اساس جدول نگاشت کلید کنونی در خروجی استاندارد چاپ می‌کند.

دستور showkey شماره نسخه خود، یک گزینه کامپایل و یک پیام کوتاه نحوه استفاده را در خروجی خطای استاندارد چاپ کرده و سپس خارج می‌شود.
دستور showkey را در حالت تخلیه اسکن‌کد آغاز می‌کند.
دستور showkey را در حالت تخلیه کد کلید آغاز می‌کند. این حالت پیش‌فرض در صورت عدم ارائه گزینه‌های خط فرمان است.
دستور showkey را در حالت تخلیه «ascii» آغاز می‌کند.
دستور showkey شماره نسخه را چاپ کرده و خارج می‌شود.

در هسته‌های ۲.۶ کدهای کلید به جای محدوده ۱-۱۲۷ در محدوده ۱-۲۵۵ قرار دارند. کدهای کلید بزرگ‌تر از ۱۲۷ به صورت سه بایت بازگردانده می‌شوند که ۷ بیت مرتبه پایین آن‌ها عبارتند از: صفر، بیت‌های ۱۳-۷، و بیت‌های ۶-۰ از کد کلید. بیت‌های مرتبه بالا عبارتند از: 0/1 برای فشردن/رها کردن (make/break)، ۱، ۱.

در هسته‌های ۲.۶ حالت خام (raw mode) یا همان حالت اسکن‌کد، اصلاً چندان خام نیست. اسکن‌کدها ابتدا به کدهای کلید ترجمه می‌شوند، و هنگامی که اسکن‌کدها مورد نیاز باشند، کدهای کلید دوباره به اسکن‌کد تبدیل می‌شوند. تبدیلات گوناگونی در این فرآیند دخیل هستند و هیچ تضمینی وجود ندارد که نتیجه نهایی با آن‌چه سخت‌افزار صفحه‌کلید فرستاده مطابقت داشته باشد. بنابراین اگر می‌خواهید اسکن‌کدهای ارسال‌شده توسط کلیدهای مختلف را بدانید، بهتر است با یک هسته ۲.۴ راه‌اندازی (boot) کنید. از نسخه ۲.۶.۹ به بعد، گزینه راه‌اندازی atkbd.softraw=0 نیز وجود دارد که به هسته ۲.۶ اعلام می‌کند اسکن‌کدهای واقعی را بازگرداند.

Andries Brouwer <aeb@cwi.nl>

loadkeys(1), dumpkeys(1), keymaps(5), setkeycodes(8)

1 Feb 1998 kbd