ما ده سال پیش در مطلب «برنامهای کوچک برای دردسری بزرگ! (رفع دردسر تایپ حروف انگلیسی به جای حروف فارسی)» برنامه کوچکی که با نام MagicFa ساخته بودیم را معرفی کردیم.
این برنامه، در حقیقت یک درمان برای یک معضل بزرگ بود؛ معضلی که اگر مثل من دائم در حال تایپ و کدنویسی باشید و البته سرعت تایپتان از سرعت فکر کردنتان بیشتر شده باشد، میفهمید چه اعصابی از انسان خرد میکند! تصور کنید، یک خط طولانی را تایپ میکنید و ناگهان به صفحه نمایش نگاه میکنید و میبینید که با زبان دوم کیبورد تایپ کرده بودید! مثل همین چند دقیقه پیش:
سثف لمخذشم اخف نثغ بخق حقخلقشپ هد ز٫
چقدر پاک کردن و نوشتن این متون در این مواقع سخت است!
در سالهای اخیر، دهها برنامه برای درمان این درد توسط برنامهنویسان کشورهای غیرانگلیسیزبان نوشته شده است؛ مانند Ochepyatka یا LangOver و... که میتوانید لیست کامل آنها را در آدرس زیر ببینید:
https://alternativeto.net/software/langover
من خودم بسیاری از اینها را تست کردهام، اما به دلیل اشتباهاتی که در تبدیل دارند، انسان ترجیح میدهد که برنامه نصب نباشد و عبارتی که اشتباه تایپ شده را پاک کند و دوباره تایپ کند.
در این سالها حتی گوگل هم وارد میدان شد. شما اگر به اشتباه به زبان دیگر چیزی را تایپ کنید، گوگل در اکثر مواقع این اشتباه را تشخیص میدهد و خودش عبارت درست را جستجو میکند. مثلاً به جای آفتابگردان تایپ میکنید: Htjhf'vnhk (نتیجه را ببینید)
از طرفی، در این ده سال، هر بار که من اشتباه تایپ میکردم، به این فکر فرو میرفتم که آیا میشود راهی برای «پیشگیری» از این مشکل پیدا کرد؟
به دلیل این مشکل فکر کردم: اکثر مواقع دلیل این مشکل این است که کاربر به جای نگاه به مانیتور، به کیبورد نگاه میکند (و یا در فکر است و به جای دیگری خیره شده).
بنابراین به این نتیجه رسیدم که اگر بتوانیم روی کیبورد یک نشانه قرار دهیم که کاربر با نگاه به آن بفهمد الان چه زبانی فعال است (مثلاً فارسی یا انگلیسی) به احتمال زیاد، کاربر متوجه میشود که زبان مورد انتظارش فعال نیست و باید زبان را تغییر دهد.
فکر خوبی بود اما چه نشانهای روی کیبورد؟ مثلاً به ذهنم رسید که (۱)کیبورد را موقع تایپ به زبان انگلیسی بلرزانیم! (اما این نیاز به تعریف یک استاندارد جدید برای کیبورد داشت! کیبوردهای قدیمی را چه کار کنیم!؟) به ذهنم رسید که (۲)یک لامپ LED با USB به سیستم وصل شود (کیبورد من یک خروجی USB در کنارش دارد و اتفاقاً روی کیبورد یک لامپ شبیه لامپ مطالعه هم هست که مثلاً در شب روی کیبورد بتابد) را موقعی که زبان انگلیسی است روشن کنیم. (این هم ایده خوبی نبود چون کاربر باید برای این معضل یک قطعه جدید میخرید).
از کیبورد ناامید شدم. به ذهنم رسید که (۳)صفحه نمایش هنگامی که به زبان انگلیسی شروع به تایپ میکنیم چشمک بزند. این هم ایده خوبی نبود چون کاربر را اذیت خواهد کرد. مگر اینکه تشخیص دهیم که کاربر دارد اشتباه تایپ میکند که این خودش یک کدنویسی پیچیده نیاز دارد و در بسیاری مواقع تشخیص اشتباه در کاراکترهای اول ممکن نیست.
به سراغ اطلاعرسانی از طریق صدا رفتم. تصمیم بر این شد که (۴)وقتی کاربر شروع به تایپ میکند، اگر زبان انگلیسی بود، یک صدا از اسپیکر و یا (۵)بازر (بوق مادربورد) شنیده شود. این ایده، ایده عالیای بود و هست اما بررسی صدرالدین (qwerty13) نشان داد که چالشهای زیادی در این زمینه داریم؛ ایمیل او:
از ماه قبل که در مورد مجیکفای جدید گفتید در مورد بخشای مختلفش گشتم. یک کد کاربردی برای پخش بیپ با بازر مادربرد پیدا کردم و مقداری کد برای فهمیدن اسم برنامه ای که الان کاربر روشه دیدم؛ اما کلی چالش در طراحی این نرم افزار هم به ذهنم رسید. مثلا اینکه چطور تشخیص بدیم کاربر در حال تایپ هست که بهترین روش همونی هست که شما گفتید یعنی اولین باری که در یک پنجره کلیدی زده میشه اما چالش اینجا این هست که چطور به سبکترین حالت ممکن تغییر پنجره رو تشخیص بدیم چون کد هایی که دیدم با تغییر focus کار نمیکنن بلکه با هربار درخواست اسم برنامه رو برمیگردونن که یعنی باید تایمر تنظیم بشه و این رم میبره... (یک چیزی هم الان به ذهنم اومد. داخل نرم افزار هایی مثل ورد اگر بین پنجره هاش جابجا بشیم خودش خودکار زبان عوض میکنه و اگر با این روش مجیکفا ساخته بشه روی ورد تشخیص نمیتونه بده)
چالش دوم نحوه ی اطلاع رسانی هستش. اگر مانیتور چشمک بزنه (یک کدی هم پیدا کردم که باهاش میشه نور صفحه رو بالا برد تا بیشتر جلب توجه کنه) خوبه ولی همه جا جوابگو نیست. اگر صدا از بلندگو پخش بشه ممکنه کاربر ها مثل شما و من صدا رو خیلی کم یا بسته باشن و اگر با کد صدا رو زیاد کنیم ممکنه اتفاقات بدی بیفته.
در نهایت رفتم سراغ اینکه بازر مادربرد رو به صدا در بیارم. یک کتابخانه ای به نام InpOut32 هست که باهاش میشه پایه های IO کامپیوتر رو دستکاری کرد و پایه های بازر هم جزو همین دسته هست؛ کتابخونه رو نصب کردم و کد های آماده ش رو امتحان کردم اما کار نکرد. بین نسخه ۳۲ و ۶۴ بیتی هم جابجا شدم باز کار نکرد بعد دیدم ای دل غافل این لپ تاپ ها که اصلا بازر ندارن همه اعلان هاشون هم شبیه بازره فقط (حتی وقتی دکمه شیفت چپ رو چندبار پشت هم فشار میدید صدا از بلندگو پخش میشه و با بستن صدا اون هم بسته میشه)...
هیچی دیگه خلاصه الان با این شرایط درمان بهتر از پیشگیری هست و حتی خیلی سریع تر...
به این هم فکر کردم که میتواند در نسخههای بعدی در نظر گرفته شود: نمایش آیکون زبان به صورت بزرگتر یا نمایش بزرگ در لحظه شروع به تایپ.
به هر حال، در حالی که یک روز به کیبورد خیره شده بودم تا ببینم چطور میتوان این معضل را رفع کرد، نگاهم به یک چراغ روی کیبورد افتاد که ما بعد از DOS، هیچ وقت از آن استفاده نکردهایم! چراغ Scroll Lock !
ناگهان چشمانم گرد شد! چرا از این چراغ برای هشدار استفاده نکنیم!؟ آن هم وقتی که در کیبوردهای حرفهای، این LED دقیقاً زیر Space و مقابل چشم کاربر است:
به هر حال، تصمیم بر همین شد و اینکه مجیکفا نیز با این ایده ادغام شود.
با محصول جدید ما آشنا شوید:
لینگا (Linga)
لینگا در مورد معضل تایپ اشتباه به زبان دیگرِ کیبورد، دو کار انجام میدهد:
۱- پیشگیری:
لینگا، هنگامی که زبان فعال شما انگلیسی است، چراغ Scroll Lock را برای شما روشن میکند (و البته میتوانید در کیبوردهایی مثل کیبورد لپتاپها که Scroll Lock ندارد، تنظیم کنید که مثلاً اگر زبان فارسی شد، چراغ CAPS Lock روشن شود. با توجه به اینکه در حالت فارسی، CAPS Lock هیچ کاربردی نخواهد داشت، این کاربرد میتواند برای این چراغ در نظر گرفته شود)
۲- درمان:
اگر باز هم با وجود روشن بودن چراغ، متنی را اشتباه تایپ کردید، کافیست آن را انتخاب کنید و کلیدهای Ctrl+Alt+X را بزنید تا آن متن به زبان دیگر تبدیل شود! (همانطور که در تصویر این برنامه مشخص است، میتوانید این کلیدها را نیز به دلخواه تغییر دهید) (فراموش نکنید که اگر یک خط متن را تایپ کردید، با فشردن کلیدهای Shift+Home در ویندوز میتوانید به سرعت آن خط را انتخاب کنید)
لینگا برای همه زبانها و همه کیبوردها با چینش حروف مختلف
ابتکار مهمی که در لینگا به کار برده شده این است که میتوانید چینش حروف را مطابق میل خود تغییر دهید. فقط کافیست از منوی Tools گزینه Change Dictionary را بزنید و در ستون سمت چپ تمام حروف کیبورد به زبان اول (ابتدا بدون Shift و سپس با Shift) را زیر هم تایپ کنید و در ستون سمت راست، تمام حروف به زبان دوم. همین! لینگا دیگر مطابق میل شما عمل خواهد کرد. (به طور پیشفرض لینگا بر اساس کیبورد Persian (Standard) در ویندوز ۸ به بعد کار میکند. (راهنمای تغییر کیبورد به حالت استاندارد در ویندوز ۸ و ۱۰)
با توجه به این امکان و با توجه به اینکه آن را به زبان انگلیسی طراحی کردیم، لینگا را یک نرمافزار بینالمللی میدانیم.
دانلود لینگا
برای دانلود این برنامه کمحجم که نیازی هم به نصب ندارد، روی لینک زیر کلیک راست کنید و گزینه Save link as را انتخاب کنید:
Download Linga
چالشهای طراحی (برای برنامهنویسها)
در طراحی این برنامه ساده، چالشهای زیر که برخی ساعتها نیاز به جستجو و آزمون و خطا داشت باید حل میشد:
۱- مقیم کردن برنامه در حافظه
۲- شنود دائم کیبورد فعال
۳- روشن کردن LEDها
۴- شناسایی کیبورد فعال ویندوز
۵- نوشتن در ریجستری و خواندن آن برای ثبت تغییرات کاربر
۶- تعریف کلیدهای میانبر برای برنامه در سراسر ویندوز (Global HotKey)
۷- امکان تغییر کلیدهای میانبر توسط کاربر
۸- اجرای برنامه در شروع ویندوز
۹- دسترسی برنامه به متن انتخاب شده در همه برنامهها
۱۰- اصلاح متن اشتباه
۱۱- شنود کلیدهای میانبر و Paste کردن در برنامه مورد نظر
۱۲- تعریف دیکشنری در برنامهنویسی و یافتن حروف جایگزین به صورت دو-طرفه
و...
اگر پیشنهادی در مورد رفع این چالش به ذهن شما رسید بیان کنید تا اگر جالب بود، در نسخههای بعد در نظر بگیریم.
موفق باشید؛
حمید رضا نیرومند