קֶלֶט

סמל HAL של קלט אנדרואיד

תת-מערכת הקלט של אנדרואיד מורכבת באופן סמלי מצינור אירועים החוצה מספר רב של שכבות של המערכת.

צינור קלט

בשכבה הנמוכה ביותר, מכשיר הקלט הפיזי מייצר אותות המתארים שינויים במצב כגון לחיצות מקשים ונקודות מגע מגע. קושחת המכשיר מקודדת ומשדרת אותות אלה באופן כלשהו, ​​למשל באמצעות שליחת דוחות USB HID למערכת או על ידי הפסקת הפרעות באוטובוס I2C.

לאחר מכן מפענחים את האותות על ידי מנהל התקן בליבת הלינוקס. ליבת לינוקס מספקת מנהלי התקנים עבור ציוד היקפי סטנדרטי רבים, במיוחד עבור אלה העומדים בפרוטוקול HID. עם זאת, יצרן ציוד מקורי חייב לרוב לספק מנהלי התקנים מותאמים אישית עבור מכשירים משובצים המשולבים היטב במערכת ברמה נמוכה, כגון מסכי מגע.

מנהלי התקני הקלט אחראים לתרגום אותות ספציפיים למכשיר לפורמט אירוע קלט רגיל, באמצעות פרוטוקול הקלט של לינוקס. פרוטוקול הקלט של לינוקס מגדיר סט סטנדרטי של סוגי אירועים וקודים בקובץ כותרת הליבה של linux/input.h . באופן זה, רכיבים מחוץ לליבה אינם צריכים לדאוג לפרטים כגון קודי סריקה פיזיים, שימושים ב- HID, הודעות I2C, סיכות GPIO וכדומה.

לאחר מכן, רכיב Android EventHub קורא אירועי קלט מהליבה על ידי פתיחת מנהל ההתקן evdev המשויך לכל התקן קלט. רכיב ה- Android InputReader מפענח אחר כך את אירועי הקלט בהתאם למחלקת המכשירים ומייצר זרם של אירועי קלט של Android. כחלק מתהליך זה, קודי האירועים של פרוטוקול הקלט של לינוקס מתורגמים לקודי אירועים של Android על פי תצורת התקן הקלט, קבצי פריסת המקלדת וטבלאות מיפוי שונות.

לבסוף, InputReader שולח אירועי קלט אל InputDispatcher אשר מעביר אותם לחלון המתאים.

נקודות בקרה

ישנם מספר שלבים בצינור הקלט המשפיעים על שליטה בהתנהגות מכשיר הקלט.

תצורת מנהל התקן וקושחה

מנהלי התקני קלט מגדירים לעתים קרובות את ההתנהגות של התקן הקלט על ידי הגדרת פרמטרים ברשומות או אפילו העלאת הקושחה עצמה. זה במיוחד המקרה של מכשירים משובצים כגון מסכי מגע, כאשר חלק גדול מתהליך הכיול כולל כיוונון פרמטרים אלה או תיקון הקושחה על מנת לספק את הדיוק והתגובה הרצויה וכדי לדכא רעשים.

אפשרויות תצורת מנהל התקן מוגדרות לעיתים קרובות כפרמטרים של מודולים בחבילת התמיכה של לוח הליבה (BSP) כך שאותו מנהל התקן יכול לתמוך ביישומי חומרה שונים.

תיעוד זה אמנם מנסה לתאר את תצורת מנהל ההתקן או הקושחה, אך הוא מציע הנחיות לגבי כיול המכשירים באופן כללי.

מאפייני תצורת לוח

חבילת התמיכה של לוח הליבה (BSP) עשויה לייצא מאפייני תצורה של לוח באמצעות SysFS המשמשים את רכיב Android InputReader, כגון מיקום מפתחות וירטואליים על מסך מגע.

עיין בסעיפי מחלקת המכשירים לקבלת פרטים אודות האופן שבו מכשירים שונים משתמשים במאפייני תצורת הלוח.

שכבות-על של משאבים

כמה התנהגויות קלט מוגדרות באמצעות שכבות-על של משאבים ב- config.xml כגון הפעלת מתג המכסה.

להלן מספר דוגמאות:

  • config_lidKeyboardAccessibility : מציין את ההשפעה של מתג המכסה האם מקלדת החומרה נגישה או מוסתרת.

  • config_lidNavigationAccessibility : מציין את ההשפעה של מתג המכסה האם משטח העקיבה נגיש או מוסתר.

  • config_longPressOnPowerBehavior : מציין מה צריך לקרות כאשר המשתמש מחזיק את לחצן ההפעלה לחוץ.

  • config_lidOpenRotation : מציין את ההשפעה של מתג המכסה על כיוון המסך.

