গুরুত্বপূর্ণ অক্ষর ম্যাপ ফাইল

কী ক্যারেক্টার ম্যাপ ফাইল (.kcm ফাইল) ইউনিকোড ক্যারেক্টারে মডিফায়ার সহ Android কী কোডের কম্বিনেশন ম্যাপ করার জন্য দায়ী।

ডিভাইস-নির্দিষ্ট কী লেআউট ফাইলগুলি সমস্ত ইন্টার্নাল (বিল্ট-ইন) ইনপুট ডিভাইসের জন্য প্রয়োজন যেগুলিতে কী আছে, যদি শুধুমাত্র সিস্টেমকে জানাতে হয় যে ডিভাইসটি শুধুমাত্র বিশেষ উদ্দেশ্যে (সম্পূর্ণ কীবোর্ড নয়)।

এক্সটার্নাল কীবোর্ডের জন্য ডিভাইস-নির্দিষ্ট কী লেআউট ফাইল ঐচ্ছিক এবং প্রায়শই এর প্রয়োজন হয় না। সিস্টেম একটি সাধারণ কী ক্যারেক্টার ম্যাপ প্রদান করে যা অনেক এক্সটার্নাল কীবোর্ডের জন্য উপযুক্ত।

ডিভাইস-নির্দিষ্ট কোনও কী লেআউট ফাইল উপলভ্য না থাকলে, সিস্টেম পরিবর্তে একটি ডিফল্ট বেছে নেবে।

লোকেশন

USB ভেন্ডর, প্রোডাক্ট (এবং ঐচ্ছিকভাবে ভার্সন) আইডি বা ইনপুট ডিভাইসের নাম দ্বারা কী ক্যারেক্টার ম্যাপ ফাইল লোকেট করা হয়।

The following paths are consulted in order.

  • /odm/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /vendor/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /system/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /data/system/devices/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /odm/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /vendor/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /system/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /data/system/devices/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /odm/usr/keychars/DEVICE_NAME.kcm
  • /vendor/usr/keychars/DEVICE_NAME.kcm
  • /system/usr/keychars/DEVICE_NAME.kcm
  • /data/system/devices/keychars/DEVICE_NAME.kcm
  • /odm/usr/keychars/Generic.kcm
  • /vendor/usr/keychars/Generic.kcm
  • /system/usr/keychars/Generic.kcm
  • /data/system/devices/keychars/Generic.kcm
  • /odm/usr/keychars/Virtual.kcm
  • /vendor/usr/keychars/Virtual.kcm
  • /system/usr/keychars/Virtual.kcm
  • /data/system/devices/keychars/Virtual.kcm

ডিভাইসের নাম থাকা ফাইল পাথ তৈরি করার সময়, ডিভাইসের নামের মধ্যে '0'-'9', 'a'-'z', 'A'-'Z', '-' বা '_' ছাড়া অন্য সব অক্ষর পরিবর্তন করে '_' করা হয়।

জেনেরিক কী ক্যারেক্টার ম্যাপ ফাইল

সিস্টেম Generic.kcm নামের একটি বিশেষ বিল্ট-ইন কী অক্ষর ম্যাপ ফাইল প্রদান করে। এই কী-বোর্ডের অক্ষর ম্যাপটি বিভিন্ন ধরনের স্ট্যান্ডার্ড এক্সটার্নাল কী-বোর্ডে কাজ করে।

জেনেরিক কী ক্যারেক্টার ম্যাপ পরিবর্তন করবেন না!

ভার্চুয়াল কী ক্যারেক্টার ম্যাপ ফাইল

সিস্টেমটি Virtual.kcm নামে একটি বিশেষ বিল্ট-ইন কী ক্যারেক্টার ম্যাপ ফাইল প্রদান করে যা ভার্চুয়াল কীবোর্ড ডিভাইস দ্বারা ব্যবহৃত হয়।

