You are not logged in.

#1 2023-06-09 08:34:33

schard
Forum Moderator
From: Hannover
Registered: 2016-05-06
Posts: 1,997
Website

[SOLVED] Find and modify Gnome keyboard layout

In order to write Hebrew, I currently use Gnome's keyboard "Hebrew (phonetic)".
However, I cannot for the life of me find where its definition is located on the disk.
I would like to modify it slightly for me, so that I can use it more intuitively
In case it matters, I want to move ס from the "o" key to "Shift+s" and make "o" an additional binding for ו.

Update
Found it in /usr/share/X11/xkb/symbols/il.
However, if I add a new file in /usr/share/X11/xkb/symbols or even add the modified keyboard layout to the existing file, it does not show up in Gnome's keyboard selection menu (yes I re-logged in and even rebooted after making the changes).
If I modify the existing layout "Hebrew (phonetic)" it works like a charm, but this won't survive an update of xkeyboard-config.
How can I add my layout as a new layout that is selectable and make it persistent?

For those interested:

partial alphanumeric_keys
xkb_symbols "phonetic" {

    include "de(basic)"

    name[Group1]= "Hebrew (phonetic)";

    // Modified phonetic keymap by Richard Neumann

    key <AE09> {	[	  9,	parenleft	]	};
    key <AE10> {	[	  0,	parenright	]	};
    key <TLDE> {	[     grave,	asciitilde	]	};

    key <AD11> {	[ bracketleft,	braceleft	]	};
    key <AD12> {	[ bracketright,	braceright	]	};
    key <AC10> {	[ semicolon,	colon		]	};
    key <AC11> {	[ apostrophe,	quotedbl	]	};
    key <AB08> {	[     comma,	less		]	};
    key <AB09> {	[    period,	greater		]	};
    key <AB10> {	[     slash,	question	]	};
    key <BKSL> {	[ backslash,         bar	]	};

    key <LatQ> {	[ hebrew_qoph, hebrew_qoph	]	};
    key <LatW> {	[ hebrew_waw, hebrew_waw	]	};
    key <LatE> {	[ hebrew_aleph, hebrew_aleph	]       };
    key <LatR> {	[ hebrew_resh, hebrew_resh	]	};
    key <LatT> {	[ hebrew_taw, hebrew_tet	]       };
    key <LatY> {	[ hebrew_ayin, hebrew_ayin	]       };
    key <LatU> {	[ hebrew_waw, hebrew_waw	]       };
    key <LatI> {	[ hebrew_yod, hebrew_yod	]       };
    key <LatO> {	[ hebrew_waw, hebrew_waw	]       };
    key <LatP> {	[ hebrew_pe, hebrew_finalpe	]	};

    key <LatA> {	[ hebrew_aleph, hebrew_aleph	]	};
    key <LatS> {	[ hebrew_shin, hebrew_samech	]       };
    key <LatD> {	[ hebrew_dalet, hebrew_dalet	]       };
    key <LatF> {	[ hebrew_pe, hebrew_finalpe	]	};
    key <LatG> {	[ hebrew_gimel, hebrew_gimel	]       };
    key <LatH> {	[ hebrew_he, hebrew_he		]       };
    key <LatJ> {	[ hebrew_yod, hebrew_yod	]	};
    key <LatK> {	[ hebrew_kaph, hebrew_finalkaph	]	};
    key <LatL> {	[ hebrew_lamed, hebrew_lamed	]       };

    key <LatZ> {	[ hebrew_zain, hebrew_zain	]       };
    key <LatX> {	[ hebrew_chet, hebrew_chet	]       };
    key <LatC> {	[ hebrew_zade, hebrew_finalzade	]       };
    key <LatV> {	[ hebrew_waw, hebrew_waw	]       };
    key <LatB> {	[ hebrew_bet, hebrew_bet	]       };
    key <LatN> {	[ hebrew_nun, hebrew_finalnun	]	};
    key <LatM> {	[ hebrew_mem, hebrew_finalmem	]	};
};

Update 2
So I found and followed this: https://freedesktop.org/wiki/Software/X … /Creating/
Unfortunately, this has several drawbacks:
1) I am still required to modify files belonging to the pacakge.
2) Since I'm on Wayland, loading the new keymap via setxkbmap only affects xwayland applications, like Firefox, that I'm currently using. שלום
3) The new layout still does not show up in the gnome settings as a selectable keyboard variant.

Temporary solution
Partially solved the above by implementing the pre-defined, but not implemented symbols for the layout "custom":

$ cat /usr/share/X11/xkb/symbols/custom 
default partial alphanumeric_keys
xkb_symbols "basic" {

    include "de(basic)"

    name[Group1]= "Hebrew (German)";

    // Modified Hebrew phonetic keymap by Richard Neumann

    key <LatQ> {	[ hebrew_qoph, hebrew_qoph	]	};
    key <LatW> {	[ hebrew_waw, hebrew_waw	]	};
    key <LatE> {	[ hebrew_aleph, hebrew_aleph	]       };
    key <LatR> {	[ hebrew_resh, hebrew_resh	]	};
    key <LatT> {	[ hebrew_taw, hebrew_tet	]       };
    key <LatY> {	[ hebrew_ayin, hebrew_ayin	]       };
    key <LatU> {	[ hebrew_waw, hebrew_waw	]       };
    key <LatI> {	[ hebrew_yod, hebrew_yod	]       };
    key <LatO> {	[ hebrew_waw, hebrew_waw	]       };
    key <LatP> {	[ hebrew_pe, hebrew_finalpe	]	};

    key <LatA> {	[ hebrew_aleph, hebrew_aleph	]	};
    key <LatS> {	[ hebrew_shin, hebrew_samech	]       };
    key <LatD> {	[ hebrew_dalet, hebrew_dalet	]       };
    key <LatF> {	[ hebrew_pe, hebrew_finalpe	]	};
    key <LatG> {	[ hebrew_gimel, hebrew_gimel	]       };
    key <LatH> {	[ hebrew_he, hebrew_he		]       };
    key <LatJ> {	[ hebrew_yod, hebrew_yod	]	};
    key <LatK> {	[ hebrew_kaph, hebrew_finalkaph	]	};
    key <LatL> {	[ hebrew_lamed, hebrew_lamed	]       };

    key <LatZ> {	[ hebrew_zain, hebrew_zain	]       };
    key <LatX> {	[ hebrew_chet, hebrew_chet	]       };
    key <LatC> {	[ hebrew_zade, hebrew_finalzade	]       };
    key <LatV> {	[ hebrew_waw, hebrew_waw	]       };
    key <LatB> {	[ hebrew_bet, hebrew_bet	]       };
    key <LatN> {	[ hebrew_nun, hebrew_finalnun	]	};
    key <LatM> {	[ hebrew_mem, hebrew_finalmem	]	};
};

This solves all the issues above, but limits me to one custom keyboard layout only, which now suffices for me, but may not in the future.

Last edited by schard (2023-06-09 10:11:33)


macro_rules! yolo { { $($tokens:tt)* } => { unsafe { $($tokens)* } }; }

Offline

Board footer

Powered by FluxBB