עיין בתיעוד במסגרת frameworks/base/core/res/res/values/config.xml לקבלת פרטים אודות כל אפשרות תצורה.

מפות מפתח

מפות מפתח משמשות את EventHub Android EventHub ו- InputReader כדי להגדיר את המיפוי מקודי אירועים של לינוקס לקודי אירועים של Android עבור מקשים, כפתורי ג'ויסטיק וצירי ג'ויסטיק. המיפוי עשוי להיות תלוי בהתקן או בשפה.

עיין בסעיפי מחלקת המכשירים לפרטים אודות אופן השימוש במכשירים שונים במפות מפתח.

קבצי תצורת התקן קלט

קבצי תצורה של התקני קלט משמשים את EventHub Android EventHub ו- InputReader כדי לקבוע תצורה של מאפייני מכשיר מיוחדים כגון אופן הדיווח על מידע בגודל מגע.

עיין בסעיפי מחלקת המכשירים לקבלת פרטים אודות אופן השימוש בהתקנים שונים במפות תצורת התקני קלט.

הבנת השימושים ב- HID וקודי אירועים

לרוב ישנם מספר מזהים שונים המשמשים להתייחס לכל מקש נתון במקלדת, כפתור בבקר משחק, ציר ג'ויסטיק או שליטה אחרת. היחסים בין מזהים אלה אינם תמיד זהים: הם תלויים במערך טבלאות מיפוי, חלקן קבועות וחלקן משתנות בהתאם למאפייני ההתקן, מנהל ההתקן, האזור הנוכחי, תצורת המערכת, העדפות משתמש וגורמים אחרים.

קוד סריקה פיזית

קוד סריקה פיזית הוא מזהה ספציפי למכשיר המשויך לכל מפתח, כפתור או שלט אחר. מכיוון שקודי סריקה פיזיים משתנים לעתים קרובות ממכשיר אחד לאחר, הקושחה או מנהל ההתקן אחראים למיפוים למזהים סטנדרטיים כגון שימוש ב- HID או קודי מפתח לינוקס.

קודי סריקה מעניינים בעיקר מקלדות. מכשירים אחרים מתקשרים בדרך כלל ברמה נמוכה באמצעות סיכות GPIO, הודעות I2C או אמצעים אחרים. כתוצאה מכך, השכבות העליונות של ערמת התוכנה מסתמכות על מנהלי ההתקן כדי להבין מה קורה.

שימוש ב- HID

שימוש ב- HID הוא מזהה סטנדרטי המשמש לדיווח על מצבו של שלט כגון מקש מקלדת, ציר ג'ויסטיק, לחצן עכבר או נקודת מגע מגע. מרבית התקני הקלט USB ו- Bluetooth תואמים למפרט ה- HID, המאפשר למערכת להתממשק עימם באופן אחיד.

מסגרת אנדרואיד מסתמכת על מנהלי ההתקנים של HID של ליבת הלינוקס לתרגם קודי שימוש ב- HID לקודי מפתח לינוקס ומזהים אחרים. לכן שימושים ב- HID מעניינים בעיקר יצרני ציוד היקפי.

קוד מפתח לינוקס

קוד מפתח לינוקס הוא מזהה סטנדרטי עבור מפתח או כפתור. קודי מפתח לינוקס מוגדרים בקובץ הכותרת linux/input.h באמצעות קבועים שמתחילים בקידומת KEY_ או BTN_ . מנהלי ההתקנים של EV_KEY הליבה של לינוקס אחראים לתרגום קודי סריקה פיזיים, שימושים ב- HID ואותות ספציפיים להתקנים אחרים לקודי מפתח לינוקס ומסירת מידע עליהם במסגרת אירועי EV_KEY .

API של Android מתייחס לפעמים לקוד המפתח של לינוקס המשויך למפתח כ"קוד הסריקה "שלו. זה לא נכון מבחינה טכנית אבל זה עוזר להבחין בין קודי מפתח של לינוקס לבין קודי מפתח של Android בממשק ה- API.

קוד ציר יחסית או לינוקס מוחלט

קוד ציר יחסי או מוחלט של לינוקס הוא מזהה סטנדרטי לדיווח על תנועות יחסיות או מיקומים מוחלטים לאורך ציר, כגון תנועות יחסיות של עכבר לאורך ציר ה- X שלו או המיקום המוחלט של ג'ויסטיק לאורך ציר ה- X שלו. קוד ציר לינוקס מוגדר בקובץ הכותרת linux/input.h באמצעות קבועים שמתחילים בקידומת REL_ או ABS_ . מנהלי ההתקנים של EV_REL הליבה של לינוקס אחראים לתרגום שימושים של HID ואותות ספציפיים למכשירים אחרים לקודי ציר לינוקס ומסירת מידע עליהם במסגרת אירועי EV_ABS ו- EV_ABS .