ভার্চুয়াল কীবোর্ড ডিভাইস হল একটি সিন্থেটিক ইনপুট ডিভাইস যার আইডি হল -১ (KeyCharacterMap.VIRTUAL_KEYBOARD দেখুন)। এটি Android Honeycomb 3.0 থেকে শুরু করে সব Android ডিভাইসে থাকে। ভার্চুয়াল কীবোর্ড ডিভাইসের উদ্দেশ্য হল একটি পরিচিত বিল্ট-ইন ইনপুট ডিভাইস প্রদান করা যা IME বা টেস্ট ইনস্ট্রুমেন্টেশনের মাধ্যমে অ্যাপ্লিকেশনে কীস্ট্রোক ইনজেক্ট করার জন্য ব্যবহার করা যেতে পারে, এমনকি যেসব ডিভাইসে বিল্ট-ইন কীবোর্ড নেই সেগুলির জন্যও।

ভার্চুয়াল কীবোর্ডে সম্পূর্ণ QWERTY লেআউট আছে বলে ধরে নেওয়া হয় যা সব ডিভাইসে একই রকম। এর ফলে, ভার্চুয়াল কীবোর্ড ডিভাইস ব্যবহার করে অ্যাপ্লিকেশন কীস্ট্রোক ইনজেক্ট করতে এবং সবসময় একই ফলাফল পেতে পারে।

ভার্চুয়াল কী ক্যারেক্টার ম্যাপ পরিবর্তন করবেন না!

সিনট্যাক্স

কী ক্যারেক্টার ম্যাপ ফাইল হল একটি প্লেন টেক্সট ফাইল যাতে কীবোর্ড টাইপ ঘোষণা এবং কী ঘোষণার সেট থাকে।

কীবোর্ডের ধরন সংক্রান্ত ঘোষণা

কীবোর্ডের ধরন সংক্রান্ত ঘোষণা কীবোর্ডের সামগ্রিক আচরণ বর্ণনা করে। ক্যারেক্টার ম্যাপ ফাইলে কীবোর্ডের ধরন ঘোষণা করতে হবে। স্বচ্ছতার জন্য, এটি প্রায়ই ফাইলের সবচেয়ে উপরে রাখা হয়।

type FULL

নিম্নলিখিত কীবোর্ডের ধরন শনাক্ত করা হয়:

  • NUMERIC: একটি সাংখ্যিক (১২-কী) কীবোর্ড।

    নিউমেরিক কীবোর্ড একাধিকবার ট্যাপ করার মাধ্যমে টেক্সট লেখার সুবিধা দেয়। কাঙ্ক্ষিত অক্ষর বা প্রতীক তৈরি করতে, কোনও কী একাধিকবার ট্যাপ করতে হতে পারে।

    এই ধরনের কীবোর্ড সাধারণত বুড়ো আঙুল দিয়ে টাইপ করার জন্য ডিজাইন করা হয়।

    KeyCharacterMap.NUMERIC-এর সাথে সম্পর্কিত।

  • PREDICTIVE: এমন কীবোর্ড যাতে সব অক্ষর আছে, কিন্তু প্রতিটি কী-তে একাধিক অক্ষর আছে।

    এই ধরনের কীবোর্ড সাধারণত বুড়ো আঙুল দিয়ে টাইপ করার জন্য ডিজাইন করা হয়।

    KeyCharacterMap.PREDICTIVE-এর সাথে সম্পর্কিত।

  • ALPHA: সব অক্ষর এবং হয়ত কিছু সংখ্যা সহ কীবোর্ড।

    বর্ণানুক্রমিক কীবোর্ড সরাসরি টেক্সট এন্ট্রি করতে সাহায্য করে, তবে এতে ছোট ফর্ম ফ্যাক্টর সহ একটি সংক্ষিপ্ত লেআউট থাকতে পারে। FULL কীবোর্ডের বিপরীতে, কিছু চিহ্ন শুধুমাত্র বিশেষ অন-স্ক্রিন অক্ষর বাছাইকারী ব্যবহার করে অ্যাক্সেস করা যেতে পারে। এছাড়াও, টাইপিং স্পিড ও নির্ভুলতা উন্নত করতে, ফ্রেমওয়ার্ক বর্ণমালা সংক্রান্ত কীবোর্ডের জন্য বিশেষ সুবিধা প্রদান করে, যেমন অটোমেটিক ক্যাপিটালাইজেশন এবং টগল করা / লক করা SHIFT ও ALT কী।

    এই ধরনের কীবোর্ড সাধারণত বুড়ো আঙুল দিয়ে টাইপ করার জন্য ডিজাইন করা হয়।

  • FULL: সম্পূর্ণ পিসি-স্টাইলের কীবোর্ড।

    সম্পূর্ণ কীবোর্ড পিসি (PC) কীবোর্ডের মতো আচরণ করে। অন-স্ক্রিন সহায়তা বা অটোমেটিক বড় হাতের অক্ষর হয়ে যাওয়ার মতো সুবিধা ছাড়াই কীবোর্ডের কী প্রেস করে সরাসরি সব চিহ্ন অ্যাক্সেস করা যায়।

    এই ধরনের কীবোর্ড সাধারণত দু'হাতে টাইপ করার জন্য ডিজাইন করা হয়।

  • SPECIAL_FUNCTION: এমন কীবোর্ড যা টাইপ করার পরিবর্তে শুধুমাত্র সিস্টেম কন্ট্রোল ফাংশন পারফর্ম করতে ব্যবহৃত হয়।

    একটি বিশেষ ফাংশন কীবোর্ডে শুধুমাত্র নন-প্রিন্টিং কী থাকে যেমন HOME এবং POWER যা আসলে টাইপ করার জন্য ব্যবহার করা হয় না।

