ব্যবহারকারী যখন এডিট করা যায় এমন টেক্সট ভিউতে ফোকাস করেন, যেমন
EditText
এলিমেন্ট এবং ব্যবহারকারীর কাছে একটি হার্ডওয়্যার কীবোর্ড অ্যাটাচ করা থাকে, তখন সমস্ত
ইনপুট সিস্টেম দ্বারা পরিচালিত হয়। তবে, আপনি যদি কীবোর্ড ইনপুট ইন্টারসেপ্ট করতে
বা সরাসরি নিজেই ম্যানেজ করতে চান, তাহলে KeyEvent.Callback
ইন্টারফেস থেকে কলব্যাক পদ্ধতি প্রয়োগ করে তা করতে পারেন, যেমন onKeyDown()
এবং onKeyMultiple()।
Activity
এবং View ক্লাস দুটিই
KeyEvent.Callback ইন্টারফেস প্রয়োগ করে, তাই আপনি
সাধারণত এই ক্লাসগুলির এক্সটেনশনে কলব্যাক পদ্ধতিগুলি ওভাররাইড করেন, যেমন
উপযুক্ত।
মনে রাখবেন:
KeyEvent ক্লাস এবং সংশ্লিষ্ট API-এর মাধ্যমে কীবোর্ড ইভেন্ট ম্যানেজ করার সময়,
মনে রাখবেন যে কীবোর্ড ইভেন্ট শুধুমাত্র হার্ডওয়্যার কীবোর্ড থেকেই আসে। সফ্ট ইনপুট মেথডের (স্ক্রিনের কীবোর্ড) কোনও কী-এর জন্য
কী ইভেন্ট পাওয়ার উপর কখনও নির্ভর করবেন না।
সিঙ্গেল কী ইভেন্ট ম্যানেজ করুন
আলাদা আলাদা কী প্রেস ম্যানেজ করতে, onKeyDown()
বা onKeyUp(),
প্রয়োজন অনুযায়ী প্রয়োগ করুন। সাধারণত, আপনি শুধুমাত্র একটি ইভেন্ট পাবেন কিনা তা নিশ্চিত করতে চাইলে
onKeyUp()
ব্যবহার করেন। ব্যবহারকারী কোনও কী প্রেস করে ধরে রাখলে,
onKeyDown() একাধিকবার কল করা হয়।
যেমন, এই প্রয়োগ গেম কন্ট্রোল করার জন্য কিছু কীবোর্ড 'কী'-তে কাজ করে:
Kotlin
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 কী-এর সাথে অন্য কোনও কী প্রেস করে ধরে রাখার জন্য অতিরিক্ত হ্যান্ডলিংয়ের ব্যবস্থা করা হয়েছে:
Kotlin
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); } }
অতিরিক্ত রিসোর্স
- কীবোর্ড শর্টকাট হেল্পার: সিস্টেম স্ক্রিন যা ব্যবহারকারীদের আপনার অ্যাপের অফার করা কীবোর্ড শর্টকাট সার্চ করার সুবিধা দেয়।