Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

קֶלֶט

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

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

צינור קלט

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

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

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

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

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

נקודות בקרה

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

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

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

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

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

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

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

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

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

כמה התנהגויות קלט מוגדרות באמצעות שכבות-על של משאבים ב- 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_REL EV_ABS ו- EV_ABS .

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

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

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

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

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

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

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

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

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

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

Android Meta State

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

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

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

מצב לחצני Android

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

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

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

לקריאה נוספת

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