Generic.kcm ও Virtual.kcm কী ক্যারেক্টার ম্যাপ, দুটিই FULL কীবোর্ড।

গুরুত্বপূর্ণ ঘোষণা

কী ডিক্লারেশনে key কীওয়ার্ডের পরে Android কী কোড নাম, একটি ওপেন কার্লি ব্রেস, প্রপার্টি ও বিহেভিয়ারের একটি সেট এবং একটি ক্লোজ কার্লি ব্রেস থাকে।

key A {
    label:                              'A'
    base:                               'a'
    shift, capslock:                    'A'
    ctrl, alt, meta:                    none
}

প্রপার্টি

প্রতিটি কী প্রপার্টি, কী থেকে আচরণে ম্যাপিং প্রতিষ্ঠা করে। কী ক্যারেক্টার ম্যাপ ফাইলকে আরও কম্প্যাক্ট করতে, একাধিক প্রপার্টিকে কমা দিয়ে আলাদা করে একই বিহেভিয়ারের সাথে ম্যাপ করা যেতে পারে।

উপরের উদাহরণে, label প্রপার্টিতে 'A' আচরণ অ্যাসাইন করা হয়েছে। একইভাবে, ctrl, alt এবং meta প্রপার্টিতে একই সাথে none আচরণ অ্যাসাইন করা হয়।

