যখন ব্যবহারকারী একটি সম্পাদনাযোগ্য পাঠ্য দৃশ্যে ফোকাস দেয়, যেমন একটি EditText
উপাদান, এবং ব্যবহারকারীর একটি হার্ডওয়্যার কীবোর্ড সংযুক্ত থাকে, তখন সমস্ত ইনপুট সিস্টেম দ্বারা পরিচালিত হয়। যাইহোক, আপনি যদি নিজেই কীবোর্ড ইনপুটকে আটকাতে বা সরাসরি পরিচালনা করতে চান, তাহলে আপনি KeyEvent.Callback
ইন্টারফেস থেকে কলব্যাক পদ্ধতি প্রয়োগ করে তা করতে পারেন, যেমন onKeyDown()
এবং onKeyMultiple()
।
Activity
এবং View
ক্লাস উভয়ই KeyEvent.Callback
ইন্টারফেস প্রয়োগ করে, তাই আপনি সাধারণত এই ক্লাসগুলির আপনার এক্সটেনশনে কলব্যাক পদ্ধতিগুলিকে ওভাররাইড করেন, যেমনটি উপযুক্ত।
দ্রষ্টব্য: KeyEvent
ক্লাস এবং সম্পর্কিত APIগুলির সাথে কীবোর্ড ইভেন্টগুলি পরিচালনা করার সময়, আশা করুন যে কীবোর্ড ইভেন্টগুলি শুধুমাত্র একটি হার্ডওয়্যার কীবোর্ড থেকে আসছে৷ একটি সফ্ট ইনপুট পদ্ধতিতে (একটি অন-স্ক্রীন কীবোর্ড) কোনও কীর জন্য কী ইভেন্টগুলি পাওয়ার উপর নির্ভর করবেন না৷
একক কী ইভেন্টগুলি পরিচালনা করুন
একটি পৃথক কী প্রেস পরিচালনা করতে, যথাযথভাবে onKeyDown()
বা onKeyUp()
প্রয়োগ করুন। সাধারণত, আপনি onKeyUp()
ব্যবহার করেন যদি আপনি নিশ্চিত করতে চান যে আপনি শুধুমাত্র একটি ইভেন্ট পেয়েছেন। যদি ব্যবহারকারী একটি কী টিপে এবং ধরে রাখে, তাহলে onKeyDown()
একাধিকবার কল করা হয়।
উদাহরণস্বরূপ, এই বাস্তবায়ন একটি গেম নিয়ন্ত্রণ করতে কিছু কীবোর্ড কীগুলিতে প্রতিক্রিয়া জানায়:
কোটলিন
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_D -> { moveShip(MOVE_LEFT) true } KeyEvent.KEYCODE_F -> { moveShip(MOVE_RIGHT) true } KeyEvent.KEYCODE_J -> { fireMachineGun() true } KeyEvent.KEYCODE_K -> { fireMissile() true } else -> super.onKeyUp(keyCode, event) } }
জাভা
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_D: moveShip(MOVE_LEFT); return true; case KeyEvent.KEYCODE_F: moveShip(MOVE_RIGHT); return true; case KeyEvent.KEYCODE_J: fireMachineGun(); return true; case KeyEvent.KEYCODE_K: fireMissile(); return true; default: return super.onKeyUp(keyCode, event); } }
মডিফায়ার কী হ্যান্ডেল করুন
সংশোধক কী ইভেন্টগুলিতে প্রতিক্রিয়া জানাতে, যেমন যখন একটি কী Shift বা Control এর সাথে একত্রিত হয়, আপনি কলব্যাক পদ্ধতিতে পাস করা KeyEvent
জিজ্ঞাসা করতে পারেন। বেশ কিছু পদ্ধতি মোডিফায়ার কী সম্পর্কে তথ্য প্রদান করে, যেমন getModifiers()
এবং getMetaState()
। যাইহোক, সবচেয়ে সহজ সমাধান হল আপনার পছন্দের সঠিক সংশোধনকারী কীটি isShiftPressed()
এবং isCtrlPressed()
এর মতো পদ্ধতিতে চাপা হচ্ছে কিনা তা পরীক্ষা করা।
উদাহরণ স্বরূপ, এখানে আবার onKeyUp()
ইমপ্লিমেন্টেশন করা হয়েছে, যখন একটি কী দিয়ে Shift কী চেপে রাখা হয় তার জন্য অতিরিক্ত হ্যান্ডলিং সহ:
কোটলিন
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { ... KeyEvent.KEYCODE_J -> { if (event.isShiftPressed) { fireLaser() } else { fireMachineGun() } true } KeyEvent.KEYCODE_K -> { if (event.isShiftPressed) { fireSeekingMissle() } else { fireMissile() } true } else -> super.onKeyUp(keyCode, event) } }
জাভা
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { ... case KeyEvent.KEYCODE_J: if (event.isShiftPressed()) { fireLaser(); } else { fireMachineGun(); } return true; case KeyEvent.KEYCODE_K: if (event.isShiftPressed()) { fireSeekingMissle(); } else { fireMissile(); } return true; default: return super.onKeyUp(keyCode, event); } }
অতিরিক্ত সম্পদ
- কীবোর্ড শর্টকাট হেল্পার : সিস্টেম স্ক্রিন যা ব্যবহারকারীদের আপনার অ্যাপ অফার করে কীবোর্ড শর্টকাট অনুসন্ধান করতে সক্ষম করে।