Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

הגדרת עברית - שאלות בענייני caps lock

einpoklum - 31/07/2004 - 17:34
נושא ההודעה: שאלות בענייני caps lock
אני כרגע עובד עם xkb מכוונן כך:
קוד:
setxkbmap -option grp:switch,grp:alt_shift_toggle,srvrkeys:none,numpad:microsoft us,il -variant ,si1452


קראתי גם את ההודעות השונות בתת-פורום הזה, וגם את הדף של IGLU, ובכל זאת איני מצליח לגרום ל-CAPS LOCK להתנהג כפי שאני רוצה. ניסיתי את כל 4 האפשרויות של caps: (ז"א internal, internal_nocancel, shift, shift_nocancel) ונראה שהן לא עושות כלום.

ההתנהגות לה אני מצפה: כאשר אני נמצא ב-group il של ה-layout, ו-caps לחוץ, ואני לוחץ על אות, תופיע האות הלטינית גדולה (ז"א לא אות עברית ולא אות לטינית קטנה). כיצד משיגים את האפקט הזה?

ועתה שאלה למתקדמים: נראה שהניקוד ב-si1452 נגיש רק במן מצב של third level שאינני יודע איך לייצר אותו. קיויותי שאם ה-caps היה עובד, אז הייתי מקבל אותה התנהגות כמו ב-Windows, הווה אומר caps + shift + מספר = סימן ניקוד עברי. האם אפשר לגרום להתנהגות כזו? האם יש שיטה חלופית להשתמש בניקוד של si1452?
elcuco - 31/07/2004 - 20:10
נושא ההודעה:
זה אומר שאין לך כרגע יכולת של כתיבת ניקוד אצלך?
כי אני נמצא בדיוק באותו מצב כמוך.

כמו כן, קבל ח"ח על התוסף של thunderbird Smile
sforbes - 31/07/2004 - 20:16
נושא ההודעה:
אני פשוט משתמשת בפריסה של lyx, שם הניקוד נמצא בשיפט+עברית.

לא אהבתי אף פעם את דרגת השיפט השלישית בה חלונות משתמש, ולכן שמחתי מאוד למצוא פריסה שלא דורשת ממני להשתמש בה...
Smile
elcuco - 31/07/2004 - 20:19
נושא ההודעה:
שוש,
למאותגרי שפה מקצועית שבינינו, את יכולה להסביר איך זה נעשה בדיוק?
Anonymous - 01/08/2004 - 07:49
נושא ההודעה:
את זה גם אני יכול להסביר: אם אתה משתמש בשורת-הפקודה, תוסיף לפקודת ה-xkbmap את הפרמטר
קוד:
-variant ,lyx

במקום מה שרשמתי מעל (si1452). הפסיק הוא לציין שזהו variant של ה-group השני, il, ולא של ה-group us. לחילופין אפשר ב-xorg.conf או xfree86.conf ע"י
[code]
Option "XkbLayout" "us,il"
Option "XkbVariant" ",lyx"
[/code\
einpoklum - 06/08/2004 - 23:31
נושא ההודעה:
אוקיי, אנשים, היו לי הצלחות חלקיות בפתרון שתי השאלות שלי. הנה עדכון (באנגלית בינתיים):
קוד:

While everybody who's anybody was living it up at the 'August Penguin' event today, I have been making some progress in my quest. (All file fragments are delimited by single empty lines; you'll figure it out.)

1.
There is a bug in the xkb definition file for the Israeli keyboard layout (/etc/X11/xkb/symbols/pc/il on my systems). In the si1452, instead of

    key.type = "THREE_LEVEL";

there should be

    key.type[Group1] = "THREE_LEVEL";

what happens now is that these keys' type is set for _all_groups_, not just the 'il' group. This is obviously wrong.

2.
Having made this correction, one can 'cleanly' allow for using Hebrew nikkud (punctuation marks) by having CapsLock in the on state and pressing Shift + some number (as defined in si1452, a-la-Windows). The changes are as follows (ignore the suggestions in my previous e-mail to Haifux):

in types/caps add the following section to the end of the file:

partial xkb_types "affect_three_level" {
    type "THREE_LEVEL" {
    modifiers = Shift+Lock;
    map[Shift] = Level2;
    preserve[Lock] = Lock;
    map[Shift+Lock] = Level3;
    level_name[Level1] = "Base";
    level_name[Level2] = "Caps";
    level_name[Level3] = "Alt Base";
    };
};

in rules/xorg, in the section with the type rules (i.e. where you find the 'caps:' rules) add the following line:

  caps:affect_three_level       =       +caps(affect_three_level)

then use the option caps:affect_three_levels in your configuration (e.g. in in /etc/X11/xorg.conf append caps:affect_three_levels to the XkbOptions string).


3.
A nitpick regarding the symbols/pc/il file: Instead of

    // uses the kbd layout in use in Israel.

there should be

    // uses the kbd layout in use in Israel for Hebrew.

otherwise the line is hinting that this layout may somehow cover all of Israel's official languages, i.e. Hebrew, Arabic, English.

I have no idea who maintains this file, though. Is it Ivan Pascal? I am CC'ing this message to him.

4.
As Ivan has imparted to me, there isn't much hope of emulating the Windows CapsLock behavior for us,il by having it switch groups; there's some state which cannot be stored regardless of the 'tricks' used. His suggestion was using another shift level which will duplicate the us group's 2nd shift level. This is doable, I guess, but I have not yet gone to the trouble of trying it out. Plus it would make the symbols/pc/il file even uglier than it is now (with latin capitalized letters in the 2nd shift level, something which perhaps could have been avoided by a different design of xkb).

5.
An inferior (=less intuitive for my 'fingers memory') but simpler solution is: instead of having CapsLock act exactly like in Windows, at least have it switch to the 2nd shift level, like the Shift keys, only with locking. This can be achieved by adding the following line to the "basic" section of symbols/pc/il:

    key.type[Group1]="ALPHABETIC";

since ALPHABETIC keys are affected by CapsLock by default, while keys with no type aren't. It would perhaps be a better idea to define a different type for the Israeli chars, e.g. SEMIALPHABETIC_TWO_LEVEL, and duplicate the types/* subsections for ALPHABETIC to work for this type as well (rationale: someone may want to make configuration changes for 'real' latin ALPHABETIC keys only).


Eyal


כל הזמנים הם GMT + 2 שעות