নিম্নলিখিত প্রপার্টিগুলি স্বীকৃত:

  • label: কীতে ফিজিক্যালি প্রিন্ট করা লেবেল নির্দিষ্ট করে, যখন এটি একটি অক্ষর নিয়ে গঠিত হয়। এটি হল সেই ভ্যালু যা KeyCharacterMap.getDisplayLabel মেথড দ্বারা রিটার্ন করা হয়।

  • number: কোনও সংখ্যাসূচক টেক্সট ভিউতে ফোকাস থাকলে, যেমন ব্যবহারকারী ফোন নম্বর টাইপ করার সময়, আচরণ (যে অক্ষর টাইপ করা উচিত) নির্দিষ্ট করে।

    কম্প্যাক্ট কীবোর্ডে প্রায়ই একাধিক প্রতীক একটি কী-তে একত্রিত করা হয়, যেমন একই কী হয়তো '1' ও 'a' অথবা '#' ও 'q' টাইপ করার জন্য ব্যবহার করা হয়, সম্ভবত। এইসব 'কী'-এর জন্য, number প্রপার্টি সেট করা উচিত যাতে বোঝা যায় যে কোনও সংখ্যাসূচক প্রসঙ্গে কোন চিহ্ন টাইপ করা উচিত, যদি থাকে।

    কিছু সাধারণ "সংখ্যাসূচক" চিহ্ন হল '0' থেকে '9', '#', '+', '(', ')', ',' এবং '.' সংখ্যা।

  • base: কোনও মডিফায়ার প্রেস করা না হলে আচরণ (যে অক্ষর টাইপ করা উচিত) নির্দিষ্ট করে।

  • <modifier> বা <modifier1>+<modifier2>+...: 'কী' প্রেস করা হলে এবং নির্দিষ্ট করা সব মডিফায়ার অ্যাক্টিভ থাকলে, আচরণ (যে অক্ষর টাইপ করা উচিত) নির্দিষ্ট করে।

    যেমন, মডিফায়ার প্রপার্টি shift এমন আচরণ নির্দিষ্ট করে যা তখন প্রযোজ্য হয় যখন LEFT SHIFT বা RIGHT SHIFT মডিফায়ার প্রেস করা হয়।

    একইভাবে, মডিফায়ার প্রপার্টি rshift+ralt এমন একটি আচরণ নির্দিষ্ট করে যা ডানদিকের Shift এবং ডানদিকের Alt মডিফায়ার একসাথে প্রেস করলে প্রযোজ্য হয়।

মডিফায়ার প্রপার্টিতে নিম্নলিখিত মডিফায়ারগুলি শনাক্ত করা হয়:

  • shift: LEFT SHIFT বা RIGHT SHIFT মডিফায়ার প্রেস করা হলে এটি প্রযোজ্য হয়।
  • lshift: LEFT SHIFT মডিফায়ার টিপলে এটি প্রযোজ্য হয়।
  • rshift: ডানদিকের Shift মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • alt: বাঁদিকের ALT বা ডানদিকের ALT মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • lalt: বাঁদিকের ALT মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • ralt: ডানদিকের ALT মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • ctrl: LEFT CONTROL বা RIGHT CONTROL মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • lctrl: বাঁদিকের CONTROL মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • rctrl: RIGHT CONTROL মডিফায়ার টিপলে এটি প্রযোজ্য হয়।
  • meta: LEFT META বা RIGHT META মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • lmeta: LEFT META মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • rmeta: RIGHT META মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • sym: SYMBOL মডিফায়ার প্রেস করা হলে প্রযোজ্য হয়।
  • fn: FUNCTION মডিফায়ার কী টিপলে এটি প্রযোজ্য হয়।
  • capslock: CAPS LOCK মডিফায়ার লক করা থাকলে প্রযোজ্য হয়।
  • numlock: NUM LOCK মডিফায়ার লক করা থাকলে এটি প্রযোজ্য হয়।
  • scrolllock: SCROLL LOCK মডিফায়ার লক করা থাকলে প্রযোজ্য।

প্রপার্টিগুলি যে ক্রমে তালিকাভুক্ত করা হয়েছে তা গুরুত্বপূর্ণ। কোনও আচরণে কী ম্যাপ করার সময়, সিস্টেম সমস্ত প্রাসঙ্গিক প্রপার্টি ক্রমানুসারে স্ক্যান করে এবং এটি যে শেষ প্রযোজ্য আচরণ খুঁজে পায় তা দেখায়।

এর ফলে, কোনও নির্দিষ্ট 'কী'-এর জন্য আগে উল্লেখ করা প্রপার্টিকে পরে উল্লেখ করা প্রপার্টি ওভাররাইড করে।

আচরণ

প্রতিটি প্রপার্টি একটি আচরণের সাথে ম্যাপ করা হয়। সবচেয়ে সাধারণ আচরণ হল একটি অক্ষর টাইপ করা তবে আরও আছে।