קוד מתג לינוקס

קוד מתג לינוקס הוא מזהה סטנדרטי לדיווח על מצב מתג בהתקן, כגון מתג מכסה. קודי מתג לינוקס מוגדרים בקובץ הכותרת linux/input.h באמצעות קבועים שמתחילים עם הקידומת SW_ . מנהלי הקלט לקליטת הליבה של לינוקס מדווחים על שינויים במצב החלפה EV_SW .

יישומי Android בדרך כלל אינם מקבלים אירועים ממתגים, אך המערכת עשויה להשתמש בהם באופן פנימי לשליטה בפונקציות ספציפיות למכשירים.

קוד מפתח לאנדרואיד

קוד מפתח לאנדרואיד הוא מזהה סטנדרטי המוגדר בממשק ה- API של Android לצורך ציון מפתח מסוים כגון 'HOME'. קודי מפתח לאנדרואיד מוגדרים על ידי מחלקת android.view.KeyEvent כקבועים שמתחילים בקידומת KEYCODE_ .

פריסת המקשים מציינת כיצד ממפים קודי מפתח לינוקס לקודי מפתח Android. ניתן להשתמש בפריסות מפתח שונות בהתאם לדגם המקלדת, לשפה, לארץ, לפריסה או לפונקציות המיוחדות.

שילובים של קודי מפתח של Android הופכים לקודי תווים באמצעות מכשיר ומפת תווים מרכזית ספציפית. לדוגמא, כאשר המקשים המזוהים כ- KEYCODE_SHIFT ו- KEYCODE_A נלחצים יחד, המערכת מחפשת את השילוב במפת תווי המפתח ומוצאת את האות הגדולה 'A', אשר מוכנסת לאחר מכן לווידג'ט הטקסט הממוקד כעת.

קוד ציר אנדרואיד

קוד ציר אנדרואיד הוא מזהה סטנדרטי המוגדר ב- API של Android לצורך ציון ציר מכשיר מסוים. קודי ציר אנדרואיד מוגדרים על ידי מחלקת android.view.MotionEvent כקבועים שמתחילים בקידומת AXIS_ .

פריסת המפתח מציינת כיצד מיפו קודי ציר לינוקס לקודי ציר אנדרואיד. ניתן להשתמש בפריסות מפתח שונות בהתאם לדגם המכשיר, לשפה, לארץ, לפריסה או לפונקציות המיוחדות.

Android Meta State

מצב מטא של אנדרואיד הוא מזהה סטנדרטי המוגדר בממשק ה- API של אנדרואיד לציון אילו מקשי שינוי נלחצים. מצבי מטא של Android מוגדרים על ידי מחלקת android.view.KeyEvent כקבועים שמתחילים בקידומת META_ .

מצב המטא הנוכחי נקבע על ידי רכיב אנדרואיד InputReader אשר עוקב כאשר מקשי שינוי כגון KEYCODE_SHIFT_LEFT נלחצים / משחררים ומגדיר / מאפס את דגל המדינה המתאים.

הקשר בין מקשי שינוי ומצבי מטא מקודד בקושי, אך פריסת המקשים יכולה לשנות את אופן מיפוי מקשי השינוי עצמם אשר משפיע בתורו על מצבי המטא.

מצב כפתור אנדרואיד

מצב כפתור אנדרואיד הוא מזהה סטנדרטי המוגדר בממשק ה- API של Android כדי לציין אילו כפתורים (על עכבר או עט) נלחצים. מצבי כפתור אנדרואיד מוגדרים על ידי מחלקת android.view.MotionEvent כקבועים שמתחילים בקידומת BUTTON_ .

מצב הלחצנים הנוכחי נקבע על ידי רכיב ה- InputReader של Android אשר עוקב אחר לחיצה / שחרור של לחצנים (על עכבר או חרט) ומגדיר / מאפס את דגל מצב הכפתור המתאים.

הקשר בין כפתורים למצבי כפתור מקודד קשה.

לקריאה נוספת

  1. קודי אירועים של קלט לינוקס
  2. פרוטוקול רב מגע של לינוקס
  3. מנהלי כניסת לינוקס
  4. משוב כוח לינוקס
  5. מידע על HID, כולל טבלאות שימוש ב- HID