הוספת מקשי קיצור לעברית ולאנגלית

למה להוסיף מקשי קיצור לעברית ולאנגלית? יש כבר מקש Alt+Shift שמאפשר להחליף את השפה. מה הבעיה עם זה?

תרחיש

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

הבעיה

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

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

הפתרון

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

ישום

ניתן ליבא שני מקרואים מקובץ Visual Basic באתר זה (Bidi.bas), מה עושים? פותחים מסמך MS-Word, פותחים את ה-Macro Editor בעזרת תפריט Tools/Macro ומייבאים את הקובץ בתפריט File/Import File

הסבר

שני מקרואים (macros) פשוטים עושים את תהליך החלפת השפה כך שיהיה בלתי מותנה במצב השפה הפעילה:

Sub LocalLtr()

    Application.Keyboard (1033)

End Sub

 

Sub LocalRtl()

    Application.Keyboard (1037)

End Sub

ניתן ליבא את המקרואים מקובץ Visual Basic באתר זה (Bidi.bas), או להוסיף אותם ידנית, בעזרת עורך המקרו בתפריט "כלים" (Tools).

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

באופן אידיאלי, היה רצוי לבחור מקשי קיצור לכיווניות הכוללים את מקשי החצים, או Shift  ימני ושמאלי. הבעיה היא שאופיס משתמש בהם באופן אקסקלוסיבי, ולכן יש צורך בבחירת מקשים חליפיים. המקשים בהם אני בחרתי הם הצירוף של Ctrl עם < ו- > (בלי ה-Shift), שגם הם מצביעים על כיוון.

שיפורים אפשריים

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

משתמשי Visual Basic מוזמנים בזאת לתרום את חלקם ולהציג פתרונות. הפתרונות יוצגו עם קרדיט למפתחים במדור זה של האתר.

חסרונות

אין! גם כשלוקחים בחשבון את עלות הפתרון בתכנות למיקרוסופט, פתרון זה עדיף על הפתרון שהם בחרו. כי הפתרון של מיקרוסופט כולל סיבוכיות מיותרת, של תגובה למקש שהיא תלויה במצב. גם הם היקצו שני מקשי קיצור להחלפת שפה: Alt+Left-Shift ו-Alt+Right-Shift, אבל במקום להקצות אותם מקש-מקש לשפתו, הם קבעו שלשני הקיצורים הללו תהיה פונקציה זהה, המותנית במצב השפה הפעילה. מה שמעלה אצלי מחשבות נוגות לגבי הדרך בה מתקבלות במיקרוסופט החלטות בנושא שימושיות.

פתרונות נוספים

מספר גירסאות של MS-Word כוללות אופציה להתאמה אוטומטית של המקלדת לשפה בנקודת ההצבעה. זאת, על ידי בחירה באופציה Auto-keyboard switching  שנמצאת במסך האופציות (עוד על הסמן המסתגל). משום מה, אופציה זו אינה נמצאת בדף Complex Scripts, שכולל אופציות אחרות בנושא שפות דו-כיווניות, אלא בדף ,Edit ולכן לא כל כך שמים לב אליה. כאשר שינוי השפה נעשה אוטומטית על פי הקונטקסט, הצורך לשנות את השפה ידנית יורד עשרות מונים, והשיטה של מיקרוסופט, ככל שהיא מעצבנת, כבר לא כל כך מציקה.

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

 

בנוסף, מיקרוסופט מאפשרת לנו להחליף את מקשי הקיצור להחלפת כיוון. בהגדרת Regional Setting מתוך ה- Control Panel, ניתן לשנות את ברירות המחדל כמו בדוגמא הבאה:

 

עבור Vista

עבור XP

 

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

בדרך אגב

ל-Caps Lock  ובחזרה

האם הלחיצה השניה על המקש Caps Lock  מחזירה אותך למצב הרצוי? ואם לא, אז מה?

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