নিম্নলিখিত আচরণগুলি শনাক্ত করা হয়:

  • none: কোনও অক্ষর টাইপ করবেন না।

    কোনও ক্যারেক্টার নির্দিষ্ট করা না থাকলে, এটি ডিফল্ট আচরণ। none নির্দিষ্ট করা ঐচ্ছিক হলেও এটি স্বচ্ছতা বাড়ায়।

  • 'X': নির্দিষ্ট অক্ষর লিটেরাল টাইপ করুন।

    এই আচরণ ফোকাস করা টেক্সট ভিউতে নির্দিষ্ট অক্ষরটি লিখতে বাধ্য করে। ক্যারেক্টার লিটেরাল যেকোনও ASCII অক্ষর বা নিম্নলিখিত এস্কেপ সিকোয়েন্সের একটি হতে পারে:

    • '\\': ব্যাকস্ল্যাশ অক্ষর টাইপ করুন।
    • '\n': নতুন লাইন ক্যারেক্টার টাইপ করুন (ENTER / RETURN-এর জন্য এটি ব্যবহার করুন)।
    • '\t': একটি TAB অক্ষর টাইপ করুন।
    • '\'': অ্যাপোস্ট্রফি অক্ষর টাইপ করুন।
    • '\"': কোট ক্যারেক্টার টাইপ করুন।
    • '\uXXXX': ইউনিকোড অক্ষর টাইপ করুন যার কোড পয়েন্ট XXXX-এর মাধ্যমে হেক্সে দেওয়া আছে।
  • fallback <Android key code name>: Perform a default action if the key is not handled by the application.

    এই আচরণের ফলে, কোনও অ্যাপ্লিকেশন নির্দিষ্ট কী নেটিভভাবে ম্যানেজ না করলে সিস্টেমটি একটি আলাদা কী প্রেস করার সিমুলেশন তৈরি করে। নতুন কী-এর জন্য ডিফল্ট আচরণ সাপোর্ট করতে এটি ব্যবহার করা হয়। ESCAPE বা নিউমেরিক কীপ্যাড কী (numlock প্রেস করা না থাকলে) কীভাবে ম্যানেজ করতে হয় তা সব অ্যাপ্লিকেশন জানে না।

    ফলব্যাক আচরণ পারফর্ম করা হলে, অ্যাপ্লিকেশন দুটি কী প্রেস পাবে: একটি হল আসল কী এবং অন্যটি হল বেছে নেওয়া ফলব্যাক কী। কী-আপের সময় অ্যাপ্লিকেশনটি আসল কী হ্যান্ডেল করলে, ফলব্যাক কী ইভেন্ট বাতিল হয়ে যাবে (KeyEvent.isCanceled true রিটার্ন করবে)।

বিশেষ ফাংশন পারফর্ম করার জন্য সিস্টেম দুটি ইউনিকোড অক্ষর রিজার্ভ করে:

  • '\uef00': এই আচরণ করা হলে, টেক্সট ভিউ কার্সারের আগের চারটি অক্ষর গ্রহণ করে সরিয়ে দেয়, সেগুলিকে হেক্স ডিজিট হিসেবে ব্যাখ্যা করে এবং সংশ্লিষ্ট ইউনিকোড কোড পয়েন্ট ইনসার্ট করে।

  • '\uef01': এই আচরণ করা হলে, টেক্সট ভিউতে একটি ক্যারেক্টার পিকার ডায়ালগ দেখানো হয় যাতে বিভিন্ন ধরনের চিহ্ন থাকে।

সিস্টেম নিম্নলিখিত ইউনিকোড অক্ষরগুলিকে একত্রিত ডায়াক্রিটিকাল ডেড কী অক্ষর হিসেবে শনাক্ত করে:

  • '\u0300': গ্রেভ অ্যাকসেন্ট।
  • '\u0301': অ্যাকিউট অ্যাকসেন্ট।
  • '\u0302': সারকামফ্লেক্স অ্যাকসেন্ট।
  • '\u0303': টিল্ড অ্যাকসেন্ট।
  • '\u0308': Umlaut অ্যাকসেন্ট।

