মাউস সুইচের মেকানিক্স এবং ডাবল-ফায়ার বা চ্যাটারিং সমস্যা
মেকানিক্যাল মাউস সুইচের ভেতরে একটি ধাতব লিফ স্প্রিং থাকে, যা বাটন প্রেস করার সময় সার্কিট সম্পূর্ণ করে সংকেত পাঠায়। মাউস পুরোনো হয়ে গেলে বা সুইচের ভেতরে ক্ষয় দেখা দিলে, একবার প্রেস করার সময় ধাতব অংশটি স্থিতিস্থাপকতার কারণে স্থির হওয়ার আগে দ্রুত একাধিকবার স্পর্শ করে এবং ছেড়ে দেয়। এই ঘটনাকে কন্টাক্ট বাউন্সিং বা চ্যাটারিং বলা হয়। এর ফলে মাউসটি একবার প্রেস করা সত্ত্বেও নিজে থেকেই অত্যন্ত দ্রুত একাধিকবার ক্লিক বা ডাবল-ফায়ার করে।
এই ধরনের হার্ডওয়্যার ত্রুটি শনাক্ত করার জন্য সফটওয়্যার স্তরে ডিবান্সিং অ্যালগরিদম ব্যবহার করা হয়, যা একটি নির্দিষ্ট সময়ের মধ্যে আসা অতিরিক্ত সংকেতগুলোকে ফিল্টার করে। এই টুলের মাধ্যমে ব্যবহারকারীরা তাদের মাউসের সুইচের অবস্থা পরীক্ষা করতে পারেন। এখানে একটি কাস্টমাইজযোগ্য ডাবল-ফায়ার থ্রেশহোল্ড রয়েছে, যা ডিফল্টভাবে 40 ms সেট করা থাকে। যদি একই বাটনের দুটি পরপর প্রেসের মধ্যকার ব্যবধান এই থ্রেশহোল্ডের চেয়ে কম হয়, তবে টুলটি সেটিকে ডাবল-ফায়ার হিসেবে চিহ্নিত করে। একটি সুস্থ মাউস বাটন হাত দিয়ে ক্লিক করার সময় সাধারণত এত দ্রুত দুইবার ফায়ার করে না।
ব্রাউজার ইভেন্ট হ্যান্ডলিং এবং ইনপুট ইন্টারসেপশন
ওয়েব ব্রাউজারগুলো মাউসের বিভিন্ন বাটন প্রেস এবং স্ক্রোল অ্যাকশনকে নির্দিষ্ট পয়েন্টার ইভেন্ট হিসেবে গ্রহণ করে। তবে সব ব্রাউজার বা অপারেটিং সিস্টেম মাউসের সব বাটনকে একইভাবে পেজে পৌঁছাতে দেয় না। উদাহরণস্বরূপ, ব্রাউজারের নিজস্ব নেভিগেশন শর্টকাট যেমন Back এবং Forward বাটন প্রেস করার সময় ব্রাউজার নিজেই সেই ইভেন্টটি আগে গ্রহণ করে। এই টুলটি টেস্ট এরিয়ার ভেতরে এই ধরনের ডিফল্ট ব্রাউজার নেভিগেশন শর্টকাটগুলো নিষ্ক্রিয় করার চেষ্টা করে, যাতে প্রতিটি প্রেস সঠিকভাবে গণনা করা যায়।
কিছু ক্ষেত্রে অপারেটিং সিস্টেমের নিজস্ব নিয়ম ব্রাউজারের ইভেন্টকে প্রভাবিত করে। যেমন macOS-এ Ctrl + ক্লিক করলে সেটি সিস্টেম ডিজাইনের কারণেই রাইট-ক্লিক হিসেবে রেজিস্টার হয়। আবার Firefox ব্রাউজারে Shift + রাইট-ক্লিক করলে ব্রাউজারের নিজস্ব কনটেক্সট মেনু খোলে, যা পেজ দ্বারা প্রতিরোধ করা সম্ভব হয় না। এছাড়া Linux-এ Firefox ব্যবহারের সময় সাইড বাটনগুলোর প্রেস ব্রাউজার সম্পূর্ণ আটকে দিতে পারে, যার ফলে পেজে কোনো ইভেন্ট রেজিস্টার হয় না।
পয়েন্টার ইভেন্ট API এবং ইনপুট ডিভাইসের পার্থক্য
আধুনিক ওয়েব স্ট্যান্ডার্ডে মাউস, পেন এবং টাচ স্ক্রিনের ইনপুটগুলোকে পয়েন্টার ইভেন্ট API-এর মাধ্যমে পরিচালনা করা হয়। এই টুলটি ইনপুট ডিভাইসের ধরন সনাক্ত করে এবং লগে mouse, pen, অথবা touch হিসেবে প্রদর্শন করে।
টাচস্ক্রিন ডিভাইসে ট্যাপ করা হলে তা টাচ ইভেন্ট হিসেবে রেজিস্টার হলেও, মাউসের বাটন কোড এবং স্ক্রোল হুইলের কার্যকারিতা সঠিকভাবে পরীক্ষা করার জন্য একটি শারীরিক মাউস বা ট্র্যাকপ্যাড প্রয়োজন। ট্র্যাকপ্যাডের মাল্টি-টাচ জেসচার এবং মাউসের ফিজিক্যাল হুইলের স্ক্রোলিং ইভেন্ট ব্রাউজারে ভিন্নভাবে প্রক্রিয়াজাত হয়।
স্ক্রোল হুইল ফিজিক্স এবং ডেল্টা ইউনিটের ভিন্নতা
স্ক্রোল হুইল ঘোরানোর সময় ব্রাউজার এবং অপারেটিং সিস্টেমের সমন্বয়ে স্ক্রোল ডেল্টা মান তৈরি হয়। এই মানগুলো প্ল্যাটফর্ম এবং ব্রাউজারের সেটিংসের ওপর ভিত্তি করে তিনটি ভিন্ন ইউনিটে রিপোর্ট করা হতে পারে: pixels, lines, অথবা pages।
| স্ক্রোল ইউনিট | বিবরণ |
|---|---|
pixels |
স্ক্রোলের পরিমাণ পিক্সেল এককে পরিমাপ করা হয়, যা সাধারণত মসৃণ বা হাই-রেজোলিউশন স্ক্রোলিংয়ের ক্ষেত্রে দেখা যায়। |
lines |
প্রথাগত মাউস হুইলের প্রতি ক্লিকের জন্য নির্দিষ্ট সংখ্যক লাইন স্ক্রোল নির্দেশ করে। |
pages |
স্ক্রোল হুইলের এক একটি ধাপে পুরো এক পৃষ্ঠা স্ক্রোল করার জন্য ব্যবহৃত হয়। |
একই পরিমাণ স্ক্রোলের জন্য একটি pixels ইউনিটের মান সবসময় একটি lines ইউনিটের মানের চেয়ে অনেক বড় হয়। এই কারণে বিভিন্ন ব্রাউজারে স্ক্রোল পরীক্ষা করার সময় সরাসরি র ডেল্টা (raw delta) নম্বরগুলো তুলনা না করে স্ক্রোলের দিক এবং হুইল স্টেপের সংখ্যা তুলনা করা উচিত।
মাউস বাটন টেস্ট টুলের ব্যবহার বিধি
এই টুলটি ব্যবহার করার জন্য নির্দিষ্ট টেস্ট এরিয়াতে মাউস নাড়াচাড়া, ক্লিক বা স্ক্রোল করতে হবে।
ইনপুট এবং নিয়ন্ত্রণসমূহ
- মাউস অ্যাকশন: মাউস টেস্ট এরিয়াতে ক্লিক, রাইট-ক্লিক, মিডল-ক্লিক, সাইড বাটন প্রেস এবং স্ক্রোল করা।
- পয়েন্টার মুভমেন্ট: টেস্ট এরিয়ার ভেতরে মাউস নাড়াচাড়া করে কোঅর্ডিনেট আপডেট করা।
- ডাবল-ফায়ার থ্রেশহোল্ড: ডিফল্ট 40 ms থ্রেশহোল্ড পরিবর্তন করে নিজের সুবিধামতো সময়সীমা নির্ধারণ করা।
- লগ মুছে ফেলুন: জমানো ইভেন্ট হিস্ট্রি পরিষ্কার করার জন্য এই বাটনটি ব্যবহার করা হয়।
আউটপুট এবং স্ট্যাটিস্টিকস
টুলটি রিয়েল-টাইমে নিম্নলিখিত আউটপুটগুলো প্রদর্শন করে:
- সর্বশেষ ইভেন্ট: সর্বশেষ মাউস অ্যাকশনের বিস্তারিত বিবরণ।
- স্ট্যাটাস ইন্ডিকেটর: শুরুতে
শুরু করতে টেস্ট এরিয়াতে ক্লিক বা স্ক্রোল করুনএবং ইনপুট নেওয়ার সময়মাউস ইনপুটের জন্য অপেক্ষা করা হচ্ছেলেখা দেখায়। - ভিজ্যুয়াল লেজেন্ড: বাটনের অবস্থা বোঝাতে
ধরে রাখা হয়েছে,পরীক্ষিত, এবংডাবল-ফায়ারডলেবেল ব্যবহার করা হয়। - পরিসংখ্যান প্যানেল: এখানে
পরীক্ষিত বাটন,মোট প্রেস,ডাবল-ফায়ার, এবংহুইল স্টেপএর সংখ্যা প্রদর্শিত হয়। - ডাবল-ফায়ার চেক টেবিল: প্রতিটি বাটনের জন্য
বাটন,প্রেস সংখ্যা, এবংন্যূনতম ব্যবধান(Min gap) দেখায়। - ইভেন্ট লগ টেবিল: প্রতিটি ইভেন্টের জন্য
সময়,ইভেন্ট(যেমনডাউন,আপ,ডাবল-ক্লিক, অথবাহুইল),বাটন(যেমনLeft,Right,Middle,Back,Forward,Wheel, অথবা অজানা বাটনের জন্যবাটন {number}), এবংবিস্তারিত(যার মধ্যেবাটন,চেপে রাখা বাটন,অবস্থান,হুইল,ব্যবধান,চেপে রাখা হয়েছে, এবংপয়েন্টারটাইপ অন্তর্ভুক্ত) প্রদর্শিত হয়। ডাবল-ফায়ার হলে লাইনের পাশেডাবল-ফায়ারডব্যাজ যুক্ত হয়। - লগ খালি অবস্থা: কোনো ইভেন্ট না থাকলে
এখনো কোনো মাউস ইভেন্ট নেই — টেস্ট এরিয়াতে ক্লিক বা স্ক্রোল করুনবার্তাটি প্রদর্শিত হয়।
গোপনীয়তা এবং ডেটা প্রসেসিং
এই টুলের সমস্ত মাউস ইনপুট সম্পূর্ণ স্থানীয়ভাবে ব্যবহারকারীর ওয়েব ব্রাউজারে প্রসেস করা হয়। কোনো ডেটা বাহ্যিক সার্ভারে সংরক্ষণ বা আপলোড করা হয় না। ব্যবহারকারী পেজে থাকা লগ মুছে ফেলুন বাটন চাপলে অথবা পেজটি বন্ধ বা রিফ্রেশ করলে সমস্ত রেকর্ড করা ইভেন্ট ডেটা স্থায়ীভাবে মুছে যায়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
প্রশ্ন: একবার প্রেস করলেই আমার মাউস ডাবল-ক্লিক করে — এটি কি তা নিশ্চিত করতে পারে?
উত্তর: হ্যাঁ। সন্দেহজনক বাটনটি দিয়ে একটি একটি করে আলাদাভাবে ক্লিক করুন: প্রতিটি প্রেসের জন্য লগে ঠিক একটি Down এবং একটি Up ইভেন্ট রেকর্ড হওয়া উচিত। ফ্ল্যাগ উইন্ডোর (ডিফল্টভাবে 40 ms) মধ্যে হওয়া অতিরিক্ত প্রেসকে ডাবল-ফায়ার হিসেবে চিহ্নিত এবং গণনা করা হয় — একের পর এক প্রেসে এই প্যাটার্ন দেখা যাওয়ার অর্থ হলো সুইচটি নষ্ট হয়ে গেছে, এটি কোনো সফটওয়্যার সমস্যা নয়। একটি ভালো বাটন হাত দিয়ে ক্লিক করার সময় সাধারণত এত দ্রুত দুইবার ফায়ার করে না, তাই আপনি ইচ্ছে করে অস্বাভাবিক দ্রুত ক্লিক না করলে এই উইন্ডোর সময়সীমা বাড়াবেন না।
প্রশ্ন: টেস্ট এরিয়াতে রাইট-ক্লিক মেনু খোলে না কেন?
উত্তর: অন্যান্য বাটনের মতো রাইট-ক্লিকও যাতে গণনা করা যায়, সেজন্য এই এরিয়াতে কনটেক্সট মেনু নিষ্ক্রিয় করে রাখা হয়েছে; এরিয়ার বাইরে মেনুটি যথারীতি কাজ করবে। দুটি ব্যতিক্রম যা এই পেজ এড়াতে পারে না: Firefox-এ Shift + রাইট-ক্লিক করলে সবসময় মেনু খোলে এবং এটি গণনা করা যায় না, এবং Mac-এ Ctrl + ক্লিক করলে সেটি রাইট-ক্লিক হিসেবেই রেজিস্টার হয়।
প্রশ্ন: আমার সাইড বাটনগুলো কাজ করছে না কেন?
উত্তর: অনেক ব্রাউজার হিস্ট্রি নেভিগেশনের জন্য Back এবং Forward বাটন দুটি ব্যবহার করে এবং পেজটি প্রেস শনাক্ত করার আগেই ব্রাউজার তা নিজের নিয়ন্ত্রণে নিয়ে নেয় — ব্রাউজার অনুমতি দিলে এই টেস্ট এরিয়াতে সেটি নিষ্ক্রিয় করে রাখা হয়, তবে সব জায়গায় নয়। Linux-এ Firefox হয়তো সাইড বাটনগুলো একেবারেই রিপোর্ট করতে পারে না। বাটনগুলো যদি এখানে কাজ না করে কিন্তু অন্য অ্যাপে কাজ করে, তবে বুঝতে হবে ব্রাউজার সেগুলো আটকে দিয়েছে; এর মানে মাউসটি নষ্ট নয়।
প্রশ্ন: অন্য ব্রাউজারে একই স্ক্রোলের জন্য আলাদা ডেল্টা নম্বর দেখায় কেন?
উত্তর: ব্রাউজার এবং প্ল্যাটফর্মের ওপর ভিত্তি করে স্ক্রোলের পরিমাণ pixels, lines অথবা pages ইউনিটে আসে এবং প্রতিটি ইভেন্টে কোন ইউনিট ব্যবহার করা হয়েছে তা রিডআউটে লেবেল করা থাকে। একই স্ক্রোলের জন্য একটি pixel ভ্যালু সবসময় একটি line ভ্যালুর চেয়ে অনেক বড় হয়। ব্রাউজারগুলোর মধ্যে স্ক্রোলের দিক এবং স্টেপ সংখ্যা তুলনা করুন, সরাসরি র ডেল্টা (raw delta) নম্বরগুলো নয়।