תיאור הבעיה
משתמשי אקסל משתמשים הרבה בתווים <
ו->
בתוך נוסחאות
כאשר מופעלת פריסת מקלדת עברי, הייעוד של המקשים מתהפך, כאשר המקש הימני מקליד את הפותח (או הסמל שמשמעותו בתוך נוסחה: "less than") והמקש השמאלי מקליד את הסוגר (או: הסמל שמשמעותו בתוך נוסחה "more than")
בד"כ (בכתיבה רגילה של פרוזה, או יותר נכון, כאשר כיוון הקטע הוא מימין לשמאל) זה רצוי, כי הפותח והסוגר בעברית נראים הפוכים,
הבעיה הוא שבנוסחאות באקסל, זה לא מה שרוצים.
להסבר התופעה ב א ר י כ ו ת עיין כאן
הפתרון
סקריפט שמזהה אם החלון הפעיל הוא חלון אקסל, ובמקרה שכן, הוא מחליף את המקשים שגם בעברית הם יתנהגו כמו באנגלית
קובץ EXE:
Excel Keyboard Fix.exe
[גירסא שמתקנת גם את התווים (
ו-)
]:
Excel Keyboard Fix.exe
(אפשר לשים אותו בתיקיית ההפעלה בתפריט ההתחלה והוא ירוץ אוטומטי בשעת הפעלה)
קוד המקור (בשפת AutoHotKey)
#SingleInstance force
KeyboardLayout_Hebrew := 0x40D040D
#IfWinActive ahk_exe EXCEL.EXE
>::
hwnd := WinExist("A")
currentKeyboardLayout := getKeyboardLayout(hwnd)
if (currentKeyboardLayout = KeyboardLayout_Hebrew)
{
Send <
return
}
send >
return
<::
hwnd := WinExist("A")
currentKeyboardLayout := getKeyboardLayout(hwnd)
if (currentKeyboardLayout = KeyboardLayout_Hebrew)
{
Send >
return
}
send <
return
;gets the keyboard layout for window with specified hwnd
getKeyboardLayout(hwnd, ByRef keyBoardLayout = "")
{
idThread := getWindowThreadProcessId(hwnd)
keyboardLayout := DllCall("user32.dll\GetKeyboardLayout"
, "uint", idThread, "uint")
return keyboardLayout
}
getWindowThreadProcessId(hwnd)
{
return dllCall("user32\GetWindowThreadProcessId", "Uint", hwnd)
}
באגים ושיפורים
נא לדווח על באגים ולהציע שיפורים באשכול זה.
(משתמשי אקסל: האם לדעתכם יש צורך להוסיף קוד דומה עבור התווים (
ו-)
?)
קרדיט
@מתמחה-במחשבים שהעלה את הבעיה כאן
הקוד לזיהוי פריסת מקלדת מפה