কোনও ডেড কী টাইপ করার পরে অন্য কোনও অক্ষর টাইপ করা হলে, ডেড কী এবং তার পরের অক্ষর কম্পোজ করা হয়। যেমন, ব্যবহারকারী 'a' অক্ষরের পরে গ্রেভ অ্যাকসেন্ট ডেড কী টাইপ করলে, 'à' অক্ষরটি টাইপ হয়।

ডেড কী হ্যান্ডেলিং সম্পর্কে আরও তথ্যের জন্য KeyCharacterMap.getDeadChar দেখুন।

কমেন্ট

কমেন্টের লাইন '#' দিয়ে শুরু হয় এবং লাইনের শেষ পর্যন্ত চলতে থাকে। যেমন:

# A comment!

খালি লাইন উপেক্ষা করা হয়।

কী কম্বিনেশন কীভাবে আচরণের সাথে ম্যাপ করা হয়

ব্যবহারকারী কোনও কী প্রেস করলে, সিস্টেম সেই কী প্রেস ও বর্তমানে প্রেস করা মডিফায়ারের কম্বিনেশনের সাথে যুক্ত আচরণটি খুঁজে দেখে।

SHIFT + A

ধরে নিন, ব্যবহারকারী A ও SHIFT বোতাম একসাথে প্রেস করেছেন। সিস্টেম প্রথমে KEYCODE_A-এর সাথে যুক্ত প্রপার্টি ও আচরণগত সেট লোকেট করে।

key A {
    label:                              'A'
    base:                               'a'
    shift, capslock:                    'A'
    ctrl, alt, meta:                    none
}

সিস্টেমটি প্রথম থেকে শেষ এবং বাম থেকে ডানে প্রপার্টি স্ক্যান করে, label এবং number প্রপার্টি উপেক্ষা করে, যা বিশেষ।

প্রথম যে প্রপার্টিটি পাওয়া গেছে সেটি হল base। base প্রপার্টি সবসময় একটি কী-তে প্রযোজ্য হয়, কোন মডিফায়ার প্রেস করা হয়েছে তা বিবেচ্য নয়। এটি মূলত কী-এর ডিফল্ট ব্যবহার নির্দিষ্ট করে, যদি না নিম্নলিখিত প্রপার্টি দ্বারা এটি ওভাররাইড করা হয়। যেহেতু এই 'কী' প্রেস করার ক্ষেত্রে base প্রপার্টি প্রযোজ্য হয়, তাই সিস্টেম এই বিষয়টি নোট করে যে এর আচরণ হল 'a' (a অক্ষরটি টাইপ করুন)।

এরপর সিস্টেম পরবর্তী প্রপার্টি স্ক্যান করা চালিয়ে যায় যাতে সেগুলির মধ্যে কোনওটি base-এর চেয়ে বেশি নির্দিষ্ট হলে তা ওভাররাইড করতে পারে। এটি shift-এর সম্মুখীন হয়, যা SHIFT + A কী প্রেস করার ক্ষেত্রেও প্রযোজ্য। তাই সিস্টেম base প্রপার্টির আচরণ উপেক্ষা করার সিদ্ধান্ত নেয় এবং shift প্রপার্টির সাথে যুক্ত আচরণ বেছে নেয়, যেটি হল 'A' (A অক্ষরটি টাইপ করুন)।

তারপরে এটি টেবিল স্ক্যান করা চালিয়ে যায়, তবে এই কী প্রেসে অন্য কোনও প্রপার্টি প্রযোজ্য হয় না (CAPS LOCK লক করা নেই, CONTROL কী প্রেস করা নেই, ALT কী প্রেস করা নেই এবং META কী প্রেস করা নেই)।

তাই, Shift + A কী কম্বিনেশনের ফলে 'A' অ্যাকশন পারফর্ম করা হয়।

