פריסות מקלדת שלא הוספתם — איך להסיר | NeuroSwitcher

תמיכה

הופיעו ב-Win+Space שפות שלא הוספתם

זו התקלה שלנו, והיא תוקנה. גרסאות NeuroSwitcher לפני 0.7.1 יכלו, תוך כדי תיקון טקסט, להתקין במערכת פריסת מקלדת לשפה שמעולם לא הייתה לכם — לרוב עברית או גרמנית. הפריסה מופיעה במחליף Win+Space, אבל לא נכנסת לרשימת השפות של Windows — ולכן בהגדרות אין מה למחוק. כאן מוסבר איך להיפטר ממנה.

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

הדרך המהירה — התחילו כאן

ברוב המקרים זה מספיק, וללא שום פקודות.

החל מגרסה 0.7.2 האפליקציה כבר לא משתמשת בשאריות כאלה. שפה נחשבת זמינה רק אם Windows שומרת אותה באופן קבוע — פריסה שגרסה ישנה טענה להפעלה הנוכחית נעלמת מהחשבון. גם אם היא עדיין מופיעה ב־Win+Space, היא כבר לא מגיעה לטקסט שלכם: היא לא מוצעת בהצעות ולא מפריעה לתיקון הפריסה. השלבים למטה מסירים אותה מהמערכת לגמרי, אבל התיקונים עובדים נכון עוד לפני כן.

  • עדכנו ל-0.7.2 ומעלה. הגרסה העדכנית נמצאת בדף הבית. התקנה מעל שומרת את כל ההגדרות; מספר הגרסה מופיע בתחתית סרגל הצד של הקונסולה.
  • פתחו את הקונסולה → „שפות“. לצד שפה שלא הוספתם תופיע הכפתור „הסרת פריסה“. לחיצה אחת, והפריסה נעלמת מ-Win+Space מיד, בלי הפעלה מחדש.
  • הסירו את הסימון מאותה שפה באותו מסך ושמרו. הסימון פירושו „לתקן טקסט לשפה הזו“, והוא הגדרה נפרדת מהפריסה.

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

למה זה קרה

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

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

פריסה כזו חיה מחוץ לרשימת השפות המועדפות: Win+Space מציג אותה, „הגדרות → זמן ושפה → שפה ואזור“ לא. זהו בדיוק המבוי הסתום שאליו נקלע כל מי שניסה להסיר אותה בדרך הרגילה.

ב-0.7.1 הסרנו את הסיבה עצמה: האפליקציה אינה מתקינה דבר ועוברת רק לפריסות שכבר קיימות. אין פריסה — אין לאן לתקן, וזו האמת: ממילא לא יכולתם להקליד בשפה הזו. ב-0.7.2 הוספנו את החצי השני — כפתור „הסרת פריסה“ שמנקה גם את שאריות הגרסאות הישנות.

אם הפריסה נשארה: מה בדיוק יש אצלכם

פריסה יכולה להיאחז במערכת בשלוש דרכים שונות, וכל אחת מוסרת אחרת. קודם כול בררו באיזה מקרה מדובר. פתחו PowerShell (התחל → הקלידו powershell → Enter) והדביקו את שתי הפקודות. הן רק קוראות ואינן משנות דבר:

Get-ItemProperty 'HKCU:\Keyboard Layout\Preload'
Get-WinUserLanguageList | Select-Object LanguageTag, InputMethodTips

קודי הפריסות שיעזרו בקריאת הפלט:

00000409אנגלית (ארה״ב)
00000419רוסית
00000422אוקראינית
0000040Dעברית
00000407גרמנית (גרמניה)

מקרה א. השפה נמצאת ברשימת השפות של Windows

בפקודה השנייה מופיע he או de (de-DE) תחת LanguageTag.

אז השפה אכן הגיעה לרשימה של Windows — גם כפתור „הסרת פריסה“ בקונסולה וגם „הגדרות → שפה ואזור → „…“ ליד השפה → הסרה“ יוציאו אותה. אותו דבר בפקודה אחת:

$list = Get-WinUserLanguageList
$list = $list | Where-Object { ($_.LanguageTag -split '-')[0] -notin @('he','de') }
Set-WinUserLanguageList $list -Force

אחר כך התנתקו והתחברו מחדש.

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

ברשימת השפות יש רק שפות שלכם (en-US, he-IL, …), אבל אצל אחת מהן מופיע 0000040D או 00000407 תחת InputMethodTips.

זו מקלדת נוספת בתוך שפה, והעמוד הראשי של ההגדרות אינו מציג אותה. ידנית: „הגדרות → שפה ואזור → „…“ ליד השפה → אפשרויות שפה → מקלדות“. או בפקודה:

$list = Get-WinUserLanguageList
foreach ($l in $list) {
  @($l.InputMethodTips | Where-Object { $_ -match '(0000040D|00000407)$' }) |
    ForEach-Object { [void]$l.InputMethodTips.Remove($_) }
}
Set-WinUserLanguageList $list -Force

אחר כך התנתקו והתחברו מחדש.

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

ברשימת השפות אין דבר מיותר, אבל הפקודה הראשונה מציגה 0000040d או 00000407 בין הערכים 1, 2, 3… זהו המקרה שבגללו ההגדרות חסרות אונים.

נסו קודם בלי רישום המערכת. „הגדרות → שפה ואזור → הוספת שפה“ → הוסיפו עברית (אפשר לבטל את הסימון של חבילת השפה, זיהוי דיבור וכתב יד) → ומיד מחקו אותה דרך „…“ → „הסרה“. Windows לוקחת את הפריסה יחד עם השפה. אותו דבר עם גרמנית.

אם זה לא עזר — עריכת רישום המערכת. קודם גיבוי:

reg export "HKCU\Keyboard Layout" "$env:USERPROFILE\Desktop\keyboard-layout-backup.reg"

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

$key = 'HKCU:\Keyboard Layout\Preload'
$props = (Get-ItemProperty $key).PSObject.Properties |
         Where-Object { $_.Name -match '^\d+$' } | Sort-Object { [int]$_.Name }
$keep = @($props | ForEach-Object { $_.Value } | Where-Object { $_ -notin @('0000040d','00000407') })
$props | ForEach-Object { Remove-ItemProperty $key -Name $_.Name }
$i = 1; foreach ($v in $keep) { New-ItemProperty $key -Name "$i" -Value $v -PropertyType String | Out-Null; $i++ }
Get-ItemProperty $key

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

אם הפריסה חוזרת

סימן שמשהו מוסיף אותה שוב. בדקו לפי הסדר:

  • גרסה ישנה של NeuroSwitcher באתחול. מנהל המשימות → „אפליקציות אתחול“: צריכה להיות רשומה אחת בלבד. שתי התקנות פירושן שהישנה ממשיכה בשלה.
  • תוכנה אחרת. לא היינו היחידים שעשו זאת: חלק ממחליפי הפריסות וכלי הגיימינג מתנהגים כך. אם NeuroSwitcher הוסר והשפה עדיין חוזרת — זה לא אנחנו, וגם זה מידע שימושי.
  • סנכרון הגדרות Windows. בחשבון Microsoft הגדרות שפה עשויות להגיע ממחשב אחר. „הגדרות → חשבונות → גיבוי Windows“ → כבו את סנכרון העדפות השפה ונקו שוב.

לא הסתדר? כתבו לנו

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

support@neuroswitcher.app — או דרך טופס המשוב.

ותודה לכל מי שכתב לנו במקום להסיר את התוכנה בשקט. שני התיקונים — ב-0.7.1 וב-0.7.2 — נולדו מהודעות כאלה.

להורדת הגרסה העדכנית