CONTROL + A

এখন ভাবুন, ব্যবহারকারী যদি A এবং CONTROL একসাথে প্রেস করেন তাহলে কী হবে।

আগের মতো, সিস্টেম প্রপার্টির টেবিল স্ক্যান করবে। এটি লক্ষ্য করবে যে base প্রপার্টি প্রয়োগ করা হয়েছে কিন্তু এটি control প্রপার্টিতে না পৌঁছানো পর্যন্ত স্ক্যান করা চালিয়ে যাবে। যেমন, base-এর পরে control প্রপার্টি দেখা যাচ্ছে, তাই এর আচরণ base-এর আচরণকে ওভাররাইড করে।

তাই CONTROL + A কী কম্বিনেশনের ফলে যে আচরণ হয় তা হল none।

ESCAPE

এখন ধরে নিন যে ব্যবহারকারী ESCAPE টিপেছেন।

key ESCAPE {
    base:                               fallback BACK
    alt, meta:                          fallback HOME
    ctrl:                               fallback MENU
}

এইবার সিস্টেমটি ফলব্যাক আচরণ fallback BACK পায়। কোনও অক্ষর লিটেরাল না থাকার কারণে, কোনও অক্ষর টাইপ করা হবে না।

কী প্রসেস করার সময়, সিস্টেম প্রথমে অ্যাপ্লিকেশনে KEYCODE_ESCAPE ডেলিভার করবে। অ্যাপ্লিকেশন এটি হ্যান্ডেল না করলে, সিস্টেম আবার চেষ্টা করবে, তবে এইবার এটি ফলব্যাক আচরণ অনুযায়ী অ্যাপ্লিকেশনকে KEYCODE_BACK ডেলিভার করবে।

তাই যেসব অ্যাপ্লিকেশন KEYCODE_ESCAPE শনাক্ত করে ও সাপোর্ট করে, সেগুলি এটি যেমন আছে তেমনভাবে ম্যানেজ করতে পারে, কিন্তু যেসব অ্যাপ্লিকেশন তা করে না, সেগুলি পরিবর্তে ফলব্যাক অ্যাকশন হিসেবে KEYCODE_BACK-এর মতো করে 'কী' ম্যানেজ করতে পারে।

NUM LOCK সহ বা ছাড়া NUMPAD_0

NUM LOCK কী লক করা আছে কিনা তার উপর নির্ভর করে নিউমেরিক কীপ্যাডের কীগুলির খুবই আলাদা ব্যাখ্যা রয়েছে।

নিচে উল্লেখ করা কী ডিক্লারেশন নিশ্চিত করে যে NUM LOCK টিপলে KEYCODE_NUMPAD_0 ধরনের 0 হবে। NUM LOCK প্রেস করা না থাকলে, কীটি যথারীতি অ্যাপ্লিকেশনে ডেলিভার করা হয় এবং এটি হ্যান্ডেল করা না হলে, ফলব্যাক কী KEYCODE_INSERT পরিবর্তে ডেলিভার করা হয়।

key NUMPAD_0 {
    label, number:                      '0'
    base:                               fallback INSERT
    numlock:                            '0'
    ctrl, alt, meta:                    none
}

আমরা দেখতে পাচ্ছি যে ফলব্যাক কী ডিক্লারেশন, সম্পূর্ণ পিসি স্টাইলের কীবোর্ডে থাকা সব কী সরাসরি সাপোর্ট করে না বা চিনতে পারে না এমন পুরনো অ্যাপ্লিকেশনগুলির সাথে সামঞ্জস্যপূর্ণ হওয়ার বিষয়টি অনেক উন্নত করে।

উদাহরণ

সম্পূর্ণ কীবোর্ড

# This is an example of part of a key character map file for a full keyboard
# include a few fallback behaviors for special keys that few applications
# handle themselves.

type FULL

key C {
    label:                              'C'
    base:                               'c'
    shift, capslock:                    'C'
    alt:                                '\u00e7'
    shift+alt:                          '\u00c7'
    ctrl, meta:                         none
}

key SPACE {
    label:                              ' '
    base:                               ' '
    ctrl:                               none
    alt, meta:                          fallback SEARCH
}

key NUMPAD_9 {
    label, number:                      '9'
    base:                               fallback PAGE_UP
    numlock:                            '9'
    ctrl, alt, meta:                    none
}

বর্ণসাংখ্যিক কীবোর্ড

# This is an example of part of a key character map file for an alphanumeric
# thumb keyboard.  Some keys are combined, such as `A` and `2`.  Here we
# specify `number` labels to tell the system what to do when the user is
# typing a number into a dial pad.
#
# Also note the special character '\uef01' mapped to ALT+SPACE.
# Pressing this combination of keys invokes an on-screen character picker.

type ALPHA

key A {
    label:                              'A'
    number:                             '2'
    base:                               'a'
    shift, capslock:                    'A'
    alt:                                '#'
    shift+alt, capslock+alt:            none
}

key SPACE {
    label:                              ' '
    number:                             ' '
    base:                               ' '
    shift:                              ' '
    alt:                                '\uef01'
    shift+alt:                          '\uef01'
}

গেম প্যাড

# This is an example of part of a key character map file for a game pad.
# It defines fallback actions that enable the user to navigate the user interface
# by pressing buttons.

type SPECIAL_FUNCTION

key BUTTON_A {
    base:                               fallback BACK
}

key BUTTON_X {
    base:                               fallback DPAD_CENTER
}

key BUTTON_START {
    base:                               fallback HOME
}

key BUTTON_SELECT {
    base:                               fallback MENU
}

সামঞ্জস্য সংক্রান্ত নোট

Android Honeycomb 3.0-এর আগে, Android কী ক্যারেক্টার ম্যাপকে খুবই আলাদা সিনট্যাক্স ব্যবহার করে নির্দিষ্ট করা হত এবং বিল্ড টাইমে বাইনারি ফাইল ফর্ম্যাটে (.kcm.bin) কম্পাইল করা হত।

যদিও নতুন ফর্ম্যাটে একই এক্সটেনশন .kcm ব্যবহার করা হয়, সিনট্যাক্সটি বেশ আলাদা (এবং অনেক বেশি শক্তিশালী)।

Android Honeycomb 3.0 থেকে, সব Android কী ক্যারেক্টার ম্যাপ ফাইলকে অবশ্যই এই ডকুমেন্টে বর্ণিত নতুন সিনট্যাক্স এবং প্লেন টেক্সট ফাইল ফর্ম্যাট ব্যবহার করতে হবে। পুরনো সিনট্যাক্স কাজ করে না এবং পুরনো .kcm.bin ফাইল সিস্টেম শনাক্ত করতে পারে না।

ভাষা সংক্রান্ত নোট

Android বর্তমানে বহুভাষিক কীবোর্ড সাপোর্ট করে না। এছাড়াও, বিল্ট-ইন জেনেরিক কী ক্যারেক্টার ম্যাপ মার্কিন যুক্তরাষ্ট্রের ইংরেজি কীবোর্ড লেআউট ধরে নেয়।

OEM-কে তাদের কীবোর্ডের জন্য কাস্টম কী ক্যারেক্টার ম্যাপ প্রদান করতে উৎসাহিত করা হয় যদি সেগুলি অন্য ভাষার জন্য ডিজাইন করা হয়।

Android-এর ভবিষ্যতের ভার্সনে মাল্টিলিঙ্গুয়াল কীবোর্ড বা ব্যবহারকারীর বেছে নেওয়া কীবোর্ড লেআউটের জন্য আরও ভালো সহায়তা প্রদান করা হতে পারে।

যাচাইকরণ

কীম্যাপ যাচাই করুন টুল ব্যবহার করে আপনার কী ক্যারেক্টার ম্যাপ ফাইল যাচাই করতে ভুলবেন না।